diff --git a/Control/AthViews/CMakeLists.txt b/Control/AthViews/CMakeLists.txt
index 334a30f33e8e035ffe02a18fb6873c7868529394..2bd4f342cc070b45ea3783d33a147c7fd69a962c 100644
--- a/Control/AthViews/CMakeLists.txt
+++ b/Control/AthViews/CMakeLists.txt
@@ -55,7 +55,8 @@ atlas_add_test( ViewCollectionMerge_test
     ENVIRONMENT "JOBOPTSEARCHPATH=${CMAKE_CURRENT_SOURCE_DIR}/test")
 
 atlas_add_test( SimpleViews SCRIPT test/test_simple_view_example.sh
-                PROPERTIES PASS_REGULAR_EXPRESSION "INFO view_test running with store view_9" )
+                PROPERTIES PASS_REGULAR_EXPRESSION "INFO view_test running with store view_9"
+                TIMEOUT 300 )
 
 atlas_add_test( ViewScheduling SCRIPT test/test_view_scheduling.sh )
 
diff --git a/Control/AthenaCommon/share/athena_preload.sh b/Control/AthenaCommon/share/athena_preload.sh
index b5f7edf8a21ec3678f23b8d7fd72639544247d33..32bb6f5a0986c752ec349672a1b08d59bfb065c2 100755
--- a/Control/AthenaCommon/share/athena_preload.sh
+++ b/Control/AthenaCommon/share/athena_preload.sh
@@ -2,22 +2,18 @@
 #
 # Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 #
-usage() {
-    cat <<EOF
-Script to set \$LD_PRELOAD, steered by the following environment variables:
-
-   \$TCMALLOCDIR            : tcmalloc directory (enables tcmalloc if set)
-   \$USETCMALLOC            : use tcmalloc (instead of std malloc)
-   \$USETCMALLOCMINIMAL     : use minimal version of tcmalloc
-   \$ATLASMKLLIBDIR_PRELOAD : location of Intel math library
-   \$USEIMF                 : use Intel math library
-   \$ATHENA_ADD_PRELOAD     : preload user specific library
-   \$ATHENA_DROP_RELOAD     : are we in drop/reload mode?
-
-This script is used internally in athena.py. Other applications may use it e.g.:
-   USETCMALLOC=1 source athena_preload.sh && mycommand
-EOF
-}
+# Script to set $LD_PRELOAD, steered by the following environment variables:
+#
+#   $TCMALLOCDIR            : tcmalloc directory (enables tcmalloc if set)
+#   $USETCMALLOC            : use tcmalloc (instead of std malloc)
+#   $USETCMALLOCMINIMAL     : use minimal version of tcmalloc
+#   $ATLASMKLLIBDIR_PRELOAD : location of Intel math library
+#   $USEIMF                 : use Intel math library
+#   $ATHENA_ADD_PRELOAD     : preload user specific library
+#   $ATHENA_DROP_RELOAD     : are we in drop/reload mode?
+#
+# This script is used internally in athena.py. Other applications may use it e.g.:
+#   USETCMALLOC=1 source athena_preload.sh && mycommand
 
 # Helper to prepend to LD_LIBRARY
 ld_preload()
@@ -25,12 +21,6 @@ ld_preload()
     export LD_PRELOAD="$1${LD_PRELOAD:+:$LD_PRELOAD}"  # set or prepend
 }
 
-# Print help message
-if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
-    usage
-    exit 1
-fi
-
 # possibly, allow user to run with full tcmalloc by setting this variable
 export USETCMALLOCMINIMAL
 if [ -z "$USETCMALLOCMINIMAL" ]; then
diff --git a/Control/AthenaConfiguration/python/iconfTool/utils/__init__.py b/Control/AthenaConfiguration/python/iconfTool/utils/__init__.py
old mode 100644
new mode 100755
diff --git a/Control/AthenaKernel/AthenaKernel/CondCont.h b/Control/AthenaKernel/AthenaKernel/CondCont.h
index 358f45c8fa81f984c4e31409fbea5bd05a4e3497..81515ec7275b272120ed7e54eae181dadc108f44 100644
--- a/Control/AthenaKernel/AthenaKernel/CondCont.h
+++ b/Control/AthenaKernel/AthenaKernel/CondCont.h
@@ -114,27 +114,28 @@ public:
   /**
    * @brief Return CLID/key corresponding to this container.
    */
-  virtual const DataObjID& id() const = 0;
+  const DataObjID& id() const;
 
 
   /**
    * @brief Return the associated @c DataProxy, if any.
    */
-  virtual SG::DataProxy* proxy() = 0;
+  SG::DataProxy* proxy();
 
 
   /**
    * @brief Set the associated @c DataProxy.
    * @param proxy The proxy to set.
    */
-  virtual void setProxy(SG::DataProxy*) = 0;
+  void setProxy(SG::DataProxy*);
 
 
   /**
    * @brief Dump the container contents for debugging.
    * @param ost Stream to which to write the dump.
    */
-  virtual void list (std::ostream& ost) const = 0;
+  virtual
+  void list (std::ostream& ost) const;
 
 
   /**
@@ -146,27 +147,30 @@ public:
   /**
    * @brief Return the number of conditions objects in the container.
    */
-  virtual size_t entries() const = 0;
+  size_t entries() const;
 
   
   /**
    * @brief Return the number of run+LBN conditions objects
    *        in the container.
    */
-  virtual size_t entriesRunLBN() const = 0;
+  virtual
+  size_t entriesRunLBN() const;
 
 
   /**
    * @brief Return the number of timestamp-based conditions objects
    *        in the container.
    */
-  virtual size_t entriesTimestamp() const = 0;
+  virtual
+  size_t entriesTimestamp() const;
 
 
   /**
    * @brief Return all IOV validity ranges defined in this container.
    */
-  virtual std::vector<EventIDRange> ranges() const = 0;
+  virtual
+  std::vector<EventIDRange> ranges() const;
 
 
   /** 
@@ -185,16 +189,18 @@ public:
    * duplicates an existing one, and FAILURE otherwise
    * (ownership of the object will be taken in any case).
    */
-  virtual StatusCode typelessInsert (const EventIDRange& r,
-                                     void* obj,
-                                     const EventContext& ctx = Gaudi::Hive::currentContext()) = 0;
+  virtual
+  StatusCode typelessInsert (const EventIDRange& r,
+                             void* obj,
+                             const EventContext& ctx = Gaudi::Hive::currentContext());
 
 
   /**
    * @brief Test to see if a given IOV time is mapped in the container.
    * @param t IOV time to check.
    */
-  virtual bool valid( const EventIDBase& t) const = 0;
+  virtual
+  bool valid( const EventIDBase& t) const;
 
 
   /**
@@ -204,7 +210,8 @@ public:
    *
    * Returns true if @c t is mapped; false otherwise.
    */
-  virtual bool range (const EventIDBase& t, EventIDRange& r) const = 0;
+  virtual
+  bool range (const EventIDBase& t, EventIDRange& r) const;
 
 
   /**
@@ -212,8 +219,9 @@ public:
    * @param IOV time of element to erase.
    * @param ctx Event context for the current thread.
    */
-  virtual void erase (const EventIDBase& t,
-                      const EventContext& ctx = Gaudi::Hive::currentContext()) = 0;
+  virtual
+  void erase (const EventIDBase& t,
+              const EventContext& ctx = Gaudi::Hive::currentContext());
 
 
   /**
@@ -235,7 +243,8 @@ public:
    *
    * Returns the number of objects that were removed.
    */
-  virtual size_t trimRunLBN (const std::vector<key_type>& keys) = 0;
+  virtual
+  size_t trimRunLBN (const std::vector<key_type>& keys);
 
 
   /**
@@ -257,7 +266,8 @@ public:
    *
    * Returns the number of objects that were removed.
    */
-  virtual size_t trimTimestamp (const std::vector<key_type>& keys) = 0;
+  virtual
+  size_t trimTimestamp (const std::vector<key_type>& keys);
 
 
   /**
@@ -267,19 +277,19 @@ public:
    * This would normally be done through RCU service.
    * Defined here for purposes of testing.
    */
-  virtual void quiescent (const EventContext& ctx = Gaudi::Hive::currentContext()) = 0;
+  void quiescent (const EventContext& ctx = Gaudi::Hive::currentContext());
 
 
   /**
    * @brief Return the number times an item was inserted into the map.
    */
-  virtual size_t nInserts() const = 0;
+  size_t nInserts() const;
 
 
   /**
    * @brief Return the maximum size of the map.
    */
-  virtual size_t maxSize() const = 0;
+  size_t maxSize() const;
 
 
   /**
@@ -292,8 +302,9 @@ public:
    * IOV is changed to the end time for @c newRange.  (If the end time for @c newRange
    * is before the end of the last IOV, then nothing is changed.)
    */
-  virtual StatusCode extendLastRange (const EventIDRange& newRange,
-                                      const EventContext& ctx = Gaudi::Hive::currentContext()) = 0;
+  virtual
+  StatusCode extendLastRange (const EventIDRange& newRange,
+                              const EventContext& ctx = Gaudi::Hive::currentContext());
 
 
   /**
@@ -377,17 +388,56 @@ public:
 
   
 protected:
+  typedef CxxUtils::ConcurrentRangeMap<RangeKey, key_type, void, Compare,
+    Athena::RCUUpdater>
+    CondContSet;
+
+  typedef CondContSet::Updater_t Updater_t;
+
   /**
    * @brief Internal constructor.
    * @param rcusvc RCU service instance.
    * @param CLID of the most-derived @c CondCont.
    * @param id CLID+key for this object.
    * @param proxy @c DataProxy for this object.
+   * @param delfcn Deletion function for the actual payload type.
+   * @param capacity Initial capacity of the container.
    */
   CondContBase (Athena::IRCUSvc& rcusvc,
                 CLID clid,
                 const DataObjID& id,
-                SG::DataProxy* proxy);
+                SG::DataProxy* proxy,
+                CondContSet::delete_function* delfcn,
+                size_t capacity);
+                
+
+  /** 
+   * @brief Insert a new conditions object.
+   * @param r Range of validity of this object.
+   * @param t Pointer to the object being inserted.
+   * @param ctx Event context for the current thread.
+   *
+   * Returns SUCCESS if the object was successfully inserted;
+   * DUPLICATE if the object wasn't inserted because the range
+   * duplicates an existing one, and FAILURE otherwise
+   * (ownership of the object will be taken in any case).
+   */
+  StatusCode insertBase (const EventIDRange& r,
+                         CondContSet::payload_unique_ptr t,
+                         const EventContext& ctx = Gaudi::Hive::currentContext());
+
+
+  /** 
+   * @brief Internal lookup function.
+   * @param t IOV time to find.
+   * @param r If non-null, copy validity range of the object here.
+   *
+   * Looks up the conditions object corresponding to the IOV time @c t.
+   * If found, return the pointer (as a pointer to the payload type
+   * of the most-derived CondCont).  Otherwise, return nullptr.
+   */
+  const void* findBase (const EventIDBase& t,
+                        EventIDRange const** r) const;
 
 
   /**
@@ -402,19 +452,19 @@ protected:
   const void* cast (CLID clid, const void* ptr) const;
 
 
-  /** 
-   * @brief Internal lookup function.
+  /**
+   * @brief Do pointer conversion for the payload type.
    * @param clid CLID for the desired pointer type.
-   * @param t IOV time to find.
-   * @param r If non-null, copy validity range of the object here.
+   * @param ptr Pointer of type @c T*.
    *
-   * Looks up the conditions object corresponding to the IOV time @c t.
-   * If found, convert the pointer to a pointer to the type identified
-   * by CLID and return it.  Otherwise, return nullptr.
+   * Converts @c ptr from @c T* to a pointer to the type
+   * given by @c clid.  Returns nullptr if the conversion
+   * is not possible.
+   *
+   * This is a virtual function that calls @c cast from the most-derived class
+   * of the hierarchy.
    */
-  virtual const void* findByCLID (CLID clid,
-                                  const EventIDBase& t,
-                                  EventIDRange const** r) const = 0;
+  virtual const void* doCast (CLID clid, const void* ptr) const = 0;
 
 
   /**
@@ -427,6 +477,15 @@ private:
   /// CLID of the most-derived @c CondCont
   CLID m_clid;
 
+  /// CLID+key for this container.
+  DataObjID m_id;
+
+  /// Associated @c DataProxy.
+  SG::DataProxy* m_proxy;
+
+  /// Sets of mapped objects, by timestamp and run+LBN.
+  CondContSet m_condSet_clock, m_condSet_RE;
+
   /// Handle to the cleaner service.
   ServiceHandle<Athena::IConditionsCleanerSvc> m_cleanerSvc;
 
@@ -523,6 +582,8 @@ public:
   /// Base class.
   typedef typename CondContBaseInfo<T>::Base Base;
 
+  typedef typename Base::CondContSet CondContSet;
+
   /// Payload type held by this class.
   typedef T Payload;
 
@@ -550,79 +611,6 @@ public:
   CondCont& operator= (const CondCont&) = delete;
 
 
-  /**
-   * @brief Return CLID/key corresponding to this container.
-   */
-  virtual const DataObjID& id() const override;
-
-
-  /**
-   * @brief Return the associated @c DataProxy, if any.
-   */
-  virtual SG::DataProxy* proxy() override;
-
-
-  /**
-   * @brief Set the associated @c DataProxy.
-   * @param proxy The proxy to set.
-   */
-  virtual void setProxy (SG::DataProxy* proxy) override;
-
-
-  /**
-   * @brief Dump the container contents for debugging.
-   * @param ost Stream to which to write the dump.
-   */
-  virtual void list (std::ostream& ost) const override;
-
-
-  /**
-   * @brief Return the number of conditions objects in the container.
-   */
-  virtual size_t entries() const override;
-
-
-  /**
-   * @brief Return the number of run+LBN conditions objects
-   *        in the container.
-   */
-  virtual size_t entriesRunLBN() const override;
-
-
-  /**
-   * @brief Return the number of timestamp-based conditions objects
-   *        in the container.
-   */
-  virtual size_t entriesTimestamp() const override;
-
-
-  /**
-   * @brief Return all IOV validity ranges defined in this container.
-   */
-  virtual std::vector<EventIDRange> ranges() const override;
-
-
-  /** 
-   * @brief Insert a new conditions object.
-   * @param r Range of validity of this object.
-   * @param obj Pointer to the object being inserted.
-   * @param ctx Event context for the current thread.
-   *
-   * @c obj must point to an object of type @c T,
-   * except in the case of inheritance, where the type of @c obj must
-   * correspond to the most-derived @c CondCont type.
-   * The container will take ownership of this object.
-   *
-   * Returns SUCCESS if the object was successfully inserted;
-   * DUPLICATE if the object wasn't inserted because the range
-   * duplicates an existing one, and FAILURE otherwise
-   * (ownership of the object will be taken in any case).
-   */
-  virtual StatusCode typelessInsert (const EventIDRange& r,
-                                     void* obj,
-                                     const EventContext& ctx = Gaudi::Hive::currentContext()) override;
-
-
   /** 
    * @brief Insert a new conditions object.
    * @param r Range of validity of this object.
@@ -656,103 +644,6 @@ public:
              EventIDRange const** r = nullptr) const;
 
 
-  /**
-   * @brief Test to see if a given IOV time is mapped in the container.
-   * @param t IOV time to check.
-   */
-  virtual bool valid (const EventIDBase& t) const override;
-
-
-  /**
-   * @brief Return the mapped validity range for an IOV time.
-   * @param t IOV time to check.
-   * @param r[out] The range containing @c t.
-   *
-   * Returns true if @c t is mapped; false otherwise.
-   */
-  virtual bool range (const EventIDBase& t, EventIDRange& r) const override;
-
-
-  /**
-   * @brief Erase the first element not less than @c t.
-   * @param IOV time of element to erase.
-   * @param ctx Event context for the current thread.
-   */
-  virtual void erase (const EventIDBase& t,
-                      const EventContext& ctx = Gaudi::Hive::currentContext()) override;
-
-
-  /**
-   * @brief Remove unused run+LBN entries from the front of the list.
-   * @param keys List of keys that may still be in use.
-   *             (Must be sorted.)
-   *
-   * We examine the objects in the container, starting with the earliest one.
-   * If none of the keys in @c keys match the range for this object, then
-   * it is removed from the container.  We stop when we either find
-   * an object with a range matching a key in @c keys or when there
-   * is only one object left.
-   *
-   * The list @c keys should contain keys as computed by keyFromRunLBN.
-   * The list must be sorted.
-   *
-   * Removed objects are queued for deletion once all slots have been
-   * marked as quiescent.
-   *
-   * Returns the number of objects that were removed.
-   */
-  virtual size_t trimRunLBN (const std::vector<key_type>& keys) override;
-
-
-  /**
-   * @brief Remove unused timestamp entries from the front of the list.
-   * @param keys List of keys that may still be in use.
-   *             (Must be sorted.)
-   *
-   * We examine the objects in the container, starting with the earliest one.
-   * If none of the keys in @c keys match the range for this object, then
-   * it is removed from the container.  We stop when we either find
-   * an object with a range matching a key in @c keys or when there
-   * is only one object left.
-   *
-   * The list @c keys should contain keys as computed by keyFromRunLBN.
-   * The list must be sorted.
-   *
-   * Removed objects are queued for deletion once all slots have been
-   * marked as quiescent.
-   *
-   * Returns the number of objects that were removed.
-   */
-  virtual size_t trimTimestamp (const std::vector<key_type>& keys) override;
-
-  
-  /**
-   * @brief Mark that this thread is no longer accessing data from this container.
-   * @param ctx Event context for the current thread.
-   *
-   * This would normally be done through RCU service.
-   * Defined here for purposes of testing.
-   */
-  virtual void
-  quiescent (const EventContext& ctx /*= Gaudi::Hive::currentContext()*/) override;
-
-
-  /**
-   * @brief Return the number times an item was inserted into the map.
-   */
-  virtual size_t nInserts() const override;
-
-
-  /**
-   * @brief Return the maximum size of the map.
-   */
-  virtual size_t maxSize() const override;
-
-
-  virtual StatusCode extendLastRange (const EventIDRange& newRange,
-                                      const EventContext& ctx = Gaudi::Hive::currentContext()) override;
-
-
 protected:
   /**
    * @brief Internal constructor.
@@ -760,11 +651,15 @@ protected:
    * @param CLID of the most-derived @c CondCont.
    * @param id CLID+key for this object.
    * @param proxy @c DataProxy for this object.
+   * @param delfcn Deletion function for the actual payload type.
+   * @param capacity Initial capacity of the container.
    */
   CondCont (Athena::IRCUSvc& rcusvc,
             CLID clid,
             const DataObjID& id,
-            SG::DataProxy* proxy);
+            SG::DataProxy* proxy,
+            const typename CondContSet::delete_function* delfcn,
+            size_t capacity);
 
 
   /**
@@ -779,19 +674,19 @@ protected:
   const void* cast (CLID clid, const void* ptr) const;
 
 
-  /** 
-   * @brief Internal lookup function.
+  /**
+   * @brief Do pointer conversion for the payload type.
    * @param clid CLID for the desired pointer type.
-   * @param t IOV time to find.
-   * @param r If non-null, copy validity range of the object here.
+   * @param ptr Pointer of type @c T*.
    *
-   * Looks up the conditions object corresponding to the IOV time @c t.
-   * If found, convert the pointer to a pointer to the type identified
-   * by CLID and return it.  Otherwise, return nullptr.
+   * Converts @c ptr from @c T* to a pointer to the type
+   * given by @c clid.  Returns nullptr if the conversion
+   * is not possible.
+   *
+   * This is a virtual function that calls @c cast from the most-derived class
+   * of the hierarchy.
    */
-  virtual const void* findByCLID (CLID clid,
-                                  const EventIDBase& t,
-                                  EventIDRange const** r) const override;
+  virtual const void* doCast (CLID clid, const void* ptr) const override;
 
 
 public:
@@ -804,17 +699,10 @@ private:
   typedef CondContBase::RangeKey RangeKey;
 
 
-  /// Sets of mapped objects, by timestamp and run+LBN.
-  typedef CxxUtils::ConcurrentRangeMap<RangeKey, key_type, T, CondContBase::Compare,
-    Athena::RCUUpdater>
-    CondContSet;
-  CondContSet m_condSet_clock, m_condSet_RE;
-
-  /// CLID+key for this container.
-  DataObjID m_id;
-
-  /// Associated @c DataProxy.
-  SG::DataProxy* m_proxy;
+  /// Deletion function to pass to @c ConcurrentRangeMap.
+  static void delfcn (const void* p) {
+    delete reinterpret_cast<const T*>(p);
+  }
 };
 
 
diff --git a/Control/AthenaKernel/AthenaKernel/CondCont.icc b/Control/AthenaKernel/AthenaKernel/CondCont.icc
index 7432e3c35d3ea185fd332571383345267bf9a38c..aac30e77d638ef52450c13565b0977d9ff458aa6 100644
--- a/Control/AthenaKernel/AthenaKernel/CondCont.icc
+++ b/Control/AthenaKernel/AthenaKernel/CondCont.icc
@@ -20,6 +20,49 @@ CLID CondContBase::clid() const
 }
 
 
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/**
+ * @brief Return CLID/key corresponding to this container.
+ */
+inline
+const DataObjID& CondContBase::id() const
+{
+  return m_id;
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/**
+ * @brief Return the associated @c DataProxy, if any.
+ */
+inline
+SG::DataProxy* CondContBase::proxy()
+{
+  return m_proxy;
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/**
+ * @brief Test to see if a given IOV time is mapped in the container.
+ * @param t IOV time to check.
+ */
+inline
+bool CondContBase::valid (const EventIDBase& t) const
+{
+  return findBase (t, nullptr) != nullptr;
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
 /**
  * @brief Do pointer conversion for the payload type.
  * @param clid CLID for the desired pointer type.
@@ -45,6 +88,9 @@ CondContBase::key_type CondContBase::keyFromRunLBN (const EventIDBase& b)
 }
 
 
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
 /**
  * @brief Make a timestamp key from an EventIDBase.
  * @param Event ID to convert.
@@ -56,6 +102,9 @@ CondContBase::key_type CondContBase::keyFromTimestamp (const EventIDBase& b)
 }
 
 
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
 /**
  * @brief Default constructor.
  */
@@ -67,6 +116,9 @@ CondContBase::RangeKey::RangeKey()
 }
 
 
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
 /**
  * @brief Constructor from range+start/stop.
  * @param r The range to store.
@@ -100,11 +152,7 @@ CondCont<T>::CondCont (Athena::IRCUSvc& rcusvc,
                        const DataObjID& id,
                        SG::DataProxy* proxy /*=nullptr*/,
                        size_t capacity /*= 16*/)
-  : Base (rcusvc, ClassID_traits<CondCont<T> >::ID(), id, proxy),
-    m_condSet_clock (typename CondContSet::Updater_t (rcusvc), capacity),
-    m_condSet_RE (typename CondContSet::Updater_t (rcusvc), capacity),
-    m_id (id),
-    m_proxy (proxy)
+  : Base (rcusvc, ClassID_traits<CondCont<T> >::ID(), id, proxy, delfcn, capacity)
 {
   CondCont<T>::registerBaseInit();
 }
@@ -124,171 +172,13 @@ CondCont<T>::~CondCont<T>() {
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
 
-/**
- * @brief Return CLID/key corresponding to this container.
- */
-template <class T>
-inline
-const DataObjID& CondCont<T>::id() const
-{
-  return m_id;
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-/**
- * @brief Return the associated @c DataProxy, if any.
- */
-template <class T>
-inline
-SG::DataProxy* CondCont<T>::proxy()
-{
-  return m_proxy;
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-/**
- * @brief Set the associated @c DataProxy.
- * @param proxy The proxy to set.
- */
-template <class T>
-inline
-void CondCont<T>::setProxy (SG::DataProxy* proxy)
-{
-  m_proxy = proxy;
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-/**
- * @brief Dump the container contents for debugging.
- * @param ost Stream to which to write the dump.
- */
-template <typename T>
-void CondCont<T>::list (std::ostream& ost) const
-{
-  ost << "id: " << m_id << "  proxy: " << m_proxy << std::endl;
-
-  ost << "clock: [" << m_condSet_clock.size() << "]" << std::endl;
-  for (const typename CondContSet::value_type& ent : m_condSet_clock.range()) {
-    ost << ent.first.m_range << " " << ent.second << std::endl;
-  }
-  ost << "RE: [" << m_condSet_RE.size() << "]" << std::endl;
-  for (const typename CondContSet::value_type& ent : m_condSet_RE.range()) {
-    ost << ent.first.m_range << " " << ent.second << std::endl;
-  }
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-/**
- * @brief Return the number of conditions objects in the container.
- */
-template <typename T>
-size_t CondCont<T>::entries() const
-{
-  return m_condSet_RE.size() + m_condSet_clock.size();
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-/**
- * @brief Return the number of run+LBN conditions objects
- *        in the container.
- */
-template <typename T>
-size_t CondCont<T>::entriesRunLBN() const
-{
-  return m_condSet_RE.size();
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-/**
- * @brief Return the number of timestamp-based conditions objects
- *        in the container.
- */
-template <typename T>
-size_t CondCont<T>::entriesTimestamp() const
-{
-  return m_condSet_clock.size();
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-/**
- * @brief Return all IOV validity ranges defined in this container.
- */
-template <typename T>
-std::vector<EventIDRange> 
-CondCont<T>::ranges() const
-{
-  std::vector<EventIDRange> r;
-  r.reserve (m_condSet_RE.size() + m_condSet_clock.size());
-  for (const typename CondContSet::value_type& ent : m_condSet_RE.range()) {
-    r.push_back( ent.first.m_range );
-  }
-  for (const typename CondContSet::value_type& ent : m_condSet_clock.range()) {
-    r.push_back( ent.first.m_range );
-  }
-
-  return r;
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
 /** 
  * @brief Insert a new conditions object.
  * @param r Range of validity of this object.
- * @param obj Pointer to the object being inserted.
+ * @param t Pointer to the object being inserted.
  * @param ctx Event context for the current thread.
  *
- * @c obj must point to an object of type @c T,
- * except in the case of inheritance, where the type of @c obj must
- * correspond to the most-derived @c CondCont type.
- * The container will take ownership of this object.
- *
- * Returns SUCCESS if the object was successfully inserted;
- * DUPLICATE if the object wasn't inserted because the range
- * duplicates an existing one, and FAILURE otherwise
- * (ownership of the object will be taken in any case).
- */
-template <typename T>
-StatusCode CondCont<T>::typelessInsert (const EventIDRange& r,
-                                        void* obj,
-                                        const EventContext& ctx /*= Gaudi::Hive::currentContext()*/)
-{
-  return insert (r, std::unique_ptr<T> (static_cast<T*>(obj)), ctx);
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-/** 
- * @brief Insert a new conditions object.
- * @param r Range of validity of this object.
- * @param obj Pointer to the object being inserted.
- * @param ctx Event context for the current thread.
- *
- * @c obj must point to an object of type @c T.
+ * @c t must point to an object of type @c T.
  * This will give an error if this is not called
  * on the most-derived @c CondCont.
  *
@@ -308,39 +198,7 @@ StatusCode CondCont<T>::insert (const EventIDRange& r,
     return StatusCode::FAILURE;
   }
 
-  EventIDBase start = r.start();
-  EventIDBase stop = r.stop();
-
-  // LBN part of ranges may be undefined for an open-ended range.
-  if (start.run_number() != EventIDBase::UNDEFNUM &&
-      stop.run_number() != EventIDBase::UNDEFNUM)
-  {
-    if (!m_condSet_RE.emplace( RangeKey(r,
-                                        CondContBase::keyFromRunLBN (start),
-                                        CondContBase::keyFromRunLBN (stop)),
-                               std::move(t), ctx ))
-    {
-      return CondContStatusCode::DUPLICATE;
-    }
-    
-  }
-  else if (start.isTimeStamp() && stop.isTimeStamp()) {
-    if (!m_condSet_clock.emplace( RangeKey(r,
-                                           CondContBase::keyFromTimestamp (start),
-                                           CondContBase::keyFromTimestamp (stop)),
-                                  std::move(t), ctx ))
-    {
-      return CondContStatusCode::DUPLICATE;
-    }
-  }
-  else {
-    std::cerr << "CondCont<T>::insert error: EventIDRange " << r 
-              << " is neither fully RunEvent nor TimeStamp" 
-              << std::endl;
-    return StatusCode::FAILURE;
-  }
-
-  return this->inserted (ctx);
+  return Base::insertBase (r, std::move(t), ctx);
 }
 
 
@@ -360,75 +218,14 @@ bool CondCont<T>::find (const EventIDBase& t,
                         T const *& obj,
                         EventIDRange const** r) const
 {
-  const void* ptr = findByCLID (ClassID_traits<CondCont<T> >::ID(), t, r);
-  obj = reinterpret_cast<const T*> (ptr);
-  return obj != nullptr;
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-/**
- * @brief Test to see if a given IOV time is mapped in the container.
- * @param t IOV time to check.
- */
-template <typename T>
-bool CondCont<T>::valid (const EventIDBase& t) const
-{
-  return findByCLID (this->clid(), t, nullptr) != nullptr;
-}
+  const void* ptr = Base::findBase (t, r);
 
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-/**
- * @brief Return the mapped validity range for an IOV time.
- * @param t IOV time to check.
- * @param r[out] The range containing @c t.
- *
- * Returns true if @c t is mapped; false otherwise.
- */
-template <typename T>
-bool
-CondCont<T>::range(const EventIDBase& t, EventIDRange& r) const
-{
-  const EventIDRange* rp = nullptr;
-  if (findByCLID (this->clid(), t, &rp) != nullptr) {
-    r = *rp;
-    return true;
+  if (ClassID_traits<CondCont<T> >::ID() != this->clid()) {
+    ptr = doCast (ClassID_traits<CondCont<T> >::ID(), ptr);
   }
-  return false;
-}
 
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-/**
- * @brief Remove unused run+LBN entries from the front of the list.
- * @param keys List of keys that may still be in use.
- *             (Must be sorted.)
- *
- * We examine the objects in the container, starting with the earliest one.
- * If none of the keys in @c keys match the range for this object, then
- * it is removed from the container.  We stop when we either find
- * an object with a range matching a key in @c keys or when there
- * is only one object left.
- *
- * The list @c keys should contain keys as computed by keyFromRunLBN.
- * The list must be sorted.
- *
- * Removed objects are queued for deletion once all slots have been
- * marked as quiescent.
- *
- * Returns the number of objects that were removed.
- */
-template <typename T>
-size_t CondCont<T>::trimRunLBN (const std::vector<key_type>& keys)
-{
-  return m_condSet_RE.trim (keys);
+  obj = reinterpret_cast<const T*> (ptr);
+  return obj != nullptr;
 }
 
 
@@ -436,131 +233,22 @@ size_t CondCont<T>::trimRunLBN (const std::vector<key_type>& keys)
 
 
 /**
- * @brief Remove unused timestamp entries from the front of the list.
- * @param keys List of keys that may still be in use.
- *             (Must be sorted.)
- *
- * We examine the objects in the container, starting with the earliest one.
- * If none of the keys in @c keys match the range for this object, then
- * it is removed from the container.  We stop when we either find
- * an object with a range matching a key in @c keys or when there
- * is only one object left.
- *
- * The list @c keys should contain keys as computed by keyFromRunLBN.
- * The list must be sorted.
- *
- * Removed objects are queued for deletion once all slots have been
- * marked as quiescent.
+ * @brief Do pointer conversion for the payload type.
+ * @param clid CLID for the desired pointer type.
+ * @param ptr Pointer of type @c T*.
  *
- * Returns the number of objects that were removed.
- */
-template <typename T>
-size_t CondCont<T>::trimTimestamp (const std::vector<key_type>& keys)
-{
-  return m_condSet_clock.trim (keys);
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-/**
- * @brief Erase the first element not less than @c t.
- * @param IOV time of element to erase.
- * @param ctx Event context for the current thread.
- */
-template <typename T>
-void CondCont<T>::erase (const EventIDBase& t,
-                         const EventContext& ctx /*= Gaudi::Hive::currentContext()*/)
-{
-  if (t.isRunLumi()) {
-    m_condSet_RE.erase (CondContBase::keyFromRunLBN (t), ctx);
-  }
-  else if (t.isTimeStamp()) {
-    m_condSet_clock.erase (CondContBase::keyFromTimestamp (t), ctx);
-  }
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-/**
- * @brief Mark that this thread is no longer accessing data from this container.
- * @param ctx Event context for the current thread.
+ * Converts @c ptr from @c T* to a pointer to the type
+ * given by @c clid.  Returns nullptr if the conversion
+ * is not possible.
  *
- * This would normally be done through RCU service.
- * Defined here for purposes of testing.
- */
-template <typename T>
-void
-CondCont<T>::quiescent (const EventContext& ctx /*= Gaudi::Hive::currentContext()*/)
-{
-  m_condSet_RE.quiescent (ctx);
-  m_condSet_clock.quiescent (ctx);
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-/**
- * @brief Return the number times an item was inserted into the map.
- */
-template <typename T>
-inline
-size_t CondCont<T>::nInserts() const
-{
-  return m_condSet_clock.nInserts() + m_condSet_RE.nInserts();
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-/**
- * @brief Return the maximum size of the map.
+ * This is a virtual function that calls @c cast from the most-derived class
+ * of the hierarchy.
  */
 template <typename T>
 inline
-size_t CondCont<T>::maxSize() const
-{
-  return m_condSet_clock.maxSize() + m_condSet_RE.maxSize();
-}
-
-
-/**
- * @brief Extend the range of the last IOV.
- * @param newRange New validity range.
- * @param ctx Event context.
- *
- * Returns failure if the start time of @c newRange does not match the start time
- * of the last IOV in the container.  Otherwise, the end time for the last
- * IOV is changed to the end time for @c newRange.  (If the end time for @c newRange
- * is before the end of the last IOV, then nothing is changed.)
- */
-template <typename T>
-StatusCode
-CondCont<T>::extendLastRange (const EventIDRange& newRange,
-                              const EventContext& ctx /*= Gaudi::Hive::currentContext()*/)
+const void* CondCont<T>::doCast (CLID clid, const void* ptr) const
 {
-  typename CondContSet::const_iterator it = nullptr;
-  if (newRange.start().isRunLumi()) {
-    it = m_condSet_RE.extendLastRange
-      (RangeKey (newRange,
-                 CondContBase::keyFromRunLBN (newRange.start()),
-                 CondContBase::keyFromRunLBN (newRange.stop())), ctx);
-  }
-  else if (newRange.start().isTimeStamp()) {
-    it = m_condSet_clock.extendLastRange
-      (RangeKey (newRange,
-                 CondContBase::keyFromTimestamp (newRange.start()),
-                 CondContBase::keyFromTimestamp (newRange.stop())), ctx);
-  }
-  if (it != nullptr) {
-    return StatusCode::SUCCESS;
-  }
-  return StatusCode::FAILURE;
+  return cast (clid, ptr);
 }
 
 
@@ -573,18 +261,18 @@ CondCont<T>::extendLastRange (const EventIDRange& newRange,
  * @param CLID of the most-derived @c CondCont.
  * @param id CLID+key for this object.
  * @param proxy @c DataProxy for this object.
+ * @param delfcn Deletion function for the actual payload type.
+ * @param capacity Initial capacity of the container.
  */
 template <typename T>
 inline
 CondCont<T>::CondCont (Athena::IRCUSvc& rcusvc,
                        CLID clid,
                        const DataObjID& id,
-                       SG::DataProxy* proxy)
-  : Base (rcusvc, clid, id, proxy),
-    m_condSet_clock (typename CondContSet::Updater_t (rcusvc)),
-    m_condSet_RE (typename CondContSet::Updater_t (rcusvc)),
-    m_id(id),
-    m_proxy(proxy)
+                       SG::DataProxy* proxy,
+                       const typename CondContSet::delete_function* delfcn,
+                       size_t capacity)
+  : Base (rcusvc, clid, id, proxy, delfcn, capacity)
 {
   CondCont<T>::registerBaseInit();
 }
@@ -603,6 +291,7 @@ CondCont<T>::CondCont (Athena::IRCUSvc& rcusvc,
  * is not possible.
  */
 template <typename T>
+inline
 const void* CondCont<T>::cast (CLID clid, const void* ptr) const
 {
   if (clid == ClassID_traits<CondCont<T> >::ID())
@@ -615,57 +304,6 @@ const void* CondCont<T>::cast (CLID clid, const void* ptr) const
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
 
-/** 
- * @brief Internal lookup function.
- * @param clid CLID for the desired pointer type.
- * @param t IOV time to find.
- * @param r If non-null, copy validity range of the object here.
- *
- * Looks up the conditions object corresponding to the IOV time @c t.
- * If found, convert the pointer to a pointer to the type identified
- * by CLID and return it.  Otherwise, return nullptr.
- */
-template <typename T>
-const void* CondCont<T>::findByCLID (CLID clid,
-                                     const EventIDBase& t,
-                                     EventIDRange const** r) const
-{
-  const void* ptr = nullptr;
-  if (t.isRunLumi()) {
-    key_type key = CondContBase::keyFromRunLBN (t);
-    typename CondContSet::const_iterator it = m_condSet_RE.find (key);
-    if (it && key < it->first.m_stop) {
-      if (r) {
-        *r = &it->first.m_range;
-      }
-      ptr = it->second;
-    }
-  } 
-
-  if (!ptr && t.isTimeStamp()) {
-    key_type key = CondContBase::keyFromTimestamp (t);
-    typename CondContSet::const_iterator it = m_condSet_clock.find (key);
-    if (it && key < it->first.m_stop) {
-      if (r) {
-        *r = &it->first.m_range;
-      }
-      ptr = it->second;
-    }
-  }
-
-  // Do pointer conversion if needed.
-  if (ptr && clid != ClassID_traits<CondCont<T> >::ID()) {
-    ptr = Base::cast (clid, static_cast<const typename Base::Payload*>
-                              (reinterpret_cast<const T*> (ptr)));
-  }
-
-  return ptr;
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
 /**
  * @brief Helper to ensure that the inheritance information for this class
  *               gets initialized.
diff --git a/Control/AthenaKernel/src/CondCont.cxx b/Control/AthenaKernel/src/CondCont.cxx
index 553ae76fb2f115b28e169aa52517c7c59347bbd0..b68ef6806edbde65b49c67d4d875a5e7bf4f905e 100644
--- a/Control/AthenaKernel/src/CondCont.cxx
+++ b/Control/AthenaKernel/src/CondCont.cxx
@@ -63,12 +63,269 @@ bool CondContBase::Category::isDuplicate (StatusCode code)
 STATUSCODE_ENUM_IMPL (CondContStatusCode, CondContBase::Category)
 
 
+/**
+ * @brief Set the associated @c DataProxy.
+ * @param proxy The proxy to set.
+ */
+void CondContBase::setProxy (SG::DataProxy* proxy)
+{
+  m_proxy = proxy;
+}
+
+
+/**
+ * @brief Dump the container contents for debugging.
+ * @param ost Stream to which to write the dump.
+ */
+void CondContBase::list (std::ostream& ost) const
+{
+  ost << "id: " << m_id << "  proxy: " << m_proxy << std::endl;
+
+  ost << "clock: [" << m_condSet_clock.size() << "]" << std::endl;
+  for (const typename CondContSet::value_type& ent : m_condSet_clock.range()) {
+    ost << ent.first.m_range << " " << ent.second << std::endl;
+  }
+  ost << "RE: [" << m_condSet_RE.size() << "]" << std::endl;
+  for (const typename CondContSet::value_type& ent : m_condSet_RE.range()) {
+    ost << ent.first.m_range << " " << ent.second << std::endl;
+  }
+}
+
+
 /**
  * @brief Dump the container to cout.  For calling from the debugger.
  */
 void CondContBase::print() const
 {
-  this->list (std::cout);
+  list (std::cout);
+}
+
+
+/**
+ * @brief Return the number of conditions objects in the container.
+ */
+size_t CondContBase::entries() const
+{
+  return m_condSet_RE.size() + m_condSet_clock.size();
+}
+
+
+/**
+ * @brief Return the number of run+LBN conditions objects
+ *        in the container.
+ */
+size_t CondContBase::entriesRunLBN() const
+{
+  return m_condSet_RE.size();
+}
+
+
+/**
+ * @brief Return the number of timestamp-based conditions objects
+ *        in the container.
+ */
+size_t CondContBase::entriesTimestamp() const
+{
+  return m_condSet_clock.size();
+}
+
+
+/**
+ * @brief Return all IOV validity ranges defined in this container.
+ */
+std::vector<EventIDRange> 
+CondContBase::ranges() const
+{
+  std::vector<EventIDRange> r;
+  r.reserve (m_condSet_RE.size() + m_condSet_clock.size());
+  for (const typename CondContSet::value_type& ent : m_condSet_RE.range()) {
+    r.push_back( ent.first.m_range );
+  }
+  for (const typename CondContSet::value_type& ent : m_condSet_clock.range()) {
+    r.push_back( ent.first.m_range );
+  }
+
+  return r;
+}
+
+
+/** 
+ * @brief Insert a new conditions object.
+ * @param r Range of validity of this object.
+ * @param obj Pointer to the object being inserted.
+ * @param ctx Event context for the current thread.
+ *
+ * @c obj must point to an object of type @c T,
+ * except in the case of inheritance, where the type of @c obj must
+ * correspond to the most-derived @c CondCont type.
+ * The container will take ownership of this object.
+ *
+ * Returns SUCCESS if the object was successfully inserted;
+ * DUPLICATE if the object wasn't inserted because the range
+ * duplicates an existing one, and FAILURE otherwise
+ * (ownership of the object will be taken in any case).
+ */
+StatusCode
+CondContBase::typelessInsert (const EventIDRange& r,
+                              void* obj,
+                              const EventContext& ctx /*= Gaudi::Hive::currentContext()*/)
+{
+  return insertBase (r,
+                     CondContSet::payload_unique_ptr (obj, m_condSet_RE.delfcn()),
+                     ctx);
+}
+
+
+/**
+ * @brief Return the mapped validity range for an IOV time.
+ * @param t IOV time to check.
+ * @param r[out] The range containing @c t.
+ *
+ * Returns true if @c t is mapped; false otherwise.
+ */
+bool
+CondContBase::range(const EventIDBase& t, EventIDRange& r) const
+{
+  const EventIDRange* rp = nullptr;
+  if (findBase (t, &rp) != nullptr) {
+    r = *rp;
+    return true;
+  }
+  return false;
+}
+
+
+/**
+ * @brief Erase the first element not less than @c t.
+ * @param IOV time of element to erase.
+ * @param ctx Event context for the current thread.
+ */
+void CondContBase::erase (const EventIDBase& t,
+                          const EventContext& ctx /*= Gaudi::Hive::currentContext()*/)
+{
+  if (t.isRunLumi()) {
+    m_condSet_RE.erase (CondContBase::keyFromRunLBN (t), ctx);
+  }
+  else if (t.isTimeStamp()) {
+    m_condSet_clock.erase (CondContBase::keyFromTimestamp (t), ctx);
+  }
+}
+
+
+/**
+ * @brief Remove unused run+LBN entries from the front of the list.
+ * @param keys List of keys that may still be in use.
+ *             (Must be sorted.)
+ *
+ * We examine the objects in the container, starting with the earliest one.
+ * If none of the keys in @c keys match the range for this object, then
+ * it is removed from the container.  We stop when we either find
+ * an object with a range matching a key in @c keys or when there
+ * is only one object left.
+ *
+ * The list @c keys should contain keys as computed by keyFromRunLBN.
+ * The list must be sorted.
+ *
+ * Removed objects are queued for deletion once all slots have been
+ * marked as quiescent.
+ *
+ * Returns the number of objects that were removed.
+ */
+size_t CondContBase::trimRunLBN (const std::vector<key_type>& keys)
+{
+  return m_condSet_RE.trim (keys);
+}
+
+
+/**
+ * @brief Remove unused timestamp entries from the front of the list.
+ * @param keys List of keys that may still be in use.
+ *             (Must be sorted.)
+ *
+ * We examine the objects in the container, starting with the earliest one.
+ * If none of the keys in @c keys match the range for this object, then
+ * it is removed from the container.  We stop when we either find
+ * an object with a range matching a key in @c keys or when there
+ * is only one object left.
+ *
+ * The list @c keys should contain keys as computed by keyFromRunLBN.
+ * The list must be sorted.
+ *
+ * Removed objects are queued for deletion once all slots have been
+ * marked as quiescent.
+ *
+ * Returns the number of objects that were removed.
+ */
+size_t CondContBase::trimTimestamp (const std::vector<key_type>& keys)
+{
+  return m_condSet_clock.trim (keys);
+}
+
+
+/**
+ * @brief Mark that this thread is no longer accessing data from this container.
+ * @param ctx Event context for the current thread.
+ *
+ * This would normally be done through RCU service.
+ * Defined here for purposes of testing.
+ */
+void
+CondContBase::quiescent (const EventContext& ctx /*= Gaudi::Hive::currentContext()*/)
+{
+  m_condSet_RE.quiescent (ctx);
+  m_condSet_clock.quiescent (ctx);
+}
+
+
+/**
+ * @brief Return the number times an item was inserted into the map.
+ */
+size_t CondContBase::nInserts() const
+{
+  return m_condSet_clock.nInserts() + m_condSet_RE.nInserts();
+}
+
+
+/**
+ * @brief Return the maximum size of the map.
+ */
+size_t CondContBase::maxSize() const
+{
+  return m_condSet_clock.maxSize() + m_condSet_RE.maxSize();
+}
+
+
+/**
+ * @brief Extend the range of the last IOV.
+ * @param newRange New validity range.
+ * @param ctx Event context.
+ *
+ * Returns failure if the start time of @c newRange does not match the start time
+ * of the last IOV in the container.  Otherwise, the end time for the last
+ * IOV is changed to the end time for @c newRange.  (If the end time for @c newRange
+ * is before the end of the last IOV, then nothing is changed.)
+ */
+StatusCode
+CondContBase::extendLastRange (const EventIDRange& newRange,
+                               const EventContext& ctx /*= Gaudi::Hive::currentContext()*/)
+{
+  typename CondContSet::const_iterator it = nullptr;
+  if (newRange.start().isRunLumi()) {
+    it = m_condSet_RE.extendLastRange
+      (RangeKey (newRange,
+                 CondContBase::keyFromRunLBN (newRange.start()),
+                 CondContBase::keyFromRunLBN (newRange.stop())), ctx);
+  }
+  else if (newRange.start().isTimeStamp()) {
+    it = m_condSet_clock.extendLastRange
+      (RangeKey (newRange,
+                 CondContBase::keyFromTimestamp (newRange.start()),
+                 CondContBase::keyFromTimestamp (newRange.stop())), ctx);
+  }
+  if (it != nullptr) {
+    return StatusCode::SUCCESS;
+  }
+  return StatusCode::FAILURE;
 }
 
 
@@ -78,12 +335,20 @@ void CondContBase::print() const
  * @param CLID of the most-derived @c CondCont.
  * @param id CLID+key for this object.
  * @param proxy @c DataProxy for this object.
+ * @param delfcn Deletion function for the actual payload type.
+ * @param capacity Initial capacity of the container.
  */
-CondContBase::CondContBase (Athena::IRCUSvc& /*rcusvc*/,
+CondContBase::CondContBase (Athena::IRCUSvc& rcusvc,
                             CLID clid,
-                            const DataObjID& /*id*/,
-                            SG::DataProxy* /*proxy*/)
+                            const DataObjID& id,
+                            SG::DataProxy* proxy,
+                            CondContSet::delete_function* delfcn,
+                            size_t capacity)
   : m_clid (clid),
+    m_id (id),
+    m_proxy (proxy),
+    m_condSet_clock (Updater_t (rcusvc, delfcn), delfcn, capacity),
+    m_condSet_RE (Updater_t (rcusvc, delfcn), delfcn, capacity),
     m_cleanerSvc (s_cleanerSvcName, "CondContBase")
 {
   if (!m_cleanerSvc.retrieve().isSuccess()) {
@@ -92,6 +357,98 @@ CondContBase::CondContBase (Athena::IRCUSvc& /*rcusvc*/,
 }
 
 
+/** 
+ * @brief Insert a new conditions object.
+ * @param r Range of validity of this object.
+ * @param t Pointer to the object being inserted.
+ * @param ctx Event context for the current thread.
+ *
+ * Returns SUCCESS if the object was successfully inserted;
+ * DUPLICATE if the object wasn't inserted because the range
+ * duplicates an existing one, and FAILURE otherwise
+ * (ownership of the object will be taken in any case).
+ */
+StatusCode
+CondContBase::insertBase (const EventIDRange& r,
+                          CondContSet::payload_unique_ptr t,
+                          const EventContext& ctx /*= Gaudi::Hive::currentContext()*/)
+{
+  EventIDBase start = r.start();
+  EventIDBase stop = r.stop();
+
+  // LBN part of ranges may be undefined for an open-ended range.
+  if (start.run_number() != EventIDBase::UNDEFNUM &&
+      stop.run_number() != EventIDBase::UNDEFNUM)
+  {
+    if (!m_condSet_RE.emplace( RangeKey(r,
+                                        keyFromRunLBN (start),
+                                        keyFromRunLBN (stop)),
+                               std::move(t), ctx ))
+    {
+      return CondContStatusCode::DUPLICATE;
+    }
+    
+  }
+  else if (start.isTimeStamp() && stop.isTimeStamp()) {
+    if (!m_condSet_clock.emplace( RangeKey(r,
+                                           keyFromTimestamp (start),
+                                           keyFromTimestamp (stop)),
+                                  std::move(t), ctx ))
+    {
+      return CondContStatusCode::DUPLICATE;
+    }
+  }
+  else {
+    std::cerr << "CondCont<T>::insert error: EventIDRange " << r 
+              << " is neither fully RunEvent nor TimeStamp" 
+              << std::endl;
+    return StatusCode::FAILURE;
+  }
+
+  return this->inserted (ctx);
+}
+
+
+/** 
+ * @brief Internal lookup function.
+ * @param clid CLID for the desired pointer type.
+ * @param t IOV time to find.
+ * @param r If non-null, copy validity range of the object here.
+ *
+ * Looks up the conditions object corresponding to the IOV time @c t.
+ * If found, convert the pointer to a pointer to the type identified
+ * by CLID and return it.  Otherwise, return nullptr.
+ */
+const void* CondContBase::findBase (const EventIDBase& t,
+                                    EventIDRange const** r) const
+{
+  const void* ptr = nullptr;
+  if (t.isRunLumi()) {
+    key_type key = keyFromRunLBN (t);
+    CondContSet::const_iterator it = m_condSet_RE.find (key);
+    if (it && key < it->first.m_stop) {
+      if (r) {
+        *r = &it->first.m_range;
+      }
+      ptr = it->second;
+    }
+  } 
+
+  if (!ptr && t.isTimeStamp()) {
+    key_type key = keyFromTimestamp (t);
+    CondContSet::const_iterator it = m_condSet_clock.find (key);
+    if (it && key < it->first.m_stop) {
+      if (r) {
+        *r = &it->first.m_range;
+      }
+      ptr = it->second;
+    }
+  }
+
+  return ptr;
+}
+
+
 /**
  * @brief Tell the cleaner that a new object was added to the container.
  */
diff --git a/Control/AthenaServices/test/ConditionsCleanerSvc_test.cxx b/Control/AthenaServices/test/ConditionsCleanerSvc_test.cxx
index 48266d65f87e3fd7efc25d9df9029b28f37e92fd..701975f22e2ef12ab3b89f24c19f2e6a0e90b041 100644
--- a/Control/AthenaServices/test/ConditionsCleanerSvc_test.cxx
+++ b/Control/AthenaServices/test/ConditionsCleanerSvc_test.cxx
@@ -27,9 +27,9 @@ class RCUTest
   : public Athena::IRCUSvc
 {
 public:
-  virtual void add (Athena::IRCUObject*) override { std::abort(); }
-  virtual StatusCode remove (Athena::IRCUObject*) override { std::abort(); }
-  virtual size_t getNumSlots() const override { std::abort(); }
+  virtual void add (Athena::IRCUObject*) override {  }
+  virtual StatusCode remove (Athena::IRCUObject*) override { return StatusCode::SUCCESS; }
+  virtual size_t getNumSlots() const override { return 1; }
   virtual unsigned long addRef()override { std::abort(); }
   virtual unsigned long release() override { std::abort(); }
   virtual StatusCode queryInterface( const InterfaceID&, void** ) override { std::abort(); }
@@ -41,39 +41,12 @@ class CondContTest
   : public CondContBase
 {
 public:
-  CondContTest()
-    : CondContBase (m_rcu, 123, m_id, nullptr)
+  CondContTest (Athena::IRCUSvc& rcusvc, const DataObjID& id)
+    : CondContBase (rcusvc, 123, id, nullptr, nullptr, 0)
   {}
-  virtual const DataObjID& id() const override { std::abort(); }
-  virtual SG::DataProxy* proxy() override { std::abort(); }
-  virtual void setProxy(SG::DataProxy*) override { std::abort(); }
-  virtual void list (std::ostream&) const override { std::abort(); }
-  virtual size_t entries() const override { std::abort(); }
-  virtual size_t entriesRunLBN() const override { std::abort(); }
-  virtual size_t entriesTimestamp() const override { std::abort(); }
-  virtual std::vector<EventIDRange> ranges() const override { std::abort(); }
-  virtual StatusCode typelessInsert (const EventIDRange&,
-                                     void*,
-                                     const EventContext&) override { std::abort(); }
-  virtual bool valid( const EventIDBase&) const override { std::abort(); }
-  virtual bool range (const EventIDBase&, EventIDRange&) const override { std::abort(); }
-  virtual void erase (const EventIDBase&,
-                      const EventContext&) override { std::abort(); }
-  virtual size_t trimRunLBN (const std::vector<key_type>&) override { std::abort(); }
-  virtual size_t trimTimestamp (const std::vector<key_type>&) override { std::abort(); }
-  virtual void quiescent (const EventContext&) override { std::abort(); }
-  
-  virtual const void* findByCLID (CLID,
-                                  const EventIDBase&,
-                                  EventIDRange const**) const override { std::abort(); }
-  virtual size_t nInserts() const override { std::abort(); }
-  virtual size_t maxSize() const override { std::abort(); }
-  virtual StatusCode extendLastRange (const EventIDRange& /*newRange*/,
-                                      const EventContext& /*ctx*/) override { std::abort(); }
-
-private:
-  RCUTest m_rcu;
-  DataObjID m_id;
+
+  virtual const void* doCast (CLID /*clid*/, const void* /*ptr*/) const override
+  { std::abort(); }
 };
 
 
@@ -131,7 +104,10 @@ void testit (IService* mgr)
 
   assert( ccs->event (EventContext(0,0), false).isSuccess() );
 
-  CondContTest cc;
+  RCUTest rcu;
+  DataObjID id;
+
+  CondContTest cc (rcu, id);
 
   assert( ccs->condObjAdded (EventContext(0,0), cc).isSuccess() );
   assert( ccs->printStats().isSuccess() );
diff --git a/Control/AthenaServices/test/DelayedConditionsCleanerSvc_test.cxx b/Control/AthenaServices/test/DelayedConditionsCleanerSvc_test.cxx
index fc52680c26e283914449b7fbfdb7d1c84339156b..a3b29ee45f6130d6cbd35984aeba326ba3a80934 100644
--- a/Control/AthenaServices/test/DelayedConditionsCleanerSvc_test.cxx
+++ b/Control/AthenaServices/test/DelayedConditionsCleanerSvc_test.cxx
@@ -37,9 +37,9 @@ class RCUTest
   : public Athena::IRCUSvc
 {
 public:
-  virtual void add (Athena::IRCUObject*) override { std::abort(); }
-  virtual StatusCode remove (Athena::IRCUObject*) override { std::abort(); }
-  virtual size_t getNumSlots() const override { std::abort(); }
+  virtual void add (Athena::IRCUObject*) override {  }
+  virtual StatusCode remove (Athena::IRCUObject*) override { return StatusCode::SUCCESS; }
+  virtual size_t getNumSlots() const override { return 1; }
   virtual unsigned long addRef()override { std::abort(); }
   virtual unsigned long release() override { std::abort(); }
   virtual StatusCode queryInterface( const InterfaceID&, void** ) override { std::abort(); }
@@ -51,34 +51,13 @@ class CondContTest
   : public CondContBase
 {
 public:
-  CondContTest (int nlbn, int nts)
-    : CondContBase (m_rcu, 123, m_id, nullptr),
+  CondContTest (Athena::IRCUSvc& rcusvc, const DataObjID& id, int nlbn, int nts)
+    : CondContBase (rcusvc, 123, id, nullptr, nullptr, 0),
       m_nlbn(nlbn), m_nts (nts)
   {}
   
-  virtual const DataObjID& id() const override { std::abort(); }
-  virtual SG::DataProxy* proxy() override { std::abort(); }
-  virtual void setProxy(SG::DataProxy*) override { std::abort(); }
-  virtual void list (std::ostream&) const override { std::abort(); }
-  virtual size_t entries() const override { std::abort(); }
-  virtual std::vector<EventIDRange> ranges() const override { std::abort(); }
-  virtual StatusCode typelessInsert (const EventIDRange&,
-                                     void*,
-                                     const EventContext& = Gaudi::Hive::currentContext()) override { std::abort(); }
-  virtual bool valid( const EventIDBase&) const override { std::abort(); }
-  virtual bool range (const EventIDBase&, EventIDRange&) const override { std::abort(); }
-  virtual void erase (const EventIDBase&,
-                      const EventContext& = Gaudi::Hive::currentContext()) override { std::abort(); }
-  virtual void quiescent (const EventContext& = Gaudi::Hive::currentContext()) override { std::abort(); }
-  virtual const void* findByCLID (CLID,
-                                  const EventIDBase&,
-                                  EventIDRange const**) const override { std::abort(); }
-
-  virtual size_t nInserts() const override { return 0; }
-  virtual size_t maxSize() const override { return 0; }
-  virtual StatusCode extendLastRange (const EventIDRange& /*newRange*/,
-                                      const EventContext& /*ctx*/) override { std::abort(); }
-
+  virtual const void* doCast (CLID /*clid*/, const void* /*ptr*/) const override
+  { std::abort(); }
   
   virtual size_t entriesRunLBN() const override
   {
@@ -120,8 +99,6 @@ public:
 
   
 private:
-  RCUTest m_rcu;
-  DataObjID m_id;
   int m_nlbn;
   int m_nts;
   std::list<std::vector<key_type> > m_keysRunLBN;
@@ -151,9 +128,12 @@ void test1 (Athena::IConditionsCleanerSvc& svc)
 {
   typedef CondContBase::key_type key_type;
 
+  RCUTest rcu;
+  DataObjID id;
+
   std::cout << "test1\n";
-  CondContTest cc1 (10, 0);
-  CondContTest cc2 (0, 10);
+  CondContTest cc1 (rcu, id, 10, 0);
+  CondContTest cc2 (rcu, id, 0, 10);
 
   assert( svc.event (makeCtx(0), false).isSuccess() );
   assert( svc.event (makeCtx(1), false).isSuccess() );
@@ -188,8 +168,8 @@ void test1 (Athena::IConditionsCleanerSvc& svc)
   assert (cc2.nkeysTimestamp() == 0);
   assert (cc1.keysRunLBN() == (std::vector<key_type> { 0, 1001, 1003, 1004, 1201, 1301 }));
 
-  CondContTest cc3 (10, 0);
-  CondContTest cc4 (0, 10);
+  CondContTest cc3 (rcu, id, 10, 0);
+  CondContTest cc4 (rcu, id, 0, 10);
 
   assert( svc.condObjAdded (makeCtx(300), cc1).isSuccess() );
   assert( svc.condObjAdded (makeCtx(303), cc2).isSuccess() );
diff --git a/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.h b/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.h
index 268b81c12f6129f9f857bf9494e192ce2729478d..7e98bfbcd58b592d7f802ca11caaa0de40f0eb11 100644
--- a/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.h
+++ b/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.h
@@ -37,6 +37,17 @@ namespace CxxUtils {
  * first for which the range is not less than the key.  We also
  * support insertions, erasures, and iteration.
  *
+ * The only thing we need to do with the contained pointers is to delete them.
+ * Rather than doing that directly, we take a deletion function as an argument
+ * to the constructor; this should be a void function that takes a pointer argument
+ * and deletes it.  This allows one to instantiate this template with @c void as @c T,
+ * to reduce the amount of generated code.  The @c emplace method takes
+ * a @c unique_ptr as an argument.  We define @c payload_unique_ptr which
+ * is a @c unique_ptr to @c T that does deletion by calling an arbitrary function.
+ * @c payload_unique_ptr may be initialized from a @c unique_ptr; to construct
+ * one directly, the deletion function should be passed as a second argument
+ * to the @c payload_unique_ptr constructor.
+ *
  * There can be only one writer at a time; this is enforced with internal locks.
  * However, there can be any number of concurrent readers at any time.
  * The reads are lockless (but not necessarily waitless, though this should
@@ -116,6 +127,69 @@ public:
   typedef COMPARE key_compare;
   typedef KEY key_query_type;
 
+
+  /// Function to delete a @c T*
+  typedef void delete_function (const T*);
+
+
+  /**
+   * @brief @c unique_ptr deletion class for a payload object.
+   *
+   * We can't use the unique_ptr default because we want to allow
+   * instantiating with a @c void.
+   */
+  struct DeletePayload
+  {
+    /// Initialize with an explicit deletion function.
+    DeletePayload (delete_function* delfcn)
+      : m_delete (delfcn)
+    {
+    }
+
+    /// Allow initializing a @c payload_unique_ptr from a @c std::unique_ptr<U>.
+    template <class U>
+    static void delfcn (const T* p)
+    {
+      delete reinterpret_cast<const U*>(p);
+    }
+    template <class U>
+    DeletePayload (const std::default_delete<U>&)
+    {
+      m_delete = delfcn<U>;
+    }
+
+    /// Delete a pointer.
+    void operator() (const T* p) const
+    {
+      m_delete (p);
+    }
+
+    /// The deletion function.
+    delete_function* m_delete;
+  };
+
+
+  /**
+   * @brief @c unique_ptr holding a payload object.
+   *
+   * One may initialize an instance of this in one of two ways.
+   * First, from another @c std::unique_ptr:
+   *
+   *@code
+   *   payload_unique_ptr p = std::unique_ptr<U> (...);
+   @endcode
+   *
+   * where U* must be convertable to T*.  In this case, the pointer
+   * will be deleted as a U*.
+   * Second, one can supply an explicit deletion function:
+   *
+   *@code
+   *   T* tp = ...;
+   *   payload_unique_ptr p (tp, delfcn);
+   @endcode
+   */
+  typedef std::unique_ptr<T, DeletePayload> payload_unique_ptr;
+
   typedef const value_type* const_iterator;
   typedef boost::iterator_range<const_iterator> const_iterator_range;
 
@@ -138,9 +212,11 @@ public:
   public:
     /**
      * @brief Constructor.
+     * @param delfcn Deletion function.
      * @param capacity Size of the data vector to allocate.
      */
-    Impl (size_t capacity = 10);
+    Impl (delete_function* delfcn,
+          size_t capacity = 10);
 
 
     /**
@@ -170,6 +246,9 @@ public:
 
 
   private:
+    /// Deletion function.
+    delete_function* m_delete;
+
     /// Vector holding the map data.
     std::vector<value_type> m_data;
 
@@ -185,10 +264,12 @@ public:
    * @brief Constructor.
    * @param updater Object used to manage memory
    *                (see comments at the start of the class).
+   * @param delfcn Deletion function.
    * @param capacity Initial capacity of the map.
    * @param compare Comparison object.
    */
   ConcurrentRangeMap (Updater_t&& updater,
+                      delete_function* delfcn,
                       size_t capacity = 16,
                       const COMPARE& compare = COMPARE());
 
@@ -220,7 +301,7 @@ public:
    * no new element is inserted (and @c ptr gets deleted).
    */
   bool emplace (const RANGE& range,
-                std::unique_ptr<T> ptr,
+                payload_unique_ptr ptr,
                 const typename Updater_t::Context_t& ctx =
                   Updater_t::defaultContext());
 
@@ -335,6 +416,12 @@ public:
                     Updater_t::defaultContext());
 
 
+  /**
+   * @brief Return the deletion function for this container.
+   */
+  delete_function* delfcn() const;
+
+
 private:
   /**
    * @brief Return the begin/last pointers.
@@ -393,6 +480,9 @@ private:
   /// Comparison object.
   COMPARE m_compare;
 
+  /// Deletion function.
+  delete_function* m_delete;
+
   /// Current version of the implementation class.
   Impl* m_impl;
 
diff --git a/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.icc b/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.icc
index 094c98684f8cb37da50a328fe61625d5419fccab..95dd7251494b5a54e149a193fbe918ee6d869d16 100644
--- a/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.icc
+++ b/Control/CxxUtils/CxxUtils/ConcurrentRangeMap.icc
@@ -19,11 +19,14 @@ namespace CxxUtils {
 
 /**
  * @brief Constructor.
+ * @param delfcn Deletion function.
  * @param capacity Size of the data vector to allocate.
  */
 T_CONCURRENTRANGEMAP
-CONCURRENTRANGEMAP::Impl::Impl (size_t capacity /*= 10*/)
-  : m_data (capacity)
+CONCURRENTRANGEMAP::Impl::Impl (delete_function* delfcn,
+                                size_t capacity /*= 10*/)
+  : m_delete (delfcn),
+    m_data (capacity)
 {
 }
 
@@ -37,7 +40,7 @@ T_CONCURRENTRANGEMAP
 CONCURRENTRANGEMAP::Impl::~Impl()
 {
   for (const T* p : m_garbage) {
-    delete p;
+    m_delete (p);
   }
 }
 
@@ -79,19 +82,23 @@ CONCURRENTRANGEMAP::Impl::discard (const T* p)
  * @brief Constructor.
  * @param updater Object used to manage memory
  *                (see comments at the start of the class).
+ * @param delfcn Deletion function.
  * @param capacity Initial capacity of the map.
  * @param compare Comparison object.
  */
 T_CONCURRENTRANGEMAP
 CONCURRENTRANGEMAP::ConcurrentRangeMap (Updater_t&& updater,
+                                        delete_function* delfcn,
                                         size_t capacity /*= 16*/,
                                         const COMPARE& compare /*= COMPARE()*/)
+
   : m_updater (std::move (updater)),
     m_compare (compare),
+    m_delete (delfcn),
     m_nInserts (0),
     m_maxSize (0)
 {
-  auto impl = std::make_unique<Impl> (capacity);
+  auto impl = std::make_unique<Impl> (m_delete, capacity);
   value_type* data = impl->data();
   installImpl (std::move (impl),
                data, data,
@@ -110,7 +117,7 @@ CONCURRENTRANGEMAP::~ConcurrentRangeMap()
   value_type* last = m_last;
   if (last) {
     for (value_type* p = m_begin; p <= m_last; ++p) {
-      delete p->second;
+      m_delete (p->second);
     }
       
   }
@@ -165,7 +172,7 @@ CONCURRENTRANGEMAP::find (const key_query_type& key) const
 T_CONCURRENTRANGEMAP
 bool
 CONCURRENTRANGEMAP::emplace (const RANGE& range,
-                             std::unique_ptr<T> ptr,
+                             payload_unique_ptr ptr,
                              const typename Updater_t::Context_t& ctx
                                /*= Updater_t::defaultContext()*/)
 {
@@ -209,7 +216,7 @@ CONCURRENTRANGEMAP::emplace (const RANGE& range,
   }
 
   // Allocate the new object.
-  auto new_impl = std::make_unique<Impl> (new_capacity);
+  auto new_impl = std::make_unique<Impl> (m_delete, new_capacity);
   value_type* new_begin = new_impl->data();
   value_type* new_end = new_begin;
 
@@ -293,7 +300,7 @@ CONCURRENTRANGEMAP::erase (const key_query_type& key,
 
   // Need to make a new implementation object and copy data.
   size_t capacity = m_impl->capacity();
-  auto new_impl = std::make_unique<Impl> (capacity);
+  auto new_impl = std::make_unique<Impl> (m_delete, capacity);
   value_type* new_begin = new_impl->data();
   value_type* new_end = new_begin;
 
@@ -355,7 +362,7 @@ CONCURRENTRANGEMAP::extendLastRange (const RANGE& newRange,
 
   // Make a new implementation object and copy data.
   size_t capacity = m_impl->capacity();
-  auto new_impl = std::make_unique<Impl> (capacity);
+  auto new_impl = std::make_unique<Impl> (m_delete, capacity);
   value_type* new_begin = new_impl->data();
   value_type* new_end = new_begin;
   value_type* begin = m_begin;
@@ -426,7 +433,7 @@ CONCURRENTRANGEMAP::trim (const std::vector<key_query_type>& keys)
 
     if (!garbage) {
       // Allocate a dummy impl object if we haven't done so yet.
-      garbage = std::make_unique<Impl> (0);
+      garbage = std::make_unique<Impl> (m_delete, 0);
     }
 
     // Add it to the garbage list.
@@ -534,6 +541,18 @@ CONCURRENTRANGEMAP::quiescent (const typename Updater_t::Context_t& ctx /*= Upda
 }
 
 
+/**
+ * @brief Return the deletion function for this container.
+ */
+T_CONCURRENTRANGEMAP
+inline
+typename CONCURRENTRANGEMAP::delete_function*
+CONCURRENTRANGEMAP::delfcn() const
+{
+  return m_delete;
+}
+
+
 /**
  * @brief Return the begin/last pointers.
  * @param [inout] last Current value of last.
diff --git a/Control/CxxUtils/test/ConcurrentRangeMap_test.cxx b/Control/CxxUtils/test/ConcurrentRangeMap_test.cxx
index 3fbaabec2322f365cd91ba614592953a1577c820..abfdfc1d9a0be13c272adf4c6d351917379aadac 100644
--- a/Control/CxxUtils/test/ConcurrentRangeMap_test.cxx
+++ b/Control/CxxUtils/test/ConcurrentRangeMap_test.cxx
@@ -76,6 +76,12 @@ struct Payload
 };
 
 
+void delfcn (const Payload* p)
+{
+  delete p;
+}
+
+
 template <class T>
 class TestUpdater
 {
@@ -152,7 +158,7 @@ void test1a()
   std::cout << "test1a\n";
   Payload::Hist phist;
   {
-    TestMap map (TestMap::Updater_t(), 3);
+    TestMap map (TestMap::Updater_t(), delfcn, 3);
 
     assert (map.size() == 0);
     assert (map.empty());
@@ -555,7 +561,7 @@ void test1b()
   std::cout << "test1b\n";
 
   Payload::Hist phist;
-  TestMap map (TestMap::Updater_t(), 100);
+  TestMap map (TestMap::Updater_t(), delfcn, 100);
   assert (map.emplace (Range (10, 20), std::make_unique<Payload> (100, &phist)));
   assert (map.emplace (Range (25, 30), std::make_unique<Payload> (200, &phist)));
   assert (map.emplace (Range (30, 40), std::make_unique<Payload> (300, &phist)));
@@ -785,7 +791,7 @@ void test2_Reader::operator()()
 
 void test2_iter()
 {
-  TestMap map (TestMap::Updater_t(), 20);
+  TestMap map (TestMap::Updater_t(), delfcn, 20);
 
   const int nthread = 4;
   std::thread threads[nthread];
diff --git a/Control/PerformanceMonitoring/PerfMonVTune/CMakeLists.txt b/Control/PerformanceMonitoring/PerfMonVTune/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2becf9fc535081d93d64a6f4f12e5542b1dcbd4f
--- /dev/null
+++ b/Control/PerformanceMonitoring/PerfMonVTune/CMakeLists.txt
@@ -0,0 +1,38 @@
+################################################################################
+# Package: PerfMonVTune
+################################################################################
+
+# Declare the package name:
+atlas_subdir( PerfMonVTune )
+
+# Declare the package's dependencies:
+atlas_depends_on_subdirs( PUBLIC
+                          GaudiKernel
+                          PRIVATE
+                          Control/AthenaBaseComps
+                          Control/AthenaKernel
+                          TestPolicy )
+
+####
+# VTune hack for the time-being
+find_program( VTUNE_EXECUTABLE amplxe-cl )
+get_filename_component( VTUNE_DIR ${VTUNE_EXECUTABLE} PATH )
+set( ITT_PREFIX ${VTUNE_DIR}/.. )
+
+find_path( ITT_INCLUDE_DIR NAMES ittnotify.h HINTS ${ITT_PREFIX}/include )
+find_library( ITT_LIBRARY NAMES ittnotify HINTS ${ITT_PREFIX}/lib64 )
+
+include_directories(${ITT_INCLUDE_DIR})
+####
+
+# Component(s) in the package:
+atlas_add_component( PerfMonVTune
+                     src/*.cxx
+                     src/components/*.cxx 
+                     LINK_LIBRARIES GaudiKernel AthenaBaseComps AthenaKernel ${ITT_LIBRARY} )
+
+# Install files from the package:
+atlas_install_headers( PerfMonVTune )
+atlas_install_python_modules( python/*.py )
+atlas_install_joboptions( share/*.py )
+atlas_install_scripts( scripts/*.py )
diff --git a/Control/PerformanceMonitoring/PerfMonVTune/PerfMonVTune/IVTuneProfilerSvc.h b/Control/PerformanceMonitoring/PerfMonVTune/PerfMonVTune/IVTuneProfilerSvc.h
new file mode 100644
index 0000000000000000000000000000000000000000..00cbb293daf6e21ae82b9fe07ccdefe3828266d5
--- /dev/null
+++ b/Control/PerformanceMonitoring/PerfMonVTune/PerfMonVTune/IVTuneProfilerSvc.h
@@ -0,0 +1,29 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef VTUNE_IPROFILERSERVICE_H
+#define VTUNE_IPROFILERSERVICE_H
+
+/// Interface definition
+static const InterfaceID IID_IVTuneProfilerService( "IVTuneProfilerService", 0, 1 );
+
+class IVTuneProfilerSvc : public virtual IService {
+
+  public:
+  
+    /// Interface ID definition
+    static const InterfaceID& interfaceID() { return IID_IVTuneProfilerService; }
+
+   /// Resume profiling
+   virtual StatusCode resumeProfiling() = 0; 
+
+    /// Pause profiling
+    virtual StatusCode pauseProfiling() = 0;
+
+    /// Is the profiling running at the moment?
+    virtual bool isProfilingRunning() const = 0;
+
+}; // class IVTuneProfilerSvc
+
+#endif // VTUNE_IPROFILERSERVICE.H
diff --git a/Control/PerformanceMonitoring/PerfMonVTune/scripts/vtune_athena.py b/Control/PerformanceMonitoring/PerfMonVTune/scripts/vtune_athena.py
new file mode 100755
index 0000000000000000000000000000000000000000..673ebba0b9e564aacc78f0115e49e96a46454b21
--- /dev/null
+++ b/Control/PerformanceMonitoring/PerfMonVTune/scripts/vtune_athena.py
@@ -0,0 +1,155 @@
+#!/usr/bin/env python
+
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+
+import glob
+import logging
+import multiprocessing
+import os
+import subprocess
+import sys
+import uuid
+
+# Setting logging options
+fmt = '%(asctime)s :: %(levelname)-8s :: %(message)s'
+datefmt = '%m/%d/%Y %H:%M'
+logger = logging.getLogger(__name__)
+logging.basicConfig(level=logging.DEBUG,
+                    format=fmt,
+                    datefmt=datefmt,
+                    filename='./vtune_athena.log',
+                    filemode='w')
+console = logging.StreamHandler()
+formatter = logging.Formatter(fmt,datefmt=datefmt)
+console.setFormatter(formatter)
+logger.addHandler(console)
+
+####
+## Check Athena Setup 
+####
+def checkAthenaSetup():
+    try:
+      a = subprocess.check_output(['athena','--version']) 
+      logger.debug('Athena version information \n %s',a)
+    except:
+      logger.fatal('Athena is not setup!')
+      sys.exit(-1) 
+
+####
+## Check VTune Setup
+####
+def checkVTuneSetup():
+    try:
+      a = subprocess.check_output(['amplxe-cl','--version']) 
+      logger.debug('VTune version information \n %s',a)
+    except:
+      logger.fatal('VTune is not setup!')
+      sys.exit(-1) 
+
+####
+## AutoGen a jobOptions fragment 
+####
+def generateJOFragment(fileName,firstEvent,lastEvent):
+    logger.info('Creating jOptions fragment %s', fileName) 
+    with open('{}'.format(fileName),'w') as f:
+       f.write('# Auto generated jobOptions fragment to setup Athena VTune profiler')
+       f.write('\ninclude(\'PerfMonVTune/VTuneProfileEventLoop_preInclude.py\')')
+       f.write('\n\nfrom AthenaCommon.AppMgr import ServiceMgr')
+       f.write('\nServiceMgr.VTuneProfilerService.ResumeEvent = {}'.format(firstEvent))
+       f.write('\nServiceMgr.VTuneProfilerService.PauseEvent  = {}'.format(lastEvent))
+
+####
+## Main Function
+####
+def main():
+    ''' Main function that parses user inputs, prepares and runs the tests '''
+
+    from optparse import OptionParser
+    parser=OptionParser(usage='%prog [options]',
+                        version='%prog 0.1.0')
+
+    parser.add_option('--log-level',
+                      type='choice',
+                      action='store',
+                      dest='logLevel',
+                      choices=['critical','error','warning','info','debug'],
+                      default='info',
+                      help='Logging level (default: info)')
+
+    parser.add_option('--collect',
+                      type='choice',
+                      action='store',
+                      dest='collect',
+                      choices=['hotspots','threading','memory-consumption',
+                               'hpc-performance','memory-access','cpugpu-concurrency',
+                               'gpu-hotspots','gpu-profiling','graphics-rendering',
+                               'fpga-interaction','io','system-overview'],
+                      default='hotspots',
+                      help='Run the specified analysis type and collect data into a result (default: hotspots)')
+
+    parser.add_option('--strategy',
+                      type='string',
+                      dest='strategy',
+                      default=':trace:trace',
+                      help='Run the specified strategy and collect data into a result. (default: :trace:trace)')
+
+    parser.add_option('--tf',
+                      type='string',
+                      dest='tf',
+                      default='',
+                      help='Run the specified transformation command and collect data into a result.')
+
+    parser.add_option('--resumeEvent',
+                      type='int',
+                      dest='start',
+                      default=0,
+                      help='Start the profiling from the specified event (default: 0).')
+
+    parser.add_option('--pauseEvent',
+                      type='int',
+                      dest='stop',
+                      default=-1,
+                      help='Start the profiling at the specified event (default: -1).')
+
+    (options,args) = parser.parse_args()
+
+    logger.info(76*'-')
+
+    # Set logging level
+    logger.setLevel(options.logLevel.upper())
+
+    # Check the Athena and VTune setups
+    checkAthenaSetup()
+    checkVTuneSetup()
+
+    # Perpare the JO fragment 
+    joFragment = 'PerfMonVTune_autoSetup.py'
+    generateJOFragment(joFragment, options.start, options.stop) 
+
+    # Prepare the transformation command to execute 
+    if not options.tf:
+        logger.fatal('The transformation command is empty, quitting...')
+        sys.exit(-1)
+
+    args = options.tf.split()
+    if 'preInclude' in args:
+        index = args.index('--preInclude')
+        args.insert(index+1,joFragment)
+    else:
+        args.extend(['--preInclude',joFragment])
+
+    # Run the command
+    cmd = ( 'amplxe-cl' + 
+            ' -collect '  + options.collect  +
+            ' -strategy ' + options.strategy +
+            ' -start-paused -- ' )
+    cmd += ' '.join(args)
+
+    logger.info('Running the full command "{}"'.format(cmd))
+    subprocess.call(cmd,shell=True)
+
+    logger.info('All done...')
+    logger.info(76*'-')
+
+if __name__ == '__main__':
+    main()
diff --git a/Control/PerformanceMonitoring/PerfMonVTune/share/VTuneProfileEventLoop_preInclude.py b/Control/PerformanceMonitoring/PerfMonVTune/share/VTuneProfileEventLoop_preInclude.py
new file mode 100644
index 0000000000000000000000000000000000000000..4240d9f37e01659bc1113164fa96764073f9a9d7
--- /dev/null
+++ b/Control/PerformanceMonitoring/PerfMonVTune/share/VTuneProfileEventLoop_preInclude.py
@@ -0,0 +1,14 @@
+# Set up the profiler service:
+from AthenaCommon.AppMgr import ServiceMgr
+from PerfMonVTune.PerfMonVTuneConf import VTuneProfilerService
+ServiceMgr += VTuneProfilerService("VTuneProfilerService")
+
+ServiceMgr.VTuneProfilerService.ResumeEvent = 10
+
+# Set up the profiler service as the first service to be created:
+theApp.CreateSvc.insert( 0, "VTuneProfilerService/VTuneProfilerService" )
+
+# Print a message with what happened:
+from AthenaCommon.Logging import logging
+log = logging.getLogger( "VTuneProfileEventLoop_preInclude" )
+log.info( "The job's event loop will get profiling" )
diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfileRunner.h b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfileRunner.h
new file mode 100644
index 0000000000000000000000000000000000000000..93d37d9f28403cc91aa38600ab26e2bf16f7a34e
--- /dev/null
+++ b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfileRunner.h
@@ -0,0 +1,22 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef VTUNE_PROFILERUNNER_H
+#define VTUNE_PROFILERUNNER_H
+
+// VTune include(s)
+#include <ittnotify.h>
+
+class VTuneProfileRunner {
+
+  public:
+
+      /// Standard constructor uses the API to resume collection
+      VTuneProfileRunner() { __itt_resume(); }
+      /// Standard destructor uses the API to pause collection
+      ~VTuneProfileRunner() { __itt_pause(); }
+
+};
+
+#endif // VTUNE_PROFILERUNNER_H 
diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..b2bd167ab9f3820816ed18734d93ee6c20f4c3ec
--- /dev/null
+++ b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.cxx
@@ -0,0 +1,168 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
+
+// Gaudi/Athena include(s):
+#include "AthenaKernel/errorcheck.h"
+
+// Local include(s):
+#include "VTuneProfilerService.h"
+
+//
+// Convenience variable(s):
+//
+static const std::string BEGINEVENT_INCIDENT_NAME = "BeginEvent";
+static const std::string ENDEVTLOOP_INCIDENT_NAME = "EndEvtLoop";
+
+/**
+ * Constructor 
+ */
+VTuneProfilerService::VTuneProfilerService( const std::string& name, ISvcLocator* svcloc )
+  : AthService( name, svcloc ),
+    m_incidentSvc( "IncidentSvc", name ),
+     m_processedEvents( 0 )  {
+
+      declareProperty( "ResumeEvent", m_resumeEvent = 0,
+                       "Event in which to resume the profiling." );
+      declareProperty( "PauseEvent", m_pauseEvent = -1,
+                       "Event in which to pause the profiling. Negative number "
+                       "profiles the entire event-loop." );
+
+}
+
+/**
+ * QueryInterface 
+ */
+StatusCode VTuneProfilerService::queryInterface( const InterfaceID& riid,
+                                                 void** ppvIF ) {
+
+   if( ! ppvIF ) {
+      return StatusCode::FAILURE;
+   }
+
+   if( riid == IVTuneProfilerSvc::interfaceID() ) {
+      *ppvIF = static_cast< IVTuneProfilerSvc* >( this );
+      return StatusCode::SUCCESS;
+   }
+
+   return AthService::queryInterface( riid, ppvIF );
+
+}
+
+
+/**
+ * Initalize the service
+ */
+StatusCode VTuneProfilerService::initialize() {
+
+  // Print information 
+  ATH_MSG_INFO( "Initializing VTuneProfilerService" );
+
+  // Set up listening to the incidents
+  CHECK( m_incidentSvc.retrieve() );
+  m_incidentSvc->addListener( this, BEGINEVENT_INCIDENT_NAME );
+  m_incidentSvc->addListener( this, ENDEVTLOOP_INCIDENT_NAME );
+
+  // Reset the event counter:
+  m_processedEvents = 0;
+
+  return StatusCode::SUCCESS;
+
+}
+
+/**
+ * Resume the profiling
+ */
+StatusCode VTuneProfilerService::resumeProfiling() {
+
+  // Check whether the profiling is already running:
+  if( m_runner ) {
+    ATH_MSG_INFO( "VTune profiling already running!" );
+    return StatusCode::SUCCESS;  
+  }
+
+  // Print information 
+  ATH_MSG_INFO( "Starting VTune profiling." );
+
+  // Resume VTune
+  m_runner = std::make_unique< VTuneProfileRunner >();
+
+  return StatusCode::SUCCESS;
+
+}
+
+/**
+ * Pause the profiling
+ */
+StatusCode VTuneProfilerService::pauseProfiling() {
+
+  // Check whether the profiling is already running:
+  if( !m_runner ) {
+    ATH_MSG_INFO( "VTune profiling is not running!" );
+    return StatusCode::SUCCESS;  
+  }
+
+  // Print information 
+  ATH_MSG_INFO( "Stopping VTune profiling." );
+
+  // Pause VTune
+  m_runner.reset();
+
+  return StatusCode::SUCCESS;
+
+}
+
+/**
+ * Is the profiling running? 
+ */
+bool VTuneProfilerService::isProfilingRunning() const {
+
+  return (m_runner!=nullptr);
+
+}
+
+/**
+ * Handle when to resume/pause the profiling 
+ */
+void VTuneProfilerService::handle( const Incident& inc ) {
+
+  //
+  // Pause the profiling after the last event
+  //
+  if( inc.type() == ENDEVTLOOP_INCIDENT_NAME ) {
+    if( m_runner ) {
+      if( pauseProfiling().isFailure() ) {
+        REPORT_MESSAGE( MSG::ERROR )
+           << "Could not pause the profiling";
+      }
+    }
+    return;
+  }
+
+  //
+  // Resume/Pause the profiling on the right event 
+  //
+  if( inc.type() == BEGINEVENT_INCIDENT_NAME ) {
+     if( m_resumeEvent == m_processedEvents && 
+         !m_runner ) {
+        if( resumeProfiling().isFailure() ) {
+           REPORT_MESSAGE( MSG::ERROR )
+              << "Could not resume the profiling";
+        }
+     }
+     if( m_pauseEvent == m_processedEvents ) {
+        if( pauseProfiling().isFailure() &&
+            m_runner ) {
+           REPORT_MESSAGE( MSG::ERROR )
+              << "Could not pause the profiling";
+        }
+     }
+     ++m_processedEvents;
+     return;
+  }
+
+  // Complain if we received an incident that we didn't expect:
+  ATH_MSG_WARNING( "Wrong incident type received: " << inc.type() );
+  return;
+
+}
diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h
new file mode 100644
index 0000000000000000000000000000000000000000..4dfb058b80d05c158eebe84909909126f6385296
--- /dev/null
+++ b/Control/PerformanceMonitoring/PerfMonVTune/src/VTuneProfilerService.h
@@ -0,0 +1,70 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef VTUNE_PROFILERSERVICE_H
+#define VTUNE_PROFILERSERVICE_H
+
+// STD include(s):
+#include <atomic>
+#include <memory>
+
+// Gaudi/Athena include(s):
+#include "GaudiKernel/ServiceHandle.h"
+#include "GaudiKernel/IIncidentListener.h"
+#include "GaudiKernel/IIncidentSvc.h"
+#include "AthenaBaseComps/AthService.h"
+
+// Local include(s):
+#include "VTuneProfileRunner.h"
+#include "PerfMonVTune/IVTuneProfilerSvc.h"
+
+
+class VTuneProfilerService : public AthService,
+                             public virtual IVTuneProfilerSvc,
+                             public virtual IIncidentListener {
+
+  public:
+
+      /// Standard Gaudi service constructor
+      VTuneProfilerService( const std::string& name, ISvcLocator* svcloc );
+
+      /// Function declaring the interface(s) implemented by the service
+      virtual StatusCode queryInterface( const InterfaceID& riid,
+                                         void** ppvIF ) override;
+
+      /// Standard Gaudi initialization function
+      virtual StatusCode initialize() override;
+
+      /// Resume profiling
+      virtual StatusCode resumeProfiling() override;
+
+      /// Pause profiling
+      virtual StatusCode pauseProfiling() override;
+
+      /// Is the profiling running at the moment?
+      virtual bool isProfilingRunning() const override;
+
+      /// Function handling incoming incidents
+      virtual void handle( const Incident& inc ) override;
+
+  private:
+
+      /// Handle to the incident service
+      ServiceHandle< IIncidentSvc > m_incidentSvc;
+
+      /// Property: Event in which profiling should start
+      int m_resumeEvent;
+
+      /// Property: Event in which profiling should pause 
+      int m_pauseEvent;
+
+      /// Unique ptr to the VTuneProfileRunner
+      std::unique_ptr< VTuneProfileRunner > m_runner;
+
+      /// Number of events processed so far
+      std::atomic<int> m_processedEvents;
+
+}; // class IVTuneProfilerSvc
+
+#endif // VTUNE_PROFILERSERVICE.H
diff --git a/Control/PerformanceMonitoring/PerfMonVTune/src/components/PerfMonVTune_entries.cxx b/Control/PerformanceMonitoring/PerfMonVTune/src/components/PerfMonVTune_entries.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..90565363edb4d0286e31992455b1436d294308d5
--- /dev/null
+++ b/Control/PerformanceMonitoring/PerfMonVTune/src/components/PerfMonVTune_entries.cxx
@@ -0,0 +1,3 @@
+#include "../VTuneProfilerService.h"
+
+DECLARE_COMPONENT( VTuneProfilerService )
diff --git a/DataQuality/DataQualityConfigurations/config/CTP/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/CTP/heavyions_run.config
index 94610c9f812482d04fe6b38468017be141608aaf..bc600deeb24985bce2aba3cf593561f9a659077c 100644
--- a/DataQuality/DataQualityConfigurations/config/CTP/heavyions_run.config
+++ b/DataQuality/DataQualityConfigurations/config/CTP/heavyions_run.config
@@ -32,7 +32,8 @@ output top_level {
 #######################
 
 dir CT {
-  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
   algorithm = CTP_GatherData
 
   output = CentralTrigger/ErrorSummary
@@ -245,7 +246,8 @@ dir CT {
 algorithm CTP_GatherData {
   libname = libdqm_algorithms.so
   name = GatherData
-  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 algorithm errorSummary_Entries {
diff --git a/DataQuality/DataQualityConfigurations/config/HLT/HLTbphys/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/HLT/HLTbphys/heavyions_run.config
index 55c9ca597f8138ed5873894bfd06b05c37d1ac4e..aeedce6f890acea6c2791ed6bfa3be6fecb50036 100644
--- a/DataQuality/DataQualityConfigurations/config/HLT/HLTbphys/heavyions_run.config
+++ b/DataQuality/DataQualityConfigurations/config/HLT/HLTbphys/heavyions_run.config
@@ -78,7 +78,8 @@ dir HLT {
   algorithm = HLT_Histogram_Not_Empty&GatherData
 
   dir BphysMon {
-    reference = CentrallyManagedReferences
+    #reference = CentrallyManagedReferences
+    reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 
     #shifter dir holds general hists - note this is the root file shifter
     dir shifter {
@@ -181,7 +182,8 @@ dir HLT {
         # for shifters
         hist TrigBphys_BMuMu_mass {
           output =  HLT/TRBPH/Shifter/BMuMu
-          reference = CentrallyManagedReferences
+          #reference = CentrallyManagedReferences
+	  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 #           algorithm = BPhys_HistKolmogorovTest_MaxDist
         }
         hist TrigBphys_BMuMu_eta {
@@ -269,7 +271,8 @@ dir HLT {
       dir JpsiFinder {
 #         algorithm = BPhys_HistKolmogorovTest_MaxDist
         algorithm = BPhys_HistNotEmpty_YellowEmpty&GatherData
-        reference = CentrallyManagedReferences
+        #reference = CentrallyManagedReferences
+	reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
         
         # for experts
         hist TrigBphys_Jpsi_mass_central {
@@ -384,7 +387,8 @@ dir HLT {
             #algorithm = HLT_Histogram_Not_Empty&GatherData
             algorithm = Bphys_YMeanNonZero&BPhys_HistNotEmpty_YellowEmpty&GatherData
             output = HLT/TRBPH/Shifter/Containers
-            reference = CentrallyManagedReferences
+            #reference = CentrallyManagedReferences
+	    reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
         }
         
         # for experts
@@ -393,27 +397,33 @@ dir HLT {
           # Five histograms for the offline shifter
           hist TrigBphys_HLT_xAOD__TrigBphysContainer_EFBMuMuFex_pTmu1 {
             output = HLT/TRBPH/Expert/Containers
-            reference = CentrallyManagedReferences
+            #reference = CentrallyManagedReferences
+	    reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
           }
           hist TrigBphys_HLT_xAOD__TrigBphysContainer_EFBMuMuFex_pTmu2 {
             output = HLT/TRBPH/Expert/Containers
-            reference = CentrallyManagedReferences
+            #reference = CentrallyManagedReferences
+	    reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
           }
           hist TrigBphys_HLT_xAOD__TrigBphysContainer_EFBMuMuFex_dphi {
             output = HLT/TRBPH/Expert/Containers
-            reference = CentrallyManagedReferences
+            #reference = CentrallyManagedReferences
+	  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
           }
           hist TrigBphys_HLT_xAOD__TrigBphysContainer_EFBMuMuFex_deta {
             output = HLT/TRBPH/Expert/Containers
-            reference = CentrallyManagedReferences
+            #reference = CentrallyManagedReferences
+	    reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
           }
           hist TrigBphys_HLT_xAOD__TrigBphysContainer_EFBMuMuFex_pTsum {
             output = HLT/TRBPH/Expert/Containers
-            reference = CentrallyManagedReferences
+            #reference = CentrallyManagedReferences
+	    reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
           }
           hist TrigBphys_HLT_xAOD__TrigBphysContainer_EFBMuMuFex_mass {
             output = HLT/TRBPH/Expert/Containers
-            reference = CentrallyManagedReferences
+            #reference = CentrallyManagedReferences
+	  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
           }
         }
         
@@ -468,7 +478,8 @@ dir HLT {
 compositeAlgorithm BPhys_HistNotEmpty_YellowEmpty&GatherData {
   subalgs = Bins_GreaterThan_Threshold,GatherData
   libnames = libdqm_algorithms.so
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 compositeAlgorithm Bphys_YMeanNonZero&BPhys_HistNotEmpty_YellowEmpty&GatherData {
@@ -485,7 +496,8 @@ algorithm BPhys_HistNotEmpty_YellowEmpty&GatherData {
 algorithm HLTbphys_Histogram_Not_Empty&GatherData {
   libname = libdqm_algorithms.so
   name = HLT_Histogram_Not_Empty&GatherData
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 # KolmogorovTest method: scale histograms first
@@ -495,7 +507,8 @@ algorithm BPhys_HistKolmogorovTest_MaxDist {
   thresholds = BPhys_HistKolmogorovTest_MaxDist_Threshold
   MinStat = -1
   #reference = stream=physics_Muons:CentrallyManagedReferences_Muons;CentrallyManagedReferences 
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 # KolmogorovTest method: assume both histograms are scaled
@@ -505,7 +518,8 @@ algorithm BPhys_HistKolmogorovTest_Prob {
   thresholds = BPhys_HistKolmogorovTest_Prob_Threshold
   MinStat = -1
   #reference = stream=physics_Muons:CentrallyManagedReferences_Muons;CentrallyManagedReferences 
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 # Check containers_size histogram - should have entries with non-zero container size
@@ -516,7 +530,8 @@ algorithm Bphys_YMeanNonZero&BPhys_HistNotEmpty_YellowEmpty&GatherData {
   Bins_GreaterThan_Threshold|thresholds = BPhys_HistNotEmpty_YellowEmpty_Threshold
   CheckHisto_Mean|thresholds = Bphys_YMeanNonZero_Threshold
   #MinStat = 10
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 ###############
diff --git a/DataQuality/DataQualityConfigurations/config/HLT/HLTglobal/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/HLT/HLTglobal/heavyions_run.config
index b482de4b42da23e48f07a6abd94881c2190d39e9..7140656321f85e566e8f1eb4469d56a0cd70463b 100644
--- a/DataQuality/DataQualityConfigurations/config/HLT/HLTglobal/heavyions_run.config
+++ b/DataQuality/DataQualityConfigurations/config/HLT/HLTglobal/heavyions_run.config
@@ -47,21 +47,18 @@ reference HLT_local_reference {
 #######################
 
 dir HLT {
-##   algorithm = HLT_Histogram_Not_Empty&GatherData
-##   reference = HLT_local_reference
 
    dir ResultMon {
        output = HLT/TRHLT
        
        hist ConfigConsistency_HLT {
-##	 regex = 1
          algorithm = HLT_Histogram_Empty
          description = All bins should be empty. If any bin is filled, inform the Trigger ONLINE Expert IMMEDIATELY. 
        }
 
        hist HLTResultHLT { 
-##	 regex = 1
-	 algorithm = HLT_Histogram_Not_Empty&GatherData
+#	 algorithm = HLT_Histogram_Not_Empty_with_Ref&GatherData
+         algorithm = HLT_Histogram_Not_Empty&GatherData
        }
 
        hist L1Events { 
@@ -74,17 +71,14 @@ dir HLT {
         hist HLT.*P[ST] {
 	  regex = 1
           algorithm = HLT_Histogram_Not_Empty&GatherData
-##	  algorithm = HLT_PassInput
 	}
 	hist HLT_AllChainsRAW {
 	  regex = 1
           algorithm = HLT_Histogram_Not_Empty&GatherData
-##	  algorithm = HLT_PassInput
 	}
 	hist AllChainsRoIs {
 	  regex = 1
           algorithm = HLT_Histogram_Not_Empty&GatherData
-##	  algorithm = HLT_PassInput
           description = Histogram should not be empty. If it is, contact the Trigger Offline Expert on-call. 
 	}
        }
@@ -94,16 +88,13 @@ dir HLT {
         hist HLT.*P[ST] {
 	  regex = 1
           algorithm = HLT_Histogram_Not_Empty&GatherData
-##	  algorithm = HLT_PassInput
 	}
 	hist HLT_ElectronsRAW {
 	  regex = 1
           algorithm = HLT_Histogram_Not_Empty&GatherData
-##	  algorithm = HLT_PassInput
 	}
 	hist ElectronsRoIs {
 	  regex = 1
-##	  algorithm = HLT_PassInput
 	  algorithm = HLT_Histogram_Not_Empty&GatherData
           description = Histogram should not be empty. If it is, contact the Trigger Offline Expert and the Egamma Expert on-call. 
 	}
@@ -115,16 +106,13 @@ dir HLT {
 	hist HLT.*P[ST] {
 	  regex = 1
           algorithm = HLT_Histogram_Not_Empty&GatherData
-##	  algorithm = HLT_PassInput
 	}
 	hist HLT_GammaRAW {
 	  regex = 1
           algorithm = HLT_Histogram_Not_Empty&GatherData
-##	  algorithm = HLT_PassInput
 	}
 	hist GammaRoIs {
 	  regex = 1
-##	  algorithm = HLT_PassInput
 	  algorithm = HLT_Histogram_Not_Empty&GatherData
           description = Histogram should not be empty. If it is, contact the Trigger Offline Expert and the Egamma Expert on-call. 
 	}
@@ -135,12 +123,10 @@ dir HLT {
         hist HLT.*P[ST] {
 	  regex = 1
           algorithm = HLT_Histogram_Not_Empty&GatherData
-##	  algorithm = HLT_PassInput
 	}
 	hist HLT_JetsRAW {
 	  regex = 1
           algorithm = HLT_Histogram_Not_Empty&GatherData
-##	  algorithm = HLT_PassInput
 	}
        }
 
@@ -166,16 +152,13 @@ dir HLT {
 	hist HLT.*P[ST] {
 	  regex = 1
           algorithm = HLT_Histogram_Not_Empty&GatherData
-##	  algorithm = HLT_PassInput
 	}
 	hist HLT_MuonsRAW {
 	  regex = 1
           algorithm = HLT_Histogram_Not_Empty&GatherData
-##	  algorithm = HLT_PassInput
 	}
 	hist MuonsRoIs {
 	  regex = 1
-##	  algorithm = HLT_PassInput
 	  algorithm = HLT_Histogram_Not_Empty&GatherData
           description = Histogram should not be empty. If it is, contact the Trigger Offline Expert and the Muon Expert on-call. 
 	}
@@ -199,9 +182,9 @@ algorithm HLT_Histogram_Not_Empty&GatherData {
 
 algorithm HLT_Histogram_Not_Empty_with_Ref&GatherData {
   name = HLT_Histogram_Not_Empty&GatherData
-  #reference = HLT_local_reference
-  #reference = CentrallyManagedReferences 
-  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+#  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+#  reference = stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 
diff --git a/DataQuality/DataQualityConfigurations/config/HLT/HLTidtrk/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/HLT/HLTidtrk/heavyions_run.config
index 55ed6514891c1aecf83fd7be870afec8c02a4a13..361a707a8327513feafba2442a314212368ba03f 100644
--- a/DataQuality/DataQualityConfigurations/config/HLT/HLTidtrk/heavyions_run.config
+++ b/DataQuality/DataQualityConfigurations/config/HLT/HLTidtrk/heavyions_run.config
@@ -25,7 +25,8 @@ reference HLTIDRef {
 algorithm HLTid_Histogram_Not_Empty_with_Ref&GatherData {
   libname = libdqm_algorithms.so
   name = HLT_Histogram_Not_Empty&GatherData
-  reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
+  # reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain
   #  reference = stream=express_express:CentrallyManagedReferences;stream=physics_Main:CentrallyManagedReferences_Main
   #  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
 }
diff --git a/DataQuality/DataQualityConfigurations/config/HLT/HLTjet/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/HLT/HLTjet/heavyions_run.config
index 591cb902fd8669c3c5946b2cab6e7248cf0f1746..480bfd91ce718004e1f8a607fe14709e5e84a8b3 100644
--- a/DataQuality/DataQualityConfigurations/config/HLT/HLTjet/heavyions_run.config
+++ b/DataQuality/DataQualityConfigurations/config/HLT/HLTjet/heavyions_run.config
@@ -703,7 +703,8 @@ algorithm HLTjet_Histogram_Not_Empty&GatherData {
 algorithm HLTjet_Histogram_Not_Empty_with_Ref&GatherData {
   name = HLTjet_Histogram_Not_Empty&GatherData
   #reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain
-  reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain
+  #reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 algorithm HLTjet_PassInput {
@@ -716,7 +717,8 @@ algorithm HLTjet_CheckMean {
   name = AlgCheckMean
   thresholds = HLTjet_CheckMeanThresh
   MinStat = 100
-  reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain
+  #reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 algorithm HLTjet_KolmogorovTest_MaxDist {
@@ -724,7 +726,8 @@ algorithm HLTjet_KolmogorovTest_MaxDist {
   name = KolmogorovTest_MaxDist
   thresholds = HLTjet_KolmogorovThresh
   MinStat = 100
-  reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain
+  #reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 algorithm HLTjet_Bins_Diff_FromAvg {
@@ -736,7 +739,8 @@ algorithm HLTjet_Bins_Diff_FromAvg {
   GreaterThan = 1
   LessThan = 0
   NSigma = 40
-  reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain
+  #reference = stream=express_express:CentrallyManagedReferences_Trigger;stream=physics_Main:CentrallyManagedReferences_TriggerMain
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 
diff --git a/DataQuality/DataQualityConfigurations/config/HLT/HLTmet/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/HLT/HLTmet/heavyions_run.config
index 980fa46d3f79c19e820f797b90e14525cf0e4651..7220ffac118ed53aafa92e7dab2d53d0e4dd3236 100644
--- a/DataQuality/DataQualityConfigurations/config/HLT/HLTmet/heavyions_run.config
+++ b/DataQuality/DataQualityConfigurations/config/HLT/HLTmet/heavyions_run.config
@@ -28,13 +28,14 @@ output top_level {
 #######################
 
 dir HLT {
-  algorithm = HLTmet_Histogram_Not_Empty&GatherData
+  #algorithm = HLTmet_Histogram_Not_Empty&GatherData
 
   ##############################
   # begin METMon
   ##############################
 
   dir METMon {
+    algorithm = HLTmet_Histogram_Not_Empty&GatherData
     dir Shifter {
       dir L1 {
         dir Primary {
@@ -69,6 +70,7 @@ compositeAlgorithm HLTmet_Histogram_Not_Empty&GatherData {
 }
 algorithm HLTmet_Histogram_Not_Empty&GatherData {
   name = HLTmet_Histogram_Not_Empty&GatherData
-  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
diff --git a/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_minutes10.config b/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_minutes10.config
index 89925aa3ce2c9b2422061c56fafaca3ce6041440..bfc67b9e5093218cae60c29a9e4a09c4213c7190 100644
--- a/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_minutes10.config
+++ b/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_minutes10.config
@@ -31,39 +31,46 @@ dir HLT {
       hist L2MuonSA_eta_vs_phi_in_10LBs {
         output = HLT/TRMUO
         algorithm = alg_eta_vs_phi
-reference = CentrallyManagedReferences
+        #reference = CentrallyManagedReferences
+        reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
       }
       hist muComb_eta_vs_phi_in_10LBs {
         output = HLT/TRMUO
         algorithm = alg_eta_vs_phi
-reference = CentrallyManagedReferences
+        #reference = CentrallyManagedReferences
+        reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
       }
       hist muIso_eta_vs_phi_in_10LBs {
         output = HLT/TRMUO
         algorithm = alg_eta_vs_phi
         weight = 0.0
-reference = CentrallyManagedReferences
+        #reference = CentrallyManagedReferences
+        reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
       }
       hist TileMu_eta_vs_phi_in_10LBs {
         output = HLT/TRMUO
         algorithm = alg_eta_vs_phi_tilemu
         weight = 0.0
-reference = CentrallyManagedReferences
+        #reference = CentrallyManagedReferences
+        reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
       }
       hist EFMS_eta_vs_phi_in_10LBs {
         output = HLT/TRMUO
         algorithm = alg_eta_vs_phi
-reference = CentrallyManagedReferences
+        #reference = CentrallyManagedReferences
+        reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
       }
       hist EFSA_eta_vs_phi_in_10LBs {
         output = HLT/TRMUO
         algorithm = alg_eta_vs_phi
-reference = CentrallyManagedReferences
+        #reference = CentrallyManagedReferences
+        reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
       }
       hist EFCB_eta_vs_phi_in_10LBs {
         output = HLT/TRMUO
         algorithm = alg_eta_vs_phi
-reference = CentrallyManagedReferences
+        #reference = CentrallyManagedReferences
+        reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
       }
     }
   }
diff --git a/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_run.config
index ffca65af3f46ab9fbdfdccc2b03dc5e41a858444..4c275cf3285d90dfcc8a4df00f933b57ad38135e 100644
--- a/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_run.config
+++ b/DataQuality/DataQualityConfigurations/config/HLT/HLTmuon/heavyions_run.config
@@ -2379,7 +2379,8 @@ dir HLT {
 algorithm TRMUO_GatherData {
   libname = libdqm_algorithms.so
   name = GatherData
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 algorithm TRMUO_GatherDataNoRef {
@@ -2390,14 +2391,16 @@ algorithm TRMUO_GatherDataNoRef {
 compositeAlgorithm Muon_Bins_LessThan_Threshold&GatherData {
   subalgs = Bins_LessThan_Threshold,GatherData
   libnames = libdqm_algorithms.so
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 algorithm Muon_Bins_LessThan_Threshold&GatherData {
   name = Muon_Bins_LessThan_Threshold&GatherData
   BinThreshold = -1
   thresholds = th_Muon_Bins_LessThan_Threshold&GatherData
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 algorithm alg_L2MuonSA_residual_barrel {
@@ -2406,7 +2409,8 @@ algorithm alg_L2MuonSA_residual_barrel {
   SubtractFromMean = 0.
   MinStat = 1000
   thresholds = th_L2MuonSA_residual_barrel
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 algorithm alg_L2MuonSA_residual_endcap {
@@ -2415,7 +2419,8 @@ algorithm alg_L2MuonSA_residual_endcap {
   SubtractFromMean = 0.
   MinStat = 1000
   thresholds = th_L2MuonSA_residual_endcap
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 algorithm alg_eta_vs_phi {
@@ -2431,7 +2436,8 @@ algorithm alg_eta_vs_phi {
 # 10% due to barrel holes
 # 8294
   TotalBins = 8294
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 algorithm alg_eta_vs_phi_barrel {
@@ -2447,7 +2453,8 @@ algorithm alg_eta_vs_phi_barrel {
 # 10% due to barrel holes
 # 8294
   TotalBins = 8294
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 algorithm alg_muComb_ptratio {
@@ -2456,7 +2463,8 @@ algorithm alg_muComb_ptratio {
   SubtractFromMean = 1.
   MinStat = 1000
   thresholds = th_muComb_ptratio
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 #for Shift
@@ -2475,7 +2483,8 @@ algorithm effalgmin_ESid_mu20 {
   name = BinContentComp&BinContentDump
   thresholds = effmin_ESid_mu20_th
 #reference = HLTmuonShiftES20thr_Ref
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
   NSigma = 2.0
   LessThan = 1
   PublishBins = 1
@@ -2487,7 +2496,8 @@ algorithm effalgmin_highpt3bins {
   name = BinContentComp&BinContentDump
   thresholds = effmin_highpt3bins_th
 #reference = HLTmuonShiftES20thr_Ref
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
   NSigma = 2.0
   LessThan = 1
   PublishBins = 1
@@ -2499,7 +2509,8 @@ algorithm effalgmin_highpt2bins {
   name = BinContentComp&BinContentDump
   thresholds = effmin_highpt2bins_th
 #reference = HLTmuonShiftES20thr_Ref
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
   NSigma = 2.0
   LessThan = 1
   PublishBins = 1
@@ -2512,7 +2523,8 @@ algorithm effalgmin_4bins {
   name = BinContentComp&BinContentDump
   thresholds = effmin_generic4bins_th
 #  reference = HLTmuonShift2012thr_HI_Ref
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
   NSigma = 2.0
   LessThan = 1
   PublishBins = 1
@@ -2524,7 +2536,8 @@ algorithm effalgmin_3bins {
   name = BinContentComp&BinContentDump
   thresholds = effmin_generic3bins_th
 #reference = HLTmuonShift2012thr_HI_Ref
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
   NSigma = 2.0
   LessThan = 1
   PublishBins = 1
@@ -2536,7 +2549,8 @@ algorithm effalgmin_2bins {
   name = BinContentComp&BinContentDump
   thresholds = effmin_generic2bins_th
 #reference = HLTmuonShift2012thr_HI_Ref
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
   NSigma = 2.0
   LessThan = 1
   PublishBins = 1
@@ -2547,7 +2561,8 @@ algorithm coarse1dcomp_mu8_L2MuonSA {
   libname = libdqm_algorithms.so
   name = BinContentComp
   thresholds = coarse1dcomp_mu8_L2MuonSA_th
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
   NSigma = 3.0
   LessThan = 1
   NormRef = 1
@@ -2559,12 +2574,14 @@ algorithm coarse1dcomp_mu8_L2MuonSA {
 compositeAlgorithm BinContentComp&BinContentDump {
   subalgs = BinContentComp,BinContentDump
 #reference = HLTmuonShift2012thr_HI_Ref
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 compositeAlgorithm BinContentComp&BinContentDump2 {
   subalgs = BinContentComp,BinContentDump
-  reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  #reference = stream=physics_Main:CentrallyManagedReferences_Main;CentrallyManagedReferences
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 algorithm TRMUO_fermi_fit_mu15_MSonly_EStag_L2MuonSA_upstream_Fit {
diff --git a/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_minutes10.config b/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_minutes10.config
index b5f260857336c85aace58bec0ebbc845459247ab..21aad98c9410cbbc8bc31a4f4b55f2a820b27445 100644
--- a/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_minutes10.config
+++ b/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_minutes10.config
@@ -30,7 +30,8 @@ output top_level {
 
 dir L1Calo {
   algorithm = L1Calo_GatherData
-  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
   output = L1Calo
   dir PPM {
     dir LUT-CP {
@@ -233,7 +234,8 @@ dir L1Calo {
 algorithm L1Calo_GatherData {
   libname = libdqm_algorithms.so
   name = GatherData
-  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 algorithm L1Calo_IsEmpty {
diff --git a/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_run.config
index a29ae668260bf48f04b915722803464d227105cf..8318f55c566682c07235b9eb215b76a5b46424bd 100644
--- a/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_run.config
+++ b/DataQuality/DataQualityConfigurations/config/L1Calo/heavyions_run.config
@@ -3538,14 +3538,17 @@ dir HLT {
         hist L1_HLT_EtCor@gs {
           output = L1Calo/.GlobalSummary/MET
           description = Original location HLT/TRMET/Expert/L1_vs_HLT. L1 missing et from LVL1EnergySumRoI container, HLT missing et from LVL1EnergySumRoI container
+	  algorithm = GatherData
         }
         hist L1_HLT_dEx@gs {
           output = L1Calo/.GlobalSummary/MET
           description = Original location HLT/TRMET/Expert/L1_vs_HLT. L1 missing et x - HLT missing et x
+	  algorithm = GatherData
         }
         hist L1_HLT_dEy@gs {
           output = L1Calo/.GlobalSummary/MET
           description = Original location HLT/TRMET/Expert/L1_vs_HLT. L1 missing et y - HLT missing et y
+	  algorithm = GatherData
         }
       }
     }
@@ -3554,6 +3557,7 @@ dir HLT {
        hist Eff_L1_XE50@gs {
           output = L1Calo/.GlobalSummary/MET
           description = Original location HLT/TRMET/Shifter/L1. Number of events pass the L1_XE50 trigger/total number of events
+	  algorithm = GatherData
         } 
       }
     }
@@ -3628,7 +3632,8 @@ dir HLT {
           dir L1Calo {
             hist res_etVsEta@gsEM22VHI {
               display = StatBox
-              reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+              #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+              reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
               output = L1Calo/.GlobalSummary/EGamma
               description = Original location HLT/TREG/Expert/L1_EM22VHI/AbsResolutions/L1Calo. https://twiki.cern.ch/twiki/bin/view/Atlas/TrigEgammaDataQualityAndMonitoring
             }
@@ -3638,7 +3643,8 @@ dir HLT {
           dir L1Calo {
             hist emClusVsEmIsol@gsEM22VHI {
               display = StatBox
-              reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+              #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+              reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
               output = L1Calo/.GlobalSummary/EGamma
               description = Original location HLT/TREG/Expert/L1_EM22VHI/Distributions/L1Calo. https://twiki.cern.ch/twiki/bin/view/Atlas/TrigEgammaDataQualityAndMonitoring
             }
@@ -3648,7 +3654,8 @@ dir HLT {
           dir L1Calo {
             hist eff_et@gsEM22VHI {
               display = StatBox
-              reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+              #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+              reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
               output = L1Calo/.GlobalSummary/EGamma 
               description = Original location HLT/TREG/Expert/L1_EM22VHI/Efficiency/L1Calo
             }
@@ -3660,7 +3667,8 @@ dir HLT {
           dir L1Calo {
             hist emClusVsEmIsol@gsEM20VH {
               display = StatBox
-              reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+              #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+              reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
               output = L1Calo/.GlobalSummary/EGamma
               description = Original location HLT/TREG/Expert/L1_EM20VH/Distributions/L1Calo. https://twiki.cern.ch/twiki/bin/view/Atlas/TrigEgammaDataQualityAndMonitoring
             }
@@ -3670,7 +3678,8 @@ dir HLT {
           dir L1Calo {
             hist eff_et@gsEM20VH {
               display = StatBox
-              reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+              #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+              reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
               output = L1Calo/.GlobalSummary/EGamma
               description = Original location HLT/TREG/Expert/L1_EM20VH/Efficiency/L1Calo. https://twiki.cern.ch/twiki/bin/view/Atlas/TrigEgammaDataQualityAndMonitoring
             } 
@@ -3684,14 +3693,16 @@ dir HLT {
       dir lowest_singletau {
         dir TurnOnCurves {
           hist TProfRecoL1PtEfficiency_shifter@gs {
-            reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+            #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+            reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
             algorithm = GatherData
             display = StatBox
             output = L1Calo/.GlobalSummary/TAU
             description = Original location HLT/TRTAU/Shifter/lowest_singletau/TurnOnCurves
           }
           hist TProfRecoL1EtaEfficiency_shifter@gs {
-            reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+            #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+            reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
             algorithm = GatherData
             display = StatBox
             output = L1Calo/.GlobalSummary/TAU
@@ -3705,7 +3716,8 @@ dir HLT {
 
 dir GLOBAL {
   algorithm = GatherData
-  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
   dir Luminosity {
     dir AnyTrigger {
       hist aveMu_vs_LB@gs {
@@ -3734,7 +3746,8 @@ dir GLOBAL {
 
 dir L1Calo {
   algorithm = L1Calo_GatherData
-  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
   output = L1Calo
   dir PPM {
     dir SpareChannels {
@@ -5532,7 +5545,8 @@ dir L1Calo {
 algorithm L1Calo_GatherData {
   libname = libdqm_algorithms.so
   name = GatherData
-  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
 algorithm L1Calo_IsEmpty {
@@ -5719,7 +5733,8 @@ thresholds L1Calo_JetEfficiencies {
 
 dir LVL1_Interfaces {
   algorithm = LVL1Iface_GatherData
-  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
   dir L1Topo {
     hist l1topo_1d_CMXTobs {
       output = L1Interfaces/L1Topo
@@ -6227,6 +6242,7 @@ dir LVL1_Interfaces {
 algorithm LVL1Iface_GatherData {
   libname = libdqm_algorithms.so
   name = GatherData
-  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  #reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;CentrallyManagedReferences_Trigger
+  reference = stream=physics_Main:CentrallyManagedReferences_TriggerMain;stream=physics_HardProbes:CentrallyManagedReferences_TriggerHardProbes;stream=physics_UPC:CentrallyManagedReferences_TriggerUPC;CentrallyManagedReferences_Trigger
 }
 
diff --git a/DataQuality/DataQualityConfigurations/config/common/heavyions_run.config b/DataQuality/DataQualityConfigurations/config/common/heavyions_run.config
index 6e1cbd1ba114e8b5604e20759e14efe606a1967b..d46b5ac6dadcb2096b5cf3c368166dee4b3f7ef8 100644
--- a/DataQuality/DataQualityConfigurations/config/common/heavyions_run.config
+++ b/DataQuality/DataQualityConfigurations/config/common/heavyions_run.config
@@ -24,9 +24,9 @@ reference CentrallyManagedReferences_Main {
 
 reference CentrallyManagedReferences_Trigger {
   location = /eos/atlas/atlascerngroupdisk/data-dqm/references/,root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/data-dqm/references/
-  file = data15_hi.00287866.express_express.merge.HIST.f1011_h329._0001.1
-  path = run_287866
-  info = Run 287866, express
+  file = data18_hi.00365573.express_express.merge.HIST.f1021_h331._0001.1
+  path = run_365573
+  info = Run 365573, express
   name = same_name
 }
 
@@ -46,6 +46,14 @@ reference CentrallyManagedReference_UPC {
   name = same_name
 }
 
+reference CentrallyManagedReferences_TriggerUPC {
+  location = /eos/atlas/atlascerngroupdisk/data-dqm/references/,root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/data-dqm/references/
+  file = data18_hi.00365573.physics_UPC.merge.HIST.f1022_h331._0001.1
+  path = run_365573
+  info = Run 365573, physics_UPC
+  name = same_name
+}
+
 reference CentrallyManagedReference_HardProbes {
   location = /eos/atlas/atlascerngroupdisk/data-dqm/references/,root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/data-dqm/references/
   file = data15_hi.00287866.physics_HardProbes.merge.HIST.f1011_h329._0001.1
@@ -54,6 +62,14 @@ reference CentrallyManagedReference_HardProbes {
   name = same_name
 }
 
+reference CentrallyManagedReferences_TriggerHardProbes {
+  location = /eos/atlas/atlascerngroupdisk/data-dqm/references/,root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/data-dqm/references/
+  file = data18_hi.00365573.physics_HardProbes.merge.HIST.f1021_h331._0001.1
+  path = run_365573
+  info = Run 365573, physics_HardProbes
+  name = same_name
+}
+
 ####################
 # Common Algorithms
 ####################
diff --git a/Database/APR/CollectionBase/CMakeLists.txt b/Database/APR/CollectionBase/CMakeLists.txt
index ff41aa58aa476847d0eee282827d6b85adcafb43..30fa5459343a96f051623432f9033d2e63e743a3 100644
--- a/Database/APR/CollectionBase/CMakeLists.txt
+++ b/Database/APR/CollectionBase/CMakeLists.txt
@@ -37,5 +37,6 @@ atlas_add_dictionary( CollectionDict
 
 atlas_add_test( Factory_test
                 SOURCES test/Factory_test.cxx
-                LINK_LIBRARIES CollectionBase )
+                LINK_LIBRARIES CollectionBase
+                PROPERTIES TIMEOUT 300 )
 
diff --git a/Database/IOVDbSvc/CMakeLists.txt b/Database/IOVDbSvc/CMakeLists.txt
index 8409c53db5efb96b17d3036939817f38184b9992..2db732d1d100a8ae9a63cae0931db254a6559449 100644
--- a/Database/IOVDbSvc/CMakeLists.txt
+++ b/Database/IOVDbSvc/CMakeLists.txt
@@ -56,5 +56,6 @@ atlas_add_test( IOVDbSvc_test
                 test/IOVDbSvc_test.cxx
                 INCLUDE_DIRS ${COOL_INCLUDE_DIRS}
                 LINK_LIBRARIES AthenaBaseComps AthenaKernel SGTools StoreGateLib SGtests GaudiKernel TestTools EventInfo IOVSvcLib xAODEventInfo PersistentDataModel ${COOL_LIBRARIES}
+                PROPERTIES TIMEOUT 300
                 EXTRA_PATTERNS "^HistogramPersis.* INFO|^IOVSvc +DEBUG|^IOVSvcTool +DEBUG" 
                 ENVIRONMENT "JOBOPTSEARCHPATH=${CMAKE_CURRENT_SOURCE_DIR}/share" )
diff --git a/DetectorDescription/AGDD/AGDDControl/AGDDControl/AGDD2GeoModelBuilder.h b/DetectorDescription/AGDD/AGDDControl/AGDDControl/AGDD2GeoModelBuilder.h
index 89b93d153892d558a399a4b2f95d955c5047c802..130fe43ee2c948638894db960ceb774cb336b893 100644
--- a/DetectorDescription/AGDD/AGDDControl/AGDDControl/AGDD2GeoModelBuilder.h
+++ b/DetectorDescription/AGDD/AGDDControl/AGDDControl/AGDD2GeoModelBuilder.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef AGDD2GeoModelBuilder_H
@@ -39,7 +39,7 @@ public:
 	~AGDD2GeoModelBuilder() {}
 	// elements & materials 
 	GeoElement* CreateElement(std::string);
-	GeoMaterial* CreateMaterial(std::string);
+        const GeoMaterial* CreateMaterial(std::string);
 	void CreateElements();
 	void CreateMaterial();
 		
@@ -73,7 +73,7 @@ public:
 private:
 	GeoPhysVol *m_mother;
 	
-	GeoMaterial* GetMMMaterial(std::string);
+        const GeoMaterial* GetMMMaterial(std::string);
 
 //	std::map<std::string, GeoFullPhysVol*>* m_detectors;
 
diff --git a/DetectorDescription/AGDD/AGDDControl/src/AGDD2GeoModelBuilder.cxx b/DetectorDescription/AGDD/AGDDControl/src/AGDD2GeoModelBuilder.cxx
index 12ee3c84894d0ff5084f6730136f1c4d68f5f6f0..2eb7c7f7df8421ee8410b7a6f03e0e6411e625d4 100644
--- a/DetectorDescription/AGDD/AGDDControl/src/AGDD2GeoModelBuilder.cxx
+++ b/DetectorDescription/AGDD/AGDDControl/src/AGDD2GeoModelBuilder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "AGDDControl/AGDD2GeoModelBuilder.h"
@@ -99,11 +99,11 @@ GeoElement* AGDD2GeoModelBuilder::CreateElement(std::string name)
 	else
 		return 0;
 }
-GeoMaterial* AGDD2GeoModelBuilder::CreateMaterial(std::string name)
+const GeoMaterial* AGDD2GeoModelBuilder::CreateMaterial(std::string name)
 {
 
 //  give priority to GeoModel's Material Manager in retrieving materials
-	GeoMaterial* mmMaterial=GetMMMaterial(name);
+        const GeoMaterial* mmMaterial=GetMMMaterial(name);
 	if (mmMaterial)
 	{
 //		std::cout<<"material "<<name<<" found in Material Manager "<<std::endl;
@@ -171,7 +171,7 @@ GeoMaterial* AGDD2GeoModelBuilder::CreateMaterial(std::string name)
 				for (int i=0;i<nmat->NComponents();i++)
 				{
 					AGDDSimpleMaterial *el=nmat->Material(i);
-					GeoMaterial* g4el=CreateMaterial(el->GetName());
+					const GeoMaterial* g4el=CreateMaterial(el->GetName());
 					g4mat->add(g4el,nmat->Composition(i));
 				}
 				mat->SetMaterial(g4mat);
@@ -504,7 +504,7 @@ void AGDD2GeoModelBuilder::CreatePgon(AGDDPgon* v)
 void AGDD2GeoModelBuilder::CreateComposition(AGDDComposition *v)
 {
 	static int ifirst=1;
-	static GeoMaterial *ether=0;
+	static const GeoMaterial *ether=0;
 	static GeoShape* fakeVol=0;
 	if (ifirst)
 	{
@@ -581,7 +581,7 @@ void AGDD2GeoModelBuilder::CreateVolume(AGDDVolume* v)
 {
 //	std::cout<<" this is CreateVolume"<<std::endl;
 
-	GeoMaterial *mat=CreateMaterial(ALIAS(v->GetMaterial()));
+	const GeoMaterial *mat=CreateMaterial(ALIAS(v->GetMaterial()));
 	
 	void* p=v->GetVolume();
 	if (!p)
@@ -801,14 +801,14 @@ void AGDD2GeoModelBuilder::CreateUbeam(AGDDUbeam *b)
 	}
 }
 
-GeoMaterial* AGDD2GeoModelBuilder::GetMMMaterial(std::string name)
+const GeoMaterial* AGDD2GeoModelBuilder::GetMMMaterial(std::string name)
 {
 	StoreGateSvc* pDetStore=0;
 	ISvcLocator* svcLocator = Gaudi::svcLocator();
 	StatusCode sc=svcLocator->service("DetectorStore",pDetStore);
 	if(sc.isSuccess())
 	{
-		DataHandle<StoredMaterialManager> theMaterialManager;
+                const StoredMaterialManager* theMaterialManager = nullptr;
 		sc = pDetStore->retrieve(theMaterialManager, "MATERIALS");
 		if(sc.isSuccess())
         {
diff --git a/DetectorDescription/AGDD/AGDDControl/src/AGDDController.cxx b/DetectorDescription/AGDD/AGDDControl/src/AGDDController.cxx
index 12da852f55d01e892b243a6f76eb644a261cc08c..0768a24a6c1ca409163a481efb9fc4970066ce59 100644
--- a/DetectorDescription/AGDD/AGDDControl/src/AGDDController.cxx
+++ b/DetectorDescription/AGDD/AGDDControl/src/AGDDController.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "AGDDControl/AGDDController.h"
@@ -22,7 +22,6 @@
 #include "GeoModelKernel/GeoPVConstLink.h"
 
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include <map>
 #include <vector>
 #include <string>
@@ -167,7 +166,7 @@ void AGDDController::UseGeoModelDetector(std::string name)
 	{
 		std::cout<<"AGDDController could not get at the detector store!"<<std::endl;
 	}
-	const DataHandle<GeoModelExperiment> theExpt;
+	const GeoModelExperiment* theExpt = nullptr;
 	sc=pDetStore->retrieve( theExpt,"ATLAS");
 	if (sc.isFailure()) 
 	{
diff --git a/Event/ByteStreamCnvSvc/CMakeLists.txt b/Event/ByteStreamCnvSvc/CMakeLists.txt
index 9dd4536cf4b4a1f5e7f96b014576b28fe8ccfe1e..84da1ffa7d472eb904abb075801e0fd66c8a4151 100644
--- a/Event/ByteStreamCnvSvc/CMakeLists.txt
+++ b/Event/ByteStreamCnvSvc/CMakeLists.txt
@@ -91,6 +91,7 @@ function( _add_test testName toExecute )
    # Set up the test:
    atlas_add_test( ${testName}
       SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/${testName}_test.sh
+      PROPERTIES TIMEOUT 300
       ${_options} )
 
 endfunction( _add_test )
@@ -98,8 +99,7 @@ endfunction( _add_test )
 # Test(s) in the package:
 _add_test( BSEventSelector
    "athena.py ByteStreamCnvSvc/BSEventSelector_test_jobOptions.py"
-   POST_EXEC test/post_check.sh
-   PROPERTIES TIMEOUT 300 )
+   POST_EXEC test/post_check.sh )
 
 _add_test( AtlCopyBSEvent1_test
    "AtlCopyBSEvent -e 186882810,187403142,187404922,187419528 -o test.data /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1"
diff --git a/Event/DFStreamEventSelector/CMakeLists.txt b/Event/DFStreamEventSelector/CMakeLists.txt
deleted file mode 100644
index 1a4a6ea64d86e39948697ddb57d1f174b3355583..0000000000000000000000000000000000000000
--- a/Event/DFStreamEventSelector/CMakeLists.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-################################################################################
-# Package: DFStreamEventSelector
-################################################################################
-# macro(dump_var arg)
-#   message(STATUS "SAMI ${arg}=${${arg}}")
-# endmacro(dump_var)
-# Declare the package name:
-atlas_subdir( DFStreamEventSelector )
-
-# Declare the package's dependencies:
-atlas_depends_on_subdirs(
-   PUBLIC
-   Control/AthenaBaseComps
-   Event/ByteStreamCnvSvcBase
-   # Event/ByteStreamData
-   GaudiKernel
-   PRIVATE
-   Control/AthenaKernel
-   Control/SGTools
-   Control/StoreGate
-   Event/EventInfo
-   Event/xAOD/xAODEventInfo
-   )
-
-# External dependencies:
-find_package( tdaq-common COMPONENTS hltinterface )
-# Libraries in the package:
-atlas_add_library( DFStreamEventSelectorLib
-   src/*.h src/*.cxx
-`   PUBLIC_HEADERS DFStreamEventSelector
-   PRIVATE_INCLUDE_DIRS ${TDAQ-COMMON_INCLUDE_DIRS} 
-   LINK_LIBRARIES AthenaBaseComps GaudiKernel
-   StoreGateLib rt ${TDAQ-COMMON_hltinterface_LIBRARY}
-   PRIVATE_LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} 
-   AthenaKernel EventInfo xAODEventInfo)
-
-atlas_add_component( DFStreamEventSelector
-   src/components/*.cxx
-   PRIVATE_INCLUDE_DIRS ${TDAQ-COMMON_INCLUDE_DIRS}
-   PRIVATE_LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} # need to include since IROBDataProviderSvc brings in ers and eformat
-   LINK_LIBRARIES DFStreamEventSelectorLib )
-
-
-# Install files from the package:
-atlas_install_python_modules( python/*.py )
-atlas_install_joboptions( share/*.py )
diff --git a/Event/DFStreamEventSelector/src/DFStreamEventSelector.cxx b/Event/DFStreamEventSelector/src/DFStreamEventSelector.cxx
deleted file mode 100644
index 52b88570525f079aa8dc03714a250067a0e42d3a..0000000000000000000000000000000000000000
--- a/Event/DFStreamEventSelector/src/DFStreamEventSelector.cxx
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
-
-Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-Author: Sami Kama 2017
-
-*/
-#include "DFStreamEventSelector.h"
-#include <functional>
-#include <memory>
-#include <errno.h>
-#include <unistd.h>
-#include <dlfcn.h>
-#include <boost/property_tree/ptree.hpp>
-#include <boost/property_tree/xml_parser.hpp>
-#include "hltinterface/DataSource.h"
-#include "xAODEventInfo/EventInfo.h"
-#include "xAODEventInfo/EventAuxInfo.h"
-
-DFStreamEventSelector::DFStreamEventSelector(const std::string &name, ISvcLocator* pSvcLocator):AthService(name,pSvcLocator),	
-												m_incidentSvc("IncidentSvc", name),
-												m_evtStore("StoreGateSvc", name),
-												m_robProvider("ROBDataProviderSvc", name)
-{
-
-}
-
-DFStreamEventSelector::~DFStreamEventSelector(){}
-
-StatusCode DFStreamEventSelector::initialize(){
-  
-  char* errmsg;
-  if(!m_ds){
-    //http://stackoverflow.com/questions/12358843/why-are-function-pointers-and-data-pointers-incompatible-in-c-c
-    std::string libName(m_plugin.value());
-    //is full lib? check for .so extension
-    if(libName.size()>3 && libName.substr(libName.size()-3)!=".so"){//not full lib
-      libName=std::string("lib")+libName+std::string(".so");
-    }
-    
-    union{
-      hltinterface::DataSource* (*fptr)(void);
-      void *ptr;
-    } uc;
-
-    union{
-      void (*fptr)(hltinterface::DataSource*);
-      void *ptr;
-    } ud;
-
-    void* handle=dlopen(libName.c_str(),RTLD_LAZY|RTLD_LOCAL);
-    if(!handle){
-      ATH_MSG_FATAL("Can't open "<<libName<<" error is "<<dlerror());
-      return StatusCode::FAILURE;
-    }
-    dlerror();
-    uc.ptr=dlsym(handle,"create_hltmp_datasource");
-    if((errmsg=dlerror())!=NULL){
-      ATH_MSG_FATAL("Can't load symbol 'create_hltmp_datasource' from "<<libName);
-      return StatusCode::FAILURE;
-    }
-    dlerror();
-    ud.ptr=dlsym(handle,"destroy_hltmp_datasource");
-    if((errmsg=dlerror())!=NULL){
-      ATH_MSG_FATAL("Can't load symbol 'destroy_hltmp_datasource' from "<<libName);
-      return StatusCode::FAILURE;
-    }
-    dlerror();
-    m_ds=std::shared_ptr<hltinterface::DataSource>(uc.fptr(),std::ptr_fun(ud.fptr));
-  }
-  if(!m_ds){
-    ATH_MSG_FATAL("DataSource creation failed");
-    return StatusCode::FAILURE;
-  }
-  boost::property_tree::ptree pt;
-  int fl=  boost::property_tree::xml_parser::no_comments|
-    boost::property_tree::xml_parser::trim_whitespace;
-  try{
-    boost::property_tree::xml_parser::read_xml(m_pluginConfig.value(),pt,fl);
-  }catch(std::exception &ex){
-    ATH_MSG_FATAL("Caught exception when parsing ptree. Exception was:"<<ex.what());
-    return StatusCode::FAILURE;
-  }
-
-  try{    
-    if(!m_ds->configure(pt)){
-      ATH_MSG_FATAL("DataSource Configuration failed!");      
-      return StatusCode::FAILURE;
-    }
-  }catch(std::exception &ex){
-    ATH_MSG_FATAL("DataSource Configuration failed with "<<ex.what());
-    return StatusCode::FAILURE;
-  }catch(...){
-    ATH_MSG_FATAL("DataSource Configuration failed with an unknown exception");
-    return StatusCode::FAILURE;
-  }
-  if(!m_robProvider.retrieve().isSuccess()){
-    ATH_MSG_FATAL("Cant retrieve ROBDataProviderSvc");
-    return StatusCode::FAILURE;
-  }
-  if(!m_evtStore.retrieve().isSuccess()){
-    ATH_MSG_FATAL("Cant retrieve EventStore");
-    return StatusCode::FAILURE;
-  }
-  return StatusCode::SUCCESS;
-}
-
-StatusCode DFStreamEventSelector::start(){
-  boost::property_tree::ptree conf;
-  try{
-    m_ds->prepareForRun(conf);
-  }catch(std::exception &ex){
-    ATH_MSG_FATAL("DataSource preparation failed with "<<ex.what());
-    return StatusCode::FAILURE;
-  }catch(...){
-    ATH_MSG_FATAL("DataSource preparation failed with an unknown exception");
-    return StatusCode::FAILURE;
-  }
-  conf.put("start_id",0);
-  conf.put("stride",1);
-  conf.put("appName","Test");// used by the PSC
-  conf.put("clientName","Test");
-  conf.put("workerId",0);//used by PSC
-  conf.put("numberOfWorkers",1);// used by PSC
-  try{
-    m_ds->prepareWorker(conf);
-  }catch(std::exception &ex){
-    ATH_MSG_FATAL("DataSource preparation failed with "<<ex.what());
-    return StatusCode::FAILURE;
-  }catch(...){
-    ATH_MSG_FATAL("DataSource preparation failed with an unknown exception");
-    return StatusCode::FAILURE;
-  }
-
-  return StatusCode::SUCCESS;
-}
-
-StatusCode DFStreamEventSelector::stop(){
-  boost::property_tree::ptree conf;
-  try{
-    m_ds->finalizeWorker(conf);
-  }catch(std::exception &ex){
-    ATH_MSG_FATAL("DataSource finalization failed with "<<ex.what());
-    return StatusCode::FAILURE;
-  }catch(...){
-    ATH_MSG_FATAL("DataSource finalization failed with an unknown exception");
-    return StatusCode::FAILURE;
-  }
-  try{
-    m_ds->finalize(conf);
-  }catch(std::exception &ex){
-    ATH_MSG_FATAL("DataSource finalization failed with "<<ex.what());
-    return StatusCode::FAILURE;
-  }catch(...){
-    ATH_MSG_FATAL("DataSource finalization failed with an unknown exception");
-    return StatusCode::FAILURE;
-  }
-
-  return StatusCode::SUCCESS;
-
-}
-
-StatusCode DFStreamEventSelector::finalize(){
-  m_ds.reset();
-  if(!m_robProvider.release().isSuccess()){
-    ATH_MSG_FATAL("Cant release ROBDataProviderSvc");
-    return StatusCode::FAILURE;
-  }
-  return StatusCode::SUCCESS;
-}
-
-StatusCode DFStreamEventSelector::createContext(EvtContext*& c) const{
-  c=new DFContext();
-  if(c)return StatusCode::SUCCESS;
-  return StatusCode::SUCCESS;
-}
-
-
-StatusCode DFStreamEventSelector::next(EvtContext& /*c*/) const{
-  std::vector<eformat::ROBFragment<const uint32_t*> > data;
-  uint32_t lvl1id(0);
-  uint64_t gid(0);
-  uint64_t lumiBlock(0);
-  try{
-    m_ds->getL1Result(data,lvl1id,gid,lumiBlock);
-  }catch(std::exception &ex){
-    ATH_MSG_FATAL("DataSource getL1Result failed with "<<ex.what());
-    return StatusCode::FAILURE;
-  }catch(...){
-    ATH_MSG_FATAL("DataSource getL1Result failed");
-    return StatusCode::FAILURE;
-  }
-  auto evInfo=new xAOD::EventInfo();
-  auto evInfoAux=new xAOD::EventAuxInfo();
-  evInfo->setStore(evInfoAux);
-  evInfo->setEventNumber(gid);
-  evInfo->setLumiBlock(lumiBlock);
-  if(!m_evtStore->record(evInfo,"EventInfo").isSuccess()){
-    ATH_MSG_FATAL("EventInfo registration to storegate failed");
-    return StatusCode::FAILURE;
-  }
-  if(!m_evtStore->record(evInfoAux,"EventInfoAux").isSuccess()){
-    ATH_MSG_FATAL("EventInfo registration to storegate failed");
-    return StatusCode::FAILURE;
-  }
-  return StatusCode::SUCCESS;
-}
-
-
-StatusCode DFStreamEventSelector::next(EvtContext& c,int jump) const{
-  for(int i=0;i<jump;i++){
-    if(next(c)!=StatusCode::SUCCESS){
-      return StatusCode::FAILURE;
-    }
-  }
-  
-  return StatusCode::SUCCESS;
-}
-
-StatusCode DFStreamEventSelector::previous(EvtContext& /*c*/) const{
-  ATH_MSG_INFO("Not implemented");
-  return StatusCode::FAILURE;
-}
-//Can't really jump should we just read 
-StatusCode DFStreamEventSelector::previous(EvtContext& /*c*/,int /*jump*/) const{
-  ATH_MSG_INFO("Not implemented");
-  return StatusCode::FAILURE;
-}
-
-StatusCode DFStreamEventSelector::last(EvtContext& /*c*/) const{
-  ATH_MSG_INFO("Not implemented");
-  return StatusCode::FAILURE;
-}
-
-StatusCode DFStreamEventSelector::rewind(EvtContext& /*c*/) const{
-  ATH_MSG_INFO("Not implemented");
-  return StatusCode::FAILURE;
-}
-
-StatusCode DFStreamEventSelector::createAddress(const EvtContext& /*c*/,IOpaqueAddress*& iop) const{
-  iop=0;
-  return StatusCode::SUCCESS;
-}
-
-StatusCode DFStreamEventSelector::releaseContext(EvtContext*& c)const{
-  delete c;
-  c=0;
-  return StatusCode::SUCCESS;
-}
-
-StatusCode DFStreamEventSelector::resetCriteria(const std::string& /*cr*/,Context& /*c*/)const{
-  return StatusCode::SUCCESS;
-}
diff --git a/Event/DFStreamEventSelector/src/DFStreamEventSelector.h b/Event/DFStreamEventSelector/src/DFStreamEventSelector.h
deleted file mode 100644
index 12b3251528aabbbfb06ed28d0d7ceba7eab2b985..0000000000000000000000000000000000000000
--- a/Event/DFStreamEventSelector/src/DFStreamEventSelector.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/*  -*- c++ -*- */
-/*
-
-Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-Author: Sami Kama 2017
-
-*/
-/* A simple class to use DFDataSource implementations to read data
- *
- */
-#ifndef __DFSTREAMEVENTSELECTOR_H
-#define __DFSTREAMEVENTSELECTOR_H
-
-#ifndef GAUDIKERNEL_IEVTSELECTOR_H
-# include "GaudiKernel/IEvtSelector.h"
-#endif
-#include "GaudiKernel/IIncidentSvc.h"
-
-#ifndef GAUDIKERNEL_PROPERTY_H
-# include "GaudiKernel/Property.h"
-#endif 
-
-#ifndef GAUDIKERNEL_SERVICEHANDLE_H
-# include "GaudiKernel/ServiceHandle.h"
-#endif 
-
-#ifndef GAUDIKERNEL_TOOLHANDLE_H
-#include "GaudiKernel/ToolHandle.h"
-#endif
-#ifndef EVENTINFO_EVENTID_H
-# include "EventInfo/EventID.h"  /* number_type */
-#endif
-
-#include "AthenaBaseComps/AthService.h"
-#include "StoreGate/StoreGateSvc.h"
-#include "ByteStreamCnvSvcBase/IROBDataProviderSvc.h"
-
-namespace hltinterface{
-  class DataSource;
-}
-
-class DFStreamEventSelector:public AthService,
-			     public IEvtSelector{
-public:
-  DFStreamEventSelector(const std::string &name, ISvcLocator* pSvcLocator);
-  virtual ~DFStreamEventSelector();
-  typedef IEvtSelector::Context   EvtContext;
-  class DFContext:public EvtContext{
-  public:
-    DFContext():m_L1id(0){};
-    virtual ~DFContext(){};
-    virtual void* identifier() const override final {return (void*)&m_L1id;}  ;
-  private:
-    uint32_t m_L1id;
-  };
-  /**Create and return a context object that will
-     keep track of the state of selection.
-
-     @param c Reference of a pointer to a Context object.
-  */
-  virtual StatusCode createContext(EvtContext*& c) const override;
-
-  /**Fetch the next event or the first event if it will be use soon
-     after the creation of the context.
-     It will return StatusCode::FAILURE if there have been problem in the fetching or it
-     has been reached the end of the list of events.
-
-     @param c Reference to the Context object.
-  */
-  virtual StatusCode next(EvtContext& c) const  override;
-
-  /**Same of next(const Context&) plus the possibility to jump the next n-1 events.
-
-     @param c Reference to the Context object.
-     @param jump The event to jump to from the current event.
-  */
-  virtual StatusCode next(EvtContext& c,int jump) const  override;
-
-  /**Fetch the previous event.
-     It will return StatusCode::FAILURE if there have been problem in the fetching or it
-     has been reached the begin of the list of events.
-
-     @param c Reference to the Context object.
-   */
-  virtual StatusCode previous(EvtContext& c) const override;
-
-  /**Same of previous(Context& c) the possibility to jump the previous n-1 events.
-
-     @param c Reference to the Context object.
-     @param jump The event to jump to from the current event.
-   */
-  virtual StatusCode previous(EvtContext& c,int jump) const override;
-
-  /** Access last item in the iteration
-    * @param refContext [IN/OUT] Reference to the Context object.
-    */
-  virtual StatusCode last(EvtContext& refContext) const override;
-
-  /** Will set the state of the context in a way that the next event read
-    * is the first of the list.
-    *
-    * @param c Reference to the Context object.
-    */
-  virtual StatusCode rewind(EvtContext& c) const override;
-
-  /** Create an IOpaqueAddress object from the event fetched.
-    *
-    * @param c Reference to the Context object.
-    * @param iop Refernce pointer to a IOpaqueAddress object
-    *
-    */
-  virtual StatusCode createAddress(const EvtContext& c,IOpaqueAddress*& iop) const override;
-
-  /** Release the Context object.
-    *
-    * @param c Reference pointer to the Context object.
-    */
-  virtual StatusCode releaseContext(EvtContext*&)const override;
-
-  /** Will set a new criteria for the selection of the next list of events and will change
-    * the state of the context in a way to point to the new list.
-    *
-    * @param cr The new criteria string.
-    * @param c Reference pointer to the Context object.
-    */
-  virtual StatusCode resetCriteria(const std::string& cr,Context& c)const override;
-  virtual StatusCode initialize() override;
-  virtual StatusCode start() override;
-  virtual StatusCode stop() override;
-  virtual StatusCode finalize() override;
-	
-private:
-  typedef hltinterface::DataSource* (*dscreator)(void);  
-
-  std::shared_ptr<hltinterface::DataSource> m_ds;
-  ServiceHandle<IIncidentSvc> m_incidentSvc;
-  ServiceHandle<StoreGateSvc> m_evtStore;
-  ServiceHandle<IROBDataProviderSvc> m_robProvider;
-  Gaudi::Property<std::string> m_plugin{this,"PluginName","FileDS","Name of the DataSource plugin"};
-  Gaudi::Property<std::string> m_pluginConfig{this,"PluginConfig","","Plugin configuration, in the form of xml serialized ptree"};
-  Gaudi::Property<bool> m_overrideRunNumber;
-  Gaudi::Property<bool> m_overrideEventNumber;
-  Gaudi::Property<bool> m_overrideTimeStamp;
-  Gaudi::Property<bool> m_filebased;
-  
-  Gaudi::CheckedProperty<int> m_runNo;
-  Gaudi::CheckedProperty<int> m_firstEventNo;
-  Gaudi::CheckedProperty<int> m_eventsPerRun;
-  Gaudi::CheckedProperty<int> m_firstLBNo;
-  Gaudi::CheckedProperty<int> m_eventsPerLB;
-  Gaudi::CheckedProperty<int> m_initTimeStamp;
-  Gaudi::Property<int> m_timeStampInterval;
-
-
-};
-#endif
diff --git a/Event/DFStreamEventSelector/src/components/DFStreamEventSelector_entries.cxx b/Event/DFStreamEventSelector/src/components/DFStreamEventSelector_entries.cxx
deleted file mode 100644
index 19c657fa9aac6b5221ba8adc11d2c69502be8a79..0000000000000000000000000000000000000000
--- a/Event/DFStreamEventSelector/src/components/DFStreamEventSelector_entries.cxx
+++ /dev/null
@@ -1,4 +0,0 @@
-#include "../DFStreamEventSelector.h"
-
-DECLARE_COMPONENT( DFStreamEventSelector )
-
diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/Level1Overlay_jobOptions.py b/Event/EventOverlay/EventOverlayJobTransforms/share/Level1Overlay_jobOptions.py
index e2566d590743dd3b245a7605f3bafce8d3d0415d..236d3a26764303801a152d5afed36fef2192d018 100644
--- a/Event/EventOverlay/EventOverlayJobTransforms/share/Level1Overlay_jobOptions.py
+++ b/Event/EventOverlay/EventOverlayJobTransforms/share/Level1Overlay_jobOptions.py
@@ -36,6 +36,12 @@ if DetFlags.overlay.LVL1_on():
     
     if DetFlags.simulateLVL1.Tile_on():
         include( "TileSimAlgs/TileTTL1_jobOptions.py" )
+
+        # If we are doing MC overlay
+        if not overlayFlags.isDataOverlay():
+            job.TileHitToTTL1.TileTTL1Container = overlayFlags.evtStore() + '+TileTTL1Cnt'
+            job.TileHitToTTL1.TileMBTSTTL1Container = overlayFlags.evtStore() + '+TileTTL1MBTS'
+
         include( "TileSimAlgs/TileMuonReceiver_jobOptions.py" )
 
     # Add special TTL1 overlay algorithm only for MC+MC overlay
diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/MuonOverlay_jobOptions.py b/Event/EventOverlay/EventOverlayJobTransforms/share/MuonOverlay_jobOptions.py
index 2b9f4638648779fab416c2ca041dfaf2bc815f33..a7c48ff98ddbc3c25f19199c909ff20d37fab844 100644
--- a/Event/EventOverlay/EventOverlayJobTransforms/share/MuonOverlay_jobOptions.py
+++ b/Event/EventOverlay/EventOverlayJobTransforms/share/MuonOverlay_jobOptions.py
@@ -34,49 +34,25 @@ if DetFlags.overlay.MDT_on() or DetFlags.overlay.CSC_on() or DetFlags.overlay.RP
         include("MuonCnvExample/MuonReadBS_jobOptions.py")
 
     if DetFlags.overlay.CSC_on():
-        if overlayFlags.isDataOverlay():
-            ToolSvc.CscRawDataProviderTool.RdoLocation = overlayFlags.dataStore()+"+CSCRDO"
         job += getAlgorithm("CscOverlay")
-        #job.CscOverlay.OutputLevel=VERBOSE
-        #svcMgr.MessageSvc.defaultLimit=100000
-        #print job.CscOverlay
-        #print "ACH123: Setting DEBUG v99"
-        #job.CscOverlay.MakeRDOTool.OutputLevel=DEBUG
-        #job.CscOverlay.MakeRDOTool.cscCalibTool.OutputLevel=DEBUG
-        #job.CscOverlay.OutputLevel=DEBUG
-        #MessageSvc.debugLimit = 100000
-        #print "ACH123: NumSamples = 2 for MakeRDOTool"
-        #job.CscOverlay.MakeRDOTool.NumSamples=2
 
     if DetFlags.overlay.MDT_on():
         job += CfgGetter.getAlgorithm("MdtRdoToMdtDigitOverlayAlg")
         job += CfgGetter.getAlgorithm("MDT_OverlayDigitizer")
         job += CfgGetter.getAlgorithm("MdtOverlay")
         job += CfgGetter.getAlgorithm("OverlayMdtDigitToMdtRDO")
-        if overlayFlags.isDataOverlay():
-            ToolSvc.MdtRawDataProviderTool.RdoLocation = overlayFlags.dataStore()+"+MDTCSM"
-        #job.MdtOverlay.OutputLevel = VERBOSE
-        #job.OverlayMdtDigitToMdtRDO.OutputLevel = VERBOSE
 
     if DetFlags.overlay.RPC_on():
         job += CfgGetter.getAlgorithm("RpcRdoToRpcDigitOverlayAlg")
         job += CfgGetter.getAlgorithm("RPC_OverlayDigitizer")
         job += CfgGetter.getAlgorithm("RpcOverlay")
         job += CfgGetter.getAlgorithm("OverlayRpcDigitToRpcRDO")
-        if overlayFlags.isDataOverlay():
-            ToolSvc.RpcRawDataProviderTool.RdoLocation = overlayFlags.dataStore()+"+RPCPAD"
-        #job.RpcOverlay.OutputLevel = VERBOSE
-        #job.OverlayRpcDigitToRpcRDO.OutputLevel = VERBOSE
 
     if DetFlags.overlay.TGC_on():
         job += CfgGetter.getAlgorithm("TgcRdoToTgcDigitOverlayAlg")
         job += CfgGetter.getAlgorithm("TGC_OverlayDigitizer")
         job += CfgGetter.getAlgorithm("TgcOverlay")
         job += CfgGetter.getAlgorithm("OverlayTgcDigitToTgcRDO")
-        if overlayFlags.isDataOverlay():
-            ToolSvc.TgcRawDataProviderTool.RdoLocation = overlayFlags.dataStore()+"+TGCRDO"
-        #job.TgcOverlay.OutputLevel = VERBOSE
-        #job.OverlayTgcDigitToTgcRDO.OutputLevel = VERBOSE
 
     # storegate dump
     #StoreGateSvc = Service( "StoreGateSvc" )
diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayBS_tf.py b/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayBS_tf.py
index 2f932b4720132324941d6dc80f54497ad5f954b9..97e46743aefed9d09d4a5433c1405be4687a2c1b 100644
--- a/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayBS_tf.py
+++ b/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayBS_tf.py
@@ -226,12 +226,12 @@ print "overlay_trf: final outStream = ", outStream
 ServiceMgr.MessageSvc.OutputLevel = INFO
 ServiceMgr.MessageSvc.Format = "% F%45W%S%7W%R%T %0W%M"
 
-if hasattr(runArgs, 'fSampltag'):
-    conddb.addFolderWithTag("LAR_OFL","/LAR/ElecCalibMC/fSampl", runArgs.fSampltag + digitizationFlags.physicsList.get_Value(),force=True,forceMC=True,className="LArfSamplMC") 
-
+if DetFlags.overlay.LAr_on() :
+    if hasattr(runArgs, 'fSampltag'):
+        conddb.addFolderWithTag("LAR_OFL","/LAR/ElecCalibMC/fSampl", runArgs.fSampltag + digitizationFlags.physicsList.get_Value(),force=True,forceMC=True,className="LArfSamplMC") 
+    else:
+        raise RuntimeError ("--fSampltag not specified on command-line - see --help message")
 
-else:
-    raise RuntimeError ("--fSampltag not specified on command-line - see --help message")
 #if DetFlags.overlay.Signal_on():
 #   InputDBConnection = "COOLOFL_LAR/COMP200"
 #   conddb.addFolder("","/LAR/ElecCalibOfl/AutoCorrs/AutoCorr"+"<dbConnection>"+InputDBConnection+"</dbConnection>")
diff --git a/Event/xAOD/xAODPFlow/Root/PFO_v1.cxx b/Event/xAOD/xAODPFlow/Root/PFO_v1.cxx
index ca6cfca0b5d5a0c7cc5b2c88f87fd490a4be6990..5f8e939877c132f6f2e0413fac9da7dafc0d74b3 100644
--- a/Event/xAOD/xAODPFlow/Root/PFO_v1.cxx
+++ b/Event/xAOD/xAODPFlow/Root/PFO_v1.cxx
@@ -507,6 +507,23 @@ namespace xAOD {
       myAttribute = xAOD::PFODetails::eflowRec_EM_PROBABILITY;
       return true;
     }    
+    else if (momentType == xAOD::CaloCluster::ENG_CALIB_TOT){
+      myAttribute = xAOD::PFODetails::eflowRec_ENG_CALIB_TOT;
+      return true;
+    }
+    else if (momentType == xAOD::CaloCluster::ENG_CALIB_FRAC_EM){
+      myAttribute = xAOD::PFODetails::eflowRec_ENG_CALIB_FRAC_EM;
+      return true;
+    }
+    else if (momentType == xAOD::CaloCluster::ENG_CALIB_FRAC_HAD){
+      myAttribute = xAOD::PFODetails::eflowRec_ENG_CALIB_FRAC_HAD;
+      return true;
+    }
+    else if (momentType == xAOD::CaloCluster::ENG_CALIB_FRAC_REST){
+      myAttribute = xAOD::PFODetails::eflowRec_ENG_CALIB_FRAC_REST;
+      return true;
+    }
+
     else return false;
 
   }
diff --git a/Event/xAOD/xAODPFlow/xAODPFlow/PFODefs.h b/Event/xAOD/xAODPFlow/xAODPFlow/PFODefs.h
index e1348718b80993184d2ad8a66fdf530d62899c1b..14136488cd9d14d854f727dc88bed536b8398e04 100644
--- a/Event/xAOD/xAODPFlow/xAODPFlow/PFODefs.h
+++ b/Event/xAOD/xAODPFlow/xAODPFlow/PFODefs.h
@@ -91,6 +91,10 @@ namespace PFODetails
     eflowRec_radiusVectorCellOrdering,
     eflowRec_avgEdensityVectorCellOrdering,
     eflowRec_layerHED,
+    eflowRec_ENG_CALIB_TOT,
+    eflowRec_ENG_CALIB_FRAC_EM,
+    eflowRec_ENG_CALIB_FRAC_HAD,
+    eflowRec_ENG_CALIB_FRAC_REST,
     /** These variables belong to the cell-based particle flow algorithm */
     cellBased_FIRST_ETA = 400, 
     cellBased_SECOND_R, 
diff --git a/Event/xAOD/xAODPFlow/xAODPFlow/versions/PFOAttributesAccessor_v1.h b/Event/xAOD/xAODPFlow/xAODPFlow/versions/PFOAttributesAccessor_v1.h
index f04f35555f460c330b087647c1d703f26bc3791d..b253224d125c0a128372985bddf90f1cdc0217c8 100644
--- a/Event/xAOD/xAODPFlow/xAODPFlow/versions/PFOAttributesAccessor_v1.h
+++ b/Event/xAOD/xAODPFlow/xAODPFlow/versions/PFOAttributesAccessor_v1.h
@@ -95,6 +95,10 @@ namespace xAOD{
         DEFINE_PFO_ACCESSOR(eflowRec_avgEdensityVectorCellOrdering);
         DEFINE_PFO_ACCESSOR(eflowRec_layerHED);
 	DEFINE_PFO_ACCESSOR(eflowRec_EM_PROBABILITY);
+	DEFINE_PFO_ACCESSOR(eflowRec_ENG_CALIB_TOT);
+	DEFINE_PFO_ACCESSOR(eflowRec_ENG_CALIB_FRAC_EM);
+	DEFINE_PFO_ACCESSOR(eflowRec_ENG_CALIB_FRAC_HAD);
+	DEFINE_PFO_ACCESSOR(eflowRec_ENG_CALIB_FRAC_REST);
 	DEFINE_PFO_ACCESSOR(cellBased_FIRST_ETA); 
 	DEFINE_PFO_ACCESSOR(cellBased_SECOND_R); 
 	DEFINE_PFO_ACCESSOR(cellBased_SECOND_LAMBDA); 
diff --git a/ForwardDetectors/ZDC/ZdcAnalysis/Root/ZdcAnalysisTool.cxx b/ForwardDetectors/ZDC/ZdcAnalysis/Root/ZdcAnalysisTool.cxx
index b044c9abf42368ccb4d12fd213af75499e7f3ae7..f3480cb92fe22aa13c5dae6b0634b1424a3c79ef 100644
--- a/ForwardDetectors/ZDC/ZdcAnalysis/Root/ZdcAnalysisTool.cxx
+++ b/ForwardDetectors/ZDC/ZdcAnalysis/Root/ZdcAnalysisTool.cxx
@@ -7,7 +7,6 @@
 #include "TEnv.h"
 #include "TSystem.h"
 #include "ZdcAnalysis/ZdcSincInterp.h"
-#include "xAODEventInfo/EventInfo.h"
 #include "TFile.h"
 #include <sstream>
 #include <memory>
@@ -17,9 +16,11 @@
 namespace ZDC
 {
 
-  ZdcAnalysisTool::ZdcAnalysisTool(const std::string& name) : asg::AsgTool(name), m_name(name), m_init(false), 
-							      m_writeAux(false), m_eventReady(false),
+  ZdcAnalysisTool::ZdcAnalysisTool(const std::string& name) : asg::AsgTool(name), m_name(name),
+							      m_writeAux(false),
 							      m_runNumber(0), m_lumiBlock(0),
+                                                              m_eventInfoKey("EventInfo"),
+                                                              m_ZdcModuleWriteKey("ZdcSums"),
     m_splines{{{{0,0,0,0}},{{0,0,0,0}}}}, m_zdcTriggerEfficiency(0)
 {
 
@@ -28,6 +29,8 @@ namespace ZDC
 #endif
 
   declareProperty("ZdcModuleContainerName",m_zdcModuleContainerName="ZdcModules","Location of ZDC processed data");
+  declareProperty("EventInfoKey",          m_eventInfoKey,          "Location of the event info.");
+  declareProperty("ZdcModuleWriteKey",     m_ZdcModuleWriteKey,     "Output location of ZDC reprocessed data");
   declareProperty("Configuration", m_configuration = "PbPb2015");
   declareProperty("FlipEMDelay",m_flipEMDelay=false);
   declareProperty("LowGainOnly",m_lowGainOnly=false);
@@ -582,7 +585,10 @@ StatusCode ZdcAnalysisTool::initializeTool()
   ATH_MSG_INFO("DeltaTCut: "<<m_deltaTCut);
   ATH_MSG_INFO("ChisqRatioCut: "<<m_ChisqRatioCut);
 
-  m_init = true;
+  ATH_CHECK( m_eventInfoKey.initialize());
+  ATH_CHECK( m_zdcModuleContainerName.initialize());
+  ATH_CHECK( m_ZdcModuleWriteKey.initialize() );
+
   return StatusCode::SUCCESS;
 }
 
@@ -656,14 +662,8 @@ StatusCode ZdcAnalysisTool::recoZdcModule(const xAOD::ZdcModule& module)
 
 StatusCode ZdcAnalysisTool::recoZdcModules(const xAOD::ZdcModuleContainer& moduleContainer) 
 {
-  if (!m_eventReady)
-    {
-      ATH_MSG_INFO("Event not ready for ZDC reco!");
-      return StatusCode::FAILURE;
-    }
-
-  const xAOD::EventInfo* eventInfo = 0;
-  ATH_CHECK(evtStore()->retrieve(eventInfo,"EventInfo"));
+  SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfoKey);
+  if (!eventInfo.isValid()) return StatusCode::FAILURE;
 
   // check for new run number, if new, possibly update configuration and/or calibrations
   //
@@ -839,9 +839,8 @@ StatusCode ZdcAnalysisTool::recoZdcModules(const xAOD::ZdcModuleContainer& modul
       zdc_sum->auxdecor<unsigned int>("ModuleMask") = (getModuleMask()>>(4*iside)) & 0xF;
     }
 
-  ATH_CHECK( evtStore()->record( newModuleContainer.release() , "ZdcSums" + m_auxSuffix) ) ;
-  ATH_CHECK( evtStore()->record( newModuleAuxContainer.release() , "ZdcSums"  + m_auxSuffix +"Aux.") );
-
+  ATH_CHECK( SG::WriteHandle<xAOD::ZdcModuleContainer>(m_ZdcModuleWriteKey).record( std::move(newModuleContainer),
+                                                                                    std::move(newModuleAuxContainer)));
   return StatusCode::SUCCESS;
 }
 
@@ -919,20 +918,12 @@ void ZdcAnalysisTool::setTimeCalibrations(unsigned int runNumber)
   fCalib->Close();
 }
 
-StatusCode ZdcAnalysisTool::reprocessZdc() 
+StatusCode ZdcAnalysisTool::reprocessZdc()
 {
-  if (!m_init)
-    {
-      ATH_MSG_INFO("Tool not initialized!");
-      return StatusCode::FAILURE;
-    }
-  m_eventReady = false;
-  //std::cout << "Trying to retrieve " << m_zdcModuleContainerName << std::endl;
-  m_zdcModules = 0;
-  ATH_CHECK(evtStore()->retrieve(m_zdcModules,m_zdcModuleContainerName));
-  m_eventReady = true;
+  SG::ReadHandle<xAOD::ZdcModuleContainer> zdc_modules(m_zdcModuleContainerName);
+  if (!zdc_modules.isValid()) return StatusCode::FAILURE;
 
-  ATH_CHECK(recoZdcModules(*m_zdcModules));
+  ATH_CHECK(recoZdcModules(*zdc_modules));
 
   return StatusCode::SUCCESS;
 }
diff --git a/ForwardDetectors/ZDC/ZdcAnalysis/ZdcAnalysis/ZdcAnalysisTool.h b/ForwardDetectors/ZDC/ZdcAnalysis/ZdcAnalysis/ZdcAnalysisTool.h
index 5761a93128c9f215a4be87716a97a3531d16de07..3b401b9b571ccdbe251cec448e43b1796b81909b 100644
--- a/ForwardDetectors/ZDC/ZdcAnalysis/ZdcAnalysis/ZdcAnalysisTool.h
+++ b/ForwardDetectors/ZDC/ZdcAnalysis/ZdcAnalysis/ZdcAnalysisTool.h
@@ -6,6 +6,7 @@
 #define ZDCANALYSIS_ZDCANALYSISTOOL_H
 
 #include "AsgTools/AsgTool.h"
+#include "xAODEventInfo/EventInfo.h"
 #include "xAODForward/ZdcModuleContainer.h"
 #include "xAODTrigL1Calo/TriggerTowerContainer.h"
 
@@ -78,7 +79,6 @@ class ZdcAnalysisTool : public virtual IZdcAnalysisTool, public asg::AsgTool
   // Data members
   //
   std::string m_name;
-  bool m_init;
   std::string m_configuration;
   std::string m_zdcAnalysisConfigPath;
   std::string m_zdcEnergyCalibFileName;
@@ -88,15 +88,15 @@ class ZdcAnalysisTool : public virtual IZdcAnalysisTool, public asg::AsgTool
   bool m_writeAux;
   std::string m_auxSuffix;
 
-  bool m_eventReady;
   unsigned int m_runNumber;
   unsigned int m_lumiBlock;
 
   // internal functions
   TF1* m_tf1SincInterp;
 
-  std::string m_zdcModuleContainerName;
-  const xAOD::ZdcModuleContainer* m_zdcModules;
+  SG::ReadHandleKey<xAOD::EventInfo>           m_eventInfoKey;
+  SG::ReadHandleKey<xAOD::ZdcModuleContainer>  m_zdcModuleContainerName;
+  SG::WriteHandleKey<xAOD::ZdcModuleContainer> m_ZdcModuleWriteKey;
   bool m_flipEMDelay;
   bool m_lowGainOnly;
   bool m_combineDelay;
diff --git a/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.cxx b/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.cxx
index 420953559881fcc28c6209d33656ccb1f44bc014..c796ecd1de6a0e95818351c4f97efd480f63132a 100644
--- a/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.cxx
+++ b/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.cxx
@@ -229,5 +229,5 @@ void TrigByteStreamCnvSvc::printRawEvent() {
     ss << "]}" << std::endl;
   }
 
-  ATH_MSG_INFO(ss.str());
+  ATH_MSG_DEBUG(ss.str());
 }
diff --git a/HLT/HLTTestApps/CMakeLists.txt b/HLT/HLTTestApps/CMakeLists.txt
deleted file mode 100644
index c4b24b2cd64a9132fb814e81b06feac9f3f8ae66..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/CMakeLists.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-################################################################################
-# Package: HLTTestApps
-################################################################################
-
-# Declare the package name:
-atlas_subdir( HLTTestApps )
-
-# Declare the package's dependencies:
-atlas_depends_on_subdirs( PRIVATE
-                          Control/StoreGate
-                          GaudiKernel
-                          Trigger/TrigT1/TrigT1Result )
-
-# External dependencies:
-find_package( Boost COMPONENTS filesystem thread system python )
-find_package( PythonLibs )
-find_package( tdaq COMPONENTS dynlibs owl ipc omnithread omniORB4 )
-find_package( tdaq-common COMPONENTS CTPfragment hltinterface pyeformat_util eformat_write )
-
-# Component(s) in the package:
-atlas_add_library( pyhlttestapps
-                   src/*.cxx
-                   NO_PUBLIC_HEADERS
-                   PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS} ${TDAQ-COMMON_INCLUDE_DIRS} ${TDAQ_INCLUDE_DIRS}
-                   LINK_LIBRARIES StoreGateLib SGtests
-                   PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} ${PYTHON_LIBRARIES} ${TDAQ-COMMON_LIBRARIES} ${TDAQ_LIBRARIES} GaudiKernel TrigT1Result )
-
-# Install files from the package:
-atlas_install_python_modules( python/HLTTestApps/*.py python/HLTTestApps/plugins )
-atlas_install_scripts( python/scripts/*.py python/scripts/*.sh )
-
-atlas_add_alias( athenaHLT "athenaHLT.py" )
-atlas_add_alias( athenaHLT-select-PEB-stream "athenaHLT-select-PEB-stream.py" )
diff --git a/HLT/HLTTestApps/doc/README b/HLT/HLTTestApps/doc/README
deleted file mode 100644
index c23c5aaa0c88b7bbdd95ff74bcf4fb81e7ad0fd3..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/doc/README
+++ /dev/null
@@ -1 +0,0 @@
-To get doxygen documentation, use "cmt make doxygen" and open .../InstallArea/doc/HLTTestApps/html/index.html in a browser
diff --git a/HLT/HLTTestApps/doc/README.MET b/HLT/HLTTestApps/doc/README.MET
deleted file mode 100644
index c685b31c04e913ab28752625d20e5da6b992f81c..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/doc/README.MET
+++ /dev/null
@@ -1,145 +0,0 @@
-(outdated)
-
-Simulate LAr/Tile MET ROBs in L2
---------------------------------
-
-When running with the athenaMT plugin "MET_L2.py" the FEB summary information
-stored in LAr and Tile ROBs is extracted and packed into special MET ROBs
-for L2.
-The sub-detector Id for these ROBs is 0x7d for LAr and 0x7e for Tile. Typically
-in P1 for every ROS in the LAr and Tile readout such a L2 MET ROB is generated.
-
-Using the MET plugin:
----------------------
-
-With the command 
-
-athenaMT -Z 'plugins.MET_L2' -f <data-file> <Job-options>
-
-the MET plugin is loaded and adds to the event read in from the file the additional MET ROBs
-if the event does not already contain MET ROBs. In the case a MET ROB is found in the
-input event no additional MET ROBs are generated but the number of retrieved MET ROBs
-is checked against the expected number in the configuration. In case of a mismatch an
-error message is printed.
-
-By default the plugin will generate for every sub-detector id in LAr and Tile one
-MET ROB with the FEB information of all ROBs in the specific sub-detector.
-This will result for LAr in 8 MET ROBs with the source identifiers 0x7d0001 to 0x7d0008 and for
-Tile in 4 MET ROBs with the identifiers 0x7e0001 to 0x7e0004.
-This should work transparently for any bytestream input file. 
-
-If one wants to simulate the association of MET ROBs to ROSes like in P1 an external python file
-"rob_ros_list.py" has to be provided in the PYTHONPATH. The file "rob_ros_list.py" can be 
-generated directly form the ATLAS OKS partition file with the command 
-
-l2met-partition-ros-rob-config.py <atlas partition file>.data.xml
-
-The chosen partition file should correspond to the LAr and Tile readout configuration used for the
-events in the data file.
-
-Alternatively, one can use
-
-l2met-rob-config-from-data.py <bytestream file>
-
-to extract the list of MET ROBs from an existing data file. However, this will not reproduce the ROB/ROS
-configuration used online and therefor should not be considered as a fully valid test.
-
-Warning 1: 
-----------
-The plugin sets automatically in a precommand the following joboptions
-
-from AthenaCommon.AppMgr import ServiceMgr as svcMgr;
-from AthenaCommon import CfgMgr;svcMgr+=CfgMgr.Lvl2ROBDataProviderSvc(\"ROBDataProviderSvc\")
-svcMgr.ROBDataProviderSvc.LArMetROBs=[list of LAr MET ROBids]
-svcMgr.ROBDataProviderSvc.TileMetROBs=[list of Tile MET ROBids]
-
-These MET ROB lists are automatically deduced from the chosen ROS-ROB configuration or from the default
-configuration. These joboptions should therefore be not overwritten by a private joboptions file.
-
-Warning 2: 
-----------
-In the case an external python file "rob_ros_list.py" is provided, it is not guaranteed that the MET
-ROB which is associated with a given ROS receives the same module id as it got in P1. The module id
-depends on the sequence the ROS configuration is read in by the L2PU or the l2met-partition-ros-rob-config.py
-script. However every MET ROB will contain the information of the same LAr/Tile ROBs/FEBs as they were configured 
-and grouped together in P1 for a given LAr/Tile ROS.
-
-Status bits in MET ROBs
------------------------
-
-If athenaMT is running without a ROB-ROS configuration file "rob_ros_list.py", i.e with the default
-configuration,  the first status word is always set to 0. No error checking can be done in this case,
-since athenaMT can not check for missing data.
-
-In the case a ROB-ROS configuration is provided and a required ROB is not found in the event the
-following is done:
-1) for the missing FEBs all data are set to 0 in the MET ROB
-2) In the first status word the 
-      generic field is set to 0x08 (=data corruption), and in the
-      specific field bit 29 (lost ROBIN) is set.
-
-How to obtain an ATLAS partition file (example)
------------------------------------------------
-
-0) Goto OKS archive WEB page
-   http://atlas-project-tdaq-cc.web.cern.ch/atlas-project-tdaq-cc/cgi/oks-archive.pl
-   (see also https://twiki.cern.ch/twiki/bin/view/Atlas/TDAQPoint1RemoteMonitoring for information)
-
-1) Page 1: ATLAS OKS Archive
-    Select database: [--> choose Point-1 (offline)]
-    [Submit Query]
-
-2) Page 2: ATLAS OKS Archive for "Point-1 (offline)" database
-   Show configurations archived between now and  [--> choose e.g. 2 days] ago
- 
-   Select release name: [--> choose tdaq-02-00-03] 
-   [Submit Query]
-
-
-3) Page 3: ATLAS OKS Archive for "Point-1 (offline)" database
-
-   Select release name: [tdaq-02-00-03]
-
-   Show configurations archived from till CERN local time
-      (leave empty to be ignored or use ISO 8601 date-time format to provide a value)
-
-   Show user [  ] host [  ] partition [ATLAS]   <--- fill in ATLAS
-      (leave a field empty to be ignored, or put exact name, or use expression with wildcards)
-
-   User preferences
-
-   Select timezone: [CERN]
-
-   Show: [x] incremental versions [x] usage
-
-   Select optional table columns: [ ] release [ ] user [ ] host [x] size [x] description
-
-   Sort result by [partition name (desc)]
-
-   [Submit Query]
-
-4) after pressing [Submit Query] in 3) in the same web page a table shows up
-   with the different partition versions
-
-Archived Versions
-Version	Date (CERN local time)	Size	Description
-222.82.1	2010-Aug-24 12:20:19 CEST	519:209:4785	oks2coral: partition ATLAS (tdaq-02-00-03)
-	2010-Aug-24 12:20:25 CEST		partition: ATLAS run: 162620
-	2010-Aug-24 20:13:04 CEST		partition: ATLAS run: 162623
-222.78.1	2010-Aug-23 19:55:03 CEST	518:207:4784	oks2coral: partition ATLAS (tdaq-02-00-03)
-.......
-
-Choose a version which corresponds to the run which you would like to use.
-Click e.g. on 222.78.1 and after some time a download dialog should show up which
-asks where to save a file
-
-      222.78.1.tar.gz
-
-After the file was saved unpack it with
-
-   tar -zxvf 222.78.1.tar.gz
-
-You should get 3 files
-  - a log file: out.log
-  - a schema file of the form: 222.schema.xml
-  - the partition file of the form: ATLAS.222.78.data.xml
diff --git a/HLT/HLTTestApps/doc/README.athenaHLT-select-PEB-stream b/HLT/HLTTestApps/doc/README.athenaHLT-select-PEB-stream
deleted file mode 100644
index 2fbfdb00cf6543f53a7cda110ce533e73bec1228..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/doc/README.athenaHLT-select-PEB-stream
+++ /dev/null
@@ -1,105 +0,0 @@
-The script 
-
-athenaHLT-select-PEB-stream.py
-
-allows to select from a bystream file events which belong to a given stream and to write them to a bytestream output file which
-obeys the same conventions as the files produced in P1.
-
-athenaHLT-select-PEB-stream.py -h
-
-gives a list of options which can be used:
-
-./athenaHLT-select-PEB-stream.py -h
-global "./athenaHLT-select-PEB-stream.py" options: -[DFPadhlnpsv] | --[dump-options,help,lumi-block,max-events,option-file,output-dir,progress-bar,project-tag,start-event,stream-name,verbosity] [arguments]+
-
- [Global options]
-
- --dump-options|-D    dumps the current default options to stdout
- --help|-h            prints this usage message
- --option-file|-F     loads options from an option file (defaults to <empty>)
-
-
- [Run mode options]
-
- --max-events|-n      Maximum number of events in the output file. 0 means, al
-                       l useful events from the input. (defaults to 0)
- --output-dir|-d      Directory in which the output file should be written (de
-                       faults to .)
- --progress-bar|-P    Show progress bar when running interactively
- --start-event|-a     Number of events which should be skippped from the begin
-                        (defaults to 0)
- --verbosity|-v       Log verbosity (defaults to 20)
-
-
- [Stream Tag options]
-
- --lumi-block|-l     Lumiblock number used for the output file. Use 0 if multi
-                      ple LB in file. (defaults to 0)
- --project-tag|-p    Project tag which should be used for the output file (def
-                      aults to data18_13Tev)
- --stream-name|-s    Name of stream which should be written out (defaults to D
-                      ataScouting_05_Jets)
-
-While the script can be used with any stream name, the defaults are set for the DataScouting stream "DataScouting_05_Jets".
-
-Typical workflow for developers:
---------------------------------
- 
-1) Develop new slection code for a new stream and integrate it with the menu
-
-2) run athenaHLT with the new code and write a bystream outputfile 
-
-> athenaHLT <otions> -f <input-file> -o <athenaHLT-output-file> <job-options-file>
-
-The <athenaHLT-output-file> will contain all events which have triggered, including also DataScouting events.
-
-3) Generate a P1 stream file with "athenaHLT-select-PEB-stream.py" from the athenaHLT output file
-
-> athenaHLT-select-PEB-stream.py -s <my-prefered-stream> <athenaHLT-output-file>
-
-In the case of Jet Datascouting all defaults are set already and it is sufficient to run
-
-> athenaHLT-select-PEB-stream.py <athenaHLT-output-file>
-
-There will be an output file produced of the form
-
-<project tag>.<run number>.<stream_type>_<stream_name>.merge.RAW._<LB number>._<production step>._<file sequence number>.data
-
-example:
-
-data18_13Tev.00349335.calibration_DataScouting_05_Jets.merge.RAW._lb0000._athenaHLT._0001.data
-
-All input events have to be for the same run number, but can have different lumi block numbers (LB=0 is used for output file).
-
-4) run over the produced stream file the standard T0 reco programs
-
-
-Example of producing a Jet DataScouting stream file from an enhanced bias file:
--------------------------------------------------------------------------------
-
-> athenaHLT -M -b --db-smkey=2695 --db-hltpskey='[(317,15172)]' -f '["data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0163._SFO-1._0001.1"]' -o "my-athenaHLT-BS-output"
-> athenaHLT-select-PEB-stream.py my-athenaHLT-BS-output._0001.data
-> Reco with input file data18_13Tev.00349335.calibration_DataScouting_05_Jets.merge.RAW._lb0000._athenaHLT._0001.data
-
-Some Remarks:
--------------
-
-1) athenaHLT-select-PEB-stream.py allows to read multiple input files
-
-> athenaHLT-select-PEB-stream.py <file1> <file2> ... <fileN>
-
-All events have to be however from the same run. Events from different runs are skipped and an ERROR message is printed.
-
-2) the option "--lumi-block|-l " should only be used if all events are from the same LB, otherwise use 0 (default).
-
-3) the option "--project-tag|-p" is set per default to 2018 data (data18_13Tev).
-
-4) For repeated running with the same options a standard option file can be generated:
-
-athenaHLT-select-PEB-stream.py -D <various options> <input files>  >  <my-opt-file.py>
-
-and the run can be repeated with
-
-athenaHLT-select-PEB-stream.py -F <my-opt-file.py>
-
-The file <my-opt-file.py> can be also edited and modified with Python commands.
diff --git a/HLT/HLTTestApps/python/HLTTestApps/__init__.py b/HLT/HLTTestApps/python/HLTTestApps/__init__.py
deleted file mode 100644
index c567e017f527ff55d75c7e5d7751f631da4bc0af..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/HLTTestApps/__init__.py
+++ /dev/null
@@ -1,196 +0,0 @@
-#!/usr/bin/env tdaq_python
-
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-# $Id: __init__.py 102 2013-07-12 17:17:22Z ricab $
-# Created by Andre DOS ANJOS <Andre.dos.Anjos@cern.ch>, 30-Mar-2007 
-
-from libpyhlttestapps import *
-import random, sys, os
-
-# avoids the duplication of ERS exception types...
-sys.setdlopenflags(0x100|0x2)
-
-def random_sub_dict(basedict):
-  return random_sub_dict_num(basedict, random.randint(1,len(basedict)))
-
-def random_sub_dict_num(basedict, numitems):
-  #  Get a sub-dictionary of basedict with a length corresponding to the minimum
-  # of numitems and the length of basedict (negative length converted to 0).
-  
-  basekeys = basedict.keys()
-  n = min(len(basekeys), numitems) if numitems > 0 else 0
-  
-  # create the sub-dictionary
-  ret = {}
-  for i in range(n):
-    k = basekeys.pop(random.randint(0, len(basekeys)-1))
-    ret[k] = basedict[k]
-    
-  # make sure this is properly implemented
-  assert len(ret) <= len(basedict)
-  assert len(ret) <= numitems
-  assert len(ret) == numitems or numitems > len(basedict)
-  for k, v in ret.items():
-    assert k in basedict and v == basedict[k]
-    
-  return ret
-
-def hook_debugger():
-  """
-  Hooks debugger to this process.
-  
-  Copied from athena.py
-  """
-  pid = os.spawnvp(os.P_NOWAIT, 'gdb', 
-                   [ 'gdb', '-q', 'python', str( os.getpid() ) ] )
-  # give debugger some time to attach to the python process
-  import time
-  time.sleep(1)
-
-def get_test_files():
-  files = {}
-  files['base_dir'] = d = '/afs/cern.ch/work/r/ricab/datafiles/' # temp solution
-  
-  f1 = d + '2013-05-22VALAllPT_mcV2-1._0001.data' # 100 events, run 177531
-  f2 = d + '2012-05-04VALAllPT_physicsV4-1._0001.data' # 99 events, run 200863
-  f3 = d + ('data14_cos.00233343.physics_L1Muon.merge.'
-            'RAW._lb0002._SFO-ALL.M4._0001.1.') # 34716 events
-  f4 = d + ('data14_cos.00248112.physics_CosmicMuons.merge.'
-            'RAW._lb0003._SFO-11._150ev.1') # 150 events
-  files['datafiles'] = [f1, f2]
-  files['default_filelist'] = [f1, f1, f1, f2] # total of 399 events
-  files['extra_files_with_valid_core_filename'] = [f4, f3] # start with smaller
-  
-  files['verbose_config_tree'] = d + "hltconf.xml"
-  files['quiet_config_tree'] = d + "hltconf_quiet.xml"
-  
-  return files
-
-def remove_duplicate_tests(suite):
-  uniqtests, uniqnames = [], []
-  for test in suite:
-    if test._testMethodName not in uniqnames:
-      uniqnames.append(test._testMethodName)
-      uniqtests.append(test)
-  return uniqtests
-
-def remove_exclude_tests(suite, exclude_names):
-  ret = []
-  for test in suite:
-    tnames = [test.__class__.__name__, test._testMethodName]
-    for name in exclude_names:
-      # if neither the whole name nor class or method names match
-      if (name != '.'.join(tnames) and name not in tnames):
-        ret.append(test)
-  return ret
-
-def test_setup(mod):
-  globs = {} 
-  files = get_test_files()
-  globs['filelist'] = files['default_filelist']
-  globs['datafiles'] = files['datafiles']
-  globs['extra_datafiles'] = files['extra_files_with_valid_core_filename']
-  globs['configxml'] = (files['verbose_config_tree'] if '-d' in sys.argv 
-                        else files['quiet_config_tree'])
-  # have stuff declared here available to the tests 
-  mod.__dict__.update(globs)
-  
-def test_main(include_names=[], 
-              exclude_names=[],
-              remove_duplicates=True,
-              more_modules_requiring_setup=[]):
-  import unittest
-  
-  mod = sys.modules["__main__"]
-  test_setup(mod)
-  for m in more_modules_requiring_setup:
-    test_setup(sys.modules[m])
-    
-  if include_names:
-    suite = unittest.TestLoader().loadTestsFromNames(include_names, mod)
-  else:
-    suite = unittest.TestLoader().loadTestsFromModule(mod)
-  
-  # flatten suite, then remove unintended tests
-  suite = unittest.TestSuite([test for subsuite in suite for test in subsuite])
-  if exclude_names:
-    suite = unittest.TestSuite(remove_exclude_tests(suite, exclude_names))
-  if remove_duplicates:
-    suite = unittest.TestSuite(remove_duplicate_tests(suite)) 
-  
-  result = unittest.TextTestRunner(verbosity=2).run(suite)
-  # exit with 0(success)/1(failure)
-  # need an explicit int for now: see http://bugs.python.org/issue13854
-  sys.exit(int(not result.wasSuccessful()))
-  
-def script_prepare():
-  from AthenaCommon.Logging import log
-  log.name = os.path.splitext(os.path.basename(sys.argv[0]))[0]
-  sys.path.insert(0, '.')
-  sys.ps1 = log.name + '> '
-  
-def script_main(go):
-  script_prepare()
-  
-  result = 0
-  try:
-    go(sys.argv[1:]) # we don't need the program name
-    
-  except SystemExit, e:
-    if len(e.args) == 0 or e.args[0] == None:
-      result = 0
-    elif isinstance(e.args[0], int):
-      result = e.args[0]
-    else:
-      result = 1
-        
-  except:
-    import traceback
-    traceback.print_exc()
-    result = 1
-
-  sys.exit(result)
-
-
-def call_external(module, func, args):
-  """Loads and executes an external function with the given arguments.
-
-  This method will load function 'func', from module 'module' and will call it
-  with 'args' as its sequential arguments, returning the result.
-
-  Keyword arguments:
-
-  module -- This is either a simple or compound module name. For example:
-  "mymodule1" or "mymodule2.mysubmodule".
-
-  func -- This is the name of the function inside the module named before, that
-  will be called.
-
-  args -- This is a sequential list of arguments that will be (dereferenced
-  and) passed to the function 'func'. This must be a list or a tuple. If the
-  type of this argument is a dictionary, it is doubly-dereferenced to achieve a
-  named-argument style call.
-
-  Returns and raises whatever 'func' does.
-  """
-  import imp
-  mod = module.split('.')
-  pymod = None
-  pathname = None
-  for m in mod: 
-    try:
-      if pathname: pathname = [pathname]
-      (f, pathname, description) = imp.find_module(m, pathname)
-      pymod = imp.load_module(m, f, pathname, description)
-      if f: f.close()
-    except ImportError, e:
-      name = '.'.join(mod[0:(mod.index(m)+1)])
-      raise ImportError, 'Event modifier module "%s"' % name + \
-          ' is not visible from your PYTHONPATH (please check): %s' % str(e)
-
-  # at this point, 'pymod' points to the module you are looking for
-  pyfunc = getattr(pymod, func) # handle to the event manipulator
-  if type(args) in [list, tuple]: return pyfunc(*args)
-  elif type(args) is dict: return pyfunc(**args)
-  else:
-    raise SyntaxError, 'Parameter "args" should be a list, a tuple or a dict'
diff --git a/HLT/HLTTestApps/python/HLTTestApps/application.py b/HLT/HLTTestApps/python/HLTTestApps/application.py
deleted file mode 100644
index 3621cf6e8d1ec2ec4f664f95f69a06916d2cd91f..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/HLTTestApps/application.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-
-import sys
-import logging
-from HLTTestApps.processor import Processor
-from HLTTestApps.configuration import configuration, run_number_error
-from HLTTestApps.option import file_opt_spec, emon_opt_spec
-
-def file_based(cli_args):
-  processor = None
-  
-  config = configuration(file_opt_spec, cli_args)
-  return_code=0
-  
-  try:
-    logging.info('Instantiating and loading framework...')
-    
-    processor = Processor(config)
-    processor.go()
-  except run_number_error, error:
-    logging.fatal(error)
-    logging.info('I will try to shutdown cleanly')
-    return_code=1
-  except BaseException, e:
-    logging.fatal('Caught an untreated exception - %s: %s' % 
-                  (e.__class__.__name__, e))
-    import traceback
-    traceback.print_exc()
-    logging.info('I will try to shutdown cleanly')
-    return_code=1
-  finally:
-    if processor:
-      del processor
-    logging.info('Exiting... Bye.')
-    sys.exit(return_code)
-
-  
diff --git a/HLT/HLTTestApps/python/HLTTestApps/configuration.py b/HLT/HLTTestApps/python/HLTTestApps/configuration.py
deleted file mode 100644
index 647bbd7f082e67b9dc7728272cfc49b6e7198004..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/HLTTestApps/configuration.py
+++ /dev/null
@@ -1,1295 +0,0 @@
-# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
-
-'''
-Created on Jun 14, 2013
-
-@author: ricab
-'''
-
-
-from pausable_istream import pausable_istream
-from HLTTestApps import ptree, ers_debug_level, get_ers_debug_level
-from HLTTestApps import tdaq_time_str_from_microsec
-from HLTTestApps import set_ros2rob_map as set_dc_ros2rob, set_l1r_robs, set_dcm_strategy
-from eformat import EventStorage as ES
-from TrigConfStorage.TriggerCoolUtil import TriggerCoolUtil as CoolUtil
-from CoolConvUtilities import AtlCoolLib
-from PyCool import cool
-from contextlib import contextmanager
-from ast import literal_eval
-from os import path, sep
-from re import match
-import logging
-import option
-
-class run_number_error(RuntimeError): pass
-class run_params_error(RuntimeError): pass
-
-
-# Ptree constants
-base_conf_ptree_path        = ("Configuration.Partition.TriggerConfiguration."
-                               "TriggerConfiguration")
-base_hlt_ptree_path         = base_conf_ptree_path + ".hlt"
-trigdb_con_ptree_path       = base_conf_ptree_path + (".TriggerDBConnection"
-                                                      ".TriggerDBConnection")
-lvl1_config_ptree_path      = base_conf_ptree_path + (".L1TriggerConfiguration"
-                                                      ".L1TriggerConfiguration")
-joboptions_ptree_extension  = "HLTImplementationJobOptions"
-dbpy_ptree_extension        = "HLTImplementationDBPython" 
-common_ptree_extension      = "HLTCommonParameters.HLTCommonParameters"
-athenaHLT_ptree_path        = (base_conf_ptree_path + 
-                               ".athenaHLTSpecificConfiguration")
-mon_config_rule_path        = ("HLTMonInfoImpl.ConfigurationRules."
-                               "ConfigurationRuleBundle.Rules."
-                               "ConfigurationRule")
-monparams_extension         = "Parameters.OHPublishingParameters"
-oh_params_path              = mon_config_rule_path + "." + monparams_extension
-muoncalbuf_path             = ("Configuration.HLTMPPUApplication."
-                               "MuonCalibrationConfig.CircBuffer")
-ros2rob_path                = "Configuration.ROS2ROBS"
-appName                     = 'athenaHLT'
-
-# prepareWorker ptree keys agreed with Sami in ATR-9669
-prepw_pt                    = ptree() 
-prepw_pt['appName']         = appName
-prepw_pt['workerId']        = '0'
-prepw_pt['numberOfWorkers'] = '1'
-
-# DB constants
-prescales_db_strs = ('COMP', 'CONDBR2')
-runparams_db_strs = ('COOLONL_TDAQ/COMP200', 'COOLONL_TDAQ/CONDBR2')
-runparams_paths   = ('/TDAQ/RunCtrl/SOR_Params', '/TDAQ/RunCtrl/SOR')
-dblim_rnum        = 236108
-
-
-class configuration(dict):
-  
-  def __init__(self, option_spec, cli_args):
-    self.dbconn = None
-    self.defaults = {k: option_spec.get_default(k) for k in option_spec}
-    self.default_convention = option_spec['save-output-conventional']['allowed']
-    self.parse_sor = option_spec['sor-time']['parse']
-
-    if not cli_args or not cli_args[0]:
-      cli_args = ['-h'] # if no joboptions, print help msg
-    parser = option.gen_parser(option_spec, True)
-    kwargs, self.extra = parser.parse(cli_args)
-    
-    self.update(kwargs)
-    self.update(option_spec.constants)
-    self.__set_verbosity()
-    option_spec.optcheck(self, self.extra)
-    self.__digest_config()
-    self.__log()
-    
-  def __getattr__(self, attr):
-    if attr.startswith('get_') and attr.endswith("_ptree"):
-      return lambda: ptree()
-    raise AttributeError, ("%s instance has no attribute '%s'" 
-                           % (type(self), attr))
-    
-  def do_save_output(self):
-    return self['save-output'] or self['save-output-conventional']
-  
-  def parsed_out_data_filename(self):
-    if self['save-output']:
-      return self.__parse_filename()
-    else: # do conventional output
-      # get the conventional properties
-      convention = {k: self._derive_conventional_property(k)
-                    for k in self.default_convention}
-      # find our returns
-      dir = convention.pop('dir') # popped - this is for our own use only
-      # the rest go here - would like to use kwargs, but not supported in ES
-      fncore = ES.RawFileName(convention['ProjectTag'],
-                              convention['RunNumber'],
-                              convention['StreamType'],
-                              convention['StreamName'],
-                              convention['LumiBlockNumber'],
-                              appName,
-                              convention['ProductionStep']).fileNameCore() 
-      return dir, fncore
-  
-  def get_config_ptree(self):
-    pt = ptree()
-    self.__add_config_ptree(pt)
-    logging.debug('Configure ptree:\n%s' % pt)
-    return pt
-  
-  def get_prepare_ptree(self):
-    # we update the run-number again because the user could have provided a 0 
-    # run-number in interactive mode on purpose, to force usage of the 
-    # run-number from the event stream.
-    self.__update_run_number()
-    rparams = self.__get_run_params()
-
-    # In case there are no run params use some sensible defaults
-    innerpt, pt = ptree(), ptree()
-    innerpt['timeSOR']           = self.__get_sor(rparams)
-    innerpt['det_mask']          = self.__get_dmask(rparams)
-    innerpt['run_number']        = str(self['run-number'])
-    innerpt['run_type']          = str(rparams['RunType']) if rparams else 'Physics'
-    innerpt['recording_enabled'] = str(rparams['RecordingEnabled']).lower() if rparams else 'true'
-    pt.add_child('RunParams', innerpt)
-    logging.debug('Prepare ptree:\n%s' % pt)
-    return pt
-  
-  def get_prepareWorker_ptree(self):
-    return prepw_pt
-
-  def get_mon_config_ptree(self):
-    pt = ptree()
-    if self['oh-monitoring']:
-      paramspt, rulept = ptree(), ptree()
-      paramspt['NumberOfSlots'] = str(self['oh_numslots'])
-      paramspt['PublishInterval'] = str(self['histogram-publishing-interval'])
-      paramspt['OHServer'] = self['ohserver']
-      paramspt['ROOTProvider'] = self['rootprovider']
-      rulept.add_child(monparams_extension, paramspt)
-      rulept['IncludeFilter'] = self['histogram-include']
-      rulept['ExcludeFilter'] = self['histogram-exclude']
-      rulept['UID'] = 'GlobalOHRule'
-      rulept['Name'] = 'GlobalOHRule'
-      pt.add_child(mon_config_rule_path, rulept)
-    logging.debug('OH configure ptree:\n%s' % pt)
-    return pt
-  
-  def get_mon_prepareWorker_ptree(self):
-    pt = ptree()
-    if self['oh-monitoring']:
-      pt['appName'] = appName
-    logging.debug('OH prepareWorker ptree:\n%s' % pt)
-    return pt
-  
-  def _derive_conventional_property(self, k):
-    try:
-      return self['save-output-conventional'][k] # try planA
-    except KeyError:
-      # fall back to planB
-      d, core = self.__parse_filename(self.stream.current_filename()) 
-      rf = ES.RawFileName(core)
-      if rf.hasValidCore():
-        if k == 'ProjectTag': # special case for this one (attr name and return)
-          return path.basename(rf.project())
-        attr = k[:1].lower() + k[1:] # lower the first letter of the key
-        if hasattr(rf, attr):
-          return getattr(rf, attr)() # call the corresponding function
-    # fall back to planC
-    return self.default_convention[k]
-  
-  def __parse_filename(self, fullname=None):
-    if not fullname:
-      fullname = self['save-output']
-    dir, core = ((path.dirname(fullname), 
-                  path.basename(fullname)) if fullname.find(sep) != -1
-                                           else ('.', fullname))
-    if core.endswith('.data'):
-      core = core[:-5]
-    return dir, core
-  
-  def __set_verbosity(self):
-    option.warn_verbosity(self['verbosity'])
-    logging.getLogger().setLevel(self['verbosity'])
-    ers_debug_level(self['ers-debug-level'])
-  
-  def __digest_config(self):
-    self.__setup_input()
-    self.__setup_sor()
-    self.__setup_hlt_implementation()
-    self.__setup_monitoring()
-    self.__setup_leak_check()
-    self.__setup_commands()
-    self.__setup_event_mods()
-    self.__setup_ros_rob_details()
-    self.__setup_miscellaneous()
-  
-  def __log(self):
-    self.__log_number_events()
-    
-  def __log_number_events(self):
-    nevts, skip = self['number-of-events'], self['skip-events']
-    tot = nevts + skip
-    avail = len(self.stream)
-    if nevts == 0:
-      logging.warning("0 events will be processed")
-      if skip:
-        logging.warning("Skipping events makes no sense in this context")
-    elif nevts > 0 and \
-      len(self.stream) < tot:
-      logging.warning("Events will be recycled!")
-      logging.info("%d events available on input" % len(self.stream))
-      logging.info("User requested %d skipped events and %d processed events" 
-                   % (skip, nevts))
-      logging.info("A total of %d events have to be consumed" % tot)
-      if avail != 0:
-        n_file_iter = float(tot)/avail
-      else:
-        logging.warning("Input stream has no events!")
-        n_file_iter = 0.
-        self['number-of-events'] = 0
-      logging.info("I'll run over the file(s) %.2f times" % (n_file_iter))
-      if self['event-modifier']: 
-        logging.info("(assuming no events are skipped due to pre-processing)")
-    
-  def __setup_input(self):
-    # we make the stream be part of the configuration, because some of it's 
-    # contents may actually impact how things are configured (e.g. run-number)
-    self.stream = None
-    if 'file' in self:
-      self['file'] = [path.expandvars(path.expanduser(f)) for f in self['file']]
-      logging.info('Creating event stream from file list %s' % self['file'])
-      self.stream = pausable_istream(self['file'])
-      if self['skip-events'] >= self.stream.total_events:
-        raise option.BadOptionSet, ('Can only skip less events than those '
-                                    'provided as input')
-    # We can now update the run number from the input stream if necessary
-    self.__update_run_number()
-    self['precommand'].append('_run_number=%d' % self['run-number'])
-  
-  def __setup_sor(self):
-    self['sor-time'] = self.parse_sor(self['sor-time'])
-      
-  def __setup_hlt_implementation(self):
-    if (self['use-database']):
-      if self['joboptionsvc-type'] == self.defaults['joboptionsvc-type']:
-        self['joboptionsvc-type'] = 'TrigConf::HLTJobOptionsSvc'
-      self.__setup_db_defaults()
-    else:
-      self['joboptions'] = ' '.join(self.extra)
-        
-  def __setup_monitoring(self):
-    if self['perfmon']:
-      self['precommand'].insert(0, 'include("TrigCommon/PerfMon.py")')
-    if not self['oh-monitoring']:
-      self['precommand'].append('include("TrigServices/OfflineTHistSvc.py")')
-      
-  def __setup_leak_check(self):
-    doLeakCheck = False
-    memChkMode = ''
-    if self['leak-check-execute']:
-      doLeakCheck = [ 'execute' ]
-      memChkMode = 'leak-check'
-    if self['leak-check']:
-      memChkMode = 'leak-check'
-      arg = self['leak-check'].lower()
-      if arg=='all':  doLeakCheck = []
-      else:           doLeakCheck = [arg]
-    if self['delete-check']:
-      memChkMode = 'delete-check'
-      arg = self['delete-check'].lower()
-      if arg=='all':  doLeakCheck = []
-      else:           doLeakCheck = [arg]
-      
-    if doLeakCheck != False:
-      #early import is needed for proper offloading later
-      import Hephaestus.MemoryTracker as memtrack
-      if memChkMode == 'delete-check':
-        import Hephaestus.DeleteChecker
-      self['precommand'].insert(0, 'memChkMode="%s";doLeakCheck=%s;'
-                                'include("TrigCommon/LeakTracer.py")' 
-                                % (str(memChkMode).replace("'",'"'),
-                                   str(doLeakCheck).replace("'",'"')))
-  
-  def __setup_commands(self):
-    self.__setup_pcommands('pre')
-    self.__setup_pcommands('post')
-    
-  def __setup_pcommands(self, p):
-    self["%scommand" % p] = [option.parse_commands(c) 
-                             for c in self["%scommand" % p]]
-    self["%scommand" % p] = filter(lambda c: not match(r'[\s;]*$', c), 
-                                   self["%scommand" % p])
-  
-  def __setup_event_mods(self):
-    def process_additional_plugins(p):
-      try:
-        com = m.__dict__['additional_plugin_%scommand' % p]
-        self['%scommand' % p].append(com)
-        logging.info('An additional plugin %scommand will be applied: "%s"' 
-                     % (p, com))
-      except KeyError:
-        logging.debug('No additional plugin %scommand will be applied' % p)
-        
-    self.event_modifiers = []
-    for mod in self['event-modifier']:
-      m = __import__(mod, globals(), locals(), ['*'])
-      
-      if "modify_general" in dir(m):
-        # m=m to capture m when the function is created (not when it is called)
-        # otherwise, when it was called, m would always be the last imported 
-        # module
-        modify = lambda event, m=m: m.modify_general(configuration=self, 
-                                                     event=event)
-      else:
-        modify = m.modify
-         
-      self.event_modifiers.append(modify)
-      process_additional_plugins('pre')
-      process_additional_plugins('post')
-      
-  def __setup_ros_rob_details(self):
-    try: # try getting a literal (in case it's a dict)
-      self['ros2rob'] = literal_eval(self['ros2rob'])
-    except ValueError: # not a proper dict -> must be a module
-      self['ros2rob'] = __import__(self['ros2rob']).ros2rob
-    set_dcm_strategy([self['dcm-prefetch-strategy']])
-    set_dc_ros2rob(self['ros2rob'])
-    set_l1r_robs(self['extra-l1r-robs'])
-      
-  def __setup_db_defaults(self):
-    db_defaults, dbextra_defaults = self.__get_db_defaults()
-    for k, v in db_defaults.items():
-      if not self[k]:
-        self[k] = v if not callable(v) else v()
-    for k, v in dbextra_defaults.items():
-      if not k in self['db-extra'] or not self['db-extra'][k]:
-        self['db-extra'][k] = v if not callable(v) else v()
-  
-  def __setup_miscellaneous(self):
-    if not self['interactive']:
-      # Set PyROOT to batch mode
-      from sys import argv
-      argv.insert(1, '-b')
-      
-    if not self['python-setup']:
-      extrastr = 'Db' if self['use-database'] else ''
-      self['python-setup'] = "TrigPSC/TrigPSCPython%sSetup.py" % (extrastr,)
-      
-    self['libraries'] = ['TrigPSC', 'TrigServices']
-    
-  def __update_run_number(self):
-    # If we have ever got a custom run number, use it; otherwise, retrieve it 
-    # from the event stream 
-    if not self['run-number']:
-      logging.debug('Run number not provided (==0). It will be read from the '
-                    'input stream')
-      self['run-number'] = self.stream.current_run_number()
-    # if no run number was ever given by the user (in the command line or during
-    # interactive mode) nor obtained from the event stream, we cannot run
-    if not self['run-number']:
-      raise run_number_error, ('No run number found. Cannot continue with '
-                               'run number 0')
-    logging.info('Using run number %d' % self['run-number'])
-  
-  def __get_sor(self, rparams):    
-    tsor = self['sor-time']
-    if not tsor:
-      tsor = rparams['SORTime']
-    return tdaq_time_str_from_microsec(int(tsor / 1e9),
-                                       int(tsor % 1e9 / 1e3))
-  def __get_dmask(self, rparams):
-    if self['detector-mask']:
-      dmask = hex(self['detector-mask'])
-    elif rparams is not None:
-      dmask = (rparams['DetectorMask'] if self['run-number'] >= dblim_rnum
-                                       else hex(rparams['DetectorMask']))
-    else:
-      dmask = hex(0xffffffffffffffff)
-
-    dmask = dmask.lower().replace('0x', '').replace('l', '')
-    return '0' * (32 - len(dmask)) + dmask # (pad with 0s)
-    
-  def __get_db_defaults(self):
-    #   Unnecessary db connections to COOL are avoided below by the usage of the 
-    # method __get_cool_default_getter (see respective documentation). 
-    #   By delaying the connection, we ensure that the run  number being used 
-    # does not need to be present in COOL, as long as the user specified all 
-    # required keys (so that we never need to get their defaults). If this 
-    # wasn't the case and the user chose a run number that wasn't present in 
-    # COOL, the current athenaHLT run would be aborted, even if the all required 
-    # parameters were already defined - that is, even though no reason to 
-    # connect to COOL ever existed.  
-    db_defaults = {'db-type'    : 'Coral', # dblookup
-                   'db-server'  : 'TRIGGERDB',
-                   'db-smkey'   : self.__get_cool_default_getter('smkey'),
-                   'db-hltpskey': self.__get_cool_default_getter('hltpskey')}
-    dbextra_defaults={'lvl1key' : self.__get_cool_default_getter('lvl1key'),
-                      'schema'  : 'ignored (dblookup)',
-                      'user'    : 'ignored (dblookup)',
-                      'password': 'ignored (dblookup)'}    
-    return db_defaults, dbextra_defaults
-    
-  def __get_cool_default_getter(self, param):
-    """
-    This method returns a callable that, when called, obtains a parameter from 
-    cool for the run number of this configuration. The returned callable takes
-    no parameters of its own.
-    
-    The accepted parameters are 'smkey', 'hltpskey', 'lvl1key'. ValueError is 
-    raised on any other parameter.
-    
-    Notice that no db connection is ever created until the callable returned by 
-    this method is called. Notice also that one db connection is created at 
-    most, no matter how many getters are called, nor how many times they are 
-    called.    
-    """
-    def db():
-      if not self.dbconn:
-        i = 1 if self['run-number'] >= dblim_rnum else 0
-        self.dbconn = CoolUtil.GetConnection(prescales_db_strs[i])
-      return self.dbconn
-    run = int(self['run-number'])
-    rlst = [[run,run]]
-    if param == 'smkey':
-      ret = lambda: str(CoolUtil.getHLTConfigKeys(db(), rlst)[run]['SMK'])
-    elif param == 'hltpskey':
-      def ret():
-        hltpskeys = CoolUtil.getHLTPrescaleKeys(db(), rlst)[run]["HLTPSK2"]
-        return str([(int(b),int(a)) for a,b,c in hltpskeys])
-    elif param == 'lvl1key':
-      ret = lambda: str(CoolUtil.getL1ConfigKeys(db(),rlst)[run]['LVL1PSK'][0][0])
-    else:
-      raise ValueError("Invalid parameter '%s': wouldn't know how to get it "
-                       "from COOL" % param)
-    
-    return ret
-  
-  def __get_run_params(self):
-    i = 1 if self['run-number'] >= dblim_rnum else 0
-    #dbcon = AtlCoolLib.indirectOpen(runparams_db_strs[i], True, True, False)
-    dbcon = AtlCoolLib.readOpen(runparams_db_strs[i])
-    folder = dbcon.getFolder(runparams_paths[i])
-    
-    # need to keep sor variable while using payload (cannot do the following in
-    # one single line nor overwrite sor). Otherwise: 1) GC comes into play; 
-    # 2) the object is deleted; 3) since it's a shared_ptr, the internal 
-    # cool::IObject also gets deleted; 4) payload is not valid any longer
-    try:
-      sor = folder.findObject(self['run-number'] << 32, 0)
-    except Exception:
-      return None        # This can happen for unknown run numbers
-
-    payload = sor.payload()
-    return {k: payload[k] for k in payload}
-  
-  @contextmanager
-  def make_dbextra_rw_context(self):
-    self['db-extra-rw'] = self['db-extra'].copy() # shallow copy is enough
-    try:
-      yield
-    finally:
-      del self['db-extra-rw']
-    
-  def __get_db_config_ptrees(self):
-    with self.make_dbextra_rw_context():
-      ipt, atpt, dbpt, l1pt = (ptree(), ptree(), self.__get_trigdb_ptree(), 
-                               self.__get_lvl1conf_ptree()) 
-      ipt['hltPrescaleKey'] = self['db-hltpskey']
-      # by now, all the db-extra-rw parameters that are recognized and have a 
-      # dedicated ptree slot should have been removed
-      others = 'additionalConnectionParameters.additionalConnectionParameter'
-      for k, v in self['db-extra-rw'].items():
-        ipt.add(others, "%s=%s" % (k,v))
-  
-    self.__add_precommands_ptree(ipt)
-    self.__add_postcommands_ptree(ipt)
-    self.__add_log_levels(atpt)
-    atpt['pythonSetupFile'] = self['python-setup']
-    return ipt, atpt, dbpt, l1pt
-  
-  def __get_trigdb_ptree(self):
-    dbpt = ptree()
-    dbpt['Type'] = self['db-type']
-    dbpt['Server'] = self['db-server']
-    dbpt['SuperMasterKey'] = self['db-smkey']
-    dbpt['User'] = self['db-extra-rw'].pop('user')
-    dbpt['Password'] = self['db-extra-rw'].pop('password')
-    dbpt['Name'] = self['db-extra-rw'].pop('schema')
-    dbpt['Alias'] = self['db-server'] if self['db-type'] == 'Coral' else ''
-    return dbpt
-  
-  def __get_lvl1conf_ptree(self):
-    l1pt = ptree()
-    l1pt['Lvl1PrescaleKey'] = str(self['db-extra-rw'].pop('lvl1key'))
-    return l1pt
-      
-  def __get_joboptions_config_ptree(self):
-    inner = ptree()
-    inner['jobOptionsPath'] = self['joboptions']
-    inner['pythonSetupFile'] = self['python-setup']
-    inner['showInclude'] = str(self['show-includes'])
-    inner['tracePattern'] = self['trace']
-    inner['evtSel'] = 'NONE'
-    self.__add_log_levels(inner)
-    self.__add_precommands_ptree(inner)
-    self.__add_postcommands_ptree(inner)
-    return inner
-  
-  def __finish_config_ptree(self, pt):
-    pt["Configuration.HLTMPPUApplication.UID"] = "athenaHLT"
-    pt["Configuration.Partition.UID"] = "NONE"
-  
-  def __add_config_ptree(self, pt):
-    if self['use-database']:
-      ptree_extension = dbpy_ptree_extension
-      ipt, atpt, dbpt, l1pt = self.__get_db_config_ptrees()
-      pt.add_child(trigdb_con_ptree_path, dbpt)
-      pt.add_child(lvl1_config_ptree_path, l1pt)
-      pt.add_child(athenaHLT_ptree_path, atpt)
-    else:
-      ptree_extension = joboptions_ptree_extension
-      ipt = self.__get_joboptions_config_ptree()
-    self.__add_common_ptree(ipt)
-    self.__add_muoncal_ptree(pt)
-    self.__add_ros2rob_ptree(pt)
-    pt.add_child('.'.join([base_hlt_ptree_path, ptree_extension]), 
-                 ipt)
-    self.__finish_config_ptree(pt)
-  
-  def __add_libraries_ptree(self, pt):
-    inner = ptree()
-    for lib in self['libraries']:
-      inner.add('library', lib)
-    pt.add_child("libraries", inner)
-  
-  def __add_common_ptree(self, pt):
-    self.__add_libraries_ptree(pt)
-    
-    comm = ptree()
-    comm["messageSvcType"] = self['msgsvc-type']
-    comm["jobOptionsSvcType"] = self['joboptionsvc-type']
-    comm["dllName"] = self['appmgrdll']
-    comm["factoryName"] = self['appmgrfactory']
-    pt.add_child(common_ptree_extension, comm)
-    
-  def __add_muoncal_ptree(self, pt):
-    if self['muoncal-buffername'] or self['muoncal-buffersize']:
-      pt[muoncalbuf_path + ".CircName"] = self['muoncal-buffername']
-      pt[muoncalbuf_path + ".CircSize"] = self['muoncal-buffersize']
-      
-  def __add_ros2rob_ptree(self, pt):
-    r2rpt = ptree()
-    r2rdict = self['ros2rob']
-    if r2rdict:
-      for ros, roblist in r2rdict.iteritems():
-        rospt = ptree()
-        for rob in roblist:
-          rospt.add('ROBID', str(rob))
-        r2rpt.add_child(ros, rospt)
-    pt.put_child(ros2rob_path, r2rpt)
-  
-  def __add_log_levels(self, pt):
-    for logl in self['log-level'].split(','):
-      pt.add('logLevels.logLevel', logl)
-  
-  def __add_precommands_ptree(self, pt):
-    self.__add_pcommands_ptree(pt, 'pre')
-  def __add_postcommands_ptree(self, pt):
-    self.__add_pcommands_ptree(pt, 'post')
-  def __add_pcommands_ptree(self, pt, p):
-    pcommands = ptree()
-    for prec in self['%scommand' % p]:
-      pcommands.add("%sCommand" % p, prec)
-    pt.add_child("%sCommands" % p, pcommands)
-  
- 
-################################################################################
-#                                   Tests                                      #
-################################################################################
-
-import unittest
-from datetime import datetime as dt
-from HLTTestApps import random_sub_dict
-from types import ModuleType
-import sys
-
-# this is used in other modules
-class dummy_configuration(dict):
-  __getattr__ = configuration.__getattr__.__func__
-  
-def get_virtual_module(modname):
-  mod = ModuleType(modname)
-  sys.modules[modname] = mod
-  return mod
-
-class configuration_tests(unittest.TestCase):
-  cli_base_args = []
-  special_cli_args = []
-  regular_config_params = {'number-of-events': '12345',
-                         'rewind': 'True',
-                         'run-number': '22',
-                         'verbosity': '3',
-                         'ers-debug-level': '1',
-                         'save-output': 'fakeoutfile',
-                         'timeout': '{"timeout": 123, '
-                                    '"warn_fraction": 0.125}',
-                         'perfmon': '',
-                         'tcmalloc': '',
-                         'use-compression': '4',
-                         'max-result-size': '500',
-                         'debug': '',
-                         'stdcmalloc': ''}
-
-  def test_defaults(self):
-    c = configuration(self.opt_spec, 
-                      self._gen_complete_args())
-    self.assertEquals(set(self.opt_spec.keys()), set(c.defaults.keys()), 
-                      "There are missing or unexpected parameters in the "
-                      "defaults")
-    for k in c.defaults:
-      expect = self.opt_spec.get_default(k)
-      actual = c.defaults[k]
-      self.assertEquals(actual, expect, "Wrong default for '%s'; expected '%s';"
-                                        " got '%s'" % (k, expect, actual))
-  def test_regular_config_params(self):
-    self._test_regular_config_params(self.regular_config_params)
-  def test_ptree_dllName(self):
-    dllname = "fake_dll_name"
-    path = self.hltcomm + ".dllName"
-    pt = self._gen_complete_config_ptree(["--appmgrdll", dllname])
-    self._test_ptree_value(pt, path, dllname)
-  def test_ptree_factoryName(self):
-    factname = "fake_factory_name"
-    path = self.hltcomm + ".factoryName"
-    pt = self._gen_complete_config_ptree(["--appmgrfactory", factname])
-    self._test_ptree_value(pt, path, factname)
-  def test_ptree_joboptions_svc(self):
-    josvc = 'fakejosvc'
-    path = self.hltcomm + ".jobOptionsSvcType"
-    pt = self._gen_complete_config_ptree(["--joboptionsvc-type", josvc])
-    self._test_ptree_value(pt, path, josvc)
-  def test_ptree_message_svc(self):
-    msgsvc = 'fakemsgsvc'
-    path = self.hltcomm + '.messageSvcType'
-    pt = self._gen_complete_config_ptree(["--msgsvc-type", msgsvc])
-    self._test_ptree_value(pt, path, msgsvc)
-  def test_ptree_muoncal(self):
-    bufname, bufsize = "foobar", '5'
-    pt = self._gen_complete_config_ptree(['--muoncal-buffername', bufname,
-                                          '--muoncal-buffersize', bufsize])
-    self._test_ptree_value(pt, muoncalbuf_path + ".CircName", bufname)
-    self._test_ptree_value(pt, muoncalbuf_path + ".CircSize", bufsize)
-  def test_ptree_ros2rob_map(self):
-    r2r = {'ROS1': [1, 2, 3], 
-           'ROS2': [4, 5, 6], 
-           'ROS3': [7, 8, 9]}
-    pt = self._gen_complete_config_ptree(['--ros2rob', repr(r2r)])
-    def r2r_pred(r2rpt):
-      #import pdb; pdb.set_trace()
-      # are all keys the same?
-      outters = sorted(r2rpt.keys()) == sorted(r2r.keys())
-      # given a ros, get the list of rob ids, as ints, from the ptree
-      getrobs = lambda ros: [int(x) for x in r2rpt.get_child(ros).values_data()]
-      # for each inner ptree (each ROS), is it the same as in the original list?
-      inners = [sorted(getrobs(ros)) == sorted(r2r[ros]) for ros in r2r]
-      # did we get True everywhere?
-      return outters and all(inners)
-    # now check the ros2rob ptree
-    self._test_ptree_pred(pt, ros2rob_path, r2r_pred)
-  def test_verbosity(self):
-    level = 'logging.DEBUG'
-    c = configuration(self.opt_spec, 
-                      self._gen_complete_args(['--verbosity', level]))
-    target = eval(level)
-    actual = logging.getLogger().getEffectiveLevel()
-    self.assertEquals(actual, target, "Logging level not correct. Expected %s "
-                                      "but got %s" % (target, actual))
-  def test_ers_debug_level(self):
-    level = '0'
-    c = configuration(self.opt_spec,
-                      self._gen_complete_args(['--ers-debug-level', level]))
-    actual = str(get_ers_debug_level())
-    self.assertEquals(level, actual, "ERS debug level not correct. Expected %s "
-                                     "but got %s" % (level, actual))
-  def test_pyroot_batch(self):
-    from sys import argv
-    cli_args = self._gen_complete_args() # not interactive 
-    c = configuration(self.opt_spec, cli_args)
-    self.assert_(len(argv) >= 2 and argv[1] == '-b', 
-                 "Not ready for PyROOT batch mode")  
-  
-  def test_event_modifier(self):
-    mod = get_virtual_module("fakeModifier")
-    mod.modify = lambda x: x+1
-    mod.additional_plugin_precommand = "'prec'"
-    mod.additional_plugin_postcommand = "'postc'"
-        
-    c = configuration(self.opt_spec,
-                      self._gen_complete_args(["--event-modifier", 
-                                               "['%s']" % mod.__name__]))
-    
-    n = len(c.event_modifiers)
-    self.assertEquals(n, 1, "Expected 1 event modifier; got %d" % n)
-    modified_1 = c.event_modifiers[0](1)
-    self.assertEquals(modified_1, 2, "Expected to get 2 as a modified 1; "
-                                     "got %s" % modified_1)
-    
-    def ensurepcommand(p):
-      n = len(c['%scommand' % p])
-      self.assertEquals(n, 1, "Expected 1 %scommand; got %d" % (p, n))
-      pc = eval(c['%scommand' % p][0])
-      expect = '%sc' % p
-      self.assertEquals(pc, expect, 
-                        "Expected the %scommand %s; got %s" % (p, expect, pc))
-
-    c['precommand'] = [x for x in c['precommand'] if 'OfflineTHist' not in x
-                                                  and '_run_number' not in x]    
-    ensurepcommand('pre')
-    ensurepcommand('post')
-  
-  def test_event_modifier_general(self):
-    mod = get_virtual_module("fakeModifierGeneral")
-    mod.modify = lambda x: self.assert_(False, 
-                                        ("%s.modify called, this should "
-                                         "not have happened") % mod.__name__)
-    mod.modify_general = lambda **kwargs: 10 * kwargs['event']
-     
-    c = configuration(self.opt_spec,
-                      self._gen_complete_args(["--event-modifier",
-                                               "['%s']" % mod.__name__]))
-
-    modified_1 = c.event_modifiers[0](1)
-    
-    self.assertEquals(modified_1, 10, "Expected to get 10 as a modified 1; "
-                                      "got %s" % modified_1)
-  
-  def test_run_params(self):
-    pt = self._gen_complete_prepare_ptree(['--run-number', '177531'])
-    expect = {'timeSOR': '13/3/11 17:15:16', 
-              'run_number': '177531', 
-              'det_mask': '00000000000000000001fffffffffff7',
-              'recording_enabled': 'true', 
-              'run_type': 'Physics'}
-    for k, v in expect.items():
-      self._test_ptree_value(pt, 'RunParams.%s' % k, v)
-  def test_run_params_run2(self):
-    pt = self._gen_complete_prepare_ptree(['--run-number', '238742'])
-    expect = {'timeSOR': '8/9/14 21:54:10', 
-              'run_number': '238742', 
-              'det_mask': '000000000000000000003f8000ffff00',
-              'recording_enabled': 'true', 
-              'run_type': 'Physics'}
-    for k, v in expect.items():
-      self._test_ptree_value(pt, 'RunParams.%s' % k, v)
-  def test_explicit_detector_mask(self):
-    pt = self._gen_complete_prepare_ptree(['--detector-mask', 123])
-    expect = '0000000000000000000000000000007b'
-    self._test_ptree_value(pt, 'RunParams.det_mask', expect)
-  def test_default_detector_mask(self):
-    pt = self._gen_complete_prepare_ptree(['--run-number', '177531',
-                                           '--detector-mask', '0L'])
-    expect = '00000000000000000001fffffffffff7'
-    self._test_ptree_value(pt, 'RunParams.det_mask', expect)
-  def test_explicit_time_human_readable(self):
-    trepr = '10/12/13 20:07:13'
-    pt = self._gen_complete_prepare_ptree(['--sor-time', trepr + '.0'])
-    self._test_ptree_value(pt, 'RunParams.timeSOR', trepr)
-  def test_explicit_time_nanos(self):
-    nanos = 1386702433971151000
-    pt = self._gen_complete_prepare_ptree(['--sor-time', nanos])
-    self._test_ptree_value(pt, 'RunParams.timeSOR', '10/12/13 20:07:13.971151')
-  def test_explicit_time_now(self):
-    pt = self._gen_complete_prepare_ptree(['--sor-time', 'now'])
-    def less_than_5s_ago(val):
-      from optspec import common
-      tdelta = dt.now() - dt.strptime(val, common['sor-time']['format'])
-      return tdelta.total_seconds() < 5
-    self._test_ptree_val_pred(pt, 'RunParams.timeSOR', less_than_5s_ago)
-  def test_default_time(self):
-    pt = self._gen_complete_prepare_ptree(['--sor-time', 0])
-    self._test_ptree_value(pt, 'RunParams.timeSOR', '13/3/11 17:15:16')
-  def test_mon_offline_config_ptree_empty(self):
-    pt = self._gen_complete_mon_config_ptree()
-    self.assertEquals(pt.keys(), [], "offline mon config ptree not empty")
-  def test_mon_online_config_ptree_paths(self):
-    pt = self._gen_complete_mon_config_ptree(['--oh-monitoring'])
-    self._test_ptree_path(pt, mon_config_rule_path + ".UID")
-    self._test_ptree_path(pt, mon_config_rule_path + ".Name")
-    self._test_ptree_path(pt, oh_params_path + ".OHServer")
-    self._test_ptree_path(pt, oh_params_path + ".ROOTProvider")
-    self._test_ptree_path(pt, oh_params_path + ".PublishInterval")
-    self._test_ptree_path(pt, oh_params_path + ".NumberOfSlots")
-  def test_mon_online_config_ptree_include_filter(self):
-    val = 'abc'
-    pt = self._gen_complete_mon_config_ptree(['--oh-monitoring', 
-                                             '--histogram-include', val])
-    self._test_ptree_value(pt, mon_config_rule_path + ".IncludeFilter", val)
-  def test_mon_online_config_ptree_exclude_filter(self):
-    val = 'abc'
-    pt = self._gen_complete_mon_config_ptree(['--oh-monitoring', 
-                                             '--histogram-exclude', val])
-    self._test_ptree_value(pt, mon_config_rule_path + ".ExcludeFilter", val)
-  def test_mon_online_config_ptree_publish_interval(self):
-    val = '10'
-    pt = self._gen_complete_mon_config_ptree(['--oh-monitoring', 
-                                             '--histogram-publishing-interval', 
-                                             val])
-    self._test_ptree_value(pt, oh_params_path + ".PublishInterval", val)
-  def test_mon_offline_run_ptree_empty(self):
-    pt = self._gen_complete_mon_run_ptree()
-    self.assertEquals(pt.keys(), [], "offline mon prepare ptree not empty")
-  def test_mon_online_run_ptree_appname(self):
-    pt = self._gen_complete_mon_run_ptree(['--oh-monitoring'])
-    self._test_ptree_value(pt, 'appName', 'athenaHLT')
-  def _get_hlt_conf_path(self):
-    return '.'.join([base_hlt_ptree_path, self.ptree_extension])
-  def _gen_config_ptree(self, cli_args):
-    c = configuration(self.opt_spec, cli_args)
-    pt = c.get_config_ptree()
-    self._test_config_ptree_basic(pt)
-    return pt
-  def _gen_prepare_ptree(self, cli_args):
-    c = configuration(self.opt_spec, cli_args)
-    pt = c.get_prepare_ptree()
-    self.assertEquals(pt.keys(), ['RunParams'])
-    return pt
-  def _gen_mon_config_ptree(self, cli_args):
-    c = configuration(self.opt_spec, cli_args)
-    return c.get_mon_config_ptree()
-  def _gen_mon_run_ptree(self, cli_args):
-    c = configuration(self.opt_spec, cli_args)
-    return c.get_mon_prepareWorker_ptree()
-  def _gen_complete_config_ptree(self, additional_opts=[], additional_args=[]):
-    return self._gen_config_ptree(self._gen_complete_args(additional_opts, 
-                                                          additional_args))
-  def _gen_complete_prepare_ptree(self, additional_opts=[], additional_args=[]):
-    return self._gen_prepare_ptree(self._gen_complete_args(additional_opts, 
-                                                           additional_args))
-  def _gen_complete_mon_config_ptree(self, additional_opts=[], 
-                                     additional_args=[]):
-    return self._gen_mon_config_ptree(self._gen_complete_args(additional_opts, 
-                                                              additional_args))
-  def _gen_complete_mon_run_ptree(self, additional_opts=[],
-                                      additional_args=[]):
-    return self._gen_mon_run_ptree(self._gen_complete_args(additional_opts, 
-                                                               additional_args))
-  def _test_regular_config_params(self, params):
-    d = params
-    additional_args = sum([["--%s" % k, v] for k, v, in d.items()], [])
-    c = configuration(self.opt_spec, 
-                      self._gen_complete_args(additional_args))
-    for k in d:
-      # regular strings need the 1st part of the or, flags need the 2nd part 
-      # and literals with more than one valid string representation need the
-      # 3rd part of the or 
-      self.assert_(str(c[k]) == d[k] or c[k] == True or c[k] == eval(d[k]),
-                   "Option '%s' was not correctly taken into account. " 
-                   "Expected '%s' but got '%s'" % (k, d[k], c[k]))
-  def _test_ptree_path(self, pt, path):
-    self.assert_(path in pt, "No node '%s' found in the configuration ptree"
-                             % path)
-  def _test_ptree_pred(self, pt, path, test):
-    self._test_ptree_path(pt, path)
-    child = pt.get_child(path)
-    msg = ("The sub tree with path '%s' in the configuration ptree, does "
-           "not pass the required condition:\n%s" % (path, test))
-    if test.__doc__:
-      msg += ".__doc__: %s" % test.__doc__
-    self.assert_(test(child), msg)
-  def _test_ptree_val_pred(self, pt, path, test):
-    self._test_ptree_path(pt, path)
-    val = pt[path]
-    msg = ("The value of the node '%s' in the configuration ptree ('%s') does "
-           "not pass the required condition:\n%s" % (path, val, test))
-    if test.__doc__:
-      msg += ".__doc__: %s" % test.__doc__
-    self.assert_(test(val), msg)
-  def _test_ptree_value(self, pt, path, value):
-    pred = lambda v: v == value
-    pred.func_name = "equals_%s" % value
-    pred.__doc__ = "checks whether a certain value equals %s" % value
-    self._test_ptree_val_pred(pt, path, pred)
-  def _test_ptree_default_value(self, pt, path, arg):
-    expect = self.opt_spec.get_default(arg)
-    self._test_ptree_value(pt, path, expect)
-  def _test_config_ptree_basic(self, pt):
-    self.assertEquals(pt.keys(), ['Configuration'])
-    self._test_ptree_path(pt, self.hltconf)
-    self._test_ptree_path(pt, self.hltcomm)
-  def _test_ptree_libraries(self, pt):
-    lib_path = self.hltconf + ".libraries"
-    self._test_ptree_path(pt, lib_path)
-    libs = pt.get_child(lib_path)
-    for k in libs:
-      self.assertEquals(k, "library", 
-                        "Node '%s' in '%s' is not a library" % (k, lib_path))
-    expect = set(['TrigPSC', 'TrigServices'])
-    actual = set([x.data() for x in libs.values()])
-    self.assertEquals(actual, expect, 
-                      "Unexpected or missing libraries. Expected '%s'; got '%s'"
-                      % (expect, actual))
-  def _test_ptree_common(self, pt):
-    self._test_ptree_libraries(pt)
-    self._test_ptree_default_value(pt, self.hltcomm + ".messageSvcType", 
-                                   'msgsvc-type')
-    self._test_ptree_default_value(pt, self.hltcomm + ".dllName", 
-                                   'appmgrdll')
-    self._test_ptree_default_value(pt, self.hltcomm + ".factoryName", 
-                                   'appmgrfactory')
-    
-  def _gen_complete_args(self, additional_opts=[], additional_args=[]):
-    return (self.cli_base_args + 
-            additional_opts + 
-            self.special_cli_args + 
-            additional_args)
-    
-
-class file_based_configuration_tests(configuration_tests):
-  def setUp(self):
-    super(file_based_configuration_tests, self).setUp()
-    self.opt_spec = option.file_opt_spec
-    self.cli_base_args = ["-f", datafiles[0]]
-    self.hltconf = self._get_hlt_conf_path()
-    self.hltcomm = '.'.join([self.hltconf, common_ptree_extension])
-  def test_emon_not_allowed(self):
-    self.assertRaises(option.CurrentlyNotSupported, configuration, 
-                      option.emon_opt_spec, ['fake_arg'])
-  def test_file(self):
-    from os import environ, path
-    tf = datafiles[0]
-    environ['TESTVAR'] = path.dirname(tf)
-    cli_args = ['--file', '$TESTVAR/%s' % path.basename(tf)] 
-    cli_args += self.special_cli_args
-    c = configuration(self.opt_spec, cli_args)
-    self.assertEquals(c['file'], [tf])
-  def test_skip_too_many_events(self):
-    self.assertRaises(option.BadOptionSet, configuration,
-                      option.file_opt_spec, 
-                      self._gen_complete_args(['--skip-events', '10e20']))
-    
-class save_output_configuration_tests(file_based_configuration_tests):
-  # we need these to make things work
-  special_cli_args = ['fake_joboptions_needed_for_successful_config']
-  ptree_extension = 'needed_but_irrelevant_since_no_ptree_tests'
-  
-  # To be used by the configuration, so that we don't need a valid file
-  class MockPausableIstream(pausable_istream):
-    # we also need a data reader for invalid file
-    class MockDataReader(object):
-      # we only care about the filename
-      def __init__(self, fname):
-        self.fname = fname
-      # our mock istream will need these in inherited current_* methods
-      def fileName(self):
-        return self.fname
-      def runNumber(self):
-        return 1234567890
-    def __init__(self, filelist):
-      # the data reader is the only thing we do need
-      self.dr = self.MockDataReader(filelist[0])
-      # the rest is just so that our mock works with the configuration
-      self.total_events = 1000
-  
-  def setUp(self):
-    super(save_output_configuration_tests, self).setUp()
-    self.convd1 = {'ProjectTag': 'ptag',
-                  'LumiBlockNumber': 333,
-                  'StreamName': 'sname',
-                  'StreamType': 'stype',
-                  'RunNumber': 999999999,
-                  'ProductionStep': 'pstep',
-                  'dir': '/tmp'}
-    self.convd2 = {'ProjectTag': 'testcase',
-                  'LumiBlockNumber': 1,
-                  'StreamName': 'FakeStream',
-                  'StreamType': 'debug',
-                  'RunNumber': 123,
-                  'ProductionStep': 'imagine',
-                  'dir': '/fakedir'}
-    self._setup_cli_args()
-    # we replace the global pausable_istream with our mock
-    self._replace_pausable_istream()
-  def tearDown(self):
-    # restore the global pausable_istream for other tests
-    super(save_output_configuration_tests, self).tearDown()
-    self._restore_pausable_istream()
-    
-  def test_save_output_plain(self):
-    intended_dir = '/a/b/c'
-    intended_fncore = 'd'
-    outfile = '%s/%s' % (intended_dir, intended_fncore)
-    cli_args = self._gen_complete_args(['--save-output', outfile])
-    c = configuration(self.opt_spec, cli_args)
-    actual_dir, actual_fncore = c.parsed_out_data_filename()
-    self.assertEquals(actual_dir, intended_dir, 
-                      'Wrong output directory: "%s". Expected "%s"'
-                      % (actual_dir, intended_dir))
-    self.assertEquals(actual_fncore, intended_fncore,
-                      'Wrong output filename core: "%s". Expected "%s"'
-                      % (actual_fncore, intended_fncore))
-  def test_save_output_conventional_all(self):
-    # build expected stuff
-    expect_dir = self.convd1['dir']
-    # should generate "ptag.999999999.stype_sname.pstep.RAW._lb0333._athenaHLT"
-    expect_fncore = self._gen_filename_core(self.convd1)
-    # ask the configuration what it produces
-    cli_args = self._gen_complete_args(['--save-output-conventional', 
-                                        str(self.convd1)])
-    c = configuration(self.opt_spec, cli_args)
-    actual_dir, actual_fncore = c.parsed_out_data_filename()
-    # compare results with expected
-    self.assertEquals(actual_dir, expect_dir, 
-                      'Wrong output directory: "%s". Expected "%s".'
-                      % (actual_dir, expect_dir))
-    self.assertEquals(actual_fncore, expect_fncore, 
-                      'Wrong output filename core: "%s". Expected "%s"'
-                      % (actual_fncore, expect_fncore))
-  def test_save_output_conventional_some(self, default=None):
-    # input and default dicts
-    subconvd = random_sub_dict(self.convd1)
-    if not default:
-      default = self.convd2
-      # the directory should be taken from the default and not the input file
-      default['dir']=self.opt_spec['save-output-conventional']['allowed']['dir']
-    # take from default all the values not provided in the option
-    expectd = default.copy()
-    expectd.update(subconvd)
-    # generate expected dict taking defaults from input filename
-    
-    # the expected filename and directory derive from this
-    expect_fncore = self._gen_filename_core(expectd)
-    expect_dir = expectd['dir']
-    # ask the configuration what it produces
-    cli_args = self._gen_complete_args(['--save-output-conventional',
-                                        str(subconvd)])
-    c = configuration(self.opt_spec, cli_args)
-    actual_dir, actual_fncore = c.parsed_out_data_filename()
-    # compare results with expected
-    self.assertEquals(actual_dir, expect_dir, 
-                      'Wrong output directory: "%s". Expected "%s".'
-                      % (actual_dir, expect_dir))
-    self.assertEquals(actual_fncore, expect_fncore, 
-                      'Wrong output filename core: "%s". Expected "%s"'
-                      % (actual_fncore, expect_fncore))
-  def test_save_output_conventional_some_bad_input(self):
-    # when the input filename has a invalid core
-    self._setup_cli_args(bad_input=True)
-    default = self.opt_spec['save-output-conventional']['allowed']
-    self.test_save_output_conventional_some(default)
-  def _replace_pausable_istream(self):
-    global pausable_istream
-    pausable_istream, self.real_pausable_istream = (self.MockPausableIstream, 
-                                                    pausable_istream)
-  def _restore_pausable_istream(self):
-    global pausable_istream
-    pausable_istream = self.real_pausable_istream
-  def _setup_cli_args(self, bad_input=False):
-    # fake file, with good or bad core name
-    fncore = 'foobar' if bad_input else self._gen_filename_core(self.convd2)
-    self.cli_base_args = ["-f", "%s/%s" % (self.convd2['dir'], fncore)]
-  def _gen_filename_core(self, conventional_dict):
-    return ('%s.%08d.%s_%s.%s.RAW._lb%04d._%s' 
-            % (conventional_dict['ProjectTag'],
-               conventional_dict['RunNumber'],
-               conventional_dict['StreamType'],
-               conventional_dict['StreamName'],
-               conventional_dict['ProductionStep'],
-               conventional_dict['LumiBlockNumber'],
-               appName))
-
-class emon_based_configuration_tests(configuration_tests):
-  def setUp(self):
-    super(emon_based_configuration_tests, self).setUp()
-    pass # TODO
-
-class pcommands_tests:
-  def __init__(self):
-    raise NotImplementedError, ("This class is meant as a simple ABC and " +
-                                "should not be used directly")
-  def test_ptree_perfmon(self):
-    pt = self._gen_complete_config_ptree(['--perfmon'])
-    self._test_in_precommands(pt, 'perfmon')
-  def test_ptree_offline_histogramming(self):
-    pt = self._gen_complete_config_ptree() # no online monitoring 
-    self._test_in_precommands(pt, 'include("TrigServices/OfflineTHistSvc.py")')
-  def test_ptree_online_histogramming(self):
-    pt = self._gen_complete_config_ptree(['--oh-monitoring'])
-    cmd = 'include("TrigServices/OfflineTHistSvc.py")'
-    self._test_not_in_precommands(pt, cmd)
-  def test_ptree_leak_check_execute(self):
-    pt = self._gen_complete_config_ptree(["--leak-check-execute"])
-    self._test_in_precommands(pt, 'doLeakCheck')
-  def test_ptree_leak_check_all(self):
-    pt = self._gen_complete_config_ptree(["--leak-check", "all"])
-    self._test_in_precommands(pt, 'doLeakCheck')
-  def test_ptree_leak_check_initialize(self):
-    pt = self._gen_complete_config_ptree(["--leak-check", "initialize"])
-    self._test_in_precommands(pt, 'doLeakCheck')
-  def test_ptree_delete_check_execute(self):
-    pt = self._gen_complete_config_ptree(["--delete-check", "execute"])
-    self._test_in_precommands(pt, 'doLeakCheck')
-    self._test_in_precommands(pt, 'delete')
-  def test_ptree_precommands(self):
-    self._test_ptree_pcommands('pre')
-  def test_ptree_postcommands(self):
-    self._test_ptree_pcommands('post')
-  def _test_ptree_pcommands(self, p):
-    coms = ["command1", "command2", ";", ";;", "; ;", ";;;", ';;command3', 
-            ';command4;', 'command5;']
-    target = ["command%d" % (i+1) for i in range(5)]
-    
-    pt = self._gen_complete_config_ptree(["--%scommand=%s" % (p, str(coms))])
-    actual = pt.get_child(self.hltconf + '.%sCommands' % p).values_data()
-    actual = filter(lambda c: 'include' not in c and '_run_number' not in c, 
-                    actual)
-    
-    self.assertEquals(actual, target, "%scommands in config ptree don't match "
-                      "expected. Expected: %s; Got: %s" % (p, target, actual))
-  def _test_in_precommands(self, pt, substr):
-    self._test_in_precommands_aux(pt, substr, False)
-  def _test_not_in_precommands(self, pt, substr):
-    self._test_in_precommands_aux(pt, substr, True)
-  def _test_in_precommands_aux(self, pt, substr, negate=False):
-    precommands = pt.get_child(self.hltconf + '.preCommands')
-    precommands = [prec.data() for prec in precommands.values()]
-    precommands = ';'.join(precommands)
-    assertion = substr in precommands or substr in precommands.lower()
-    msg = ("The string '%s' was %sfound in the precommands" % (substr, "%s"))
-    if negate:
-      self.assertFalse(assertion, msg % "")
-    else:
-      self.assert_(assertion, msg % "not ")
-    
-
-class jo_configuration_tests(file_based_configuration_tests, pcommands_tests):
-  joboptions = 'fakejo'
-  special_cli_args = [joboptions]
-  ptree_extension = joboptions_ptree_extension
-    
-  def test_simple_config_ptree(self):
-    pt = self._gen_complete_config_ptree()
-    self._test_ptree_value(pt, self.hltconf + ".jobOptionsPath", 
-                           self.joboptions)
-    self._test_ptree_value(pt, self.hltconf + '.pythonSetupFile', 
-                           "TrigPSC/TrigPSCPythonSetup.py")
-    self._test_ptree_value(pt, self.hltconf + '.evtSel', 'NONE')
-    self._test_ptree_default_value(pt, self.hltcomm + ".jobOptionsSvcType", 
-                                   'joboptionsvc-type')
-
-    self._test_ptree_common(pt)
-          
-  def test_ptree_python_setup(self):
-    pysetup = 'PSCFakeBootstrap.py'
-    pt = self._gen_complete_config_ptree(['--python-setup', pysetup])
-    self._test_ptree_value(pt, self.hltconf + '.pythonSetupFile', pysetup)    
-  def test_ptree_loglevel(self):
-    loglev = "DEBUG,INFO,WARNING,ERROR"
-    pt = self._gen_complete_config_ptree(['--log-level', loglev])
-    def logsright(lpt):
-      ll = loglev.split(',')
-      for l in lpt.values_data():
-        if not l in ll:
-          return False
-        ll.remove(l)
-      return not ll #(whether list is empty)
-    self._test_ptree_pred(pt, self.hltconf + '.logLevels', logsright)
-  def test_ptree_trace(self):
-    pattern = '.*[aA]thena.*'
-    pt = self._gen_complete_config_ptree(['--trace', pattern])
-    self._test_ptree_value(pt, self.hltconf + '.tracePattern', pattern)
-    
-  def test_ptree_flags(self):
-    flags = {'--show-includes': '.showInclude'}
-    pt_n = self._gen_complete_config_ptree()
-    pt_y = self._gen_complete_config_ptree(flags.keys())
-    for k, v in flags.items():
-      path = self.hltconf + v
-      self._test_ptree_value(pt_n, path, 'False')
-      self._test_ptree_value(pt_y, path, 'True')
-  
-class dbpy_configuration_tests(file_based_configuration_tests, pcommands_tests):
-  special_cli_args = ['--use-database']
-  ptree_extension = dbpy_ptree_extension
-  dbcon = trigdb_con_ptree_path
-  l1con = lvl1_config_ptree_path
-  athlt = athenaHLT_ptree_path
-  
-  regular_config_params = file_based_configuration_tests.regular_config_params \
-                                                                         .copy()
-  regular_config_params.update({'db-smkey': '123',
-                                'db-hltpskey': '321',
-                                'db-extra': "{'lvl1key': 99, 'user':'_',"
-                                            " 'password':'_','schema':'_'}"})
-                           
-  
-  def test_simple_config_ptree(self):
-    pt = self._gen_complete_config_ptree()
-    def notempty(v):
-      "Check whether a certain value is nonempty" 
-      return bool(v)
-    self._test_ptree_val_pred(pt, self.hltconf + ".hltPrescaleKey", 
-                          notempty)
-    self._test_ptree_value(pt, self.hltcomm + ".jobOptionsSvcType", 
-                                   'TrigConf::HLTJobOptionsSvc')
-    self._test_ptree_common(pt)
-  
-  def test_ptree_loglevel(self):
-    logl = "DEBUG"
-    pt = self._gen_complete_config_ptree(['--log-level', logl])
-    self._test_ptree_value(pt, self.athlt + ".logLevels.logLevel", logl)
-  def test_ptree_dbhltpskey(self):
-    hltk = "[(1,2),(3,4)]"
-    pt = self._gen_complete_config_ptree(['--db-hltpskey', hltk])
-    self._test_ptree_value(pt, self.hltconf + ".hltPrescaleKey", hltk)
-  def test_ptree_dblvl1key(self):
-    l1k = '9876'
-    ext = {'lvl1key': l1k}
-    pt = self._gen_complete_config_ptree(['--db-extra', ext])
-    self._test_ptree_value(pt, self.l1con + ".Lvl1PrescaleKey", l1k)
-  
-  def test_ptree_dbtype(self):
-    type = "Oracle"
-    pt = self._gen_complete_config_ptree(['--db-type', type])
-    self._test_ptree_value(pt, self.dbcon + ".Type", type)
-  def test_ptree_dbserver(self):
-    server = "mydbserver"
-    pt = self._gen_complete_config_ptree(['--db-server', server])
-    self._test_ptree_value(pt, self.dbcon + ".Server", server)
-  def test_ptree_dbsmkey(self):
-    smk = "1234"
-    pt = self._gen_complete_config_ptree(['--db-smkey', smk])
-    self._test_ptree_value(pt, self.dbcon + ".SuperMasterKey", smk)
-  def test_ptree_dbschema(self):
-    schema = 'ashnlagfkjba'
-    ext = {'schema': schema}
-    pt = self._gen_complete_config_ptree(['--db-extra', ext])
-    self._test_ptree_value(pt, self.dbcon + ".Name", schema)
-  def test_ptree_dbuser(self):
-    user = 'posjdbngol'
-    ext = {'user': user}
-    pt = self._gen_complete_config_ptree(['--db-extra', ext])
-    self._test_ptree_value(pt, self.dbcon + ".User", user)
-  def test_ptree_dbpasswd(self):
-    pwd = 'gnasdiogd'
-    ext = {'password': pwd}
-    pt = self._gen_complete_config_ptree(['--db-extra', ext])
-    self._test_ptree_value(pt, self.dbcon + ".Password", pwd)
-  def test_ptree_other_extra(self):
-    special = {'user': 'asdfsdfin', 'password': 'fbgntuiw', 'schema': 'gsdfg', 
-               'lvl1key': '4411'}
-    nonspecial = {'foo': 'bar', 'maxretrials': '11', 'bar': 'foo', 
-                  'retrialperiod': '22', 'foobar': 'barfoo'}
-    ext = special.copy()
-    ext.update(nonspecial)
-    pt = self._gen_complete_config_ptree(['--db-extra', ext])
-    
-    pred1 = lambda acpt: False not in ["%s=%s" % (k, v) in acpt.values_data() 
-                                       for k, v in nonspecial.items()]
-    pred1.func_name = "allNonSpecialInAdditional"
-    pred1.__doc__ = ("Check that the following items are in the "
-                     "additionalConnectionParameters: " + 
-                     ', '.join(["%s" % k for k in nonspecial]))
-    
-    pred2 = lambda acpt: True not in [val.startswith("%s=") 
-                                      for val in acpt.values_data()] 
-    
-    pred2.func_name = "noSpecialInAdditional"
-    pred2.__doc__ = ("Check that none of the following items are in the "
-                     "additionalConnectionParameters: " + 
-                     ', '.join(["%s" % k for k in special]))
-    
-    predall = lambda acpt: pred1(acpt) and pred2(acpt)
-    predall.func_name = "checkAdditionalConnectionParameters"
-    predall.__doc__ = "\nand\n".join([pred1.__doc__, pred2.__doc__])
-    
-    self._test_ptree_pred(pt, 
-                          self.hltconf + ".additionalConnectionParameters", 
-                          predall)
-
-
-if __name__ == '__main__':
-  from HLTTestApps import test_main
-  test_main(['jo_configuration_tests',  
-             'dbpy_configuration_tests',
-             'save_output_configuration_tests'])
-  
diff --git a/HLT/HLTTestApps/python/HLTTestApps/infrastructure.py b/HLT/HLTTestApps/python/HLTTestApps/infrastructure.py
deleted file mode 100644
index 9e228f52861a0dde0247b32dceed07624e6f86c4..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/HLTTestApps/infrastructure.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-'''
-Created on Sep 30, 2013
-
-@author: ricab
-'''
-
-import os, re, shutil, logging
-from AthenaCommon.AppMgr import ServiceMgr as svcMgr
-
-class infrastructure(object):
-  """ 
-  Base infrastructure class. This class is intended as an abstract class and
-  exists mostly for documentation purposes, so that it is apparent which methods
-  are expected from an infrastructure like object. 
-  """
-  NAME = 'infrastructure'
-  def __init__(self, config):
-    logging.info("Initializing infrastructure")
-    self.config = config
-  def configure(self):
-    logging.info("Configuring infrastructure")
-    return True
-  def connect(self):
-    logging.info("Connecting infrastructure")
-    return True
-  def prepareForRun(self):
-    logging.info("Preparing infrastructure")
-    return True
-  def prepareWorker(self):
-    logging.info("Preparing worker infrastructure")
-    return True
-  def run(self):
-    logging.info("Running infrastructure")
-    return True
-  def stopRun(self):
-    logging.info("Stopping infrastructure")
-    return True
-  def finalizeWorker(self):
-    logging.info("Finalizing worker infrastructure")
-    return True
-  def disconnect(self):
-    logging.info("Disconnecting infrastructure")
-    return True
-  def unconfigure(self):
-    logging.info("Unconfiguring infrastructure")
-    return True
-  def __del__(self):
-    pass
-
-class offline_infrastructure(infrastructure):
-  NAME = 'offline infrastructure'
-  def __init__(self, config):
-    infrastructure.__init__(self, config)
-    
-def build_infrastructure(config):
-  if config['oh-monitoring']:
-    from online_infrastructure import online_infrastructure
-    return online_infrastructure(config)
-  else:
-    logging.debug("Creating offline infrastructure")
-    return offline_infrastructure(config)
-  
-
-################################################################################
-#################################### Tests #####################################
-################################################################################
-
-import unittest, signal
-from HLTTestApps import ptree
-from configuration import configuration, dummy_configuration
-from option import file_opt_spec
-
-class infrastructure_transitions_test(unittest.TestCase):
-  class _dummy_infrastructure(infrastructure):
-    def __init__(self):
-      infrastructure.__init__(self, dummy_configuration())
-  def setUp(self):
-    self.cli_args = ["-n", '10', "-f", filelist[0],
-                     'TrigExMTHelloWorld/MTHelloWorldOptions.py']
-  def _testInfrastructureTransitions(self, infrastruct):
-    self.assertTrue(infrastruct.configure())
-    self.assertTrue(infrastruct.connect())
-    self.assertTrue(infrastruct.prepareForRun())
-    self.assertTrue(infrastruct.prepareWorker())
-    self.assertTrue(infrastruct.run())
-    self.assertTrue(infrastruct.stopRun())
-    self.assertTrue(infrastruct.disconnect())
-    self.assertTrue(infrastruct.unconfigure())
-  def test_infrastructure(self):
-    config = configuration(file_opt_spec, self.cli_args)
-    infras = build_infrastructure(config)
-    self._testInfrastructureTransitions(infras)
-    infras.__del__()
-  def test_simple(self):
-    self._testInfrastructureTransitions(self._dummy_infrastructure())
-
-if __name__ == '__main__':
-  from HLTTestApps import test_main
-  test_main()
-  
diff --git a/HLT/HLTTestApps/python/HLTTestApps/online_infrastructure.py b/HLT/HLTTestApps/python/HLTTestApps/online_infrastructure.py
deleted file mode 100644
index b0f784b1df9002b9608081c1bd3e66a15fb4df41..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/HLTTestApps/online_infrastructure.py
+++ /dev/null
@@ -1,536 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-'''
-Created on Jun 10, 2014
-
-@author: ricab
-'''
-
-import os, shutil, time, logging, subprocess, signal
-from HLTTestApps import IInfoRegister, ipc_init
-from infrastructure import *
-
-EXTERNAL_INIT_TIME = 5 # seconds
-EXTERNAL_TERM_TIME = 5 # seconds
-SLEEP_RESOLUTION = 0.2 # seconds
-
-def initial_ipc_server(pgid):
-  """Starts and manages the IPC server for the current run."""
-  if os.system('ipc_ls >& /dev/null') != 0:
-    # we start a fresh IPC server
-    proc_name = "initial_ipc_server"
-    logging.info("Starting a new IPC server for the initial partition...")
-    ret = subprocess.Popen(["ipc_server", "-i-"],
-                           stderr=new_file("%s.err" % proc_name), 
-                           stdout=new_file("%s.out" % proc_name),
-                           preexec_fn=lambda:os.setpgid(0,pgid))
-     # give it time to initialize
-    wait_for_output(proc_name, EXTERNAL_INIT_TIME, SLEEP_RESOLUTION)
-    return ret
-  else:
-    logging.info("IPC server for 'initial' partition is already running!")
-    return 0
-
-def ipc_server(part_name, pgid):
-  """Starts and manages the IPC server for the current run."""  
-  if os.system('ipc_ls -p %s >& /dev/null' % part_name) != 0:
-    # we start a fresh IPC server
-    proc_name="ipc_server"
-    logging.info("Starting a new IPC server for partition '%s'..." % part_name)
-    ret = subprocess.Popen(["ipc_server", "-i-", "-p%s" % part_name],
-                           stderr=new_file("%s.err" % proc_name), 
-                           stdout=new_file("%s.out" % proc_name),
-                           preexec_fn=lambda:os.setpgid(0,pgid))
-    # give it time to initialize
-    wait_for_output(proc_name, EXTERNAL_INIT_TIME, SLEEP_RESOLUTION)
-    return ret
-  else:
-    logging.info("IPC server for '%s' is already running!" % part_name)
-    return 0
-
-def is_server(part_name, server_name, pgid):
-  """Starts and manages the IS server for the current run."""
-  if os.system('is_ls -p %s -n %s >& /dev/null'% (part_name, server_name)) != 0:
-    # we start a fresh IS server
-    proc_name="is_server"
-    logging.info("Starting a new Histogramming IS server '%s' for partition "
-                 "'%s'" % (server_name, part_name))
-    ret = subprocess.Popen(['is_server', '-p%s' % part_name, 
-                            '-n%s' % server_name],
-                           stderr=new_file('%s.err' % proc_name), 
-                           stdout=new_file('%s.out' % proc_name),
-                           preexec_fn=lambda:os.setpgid(0,pgid))
-    # give it time to initialize
-    wait_for_output(proc_name, EXTERNAL_INIT_TIME, SLEEP_RESOLUTION)
-    return ret
-  else:
-    logging.info("IS server '%s' for '%s' is already running!" % \
-        (server_name, part_name))
-    return 0
-
-def oh_display(pgid):
-  """Starts and manages the IPC server for the current run."""
-  return subprocess.Popen(["oh_display"], stderr=new_file("oh_display.err"), 
-                          stdout=new_file("oh_display.out"),
-                          preexec_fn=lambda:os.setpgid(0,pgid))
-
-def terminate_process(proc):
-  proc.send_signal(signal.SIGHUP)
-  proc.wait() 
-
-def oh_cp(partition, server, run_index):
-  """Uses 'oh_cp' to save histograms in a file."""
-  logging.info('Saving histograms from server %s' % (server))
-  s = os.system('oh_cp -p%s -s%s -H -1 -O -r %d' % (partition, server, run_index))
-  if s != 0: logging.warn('Output status of oh_cp was %d' % s)
-
-def new_file(name):
-  """
-  Create a new empty file with the provided name
-  """
-  if os.path.exists(name): os.unlink(name)
-  return file(name, 'wt')
-
-def rm_file(name):
-  """
-  Remove the file with the provided name
-  """
-  os.remove(name)
-
-def wait_for_output(proc_name, timeout=None, sleep_resolution=1):
-  """ 
-  Wait for a process to produce output, within a certain timeout.
-
-  Checks, every <sleep_resolution> seconds, for output in the files 
-  ./<proc_name>.out and ./<proc_name>.err, for a maximum of <timeout> seconds. 
-  If any of these files is detected not to be empty, the wait is interrupted.
-  """
-  count = 0
-  logging.debug('Waiting for %s to initialize' % proc_name)
-  while not timeout or count < timeout:
-    if os.path.getsize("./%s.err" % proc_name):
-      logging.warning('There was a problem with the initialization of %s. '
-                      'Trying to continue...' % proc_name)
-      return -1
-    if os.path.getsize("./%s.out" % proc_name):
-      logging.debug('%s initialized correctly' % proc_name)
-      return 0
-    time.sleep(sleep_resolution)
-    count += sleep_resolution
-  logging.warning('Could not confirm the initialization of %s after %.2fs. '
-                  'Trying to continue...' % (proc_name, count))
-  return 1
-
-def finalize_THistSvc():
-  # Hack to finalize and get rid of the THistSvc (actually TrigMonTHistSvc)
-  from AthenaCommon.AppMgr import ServiceMgr as svcMgr 
-  from AthenaCommon.AppMgr import theApp
-  if theApp.state(): # if we still didn't finalize
-    logging.debug("Finalizing THistSvc")
-    svcMgr.THistSvc.getHandle().finalize()
-    theApp.getHandle()._svcmgr.removeService('THistSvc')
-
-class FinalizeNeedEnum:
-  """
-  Enumeration to describe the finalization needs of an AutoFinIInfoRegister
-  """
-  NONEED, NEED_FIN, NEED_FINWORKER = range(1, 4)
-
-class SubpEnum:
-  """
-  Subprocess enumeration
-  """
-  INITIAL_IPC, IPC, IS, OH_DISPLAY = range(1,5)
-
-class AutoFinIInfoRegister(IInfoRegister):
-  """
-  Auto finalize if, when deleting, somehow the last prepareForRun call was still 
-  not followed by a finalize call or if prepareWorker was not followed by 
-  finalizeWorker  
-  """
-  def __init__(self, finalizeWorker_ptree, finalize_ptree, *args):
-    IInfoRegister.__init__(self, *args)
-    self.need = FinalizeNeedEnum.NONEED
-    self.finalizeWorker_ptree = finalizeWorker_ptree
-    self.finalize_ptree = finalize_ptree
-  def __del__(self):
-    # TrigMonTHistSvc needs the ITHistRegister to finalize, so we need to 
-    # finalize it now, because there will be no ITHistRegister later on
-    finalize_THistSvc()
-    logging.debug("Automatically deleting AutoFinIInfoRegister")
-    if self.need is FinalizeNeedEnum.NEED_FINWORKER:
-      logging.debug("Automatically calling IInfoRegister::finalizeWorker")
-      self.finalizeWorker(self.finalizeWorker_ptree)
-    if self.need is FinalizeNeedEnum.NEED_FIN :
-      logging.debug("Automatically calling IInfoRegister::finalize")
-      self.finalize(self.finalize_ptree)
-  def _logged_transition(self, t, tname, args):
-    logging.info("Calling IInfoRegister.%s" % tname)
-    ret = t(self, *args)
-    logging.info("IInfoRegister.%s: %s" % (tname, "success" if ret else "failure"))
-    return ret
-  def configure(self, *args):
-    return self._logged_transition(IInfoRegister.configure, "configure", args)
-  def prepareForRun(self, *args):
-    ret = self._logged_transition(IInfoRegister.prepareForRun, "prepareForRun", args)
-    if ret:
-      self.need = FinalizeNeedEnum.NEED_FIN
-    return ret
-  def prepareWorker(self, *args):
-    ret = self._logged_transition(IInfoRegister.prepareWorker, "prepareWorker", args)
-    if ret:
-      self.need = FinalizeNeedEnum.NEED_FINWORKER
-    return ret
-  def finalizeWorker(self, *args):
-    ret = self._logged_transition(IInfoRegister.finalizeWorker, "finalizeWorker", args)
-    if ret:
-      self.need = FinalizeNeedEnum.NEED_FIN
-    return ret
-  def finalize(self, *args):
-    ret = self._logged_transition(IInfoRegister.finalize, "finalize", args)
-    if ret:
-      self.need = FinalizeNeedEnum.NONEED
-    return ret
-
-class online_infrastructure(infrastructure):
-  # constants
-  NAME = "online infrastructure"
-  TDAQ_PARTITION = 'part_athenaHLT_mon'
-  
-  # Signals for which we want a custom handler
-  sigs = [signal.SIGFPE, signal.SIGHUP, signal.SIGQUIT, signal.SIGSEGV, 
-          signal.SIGTERM]
-  ipc_ref_file = None     # so that the attributes are found even when obj init 
-  ipc_ref_created = False # has not been completed  
-  
-  def __init__(self, config):
-    infrastructure.__init__(self, config)
-    self.pgid = 0
-    self.run_index = -1
-    self._register_handlers()
-    os.environ['TDAQ_PARTITION'] = self.TDAQ_PARTITION
-    self._setup_ipc()
-    self._start_subprocesses()
-    self.mon = AutoFinIInfoRegister(self.config.get_mon_finalizeWorker_ptree(),
-                                    self.config.get_mon_finalize_ptree(),
-                                    config['info-service'])
-  def __del__(self):
-    # we delete this now, while required external processes are still around
-    del self.mon
-    self.mon = None # so __del__ can be called again
-    # No more OHRootProvider expecting external procs. We can get rid of them
-    self._terminate_processes()
-    self._cleanup_ipc()
-  def _setup_ipc(self):
-    if not self.config['user-ipc']:
-      self.ipc_ref_file = os.path.join(os.getcwd(), 'ipc_init.ref')
-      self.ipc_ref_created= False if os.path.exists(self.ipc_ref_file) else True
-      os.environ['TDAQ_IPC_INIT_REF'] = 'file:%s' % self.ipc_ref_file
-    ipc_init() # this happened automatically in the past when running
-               # athenaMT/PT with OH, because the AppControl would be used and
-               # take care of initialization. This is no longer the case...
-  def _cleanup_ipc(self):
-    if (self.ipc_ref_file and self.ipc_ref_created and 
-        os.path.exists(self.ipc_ref_file)):
-      logging.info('Removing IPC initial reference (%s)...' % self.ipc_ref_file)
-      rm_file(self.ipc_ref_file)
-  def _start_subprocess(self, target):
-    if target == SubpEnum.INITIAL_IPC:
-      subp = self.initial_ipc_server = initial_ipc_server(self.pgid)
-    elif target == SubpEnum.IPC:
-      subp = self.ipc_server = ipc_server(self.TDAQ_PARTITION, self.pgid)
-    elif target == SubpEnum.IS:
-      subp = self.is_server = is_server(self.TDAQ_PARTITION, 
-                                        self.config['ohserver'],
-                                        self.pgid)
-    else: # target == SubpEnum.OH_DISPLAY
-      subp = self.oh_display = oh_display(self.pgid)
-    if subp and not self.pgid: # if it was initialized, update the group id
-      self.pgid = subp.pid
-  def _start_subprocesses(self):
-    logging.info('Starting online infrastructure subprocesses')
-    # Here we put child processes in a new group (with the pgid of the initial 
-    # ipc). This way, the new processes don't receive signals sent to the group 
-    # of the parent process (athenaHLT). For instance, this prevents Ctrl+C from 
-    # being sent to child processes. That way, athenaHLT is the only responsible
-    # for handling the signal, finishing the processes in due time if necessary.
-    # Without this approach, servers would quit immediately on Ctrl+C and 
-    # athenaHLT wouldn't succeed in saving the histograms. In the case of 
-    # SIGSEGV, athenaHLT cannot guarantee full cleanup (that is part of the 
-    # nature of a crash). Child processes may linger in that case.
-    self._start_subprocess(SubpEnum.INITIAL_IPC)
-    self._start_subprocess(SubpEnum.IPC)
-    self._start_subprocess(SubpEnum.IS)
-    if self.config['oh-display']:
-      self._start_subprocess(SubpEnum.OH_DISPLAY)
-  def _terminate_processes(self):
-    for pnam in ['oh_display', 'is_server', 'ipc_server', 'initial_ipc_server']:
-      proc = getattr(self, pnam, None)
-      if proc:
-        exitcode = proc.poll()
-        if exitcode is not None:
-          # the process already terminated
-          logging.info('The %s already exited, with code %d'
-                          % (pnam, exitcode))
-        else:
-          logging.info('Terminating the %s (pid=%d)...' % (pnam, proc.pid))
-          terminate_process(proc)          
-  def _register_handlers(self):
-    self.prehandlers = {}
-    for s in self.sigs:
-      self.prehandlers[s] = signal.getsignal(s)
-      signal.signal(s, self._handle_quit)
-  def _handle_quit(self, signum, frame):
-    logging.error("Caught signal %d. Trying to clean the infrastructure and "
-                  "exit cleanly" % signum)
-    self.__del__() # this doesn't delete the object, only executes __del__
-    # execute the previous handler as well:
-    prehandler = signal.SIG_DFL
-    if signum in self.prehandlers:
-      prehandler = self.prehandlers[signum]
-      del self.prehandlers[signum]
-    signal.signal(signum, prehandler)
-    os.kill(os.getpid(), signum)
-  def configure(self):
-    infrastructure.configure(self)
-    return self.mon.configure(self.config.get_mon_config_ptree())
-  def prepareForRun(self):
-    infrastructure.prepareForRun(self)
-    return self.mon.prepareForRun(self.config.get_mon_prepare_ptree())
-  def prepareWorker(self):
-    infrastructure.prepareWorker(self)
-    return self.mon.prepareWorker(self.config.get_mon_prepareWorker_ptree())
-  def run(self):
-    self.run_index += 1
-    return infrastructure.run(self)
-  def stopRun(self):
-    infrastructure.stopRun(self)
-    ret = self.mon.finalizeWorker(self.config.get_mon_finalizeWorker_ptree())
-    ret &= self.mon.finalize(self.config.get_mon_finalize_ptree())
-    oh_cp(self.TDAQ_PARTITION, self.config['ohserver'], 
-          self.run_index if self.run_index != -1 else 0)
-    return ret
-  def unconfigure(self):
-    return infrastructure.unconfigure(self)
-
-
-################################################################################
-#################################### Tests #####################################
-################################################################################
-
-import unittest
-
-def rm_dir(name):
-  """
-  Remove the directory with the provided name, along with all its contents
-  """
-  shutil.rmtree(name)
-
-class test_file_and_dir_creation_and_deletion(unittest.TestCase):
-  def setUp(self):
-    self.filename = "%s.test" % type(self)
-  def test_create(self):
-    new_file(self.filename)
-    self.assert_(os.path.exists(self.filename), 
-                 "File %s was not correctly created" % self.filename)
-    self.assertEquals(os.path.getsize(self.filename), 0, 
-                      "File %s was not correctly created" % self.filename)
-    rm_file(self.filename)
-  def test_rm_file(self):
-    new_file(self.filename)
-    with open(self.filename, 'w') as f:
-      print >> f, "stuff"
-    rm_file(self.filename)
-    self.assertFalse(os.path.exists(self.filename), 
-                     "File %s was not correctly removed" % self.filename)
-  def test_rm_dir(self):
-    os.mkdir(self.filename)
-    new_file("%s/%s" % (self.filename, self.filename))
-    rm_dir(self.filename)
-    self.assertFalse(os.path.exists(self.filename), 
-                     "Directory %s was not correctly removed" % self.filename)
-
-class test_output_wait(unittest.TestCase):
-  """
-  Tests wait_for_output
-  """
-  dirname = "test_output_tmp"
-  proc_name = "fake_proc"
-  def setUp(self):
-    os.mkdir(self.dirname)
-    os.chdir(self.dirname)
-    new_file('%s.out' % self.proc_name).close()
-    new_file('%s.err' % self.proc_name).close()
-  def test_timeout(self):
-    t0 = time.time()
-    ret = wait_for_output(self.proc_name, 1, 0.3)
-    delta = time.time() - t0
-    self.assert_(delta < 2)
-    self.assertEquals(ret, 1)
-  def test_out(self):
-    self.assertEquals(self.base_test_output('out'), 0)
-  def test_err(self):
-    self.assertEquals(self.base_test_output('err'), -1)
-  def base_test_output(self, extension):
-    t0 = time.time()
-    f = open('%s.%s' % (self.proc_name, extension), 'w')
-    f.write('output')
-    f.close()
-    ret = wait_for_output(self.proc_name, 10, 0.3)
-    delta = time.time() - t0
-    self.assert_(delta < 0.1)
-    return ret
-  def tearDown(self):
-    os.chdir('..')
-    rm_dir(self.dirname)
-    
-class online_infrastructure_transitions_test(infrastructure_transitions_test):
-  def setUp(self):
-    infrastructure_transitions_test.setUp(self)
-    self.cli_args = ["-M"] + self.cli_args
-    
-class test_online_subprocesses(unittest.TestCase):
-  """
-  Test that online subprocesses are correctly started and killed
-  """
-  def setUp(self):
-    self.sleep = 0.5
-    self.part_name = 'part_athenaHLT_test'
-    self.server_name = 'dummy_is_server'
-    self.ipc_ref = os.path.join(os.getcwd(), 'ipc_init.ref')
-    self.old_ipc = os.environ['TDAQ_IPC_INIT_REF']
-    os.environ['TDAQ_IPC_INIT_REF'] = 'file:' + self.ipc_ref
-    self.sps = []
-  def tearDown(self):
-    os.environ['TDAQ_IPC_INIT_REF'] = self.old_ipc
-    for sp in self.sps[::-1]: # kill in FILO order
-      logging.warn('Leftover process with PID %d. Killing it.' % sp.pid)
-      sp.kill()
-  def testall(self):
-    pgid = 0
-    initipcs = self.create_sp(initial_ipc_server, pgid)
-    pgid = initipcs.pid
-    ipcs = self.create_sp(ipc_server, self.part_name, pgid)
-    iss = self.create_sp(is_server, self.part_name, self.server_name, pgid)
-    self.terminate_sp(iss, 'IS server')
-    self.terminate_sp(ipcs, 'IPC server')
-    self.terminate_sp(initipcs, 'initial IPC server')
-  def create_sp(self, sp_creator, *args):
-    sp = sp_creator(*args)
-    time.sleep(self.sleep)
-    self.assert_(sp, "Subprocess not correctly created by '%s'" 
-                          % sp_creator.__name__)
-    self.sps.append(sp)
-    logging.info("Created process with PID %d" % sp.pid)
-    return sp
-  def terminate_sp(self, sp, spname):
-    sp.terminate()
-    time.sleep(self.sleep)
-    ecode = sp.poll()
-    # ecode is None if the process didn't exit and 0 if it exited correctly
-    if not ecode is None:
-      self.sps.remove(sp)
-    self.assertFalse(ecode, "Subprocess '%s' terminated with non-zero error "
-                            "code: %s" % (spname, ecode))
-    self.assertNotEqual(ecode, None, "Subprocess '%s' didn't exit on SIGTERM"
-                                     % spname)
-    
-class test_online_infrastructure_as_subprocess(unittest.TestCase):
-  """
-  Run the online infrastructure in a subprocess (which in turn creates 
-  subprocesses), and kill it in different places, to confirm that signal 
-  handling and cleanup work properly. The infrastructure class that is used
-  descends from online_infrastructure but replaces certain methods, to provide
-  specific points of signal handling. Also, it doesn't set up any monitoring
-  service and it provides no transitions
-  """
-  def test0(self):
-    self._test_base(0)
-  def test1(self):
-    self._test_base(1)
-  def test2(self):
-    self._test_base(2)
-  def test3(self):
-    self._test_base(3)
-  def test4(self):
-    self._test_base(4)
-  def _test_base(self, n):
-    import multiprocessing, time
-    print '### Testing with n =', n
-    p = multiprocessing.Process(target=self.pausing_online_infrastructure)
-    p.start()
-    for i in range(n):
-      time.sleep(0.5)
-      os.kill(p.pid, signal.SIGUSR1)
-    time.sleep(0.5)
-    os.kill(p.pid, signal.SIGTERM)
-    p.join()
-    self.assertEquals(p.exitcode, -15, "Subprocess exited with an unexpedted " 
-                                       "code: %d" % p.exitcode)
-    del p
-  def test_pausing_online_infrastructure_init_del(self):
-    class dont_pause_context(object):
-      def __enter__(self):
-        self.pause = signal.pause
-        signal.pause = lambda: time.sleep(0.5)
-      def __exit__(self, *unused_args):
-        signal.pause = self.pause
-    with dont_pause_context():
-      # For some reason I have to call __del__ explicitly (probably due to 
-      # issues with del - see 
-      # https://docs.python.org/2/reference/datamodel.html#object.__del__
-      # Otherwise deletion would be delayed until after the test and any problem
-      # with the d'tor would be unnoticed. Notice however that __del__ is called
-      # again when the object is actually deleted. This accounts for warning 
-      # messages saying that sub processes exited already
-      self.pausing_online_infrastructure().__del__()
-    
-  class pausing_online_infrastructure(online_infrastructure):
-    # no transitions
-    configure=connect=prepareForRun=run=stopRun=disconnect=unconfigure = None
-    
-    def __init__(self):
-      self.pause_count = 0
-      self.part_name = 'part_athenaHLT_test'
-      self.server_name = 'dummy_is_server'
-      self.ipc_ref_file = os.path.join(os.getcwd(), 'ipc_init.ref')
-      os.environ['TDAQ_IPC_INIT_REF'] = 'file:' + self.ipc_ref_file
-      self.mon = None
-      self._test_servers()
-    def _test_servers(self):
-      # handlers
-      self._register_handlers()
-      signal.signal(signal.SIGUSR1, self._test_handler)
-      self._pause() # pausing 0
-      # initial ipc
-      pgid = 0
-      self.initial_ipc_server = initial_ipc_server(pgid)
-      pgid = self.initial_ipc_server.pid
-      self._pause() # pausing 1
-      # ipc
-      self.ipc_server = ipc_server(self.part_name, pgid)
-      self._pause() # pausing 2
-      # is
-      self.is_server = is_server(self.part_name, self.server_name, pgid)
-      self._pause() # pausing 3
-      # oh display
-      self.oh_display = oh_display(pgid)
-      self._pause() # pausing 4
-    def _pause(self):
-      print 'pausing - ' + str(self.pause_count)
-      signal.pause()
-      self.pause_count += 1
-    def _test_handler(self, signum, frame):
-    #def _test_handler(signum, frame):
-      print 'test handler received signal', signum
-
-if __name__ == '__main__':
-  from HLTTestApps import test_main
-  import logging
-  logging.getLogger().setLevel(1)
-  # we also need a test setup for the infrastructure module, as some tests
-  # come from there. We then exclude the tests that are tested in that module
-  test_main(more_modules_requiring_setup=['infrastructure'],
-            exclude_names=['infrastructure_transitions_test'])
-            #include_names=['online_infrastructure_transitions_test'])
-  
diff --git a/HLT/HLTTestApps/python/HLTTestApps/option.py b/HLT/HLTTestApps/python/HLTTestApps/option.py
deleted file mode 100644
index 7b3b586cb01d5325f8ffa4e16c51940fa625b2fd..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/HLTTestApps/option.py
+++ /dev/null
@@ -1,560 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-# vim: set fileencoding=utf-8 :
-# Created by Andre Anjos <andre.dos.anjos@cern.ch>
-# Ter 27 Nov 2007 10:41:16 CET 
-
-import logging, types
-from ast import literal_eval
-from EventApps.myopt import Parser
-from optspec import * 
-from HLTTestApps import random_sub_dict
-
-def file_optcheck(option_spec, kwargs, extra):
-  """Checks if the options passed make sense all together."""
-  
-  nfiles = len(kwargs['file'])
-  if nfiles == 0:
-    raise BadOptionSet, 'Cannot process without any input files.'
-  elif nfiles > 1 and not kwargs['oh-monitoring']:
-    raise BadOptionSet, ('Cannot have multiple input files without '
-                         '--oh-monitoring (see --help for explanation)')
-  
-  # do checks that are common to both emon and file based runs
-  common_optcheck(option_spec, kwargs, extra)
-    
-
-def emon_optcheck(option_spec, kwargs, extra):
-  """Checks if the options passed make sense all together."""
-  
-  raise CurrentlyNotSupported, "Emon input is currently not supported"
-  
-def common_optcheck(option_spec, kwargs, extra):
-  """
-    Checks if the options passed make sense all together, in both emon or file
-  based runs.
-  """
-  unsupported_optcheck(option_spec, kwargs)
-  db_optcheck(option_spec, kwargs, extra)
-  oh_optcheck(option_spec, kwargs)
-  skip_events_optcheck(option_spec, kwargs)
-  save_output_optcheck(option_spec, kwargs)
-  diverse_optcheck(option_spec, kwargs)
-  
-def diverse_optcheck(option_spec, kwargs):
-  if kwargs['timeout']['timeout'] < 0:
-    raise BadOptionSet, 'You cannot set the timeout value to a negative integer'
-
-  if (kwargs['timeout']['warn_fraction'] < 0 or 
-      kwargs['timeout']['warn_fraction'] > 1):
-    raise BadOptionSet, ('The warn_fraction should be a number in the interval '
-                         '[0,1]')
-
-  if kwargs['interactive'] and kwargs['debug']:
-    raise BadOptionSet, 'You cannot run GDB over an interactive session'
-
-  if kwargs['leak-check']:
-    allowed = option_spec['leak-check']['allowed']
-    if kwargs['leak-check'].lower() not in allowed:
-      raise BadOptionSet, 'Allowed values for leak-check are %s' % str(allowed)
-
-  if kwargs['delete-check']:
-    allowed = option_spec['delete-check']['allowed']
-    if not kwargs['delete-check'].lower() in allowed:
-      raise BadOptionSet, 'Allowed values for delete are %s' % str(allowed)
-  
-  if kwargs['debug']:
-    allowed = option_spec['debug']['allowed']
-    if not kwargs['debug'] in allowed:
-      raise BadOptionSet, 'Allowed values for debug are %s' % str(allowed)
-
-  if kwargs['use-compression']:
-    # check compression level meaningful
-    if kwargs['use-compression'] not in range(1,6):
-      raise BadOptionSet, ('Invalid range for output compression level. Needs '
-                           'to be in range [1-5]')
-    # compression requires saving output
-    elif not (kwargs['save-output'] or kwargs['save-output-conventional']):
-      raise BadOptionSet, ('Cannot --use-compression without '
-                           '--save-output(-conventional)')
-      
-def save_output_optcheck(option_spec, kwargs):
-  # check not both saves
-  if kwargs['save-output'] and kwargs['save-output-conventional']:
-    raise BadOptionSet, ('Cannot simultaneously --save-output and '
-                         '--save-output-conventional')
-  
-  # convenience
-  convd = kwargs['save-output-conventional']
-  allowedd = option_spec['save-output-conventional']['allowed']
-  convkset = set(convd.keys())
-  allowedkset = set(allowedd.keys())
-  
-  # check save-output-conventional keys are a subset of allowed keys
-  if not convkset.issubset(allowedkset):
-    raise BadOptionSet, ('Unsupported keys in --save-output-conventional: %s'
-                         % list(convkset - allowedkset))
-  
-  # check save-output-conventional values have proper type
-  for k in convkset:
-    required_type = type(allowedd[k])
-    if not isinstance(convd[k], required_type):
-      raise BadOptionSet, ('Value for key "%s" in --save-output-conventional '
-                           'must be an instance of %s' % (k, required_type))
-        
-def skip_events_optcheck(option_spec, kwargs):
-  skip = kwargs['skip-events']
-  if skip:
-    if(skip < 0):
-      raise BadOptionSet, 'You cannot skip a negative number of events'
-    if kwargs['interactive']:
-      raise BadOptionSet, 'Skipping events in interactive mode is not supported'
-    if kwargs['rewind']:
-      raise BadOptionSet, 'Skipping events in rewind mode is not supported'
-        
-def oh_optcheck(option_spec, kwargs):
-  if not kwargs['oh-monitoring']:
-    ohopts = [o for o in option_spec if option_spec[o]['group'] == 
-                                        'Online Histogramming']
-    ohopts.append('interactive')
-    for o in ohopts:
-      if o in kwargs and kwargs[o] and kwargs[o] != option_spec[o]['default']:
-        justify = (' (see help for explanation).' 
-                   if o == 'interactive' else '.')
-        raise BadOptionSet, ("Option --%s cannot be specified without " + 
-                             "--oh-monitoring%s") % (o, justify)
-
-def db_optcheck(option_spec, kwargs, extra):
-  if kwargs['use-database']:
-    if extra:
-      logging.error("use-database specified simultaneously to job options. "
-                    "The latter will be ignored.")
-      raise BadOptionSet, "Cannot configure from both DB and JobOptions"
-    check_db_type(option_spec, kwargs)
-    check_smkey(kwargs)
-    check_hltpskey(kwargs)
-  elif not extra:
-    raise BadOptionSet, 'No job options specified'
-  else:
-    check_disallowed_db_options(option_spec, kwargs)
-
-def unsupported_optcheck(option_spec, kwargs):
-  """
-    Checks for options that are currently not supported. This shall be removed
-  when all options are supported again.
-  """
-  for k, v in kwargs.iteritems():
-    if k not in auto_options and v != option_spec.get_default(k):
-      if not k in option_spec.supported and not (k, v) in option_spec.supported:
-        raise CurrentlyNotSupported, ("Option '%s=%s' is currently not "
-                                      "supported" % (k, v))
-
-def check_disallowed_db_options(option_spec, kwargs):
-  dbopts = [o for o in option_spec if option_spec[o]['group'] == 'Database']
-  for o in dbopts:
-    if o in kwargs and kwargs[o]:
-      raise BadOptionSet, ("Option --%s cannot be specified without " + 
-                           "--use-database") % o
-def check_db_type(option_spec, kwargs):
-  if(kwargs['db-type'] != None and 
-     kwargs['db-type'] not in option_spec['db-type']['allowed']):
-    raise BadOptionSet, ('Unknown db-type "%s". Allowed values are %s' % 
-                         (kwargs['db-type'], 
-                          option_spec['db-type']['allowed']))
-def check_smkey(kwargs):
-  if kwargs['db-smkey'] != None and not check_smkey_aux(kwargs['db-smkey']):
-    raise BadOptionSet, ("db-smkey not correct. Please check the " + 
-                         "corresponding help message for allowed values")
-def check_hltpskey(kwargs):
-  if (kwargs['db-hltpskey'] != None and 
-      not check_hltpskey_aux(kwargs['db-hltpskey'])):
-    raise BadOptionSet, ("db-hltpskey not correct. Please check the " + 
-                         "corresponding help message for allowed values")
-def check_smkey_aux(s):
-  try:
-    i = literal_eval(s)
-    return isinstance(i, int) and i > 0
-  except (ValueError, SyntaxError):
-    return False
-def check_hltpskey_aux(s):
-  if not check_smkey_aux(s):
-    try:
-      l = literal_eval(s)
-      if not isinstance(l, list) or not len(l) > 0: 
-        return False # ensure non-empty list
-      for count, elem in enumerate(l):
-        if not isinstance(elem, tuple) or not len(elem) == 2:
-          return False # ensure pair
-        for i in elem:
-          if not isinstance(i, int) or not i > 0:
-            return False # ensure positive integers
-        if count > 0 and l[count - 1][0] >= elem[0]:
-          return False # ensure strict growing order of the first element
-    except (ValueError, SyntaxError):
-      return False
-  return True
-
-def get_default(option_spec, option_key):
-  """
-    Get the default value of an option. Raise KeyError if the option is not 
-  found
-  """
-  o = option_spec[option_key]
-  return o['default'] if o['arg'] else False
-
-def warn_verbosity(verbosity):
-    if verbosity != common['verbosity']['default']:
-        logging.warning('Custom verbosity specified. '
-                        'Make sure not to overwrite it in the job '
-                        'options.')
-
-def gen_parser(option_spec, extra_args):
-  """
-    Generate an option parser for the options specified by option_spec
-  """ 
-  parser = Parser(extra_args=extra_args)
-  for k, v in option_spec.iteritems():
-    parser.add_option(k, v['short'], v['description'], v['arg'], v['default'],
-                      v['group'])
-  return parser
-
-def parse_commands(c):
-  """Parse pre and post commands for trailing or multiple ';'"""
-  import re
-  c = c.strip()
-  c = re.sub(';+',';', c)
-  c = re.sub('^;','', c)
-  return re.sub(';$','', c)
-
-class option_specification(dict):
-  def get_default(self, arg):
-    if arg in self.constants:
-      return self.constants[arg]
-    return get_default(self, arg)
-  def optcheck(self):
-    raise NotImplementedError, ("no optcheck method was provided for this "
-                                "option specification")
-
-# file options specification
-file_opt_spec = common.copy()
-file_opt_spec.update(fileinput)
-file_opt_spec = option_specification(file_opt_spec)
-file_opt_spec.optcheck = types.MethodType(file_optcheck, file_opt_spec)
-file_opt_spec.supported = auto_options + supported
-file_opt_spec.constants = common_constants
-
-# emon options specification
-emon_opt_spec = common.copy()
-emon_opt_spec.update(emoninput)
-emon_opt_spec = option_specification(emon_opt_spec)
-emon_opt_spec.optcheck = types.MethodType(emon_optcheck, emon_opt_spec)
-emon_opt_spec.supported = auto_options + supported
-emon_opt_spec.constants = common_constants
-
-################################################################################
-#                                   Tests                                      #
-################################################################################
-
-import unittest, random, sys
-
-def get_arg_list_from_option_dict(d):
-  #  Get a list with the command line options that would generate the dictionary 
-  # d. First get a list of pairs for each option plus (isolated) extra arguments. 
-  # The string representation is used for each option value and extra argument. 
-  # Then flatten the list out. For instance, if we had 
-  # 'd={'a': 1, 'b': 2, 'extra': 3}' this method will return the list
-  # '['--a', '1', '--b', '2', '3']
-  l = [(str(v),) if k == 'extra' else ['--%s' % k] + ([] if v is True 
-                                                         else [str(v)]) 
-       for k, v in d.iteritems()]
-  return [x for sublist in l for x in sublist]
-
-class option_tests_base(unittest.TestCase):
-  def setUp(self):
-    self.diff = set(auto_options)
-    self.option_spec = file_opt_spec
-    self.__setup_unsupported()
-    self.parser = gen_parser(file_opt_spec, True)
-  def _check_arg_set(self, kwargs):
-    diff = set(kwargs.keys()) - set(self.option_spec.keys())
-    self.assert_(diff.issubset(self.diff), "%s is not a subset of %s" 
-                                           % (diff, self.diff))
-  def _check_arg_values(self, kwargs, overwritten={}):
-    for k, v in kwargs.iteritems():
-      if not k in self.diff:
-        expect = (overwritten[k] if k in overwritten 
-                                 else self.option_spec.get_default(k))
-        self.assert_(v == expect or str(v) == str(expect),
-                     "Option '%s' has a wrong value: expected '%s' but "
-                     "got '%s'" % (k, expect, v))
-  def __setup_unsupported(self):
-    self.option_spec['unsupported'] = {'short': '', 'arg': True, 
-                                       'default': None, 'group': 'Test', 
-                                       'description': 'unsupported option'}
-    self.option_spec['unsupported-flag'] = {'short': '', 'arg': False, 
-                                            'default': None, 'group': 'Test', 
-                                            'description': 'unsupported flag'}
-
-class option_basic_tests(option_tests_base):
-  def test_default(self):
-    kwargs, extra = self.parser.parse([])
-    self._check_arg_set(kwargs)
-    self._check_arg_values(kwargs)
-  def test_explicit_maintain(self):
-    kwargs, extra = self.parser.parse(["-z", "0"])
-    self._check_arg_set(kwargs)
-    self._check_arg_values(kwargs)
-  def test_explicit(self):
-    kwargs, extra = self.parser.parse(["-z", "1"])
-    self._check_arg_set(kwargs)
-    self._check_arg_values(kwargs, {"use-compression": 1})
-  def test_explicit_flag(self):
-    kwargs, extra = self.parser.parse(["-H"])
-    self._check_arg_set(kwargs)
-    self._check_arg_values(kwargs, {"perfmon": True})
-  def test_no_extra(self):
-    parser = gen_parser(self.option_spec, False)
-    self.assertRaises(SyntaxError, parser.parse, ["extra_argument"])
-  def test_extra(self):
-    argv = ["extra_arg1", "extra_arg2"]
-    kwargs, extra = self.parser.parse(argv)
-    self._check_arg_set(kwargs)
-    self._check_arg_values(kwargs)
-    self.assertEquals(set(extra), set(argv))
-    
-class option_consistency_tests(option_tests_base):
-  def setUp(self):
-    super(option_consistency_tests, self).setUp()
-    self.required = {'file': ['fake_file'], 
-                     'extra': "fake_joboptions"}
-  def test_emon_not_allowed(self):
-    self.assertRaises(CurrentlyNotSupported, emon_optcheck, None, None, None)
-  def test_unsupported_flag(self):
-    kwargs, extra = self.parser.parse(self._get_required_args() + 
-                                      ["--unsupported-flag"])
-    self.assertRaises(CurrentlyNotSupported, self.option_spec.optcheck, 
-                      kwargs, extra)
-  def test_unsupported(self):
-    kwargs, extra = self.parser.parse(self._get_required_args() + 
-                                      ["--unsupported", "123"])
-    self.assertRaises(CurrentlyNotSupported, self.option_spec.optcheck, 
-                      kwargs, extra)
-  def test_explicitly_supported(self):
-    self._aux_test_explicitly_supported(["run-number"], 
-                                        ["-R", "1234"] + 
-                                        self._get_required_args())
-  def test_explicitly_supported_flag(self):
-    self._aux_test_explicitly_supported(["leak-check-execute"],
-                                        ["-Q"] + self._get_required_args())
-  def test_explicitly_supported_extra(self):
-    self._aux_test_explicitly_supported(["extra_argument"])
-  def _check_opt_allowed(self, optn, optv=None):
-    # leave the value argument empty for flags
-    kwargs, extra = self.parser.parse(self._get_required_args() + 
-                                      ["--%s" % optn] + ([] if optv is None
-                                                            else [str(optv)]))
-    self._check_arg_set(kwargs)
-    d = dict(self.required.items() + [(optn,True if optv is None else optv)])
-    self._check_arg_values(kwargs, d)
-    self.option_spec.optcheck(kwargs, extra)
-  def _check_opt_disallowed(self, optn, optv=None):
-    # we don't check the value when the option is not allowed to begin with
-    with self.assertRaises(BadOptionSet):
-      self._check_opt_allowed(optn, optv)
-      print >> sys.stderr, ("We did not raise exception with optn='%s' and "
-                            "optv='%s'" % (optn, optv))  
-  def _aux_test_explicitly_supported(self, sup_args=[], cmd_args=None):
-    # sup_args are extra arguments, but they are also added to the list of 
-    # supported arguments, so that currently unsupported options can still be
-    # tested (e.g. test that oh-display is supported with oh-monitoring before
-    # oh-display is actually supported) ) 
-    kwargs, extra = self.parser.parse(cmd_args if cmd_args 
-                                      else sup_args + self._get_required_args())
-    self.option_spec.supported += sup_args
-    self.option_spec.optcheck(kwargs, extra)
-  def _get_required_args(self):
-    return get_arg_list_from_option_dict(self.required)
-
-class option_diverse_specific_tests(option_consistency_tests):
-  def test_leak_check_allowed(self):
-    opt = 'leak-check'
-    for value in self.option_spec[opt]['allowed']:
-      self._check_opt_allowed(opt, value)
-  def test_leak_check_disallowed(self):
-    disallowed = ('afga', 'star', 0, 123, -.321, self)
-    for value in disallowed:
-      self._check_opt_disallowed('leak-check', value)
-  def test_delete_check_allowed(self):
-    opt = 'delete-check'
-    for value in self.option_spec[opt]['allowed']:
-      self._check_opt_allowed(opt, value)
-  def test_delete_check_disallowed(self):
-    disallowed = ('afga', 'star', 0, 123, -.321, self)
-    for value in disallowed:
-      self._check_opt_disallowed('delete-check', value)
-  def test_debug_allowed(self):
-    opt = 'debug'
-    for value in self.option_spec[opt]['allowed']:
-      self._check_opt_allowed(opt, value)
-  def test_debug_disallowed(self):
-    disallowed = ('afga', 'star', 0, 123, -.321, self)
-    for value in disallowed:
-      self._check_opt_disallowed('debug', value)   
-  def test_oh_display_requires_oh(self):
-    self._check_opt_disallowed('oh-display')
-  def test_user_ipc_requires_oh(self):
-    self._check_opt_disallowed('user-ipc')
-  def test_info_service_requires_oh(self):
-    self._check_opt_disallowed('info-service', 'bla')
-  def test_histogram_publishing_interval_requires_oh(self):
-    self._check_opt_disallowed('histogram-publishing-interval', 123)
-  def test_histogram_include_requires_oh(self):
-    self._check_opt_disallowed('histogram-include', 'abc*')
-  def test_histogram_exclude_requires_oh(self):
-    self._check_opt_disallowed('histogram-exclude', 'abc*')    
-  def test_interactive_requires_oh(self):
-    self._check_opt_disallowed('interactive')
-  def test_multiple_files_require_oh(self):
-    multiple_files = '[\'fake_file\', \'another_fake_file\']'
-    del self.required['file']
-    self._check_opt_disallowed('file', multiple_files)
-  def test_oh_display_ok_with_oh(self):
-    self._aux_test_explicitly_supported(sup_args=["--oh-display", 
-                                                  "--oh-monitoring"])
-  def test_user_ipc_ok_with_oh(self):
-    self._aux_test_explicitly_supported(sup_args=["--user-ipc", 
-                                                  "--oh-monitoring"])
-  def test_info_service_ok_with_oh(self):
-    self._aux_test_explicitly_supported(sup_args=["--info-service", "bla",
-                                                  "--oh-monitoring"])
-  def test_histogram_publishing_interval_ok_with_oh(self):
-    sargs=["--histogram-publishing-interval", "5", "--oh-monitoring"]
-    self._aux_test_explicitly_supported(sup_args=sargs)
-  def test_histogram_include_ok_with_oh(self):
-    sargs = ['--histogram-include', '.*', '--oh-monitoring']
-    self._aux_test_explicitly_supported(sup_args=sargs)
-  def test_histogram_exclude_ok_with_oh(self):
-    sargs = ['--histogram-exclude', ' ', '--oh-monitoring']
-    self._aux_test_explicitly_supported(sup_args=sargs)
-  def test_intaractive_ok_with_oh(self):
-    sargs = ['--interactive', '--oh-monitoring']
-    self._aux_test_explicitly_supported(sup_args=sargs)
-  def test_multiple_files_ok_with_oh(self):
-    del self.required['file']
-    sargs = ['--oh-monitoring', '--file', '["fake_file", "another_fake_file"]']
-    self._aux_test_explicitly_supported(sup_args=sargs)
-  def test_sor_time_allowed(self):
-    allowed = ['now', 1386355338658000000, '13/3/13  08:30:00.123',
-               '4/4/04 4:4:4.444444', -123]
-    for sor in allowed:
-      self.option_spec['sor-time']['parse'](sor)
-  def test_sor_time_disallowed(self):
-    disallowed = ['tomorrow', 'yesterday', 'blablebli',
-                  '13/03/2013  08:30:00.123', '4/4/04', '4:4:04.444444',
-                  '4/4/04 4:4:4', '4/13:04 4:4:4.444444', '4/4/4 4:4:4.444444']
-    for sor in disallowed:
-      self.assertRaises(BadOptionSet, self.option_spec['sor-time']['parse'],sor)
-  def test_db_options_no_usedb_disallowed(self):
-    disallowed = [('db-type', 'Coral'), ('db-server', 'mehhh'), 
-                  ('db-smkey', 84930), ('db-hltpskey', 40000), 
-                  ('db-extra', {'a':'b'})]
-    for args in disallowed:
-      self._check_opt_disallowed(*args)
-  def test_db_and_job_options_disallowed(self):
-    assert "extra" in self.required
-    self._check_opt_disallowed('use-database')
-
-class option_save_output_tests(option_consistency_tests):
-  def setUp(self):
-    super(option_save_output_tests, self).setUp()
-  def test_save_output_allowed(self):
-    self._check_opt_allowed('save-output', '/tmp/somedir/somefile')
-  def test_save_output_conventional_allowed(self):
-    # allowed is a dictionary of the allowed keys mapped to their default values
-    optvbase = self.option_spec['save-output-conventional']['allowed']
-    # create a random combination out of optvbase
-    d = random_sub_dict(optvbase)
-    # check that this combination is acceptable
-    self._check_opt_allowed('save-output-conventional', d)
-  def test_save_output_conventional_disallowed_keys(self):
-    wrong_dict = {123: 321, 'abc': 'cba'}
-    for k, v in wrong_dict.items():
-      self._check_opt_disallowed('save-output-conventional', {k: v})
-  def test_save_output_conventional_disallowed_values(self):
-    # allowed keys
-    goodkeys = self.option_spec['save-output-conventional']['allowed'].keys()
-    # values with wrong type (None):
-    wrong_dict_base = {k: None for k in goodkeys}
-    # get a random combination of wrong items
-    wrongd = random_sub_dict(wrong_dict_base)
-    # check that this combination is not acceptable
-    self._check_opt_disallowed('save-output-conventional', wrongd)
-  def test_save_output_and_conventional_disallowed(self):
-    # allowed is a dictionary of the allowed keys mapped to their default values
-    optv = self.option_spec['save-output-conventional']['allowed']
-    # this will also be parsed
-    self.required['save-output'] = '/tmp/somedir/somefile'
-    self._check_opt_disallowed('save-output-conventional', optv)
-  def test_compression_requires_save_output_somehow(self):
-    compv = random.randint(1,5)
-    # conv is a dictionary of the allowed keys mapped to their default values
-    conv = self.option_spec['save-output-conventional']['allowed']
-    # compression allowed with save-output:
-    self.required['save-output'] = '/tmp/somedir/somefile'
-    self._check_opt_allowed('use-compression', compv)
-    # compression allowed with save-output-conventional
-    del self.required['save-output']
-    self.required['save-output-conventional'] = conv
-    self._check_opt_allowed('use-compression', compv)
-    # compression disallowed without save-output or save-output-conventional
-    del self.required['save-output-conventional']
-    self._check_opt_disallowed('use-compression', compv)
-
-class option_skip_events_tests(option_consistency_tests):
-  def setUp(self):
-    super(option_skip_events_tests, self).setUp()
-    self.required['skip-events'] = 123
-  def test_skip_events_interactive_disallowed(self):
-    self._check_opt_disallowed('interactive')
-  def test_skip_events_rewind_disallowed(self):
-    self._check_opt_disallowed('rewind')
-  def test_skip_events_negative_disallowed(self):
-    del self.required['skip-events']
-    self._check_opt_disallowed('skip-events', -1)
-  def test_skip_events_explicitly_supported(self):
-    self._aux_test_explicitly_supported(cmd_args=self._get_required_args())
-
-class option_database_tests(option_consistency_tests):
-  def setUp(self):
-    super(option_database_tests, self).setUp()
-    del self.required['extra']
-    self.required['use-database'] = True
-  def test_db_type_disallowed(self):
-    self._check_opt_disallowed('db-type', 'wrong')
-  def test_db_types_allowed(self):
-    for type in ["Oracle", "SQLite", "MySQL"]:
-      self._check_opt_allowed('db-type', type)
-  def test_db_smkey_disallowed(self):
-    for key in [0, -123, 1.23, 'blaa', [(1,2)]]:
-      self._check_opt_disallowed('db-smkey', key)
-  def test_db_smkey_allowed(self):
-    self._check_opt_allowed('db-smkey', 123)
-  def test_db_server_allowed(self):
-    self._check_opt_allowed('db-server', 'foobar')
-  def test_db_hltpskey_disallowed(self):
-    bad = [-1, 0, 5.4, 1.0, "1j", "afsg", "[(1,a)]", "[(1,4j)]", [], [1], 
-           [(0, 123), (100, 0)], [(1, 123), (100, 0)], [(3,3),(2,2)], 
-           [(3,3),(2,2),(1,1)], [(1,1),(3,3),(2,2)], [(1,1), (1,2)]]
-    for x in bad:
-      self._check_opt_disallowed('db-hltpskey', x)
-  def test_db_hltpskey_allowed(self):
-    good = [1, [(1,2)], [(1,123), (100,321)], [(1, 123), (100, 22)],
-            [(1, 123), (100, 22), (444, 123)], [(1,1),(2,2),(3,1),(44,555)]]
-    for x in good:
-      self._check_opt_allowed('db-hltpskey', x)
-
-if __name__ == '__main__':
-  from HLTTestApps import test_main
-  test_main()
-  
diff --git a/HLT/HLTTestApps/python/HLTTestApps/optspec.py b/HLT/HLTTestApps/python/HLTTestApps/optspec.py
deleted file mode 100644
index 04adf93c14ad575ef6887e83f1734da5de1d46c3..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/HLTTestApps/optspec.py
+++ /dev/null
@@ -1,460 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-'''
-Created on Jun 13, 2013
-
-@author: ricab
-'''
-
-import logging
-from datetime import datetime as dt
-
-class BadOptionSet(Exception): pass
-class CurrentlyNotSupported(BadOptionSet): pass
-
-# list of options that may be automatically added by the parser
-auto_options = ["help", 'expert-help', 'option-file', 'dump-options', 
-                'dump-expert-options']
-
-# list of supported option keys, or (key, value) pairs
-# put options here as they become supported
-supported =  ['file', 'number-of-events', 'perfmon', 'verbosity', 
-              'event-modifier', 'precommand', 'postcommand', 'log-level', 
-              'appmgrdll', 'rewind', 'run-number', 
-              'save-output', 'save-output-conventional', 
-              'ers-debug-level', 'tcmalloc', 'stdcmalloc', 'imf', 'stdcmath',
-              'preloadlib', 'msgsvc-type', 'joboptionsvc-type', 'interactive',
-              'show-includes', 'use-database', 'db-type', 'db-server', 
-              'db-smkey', 'db-hltpskey', 'db-extra', 'sor-time', 
-              'detector-mask', 'ros2rob', 'dcm-prefetch-strategy', 'leak-check-execute', 'leak-check', 
-              'delete-check', 'no-ers-signal-handlers', 'oh-monitoring', 
-              'oh-display', 'user-ipc', 'info-service', 'histogram-include',
-              'histogram-exclude', 'histogram-publishing-interval', 
-              'appmgrfactory', 'python-setup', 'timeout', 
-              'use-compression', 'trace', 'extra-l1r-robs', 'skip-events',
-              'muoncal-buffername', 'muoncal-buffersize', 'max-result-size', 
-              'debug']
-
-def sor_as_nanos(sorv):
-  sor = sor_as_datetime(sorv)
-  return int((sor - dt.fromtimestamp(0)).total_seconds() * 1e9)
-
-def sor_as_datetime(sorv):
-  sorf = common['sor-time']['format']
-  if not sorv:
-    return dt.fromtimestamp(0) # epoch
-  try: # try interpreting it as now
-    return now_sor_as_datetime(sorv)
-  except ValueError:
-    pass
-  try: # try interpreting it as nanos
-    return int_sor_as_datetime(sorv)
-  except ValueError:
-    pass
-  try: # try interpreting it as the human readable format
-    return hr_sor_as_datetime(sorv, sorf)
-  except (ValueError, TypeError):
-    raise BadOptionSet("Bad format for option 'sor-time': neither 'now', "
-                       "nor int, nor '%s'" % sorf)
-    
-def now_sor_as_datetime(sorv):
-  if sorv == 'now':
-    return dt.now()
-  raise ValueError
-
-def int_sor_as_datetime(sorv):
-  # notice negative numbers are allowed - they represent times before epoch
-  nanos = int(sorv) # raises ValueError if not int
-  return dt.fromtimestamp(nanos / 1e9)
-
-def hr_sor_as_datetime(sorv, sorf):
-  return dt.strptime(sorv, sorf)
-
-####
-common = {}
-common['extra-l1r-robs'] = \
-  {'short': '',
-   'arg': True,
-   'default': [],
-   'group': 'Run mode',
-   'description': "List of additional ROB IDs that should be considered part of the level 1 result. Any ROBs with matching IDs in input events will be included in the list of robs that is passed to the HLT when requesting it to process an event. Each element in the list must follow eformat's definition of ROB ID. In particular, it must be integers in the range [0..4294967295]"
-  }
-common['ros2rob'] = \
-  {'short': 'm',
-   'arg': True,
-   'default': '{}',
-   'group': 'Run mode',
-   'description': "ROS to ROB map. This should be provided as a dictionary whose keys are ROS IDs - strings - and whose values are lists of ROB IDs - integers in the range [0..4294967295]. This dictionary can be provided either directly on the command line (e.g. --ros2rob '{\"foobar\": [0xABCD0001, 0xABCD0002]}'), or through a python module that contains it in the variable ros2rob (e.g. --ros2rob 'mymod', where mymod.py contains 'ros2rob={\"bla\": [0x123, 0x321]}'). In the latter case, the module should be accessible with a regular import (it should be in the PYTHONPATH). Such a module can be obtained from a partition with the script ros2rob_from_partition.py, which is included in this package. Any ROB that is not covered by the dictionary and that comes up in an event is considered as part of an artificial ROS corresponding to its subdetector. Notice, in particular, that is how all ROBs are treated when an empty dictionary is provided (the default)! In that case all ROBs are assumed to be in their SubDetector's artificial single ROS. If a non-empty dictionary is provided and, at runtime, a ROB is requested which is not in the provided map, a big WARNING is printed, as this indicates an incomplete mapping."
-   }
-common['dcm-prefetch-strategy'] = \
-  {'short': '',
-   'arg': True,
-   'default': 0,
-   'group': 'Run mode',
-   'description': "ROB prefetching strategy in DCM: = 0: retrieve ROBs on prefetch list only when needed for decoding (as in Run 1), = 1: retrieve ROBs on prefetch list immediately (as begin on Run 2)"
-  }
-common['save-output'] = \
-  {'short': 'o', 
-   'arg': True, 
-   'default': '',
-   'group': 'Data',
-   'description': 'Output events with the HLT result to the specified file. This parameter only sets the filename core (a sequence number and extension is still appended). If multiple input files are given, multiple output files are generated. This option cannot be used simultaneously with --save-output-conventional.'}
-convallowed = {'dir': '.',
-               'ProjectTag': 'UNKNOWN',
-               'RunNumber': 0,
-               'StreamType': 'UNKNOWN',
-               'StreamName': 'UNKNOWN',
-               'LumiBlockNumber': 0,
-               'ProductionStep': 'UNKNOWN'}
-common['save-output-conventional'] = \
-  {'short': 'O',
-   'arg': True,
-   'default': {},
-   'group': 'Data',
-   'description': 'Output events with the HLT result to files whose full names are derived from the specified dictionary, following the Atlas RAW data file naming convention. The dictionary can have between 0 and 7 items (inclusive). The only keys allowed are: %s. The default values for these keys are, respectively: %s. The specified values must have the same type as these defaults, that is, respectively: %s. Properties that are not specified are derived, for each output file, from the corresponding input file if it follows Atlas RAW naming convention. Otherwise, they the default values are used.' % (convallowed.keys(), convallowed.values(), [type(v) for v in convallowed.values()]), 
-   'allowed': convallowed}
-common['use-compression'] = \
-  {'short': 'z', 
-   'arg': True, 
-   'default': 0,
-   'group': 'Data',
-   'description': 'If set, written output data are compressed with the specified compression level. The compression level should be specified as an integer value between 0 and 5 (inclusive). Recommended value -z1. -z0 means no compression applied. This option requires either --save-output or --save-output-conventional.'}
-common['verbosity'] = \
-  {'short': 'V', 
-   'arg': True, 
-   'group': 'Run mode',
-   'default': logging.INFO,
-   'description': 'From which level to print system messages [%d, %d]. For details please consult the documentation of python\'s "logging" module' % (logging.NOTSET, logging.CRITICAL)}
-common['timeout'] = \
-  {'short': None, 
-   'arg': True, 
-   'default': {'timeout': 0, 'warn_fraction': 0.8},
-   'group': 'Run mode',
-   'description': 'This option determines if a watchdog will be used to monitor the event processing. If the dictionary entry "timeout" is set, it should be set to the maximum amount of time HLT should process every event, in milliseconds. The second parameter determines the fraction of that timeout in which the HLT framework will be notified of an eventual timeout.'}
-common['precommand'] = \
-  {'short': 'c', 
-   'arg': True, 
-   'default': [],
-   'group': 'Run mode',
-   'description': 'Optional python commands executed before jobOptions script or database configuration'}
-common['postcommand'] = \
-  {'short': 'C', 
-   'arg': True, 
-   'default': [],
-   'group': 'Run mode',
-   'description': 'Optional python commands executed after jobOptions script or database configuration'}
-common['number-of-events'] = \
-  {'short': 'n', 
-   'arg': True, 
-   'default': -1,
-   'group': 'Data',
-   'description': 'Processes this number of events (<=0 means all).'}
-common['skip-events'] = \
-  {'short': 'k',
-   'arg': True,
-   'default': 0,
-   'group': 'Data',
-   'description': 'Skip these many events. Not allowed with "--interactive" nor "--rewind". Must be smaller than the number of events in the input stream. '}
-common['rewind'] = \
-  {'short': 'r', 
-   'arg': False, 
-   'default': None,
-   'group': 'Data',
-   'description': 'Rewind to first event in prepareForRun. Useful in interactive mode with multiple runs and running over the same events.'}
-common['ers-debug-level'] = \
-  {'short': 'L', 
-   'default': 0,
-   'arg': True, 
-   'group': 'Run mode',
-   'description': 'An ERS debug level to be set dynamically, in the range [0,3].  This will overwrite your environmental settings for TDAQ_ERS_DEBUG_LEVEL.'}
-oh_warn = "This option can only be used together with --oh-monitoring."
-common['oh-monitoring'] = \
-  {'short': 'M', 
-   'arg': False, 
-   'default': None,
-   'group': 'Online Histogramming',
-   'description': 'Run with OH monitoring'}
-common['oh-display'] = \
-  {'short': 'W', 
-   'arg': False, 
-   'default': None,
-   'group': 'Online Histogramming',
-   'description': 'Launch an histogram display. ' + oh_warn}
-common['info-service'] = \
-  {'short': 'x',
-   'arg': True,
-   'default': 'MonSvcInfoService',
-   'group': 'Online Histogramming',
-   'description': 'The IInfoRegister that should be used as TrigMonTHistSvc back-end. ' + oh_warn}  
-common['user-ipc'] = \
-  {'short': 'I', 
-   'arg': False, 
-   'default': None,
-   'group': 'Online Histogramming', 
-   'description': 'Use the IPC init file pointed to by the environment variable TDAQ_IPC_INIT_REF. ' + oh_warn}
-common['histogram-publishing-interval'] = \
-  {'short': 'U',
-   'arg': True,
-   'default': 5,
-   'group': 'Online Histogramming',
-   'description': 'Positive integer determining the number of seconds between each two consecutive online histogram publications. ' + oh_warn}
-common['histogram-exclude'] = \
-  {'short': '',
-   'arg': True,
-   'default': '',
-   'group': 'Online Histogramming',
-   'description': 'Regular expression describing the histograms that should be excluded from online publishing. ' + oh_warn}
-common['histogram-include'] = \
-  {'short': '',
-   'arg': True,
-   'default': '.*',
-   'group': 'Online Histogramming',
-   'description': 'Regular expression describing the histograms that should be included in online publishing. ' + oh_warn}
-common['show-includes'] = \
-  {'short': 's', 
-   'arg': False, 
-   'default': None,
-   'group': 'Run mode',
-   'description': 'Show include(s) resolution in python jobOptions files'}
-common['log-level'] = \
-  {'short': 'l', 
-   'arg': True, 
-   'default': 'INFO,ERROR',
-   'group': 'Run mode',
-   'description': 'Gaudi output level, Pool output level'}
-common['msgsvc-type'] = \
-  {'short': 'T', 
-   'arg': True, 
-   'default': 'TrigMessageSvc',
-   'group': 'Gaudi configuration',
-   'description': 'Message service type'}
-common['python-setup'] = \
-  {'short': 'K', 
-   'arg': True, 
-   'default': '',
-   'group': 'Gaudi configuration',
-   'description': 'Python bootstrap/setup file for Steering Controller'} 
-common['joboptionsvc-type'] = \
-  {'short': 'J', 
-   'arg': True, 
-   'default': 'JobOptionsSvc',
-   'group': 'Gaudi configuration',
-   'description': 'JobOptions service type'}
-common['run-number'] = \
-  {'short': 'R', 
-   'arg': True,
-   'default': 0, 
-   'group': 'Run mode',
-   'description': 'Defines the RunNumber to use for this run. If you do not set this value, it will be read from the first event of the first datafile you give me. If you run in interactive mode and supply a run number in the prepareForRun transition, it will overwrite this value permanently.'}
-common['detector-mask'] = \
-  {'short': '',
-   'arg': True,
-   'default': 0,
-   'group': 'Run mode',
-   'description': 'Defines the detector mask to use for this run. A value of 0 means that the detector mask should be picked up from COOL.'}
-common['sor-time'] = \
-  {'short': '',
-   'arg': True,
-   'default': None,
-   'group': 'Run mode',
-   'description': 'The Start Of Run time. Three formats are accepted: 1) the string "now", for current time; 2) the number of nanoseconds since epoch (e.g. 1386355338658000000 or int(time.time() * 1e9)); 3) the following human readable format (according to python\'s datetime directives): "%s". By default the sor-time is obtained from the Conditions DB. This happens also if the input evaluates to false or if it represents the date "1/1/70 1:0:0.0"',
-   'format': '%d/%m/%y %H:%M:%S.%f'}
-common['sor-time']['description'] %= common['sor-time']['format']
-common['sor-time']['parse'] = sor_as_nanos
-common['event-modifier'] = \
-  {'short': 'Z', 
-   'arg': True,
-   'default': [], 
-   'group': 'Data',
-   'description': 'If set, this should be a list of python modules containing at least one of the following functions: "modify" or "modify_general". The former takes exactly one argument: the event to be modified. The latter takes keyword arguments: currently, the event to be modified and the current configuration, under the keywords "event" and "configuration", respectively. Both functions must return, either a valid event, or something evaluating to False, to indicate that the event should be skipped. For each provided module, if it contains the function "modify_general", that function is called ("modify" is not called in this case, even in present). Otherwise, the function "modify" is called. If several modifiers are provided, they are called in sequence, until either one of them returns something that evaluates to False or until all of them have been processed.'}
-common['max-result-size'] = \
-  {'short': '', 
-   'arg': True, 
-   'default': -1,
-   'group': 'Run mode',
-   'description': 'Changes the maximum size of the HLTResult. The size is given in multiples of 32-bit words. A size of 1 means actually 4 bytes in this case. Any number smaller than zero will trigger the usage of the default buffer size, as defined in the hltinterface package.'} 
-common['leak-check-execute'] = \
-  {'short': 'Q', 
-   'arg': False,
-   'default': None, 
-   'group': 'Run mode',
-   'description': 'Perform leak checking during execute. Equivalent to: --leak-check="execute".'}
-checkallowed = ('all', 'initialize', 'start', 'beginrun', 'execute', 'finalize',
-               'endrun', 'stop' )
-common['leak-check'] = \
-  {'short': '', 
-   'arg': True,
-   'default' : None, 
-   'group': 'Run mode',
-   'description': 'Perform leak checking during the stage you specify %s. Syntax: --leak-check="<stage>" Example: --leak-check="all"' % str(checkallowed),
-   'allowed': checkallowed}
-common['delete-check'] = \
-  {'short': '', 
-   'arg': True,
-  'default' : None, 
-  'group': 'Run mode',
-  'description': 'Perform double delete checking at the stage you specify %s. Syntax: --delete-check="<stage>" Example: --delete-check="all"' % str(checkallowed),
-  'allowed': checkallowed}
-common['perfmon'] = \
-  {'short': 'H', 
-   'arg': False,
-   'default': None, 
-   'group': 'Run mode',
-   'description': 'Enables performance monitoring toolkit'}
-debugallowed = ('configure', 'connect', 'prepareForRun', 'run', 'stop', 
-                'disconnect', 'unconfigure')
-common['debug'] = \
-  {'short': 'd', 
-   'arg': True, 
-   'default': '',
-   'group': 'Run mode',
-   'description': 'Attaches GDB just before the stage you specify %s.' % str(debugallowed),
-   'allowed': debugallowed}
-common['appmgrdll'] = \
-  {'short': 'N', 
-   'arg': True, 
-   'default': '',
-   'group': 'Gaudi configuration', 
-   'description': 'Sets the Application Manager DLL'}
-common['appmgrfactory'] = \
-  {'short': 'P',
-   'arg': True,
-   'default': '',
-   'group': 'Gaudi configuration', 
-   'description': 'Sets the Application Manager factory'}
-common['trace'] = \
-  {'short': 'B', 
-   'arg': True,
-   'default': '',
-   'group': 'Run mode',
-   'description': 'Also shows include files that match the given pattern'}
-common['tcmalloc'] = \
-  {'short': '',
-   'arg': False,
-   'default': None, 
-   'group': 'Run mode', 
-   'description': 'Use tcmalloc instead of stdcmalloc [DEFAULT].'
-   'This option is incompatible with --leak-check, --leak-check-execute and --delete-check. '}
-common['stdcmalloc'] = \
-  {'short': '', 
-   'arg': False, 
-   'default': None, 
-   'group': 'Run mode', 
-   'description': 'Use stdcmalloc intead of tcmalloc.'}
-common['imf'] = \
-  {'short': '', 
-   'arg': False, 
-   'default': None, 
-   'group': 'Run mode', 
-   'description': "Use Intel's imf library, instead of stdcmath [DEFAULT]."}
-common['stdcmath'] = \
-  {'short': '', 
-   'arg': False, 
-   'default': None, 
-   'group': 'Run mode', 
-   'description': "Use stdcmath, instead of Intel's imf library."}
-common['preloadlib'] = \
-  {'short': '', 
-   'arg': True, 
-   'default': None, 
-   'group': 'Run mode', 
-   'description': 'Preload an arbitrary library, to be specified with an equals sign (e.g. --preloadlib=foobar.so).'}
-common['no-ers-signal-handlers'] = \
-  {'short': '', 
-   'arg': False,
-   'default': None, 
-   'group': 'Run mode', 
-   'description': 'Do not use the ERS signal handlers.'}
-common['muoncal-buffername'] = \
-  {'short': '', 
-   'arg': True, 
-   'default': '',
-   'group': 'Muon calibration',
-   'description': 'Sets the name of the muon calibration buffer'}
-common['muoncal-buffersize'] = \
-  {'short': '', 
-   'arg': True, 
-   'default': '',
-   'group': 'Muon calibration',
-   'description': 'Sets the size of the muon calibration buffer'}
-usedb_warn = 'This option can only be used together with --use-database.'
-common['use-database'] = \
-  {'short': 'b', 
-   'arg': False, 
-   'default': None,
-   'group': 'Database',
-   'description': 'Configure from the TriggerDB.'}
-common['db-type'] = \
-  {'short': 't', 
-   'arg': True, 
-   'default': None, 
-   'group': 'Database', 
-   'allowed': ['MySQL', 'Oracle', 'SQLite', 'Coral'],
-   'description': 'Select the type of database to configure from. Allowed ' +
-   'values are: ' # see below
-   }
-common['db-type']['description'] += (
-  ', '.join(['"%s"' % x for x in common['db-type']['allowed']]) + ". " + 
-  usedb_warn 
-  )
-common['db-server'] = \
-  {'short': 'S',
-   'arg': True,
-   'default': None,
-   'group': 'Database',
-   'description': 'The meaning of this parameter depends on the value of db-type. When db-type is "Coral", db-server identifies an entry for DB lookup. Otherwise, it should contain the name of the server (e.g. "ATLAS_CONFIG"). ' + usedb_warn}
-common['db-smkey'] = \
-  {'short': 'X',
-   'arg': True,
-   'default': None,
-   'group': 'Database',
-   'description': 'The Super Master key to read from the trigger database. This should be a single positive integer. ' + usedb_warn}
-common['db-hltpskey'] = \
-  {'short': 'Y',
-   'arg': True,
-   'default': None,
-   'group': 'Database',
-   'description': 'The HLT PreScale key(s) to retrieve from the trigger database. This can be either a single positive integer, or a non-empty list of pairs of positive integers (e.g. [(1, 123), (100, 321)]). In the latter case, the list must be ordered by the first element of each pair, following a strict growing order. The first element of each pair represents a lumiblock number, while the second represents a prescale key. A prescale key specified by the second element of a pair is used for all the lumiblocks greater or equal to the lumiblock specified by the first element of the same pair and, if the pair is not the last on the list, less than lumiblock specified by the first element of the following pair. Therefore, in the example above the key 123 would be used for lumiblocks 1 to 99 (inclusive) and only for these ones; the key 321 would be used for all other lumiblocks (100 or greater). ' + usedb_warn}
-common['db-extra'] = \
-  {'short': 'E',
-   'arg': True,
-   'default': {},
-   'group': 'Database',
-   'description': 'Dictionary of free key-value combinations. Each element whose key is "recognized" is extracted and treated individualy to make sure it reaches the software below by the proper means (through the corresponding individual ptree node). Other elements are passed below as "additionalConnectionParameters" (in the ptree node with that name). The "recognized" parameters are: "lvl1key", "schema" (corresponding to TriggerDBConnection.Name (e.g. "ATLAS_CONF_TRIGGER_V2")), "user", "password". The remaining parameters include "retrialperiod", and "maxretrials". ' + usedb_warn}
-
-
-
-# Options that deal with file input
-fileinput = {}
-fileinput['file'] = {'short': 'f', 'arg': True, 'default': [],
-                     'group': 'Data',
-                     'description': 'The input data-file, or a python list thereof. Multiple files can only be specified with --oh-monitoring, because the implicit stop/start transitions at file boundaries are not supported by the default (offline) histogramming service.'}
-fileinput['interactive'] = {'short': 'i', 'arg': False, 'default': None,
-                            'description': 'Switches on interactive mode, so you can control the state transitions manually. This option can only be used together with --oh-monitoring, because the default (offline) histogramming service does not support arbitrary state transitions.',
-                            'group': 'Run mode'}
-
-# Options that deal with emon input
-emoninput = {} # empty for now
-
-# constants (only common_constants for now)
-common_constants = {'ohserver': 'HLT-Histogramming',
-                    'rootprovider': "athenaHLT",
-                    'oh_numslots': 5}
-
-# helper procedure to get the available short options
-def __short_avail():
-  from string import lowercase as lw, uppercase as up
-  
-  all_short = set(lw + up)
-  reserved_short = set(['h', 'D', 'F'])
-  used_short = set([v['short'] for v in (fileinput.values() + 
-                                         emoninput.values()) + 
-                                         common.values()])
-  return all_short - used_short - reserved_short
-
-if __name__ == '__main__':
-  print ("(No tests in this file. All option tests are in option.py. Running "
-         "this file prints the available letters for athenaHLT options)")
-  print
-  print "Available letters for options are:",
-  print ''.join(sorted(__short_avail()))
diff --git a/HLT/HLTTestApps/python/HLTTestApps/pausable_istream.py b/HLT/HLTTestApps/python/HLTTestApps/pausable_istream.py
deleted file mode 100644
index 4f9f8116d7cbb90d0b635eb03f33ca3e0dbe5b28..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/HLTTestApps/pausable_istream.py
+++ /dev/null
@@ -1,345 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-# Ricardo Abreu <ricardo.abreu@cern.ch>
-import eformat
-from eformat import EventStorage
-from libpyeformat import FullEventFragment, convert_old 
-import libpyeformat_helper as helper
-import logging
-
-
-class PauseIterationException(Exception): pass
-
-class pausable_istream(eformat.istream):
-    """ An istream that can only be used sequentially and that raises a 
-    PauseIterationException whenever it gets to a new event file with a 
-    different run number, so that prepareForRun can be executed again and things
-    are consistent with the new run.
-    
-    This class doesn't allow random access, that is, it doesn't provide events
-    by their index. Therefore, __getitem__ raises NotImplementedError
-    
-    Additionally, some metadata of the file currently being read can be obtained
-    with the methods current_run_number and current_detector_mask
-    """
-    
-    def __init__(self,l):
-        """ Constructor. It takes a list of file names. This list should have at
-        least one element.
-        """
-        eformat.istream.__init__(self, l)
-        if len(self.filelist) > 1: self.multiple_files = True
-        else: self.multiple_files = False
-        self.f = 0
-        self.i = 0
-        self.dr = EventStorage.pickDataReader(self.filelist[self.f])
-        import sys, os
-        self.app_name = os.path.basename(sys.argv[0]).split('.')[0] 
-        
-    def __getitem__(self, key):
-        """ Not implemented. Random access not allowed.
-        """
-        raise NotImplementedError, 'Random access to a pausable_istream is not'\
-                                   ' allowed.'
-                                   
-    def __iter__(self):
-        return self._iterator(self, False)
-    
-    def iter_raw(self):
-        """ Obtain an iterator that returns raw items
-        """
-        return self._iterator(self, True)
-        
-    def _updateDataReader(self):
-        self._updatef()
-        self.i = 0
-        oldrn = self.dr.runNumber()
-        self.dr = EventStorage.pickDataReader(self.filelist[self.f])
-        if oldrn != self.dr.runNumber():
-            raise PauseIterationException, 'need to prepare for run again'
-        
-    def _updatef(self):
-        self.f += 1
-
-    def rewind(self):
-        """Rewind to the first event in the first file"""
-        self.i = 0
-        self.f = 0
-        self.dr = EventStorage.pickDataReader(self.filelist[self.f])
-        
-    def current_filename(self):
-      """ Obtain the file name of the current file"""
-      return self.dr.fileName()
-        
-    def current_run_number(self):
-        """ Obtain the run number that is present in the metadata of the file 
-        that contains that last event returned (or the first, in case no event
-        was read yet)
-        """
-        return self.dr.runNumber()
-    
-    def current_detector_mask(self):
-        """ Obtain the detector mask that is present in the metadata of the 
-        current file being read. The current file is considered to be:
-        1 - if no event was read or if the event returned most recently was the
-        last in the last file -> the first file
-        2 - if the last attempt to read an event from file n raised a 
-        PauseIterationException -> the file n+1
-        3 - if none of the previous cases -> the file of the last event returned
-        """
-        return self.dr.detectorMask()
-
-    def datawriter(self, directory, core_name, compression=0):
-      """ Creates and returns a new eformat.ostream with the same meta data of 
-      the current input stream, but using the directory and core_name as given.
-      """
-      
-      compargs = {}
-      if compression in range(1,6):
-        compargs['compression'] = EventStorage.CompressionType.ZLIB
-        compargs['complevel'] = compression
-        
-      return eformat.ostream(directory, core_name, self.dr.runNumber(),
-                             self.dr.triggerType(), self.dr.detectorMask(),
-                             self.dr.beamType(), self.dr.beamEnergy(),
-                             **compargs)
-            
-    class _iterator:
-        def __init__(self, stream, raw):
-            self.stream = stream
-            self.raw = raw
-        def __iter__(self):
-            return self
-        def next(self):
-            if self.stream.i < self.stream.dr.eventsInFile():
-                self.stream.i += 1
-                blob = self.stream.dr.getData()
-                if self.raw:
-                    return blob
-                else:
-                    return self.check_version(blob)
-            else:
-                try:
-                    self.stream._updateDataReader()
-                    return self.next()
-                except IndexError:
-                    self.stream.f = -1
-                    try:
-                      self.stream._updateDataReader()
-                    except PauseIterationException:
-                      pass # we actually need to stop
-                    raise StopIteration
-        def check_version(self, blob):
-            # check for people trying old versions and convert it on the spot
-            fragment_version = helper.Version(blob[3])
-            if fragment_version.major_version() != helper.MAJOR_DEFAULT_VERSION:
-                current_version = helper.Version()
-                logging.debug("Converting from version %s to %s" % \
-                              (fragment_version.human_major(), 
-                               current_version.human_major()))
-                blob = convert_old(blob)
-        
-            if blob[0] == helper.HeaderMarker.FULL_EVENT:
-                return FullEventFragment(blob)
-            else:
-                raise SyntaxError, ("Expecting event marker, not 0x%08x" % 
-                                    blob[0])
-
-
-################################################################################
-#                                   Tests                                      #
-################################################################################
-
-import unittest, string, random, glob, os
-
-class dif_pausable_istream_tests(unittest.TestCase):
-    def setUp(self):
-        self.stream = pausable_istream(datafiles)
-    
-    def testCycle(self):
-        for i in range(2):
-            self.aux_testCycle()
-        self.assertEquals(self.stream.i, 0)
-        self.assertEquals(self.stream.f, 0)
-        
-    def testRewindInFirstFile(self):
-        self._testRewind(50) # files have 100 and 99 events respectively
-                
-    def testRewindInSecondFile(self):
-        self._testRewind(150) # files have 100 and 99 events respectively
-        
-    def testRewindAfterCycle(self):
-        self._testRewind(250) # files have 100 and 99 events respectively
-        
-    def aux_testCycle(self):
-        try:
-            for e in self.stream:
-                pass
-        except PauseIterationException:
-            pass
-            
-    def _testRewind(self, n):
-        # advance n events
-        evs1 = self._extract_first_n_events(n)
-        
-        # now rewind and check we really are at the beginning
-        self.stream.rewind()
-        self.assertEquals(self.stream.i, 0)
-        self.assertEquals(self.stream.f, 0)
-        self.assertEquals(self.stream.dr.fileName(), self.stream.filelist[self.stream.f])
-        
-        #repeat and confirm we get the same events as before
-        evs2 = self._extract_first_n_events(n)
-        self.assertEquals(evs1, evs2)
-        
-    def _extract_first_n_events(self, n):
-        evs = []
-        while True:
-            try:
-                for e in self.stream:
-                    evs.append(e)
-                    if len(evs) == n:
-                        return evs
-            except PauseIterationException:
-                pass
-        
-class fixed_pausable_istream_tests(unittest.TestCase):
-    def setUp(self):
-        self.f = datafiles[0]
-        self.rnum = 177531
-        self.numev = 100
-        self.stream = pausable_istream([self.f] * 2)
-    def test_run_number(self):
-        self.assertEquals(self.stream.current_run_number(), self.rnum)
-    def test_run_number_event(self):
-        self.assertEquals(self.stream.__iter__().next().run_no(), self.rnum)
-    def test_run_number_events(self):
-        rn = self.stream.__iter__().next().run_no()
-        for e in self.stream:
-            if self.stream.i == self.numev:
-                break
-            self.assertEquals(e.run_no(), rn)
-    def test_detector_mask(self):
-        dm = self.stream.current_detector_mask()
-        self.assert_(dm > 0 and dm < 0xffffffffffffffffffffffffffffffffL)
-    def testIter(self):
-        for e in self.stream:
-            if self.stream.i == self.numev:
-                break # we get out when the first file was processed
-        self.stream.__iter__().next()
-        self.assertEquals(self.stream.i, 1)
-        self.assertEquals(self.stream.f, 1)
-        for e in self.stream:
-            if self.stream.i == self.numev:
-                break # we get out again - end of second file
-        self.assertRaises(StopIteration, self.stream.__iter__().next)
-    def testCycle(self):
-        try:
-            for e in self.stream:
-                pass
-        except PauseIterationException:
-            for e in self.stream:
-                pass
-        for e in self.stream:
-            if self.stream.i == self.numev and self.stream.f == 1:
-                break
-        self.assertRaises(StopIteration, self.stream.__iter__().next)
-
-class some_pausable_istream_tests(unittest.TestCase):
-    def setUp(self):
-        self.stream = pausable_istream(datafiles)
-    def testIterSimple(self):
-        try:
-            for e in self.stream:
-                pass
-        except PauseIterationException:
-            pass
-        self.assertEquals(self.stream.i, 0)
-    def testIter(self):
-        self.auxTestIter()
-        self.assertEquals(self.stream.f, 0)
-        self.assertEquals(self.stream.i, 0)
-    def testCycle(self):
-        self.auxTestIter()
-        self.auxTestIter()
-        self.assertEquals(self.stream.f, 0)
-        self.assertEquals(self.stream.i, 0)
-        
-    def testRandomAccess(self):
-        self.assertRaises(NotImplementedError, lambda: self.stream[0])
-    def auxTestIter(self):
-        try:
-            for e in self.stream:
-                pass
-        except PauseIterationException:
-            self.auxTestIter()
-            
-class pausable_istream_files_tests(unittest.TestCase):
-  def setUp(self):
-    self.tmpdir = "/tmp"
-    self.tmpbasefilename = "tmpoutfile_athenaHLT_pausable_istream_test_"
-    self.stream = pausable_istream(datafiles)
-  def tearDown(self):
-    for f in glob.glob("%s/%s*" % (self.tmpdir, self.tmpbasefilename)):
-      os.remove(f)
-  def test_advance_file_once(self):
-    self._test_advance_file_multiple(1)
-  def test_advance_file_twice(self):
-    self._test_advance_file_multiple(2)
-  def test_advance_file_thrice(self):
-    self._test_advance_file_multiple(3)
-  def test_advance_file_5times(self):
-    self._test_advance_file_multiple(5)
-  def test_data_writer_config_plain_fst(self):
-    self._test_advance_data_writer_config_plain(0)
-  def test_data_writer_config_plain_snd(self): 
-    self._test_advance_data_writer_config_plain(1)
-  def test_data_writer_config_plain_trd(self):
-    self._test_advance_data_writer_config_plain(2)
-  def _advance_file(self):
-    try:
-      self.stream._updateDataReader()
-    except PauseIterationException:
-      pass
-    except IndexError:
-      self.stream.f = -1
-      try:
-        self.stream._updateDataReader()
-      except PauseIterationException:
-        pass
-  def _test_advance_file_multiple(self, n):
-    oldf = self.stream.f
-    for _ in range(n):
-      self._advance_file()
-    numf = len(self.stream.filelist)
-    expect = (n + oldf) % numf
-    self.assertEqual(self.stream.f, expect,
-                     "Got unexpected file index %d after advancing %d times on "
-                     "a stream with original file index %d and a total of %d "
-                     "files (expected to end with file index %d)" 
-                     % (self.stream.f, n, oldf, numf, expect))
-  def _test_data_writer_config_plain(self):
-    outf = EventStorage.pickDataReader(self._create_unique_outfile())
-    for item in ["runNumber", "triggerType", "detectorMask", "beamType", 
-                 "beamEnergy"]:
-      r, w = getattr(self.stream.dr, item)(), getattr(outf, item)()
-      self.assertEqual(r, w, "%s different in input (%s) and output (%s) "
-                             "streams" % (item, str(r), str(w)))
-  def _test_advance_data_writer_config_plain(self, findex):
-    for _ in range(findex):
-      self._advance_file()
-    self._test_data_writer_config_plain()
-  def _create_unique_outfile(self):
-    ost = self.stream.datawriter(self.tmpdir, self._unique_filename(), 0)
-    # get the final file name (ostream adds stuff to the name)
-    ret = ost.last_filename() # current_filename would give the ".writable" name
-    ost.writer.closeFile()
-    del ost
-    return ret
-  def _unique_filename(self):
-    return self.tmpbasefilename + ''.join([random.choice(string.ascii_letters) 
-                                           for _ in range(8)])
-            
-if __name__ == '__main__':
-    from HLTTestApps import test_main
-    test_main()
diff --git a/HLT/HLTTestApps/python/HLTTestApps/plugins/__init__.py b/HLT/HLTTestApps/python/HLTTestApps/plugins/__init__.py
deleted file mode 100644
index 563666836a7b7c3f74c42055407ef62ff2d9cde1..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/HLTTestApps/plugins/__init__.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-# author Ricardo Abreu <ricardo.abreu@cern.ch>
-
-def get_robhit():
-  try:
-    from robhit import robhit
-  except ImportError, e:
-    mesg = ('For this event modification plugin, you have to have a "robhit" '
-            'module on your PYTHONPATH. A second option is to copy this module '
-            'and manually overwrite the ROB hit list import: %s' % e)
-    raise ImportError, mesg
-  return robhit
\ No newline at end of file
diff --git a/HLT/HLTTestApps/python/HLTTestApps/plugins/fill_empty.py b/HLT/HLTTestApps/python/HLTTestApps/plugins/fill_empty.py
deleted file mode 100644
index dd7d531d0a5674842545adb6e6f52a5e4ca8593b..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/HLTTestApps/plugins/fill_empty.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-# author Andre Anjos <andre.dos.anjos@cern.ch>
-# author Ricardo Abreu <ricardo.abreu@cern.ch>
-
-"""Fills ROBs which are considered empty by a list
-"""
-
-import eformat
-import logging
-
-from HLTTestApps.plugins import get_robhit
-robhit = get_robhit()
-
-def fill_empty(event, roblist, bitset=30):
-  """Fills-in missing ROB fragments in the event, according to a hit list.
-
-  This method will fill in the event object with missing ROBs so that the
-  hit list defined by the second parameter gets completely satisfied. In each
-  newly created ROB, the status bit indicated by the "bitset" parameter will be
-  set. These are the ones which are currently in use for tdaq-01-08-00:
-
-   bit | Meaning
-   ----+---------->
-   30  | Pending: the ROBIN did not have a fragment for the requested L1ID but
-       | this fragment may still arrive. It therefore generated an empty
-       | fragment (this is the default)
-       |
-   29  | Lost: the ROBIN did not have a fragment for the requested L1ID. It
-       | therefore generated an empty fragment
-
-  ROBs which do not exist in the hit list they will also be removed and not
-  served via the data collector.
-
-  More up-to-date information can be found here:
-  https://twiki.cern.ch/twiki/bin/view/Atlas/ROBINFragmentErrors
-  """
-
-  logging.info('Filling empty ROBs in event %d' % event.lvl1_id())
-
-  # now we rebuild the event with what is left.
-  newevent = eformat.write.FullEventFragment(event)
-  gen_robs = list(roblist) # deep copy so we don't change the input
-
-  rob_model = None
-  for rob in newevent:
-    rob_model = rob
-    if rob.source_id().code() in gen_robs:
-      del gen_robs[gen_robs.index(rob.source_id().code())]
-
-  for rob_id in gen_robs:
-    logging.info('Instantiating empty ROB for fragment %s' % \
-        eformat.helper.SourceIdentifier(rob_id))
-    newrob = eformat.write.ROBFragment()
-    newrob.copy_header(rob_model)
-    newrob.minor_version(0)
-    newrob.rod_minor_version(0)
-    rob_source = eformat.helper.SourceIdentifier(rob_id)
-    newrob.source_id(rob_source)
-    specific = 0x1 << (bitset - 16)
-    status = eformat.helper.Status(eformat.helper.GenericStatus.DATA_CORRUPTION, specific)
-    newrob.status([status.code()])
-    newevent.append(newrob)
-
-  logging.info('Instantiated %d empty ROBs in event %d' % (len(gen_robs), \
-    event.lvl1_id()))
-
-  return newevent.readonly() 
-
-def modify(event):
-  return fill_empty(event, robhit)  
diff --git a/HLT/HLTTestApps/python/HLTTestApps/plugins/print_event_header.py b/HLT/HLTTestApps/python/HLTTestApps/plugins/print_event_header.py
deleted file mode 100644
index 261b0490dbeb7b209d7b0cc5a02052805cf93fbd..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/HLTTestApps/plugins/print_event_header.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-# author Ricardo Abreu <ricardo.abreu@cern.ch
-
-"""Prints the event header and returns the event untouched"""
-
-import eformat.dump as edump
-
-def modify(event):
-  print 'Event Header:'
-  print edump.fullevent_handler(event)
-  return event # no changes required
\ No newline at end of file
diff --git a/HLT/HLTTestApps/python/HLTTestApps/plugins/remove_nonlisted.py b/HLT/HLTTestApps/python/HLTTestApps/plugins/remove_nonlisted.py
deleted file mode 100644
index bb789b3c1d9add940f3cc9704ecb7973eacc5dc5..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/HLTTestApps/plugins/remove_nonlisted.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-# author Andre Anjos <andre.dos.anjos@cern.ch>
-# author Werner Wiedenmann <werner.wiedenmann@cern.ch>
-# author Ricardo Abreu <ricardo.abreu@cern.ch>
-
-"""Removes ROBs from the event, which are not listed in the ROB hit list.
-"""
-
-import eformat
-import logging
-
-from HLTTestApps.plugins import get_robhit
-robhit = get_robhit()
-
-def cleanup(event, roblist):
-  """Removes ROBs in the event which are not in the hitlist you specify
-  """
-
-  newevent = eformat.write.FullEventFragment()
-  newevent.copy_header(event)
-  for rob in event:
-    if rob.source_id().code() not in roblist:
-      logging.info('Removing ROB %s from event %d (not at hit list)' % \
-                   (rob.source_id(), event.lvl1_id()))
-      continue
-    else:
-      newrob = eformat.write.ROBFragment(rob)
-      newevent.append(newrob)
-
-  # return modified event
-  # ---------------------
-  return newevent.readonly()
-
-def modify(event):
-  return cleanup(event, robhit)
diff --git a/HLT/HLTTestApps/python/HLTTestApps/plugins/truncate.py b/HLT/HLTTestApps/python/HLTTestApps/plugins/truncate.py
deleted file mode 100644
index 0cae05fdd018eef0e5f5da6eb8dcf96c1fbc8125..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/HLTTestApps/plugins/truncate.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-# author Andre Anjos <andre.dos.anjos@cern.ch>
-# author Werner Wiedenmann <werner.wiedenmann@cern.ch>
-# author Ricardo Abreu <ricardo.abreu@cern.ch>
-
-"""Truncates a few of the ROBs in the input event according to a hit list.
-"""
-
-import eformat
-import logging
-
-from HLTTestApps.plugins import get_robhit
-robhit = get_robhit()
-
-def truncate(event, roblist, ratio=0.5):
-  """Truncates the robs in the list you pass by the amount you choose.
-  """
-  if ratio >= 1.0: return event
-  if ratio <= 0: return event
-
-  logging.info('Truncating (at most) %d ROBs in event %d' % (len(roblist),
-      event.lvl1_id()))
-  newevent = eformat.write.FullEventFragment(event)
-  for rob in newevent:
-    if rob.source_id().code() in roblist:
-      newdata = list(rob.rod_data())
-      point = -1*int(len(newdata) * ratio)
-      specific = 0x1 << (27 - 16) # this bit means truncation
-      status = eformat.helper.Status(eformat.helper.GenericStatus.DATA_CORRUPTION, specific)
-      rob.rod_data(newdata[:point])
-      rob.status([status.code()])
-  
-  return newevent.readonly()
-
-def modify(event):
-  return truncate(event, robhit)
diff --git a/HLT/HLTTestApps/python/HLTTestApps/processor.py b/HLT/HLTTestApps/python/HLTTestApps/processor.py
deleted file mode 100644
index 161722508ae3167e62cbce0a5320a800fc2547a8..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/HLTTestApps/processor.py
+++ /dev/null
@@ -1,610 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-# vim: set fileencoding=utf-8 :
-# Created by Andre Anjos <andre.dos.anjos@cern.ch>
-# Wed 05 Mar 2008 02:13:05 PM CET 
-
-from libpyhlttestapps import HLTInterface, TimeoutGuard, ptree
-import time, os
-import logging
-import HLTTestApps
-from infrastructure import build_infrastructure
-from pausable_istream import PauseIterationException
-
-def going_up(transition):
-  return transition in ['configure','connect','prepareForRun','prepareWorker']
-
-def keep_processing(config, processed, total, skipped):
-  """Determines if we should continue processing events or not."""
-  if config < 0:
-    return processed + skipped < total
-  else:
-    return processed < config
-    
-def log_processed(skipped, processed):
-  logging.info('Skipped %d events at the beginning' % skipped)
-  logging.info('Processed %d events' % processed)
-
-class FSMTransitionError(RuntimeError): pass
-
-class Processor:
-  """Defines a "pythonic" version of the hltinterface"""
-
-  def __init__(self, config):
-    """Wrapper for HLTInterface. """
-    
-    self.config = config
-
-    # Need to load libPyROOT before TrigServices (see Savannah #82614)
-    import cppyy 
-    
-    logging.debug1('Loading libraries %s' % ', '.join(self.libraries))
-    
-    self.state = 'UNKNOWN'
-    self.impl = HLTInterface(self.libraries)
-    self.watchdog = TimeoutGuard(config['timeout']['timeout'], 
-                                 config['timeout']['warn_fraction'], 
-                                 self.impl)
-    self.state = 'LOADED'
-    self.fatal = None
-    self.infrastructure = build_infrastructure(config)
-    
-    # for easiness sake
-    self.stream = config.stream
-    self.debug_stage = config['debug']
-    self.datawriter = None
-    
-    logging.info('Current HLT processor state is "%s"' % (self.state,))
-  
-  def __del__(self):
-    if 'infrastructure' in self.__dict__:
-      del self.infrastructure
-  
-  def __getattr__(self, attr):
-    try:
-      return self.config[attr]
-    except KeyError:
-      if attr[0] != '_':
-        uattr = attr.replace('_', '-')
-        try:
-          return self.config[uattr]
-        except KeyError:
-          pass
-    raise AttributeError, ("%s instance has no attribute '%s'" 
-                           % (self.__class__.__name__, attr))
-    
-  def go(self):
-    if self.interactive:
-      self.interact()
-    else:
-      self.configure()
-      self.connect()
-      self.prepareForRun()
-      self.run() 
-      self.stopRun()
-      self.disconnect()
-      self.unconfigure()
-   
-  def configure(self):
-    return self._transit('LOADED', 'configure', 'CONFIGURED', 
-                         self.config.get_config_ptree())
-        
-  def connect(self):
-    return self._transit('CONFIGURED', 'connect', 'CONNECTED',
-                         self.config.get_connect_ptree())
-
-  def prepareForRun(self, run_number=-1):
-    if self.rewind: 
-      self.stream.rewind()
-    
-    # we overwrite the run_number we already had only if it was specified as
-    # in this latest prepareForRun
-    run_number = int(run_number)
-    if run_number >= 0:
-      self.config['run-number'] = run_number
-      
-    return (self._transit('CONNECTED', 'prepareForRun', '_INTERNAL_', 
-                          self.config.get_prepare_ptree()) and 
-            self._transit('_INTERNAL_', 'prepareWorker', 'PREPARED',
-                          self.config.get_prepareWorker_ptree()))
-
-  def stopRun(self):
-    return self._transit('PREPARED', 'stopRun', 'CONNECTED',
-                         self.config.get_stopRun_ptree())
-  
-  def disconnect(self):
-    return self._transit('CONNECTED', 'disconnect', 'CONFIGURED',
-                         self.config.get_disconnect_ptree())
-
-  def unconfigure(self):
-    return (self._transit('CONFIGURED', 'finalizeWorker', '_INTERNAL_',
-                          self.config.get_finalizeWorker_ptree()) and
-            self._transit('_INTERNAL_', 'unconfigure', 'LOADED',
-                          self.config.get_unconfigure_ptree()))
-
-  def process(self, event):
-    self._check_fatal() # check whether the processor is in a fatal state
-    if self.max_result_size > 0:
-      return self.impl.process(event, self.watchdog, self.max_result_size)
-    else:
-      # use the default size set in src/util.h
-      return self.impl.process(event, self.watchdog)
-  
-  def tearDown(self):
-    """
-    Brings the processor to the initial state (LOADED), whatever the current
-    state
-    """
-    for move in self.stopRun, self.disconnect, self.unconfigure:
-      try: move()
-      except: pass
-      
-  def run(self):
-      self._try_debug('run')
-      self._transit_infrastructure('run')
-      logging.info('Running HLT')
-      skipped, processed = 0, 0
-      total = len(self.stream)
-
-      self._try_save_output()
-        
-      try:
-          while keep_processing(self.number_of_events,processed,total,skipped):
-              try:
-                  skipped, processed = self._run_aux(skipped, processed, total)
-              except PauseIterationException, upd_proc: # we can still update
-                  skipped, processed = upd_proc.args    # skipped and processed
-                  self.stopRun()
-                  self.prepareForRun(self.stream.current_run_number())
-                  self._try_save_output()
-                  
-      except KeyboardInterrupt, upd_proc: # we can still update processed
-          skipped, processed = upd_proc.args
-          logging.error("Keyboard interruption caught! Aborting event "
-                       "processing.")
-          log_processed(skipped, processed)
-          raise
-      
-      logging.info("Event processing finished successfully.")
-      log_processed(skipped, processed)
-      from HLTTestApps import print_ros_hit_map
-      print_ros_hit_map(processed)
-      logging.info('Current state is "%s"' % self.state)
-      
-  def _run_aux(self, skipped, processed, total):
-    try:
-      for event in self.stream:
-        if skipped < self.skip_events:
-          logging.info("Skipping event %d" % skipped)
-          skipped += 1
-          if keep_processing(self.number_of_events, processed, total, skipped):
-            continue
-          else:
-            break
-        
-        event.check()
-
-        # update number of events read
-        processed += 1
-        
-        # modify the event if the user has requested.
-        for k in self.config.event_modifiers:
-          if event:
-            logging.debug1('---> Applying plugin %s <' % k.__module__)
-            event = k(event)
-            logging.debug1('---> Finished applying plugin %s <' % k.__module__)
-          else:
-            break
-          
-        if not event:
-          if keep_processing(self.number_of_events, processed, total, skipped): 
-            continue
-          else:
-            break     
-        
-        logging.debug1('Processing event %d' % (event.lvl1_id()))  
-        # this will trigger the HLT processing
-        processed_event = self.process(event)
-        
-        if self.datawriter:
-          if processed_event:
-            self.datawriter.write(processed_event)
-          else:
-            logging.debug1('Event %d was REJECTED, not saved' % event.lvl1_id())
-        if not keep_processing(self.number_of_events, processed, total, skipped): 
-          break     
-    except PauseIterationException:
-      raise PauseIterationException, (skipped, processed) # update these 
-    except KeyboardInterrupt:
-      raise KeyboardInterrupt, (skipped, processed) # we can still update these
-    return skipped, processed
-
-  def interact(self):
-    """This will make the processor work in interactive mode"""
-    order = ['configure', 'connect', 'prepareForRun', 'start',
-             'stopRun', 'disconnect', 'unconfigure']
-    motions = {}
-    motions['LOADED']     = {'f': Processor.configure, 
-                             'b': None}
-    motions['CONFIGURED'] = {'f': Processor.connect, 
-                             'b': Processor.unconfigure}
-    motions['CONNECTED']  = {'f': Processor.prepareForRun, 
-                             'b': Processor.disconnect}
-    motions['PREPARED']   = {'f': Processor.run,
-                             'b': Processor.stopRun}
-    
-    while True:
-      prompt = ("State is '%s' (<f>orward, <b>ackward, " 
-                "<p>rompt, e<x>ec, <h>elp, <#>comment, <e>xit)?\n")
-      action = raw_input(prompt % self.state).strip()
-      action = action.split(' ', 1)
-
-      if not action[0]: continue
-      if action[0][0] not in ('f', 'b', 'e', 'p', 'x', '#', 'h'):
-        logging.warning('Invalid command => `%s\'' % action[0][0])
-      
-      elif action[0][0] == 'h':
-        logging.info('Valid commands are:')
-        logging.info('\t<f>: move forward to the next state in chain')
-        logging.info('\t<b>: move backward to the previous state in chain')
-        logging.info('\t<e>: exit the program')
-        logging.info('\t<x>: execute file with python commands')
-        logging.info('\t<#>: ignore this line')
-        logging.info('\t<h>: print this help message')
-        logging.info('Assumed State Transition chain order is: %s' % \
-            ', '.join(order))
-
-      elif action[0] == 'e': return
-      elif action[0] == 'p':
-        
-        # Prepare for interative prompt (from athena.py)
-        logging.info('Interactive mode: Use Ctrl-D to resume')
-
-        # readline support
-        import os, sys, atexit, readline, rlcompleter
-
-        readline.parse_and_bind( 'tab: complete' )
-        readline.parse_and_bind( 'set show-all-if-ambiguous On' )
-
-        # history support
-        fhistory = os.path.expanduser( '~/.athena.history' )
-        if os.path.exists( fhistory ):
-          readline.read_history_file( fhistory )
-        readline.set_history_length( 1024 )
-        atexit.register( readline.write_history_file, fhistory )
-        
-        del atexit, readline, rlcompleter
-
-        # use of shell escapes in interactive mode
-        import AthenaCommon.ShellEscapes as ShellEscapes
-        sys.excepthook = ShellEscapes.ShellEscapes()
-        del ShellEscapes
-
-        # Ready to drop into the interactive prompt
-        HLTTestApps.python_prompt();
-
-      elif action[0] == 'x':
-        try:
-          HLTTestApps.python_exec(' '.join(action[1:]))
-        except Exception, e:
-          logging.warning('Error executing command: `%s\'' % ' '.join(action[1:]))
-
-      elif action[0][0] == '#':
-        continue
-      
-      else:
-        # try move
-        if motions[self.state][action[0][0]]: 
-          param = (self, action[1]) if len(action) == 2 else (self,)
-          motions[self.state][action[0][0]](*param)
-        else:
-          act = 'backward' if action[0][0] == 'b' else 'forward'
-          logging.warning('Moving %s is not allowed from state %s.' % 
-                          (act, self.state))
-  
-  def _try_save_output(self):
-    if self.config.do_save_output():
-      dir, fncore = self.config.parsed_out_data_filename()
-      self.datawriter = self.stream.datawriter(dir,fncore,self.use_compression)
-    else:
-      self.datawriter = None
-
-  def _try_debug(self, stage):
-    if not self.interactive and self.debug_stage == stage:
-      HLTTestApps.hook_debugger()
-
-  def _check_fatal(self):
-    """
-    Check whether the process is in a fatal state and, if so, raise the 
-    corresponding exception
-    """
-    if self.fatal: 
-      raise self.fatal
-  
-  def _transit(self, pre, trans, post, args):
-    """
-    Execute the transition with name trans to get from the state pre to the 
-    state post.
-    """
-    self._try_debug(trans)
-    
-    self._check_fatal() ## check whether the processor is in a fatal state 
-    
-    logging.debug1('Asked to change state to "%s" from "%s" using trans "%s()"'
-                   % (post, self.state, trans))
-    
-    retval = False
-    if self.state == pre:
-      
-      if going_up(trans): # transit infrastructure first
-        self._transit_infrastructure(trans)
-      
-      logging.info("Processor is going to %s" % trans)
-      start = time.time()
-      retval = getattr(self.impl, trans)(args)
-      total = time.time() - start
-      
-      if not going_up(trans): # transit infrastructure last
-        self._transit_infrastructure(trans)
-      
-      if retval: 
-        self.state = post
-      else:
-        raise FSMTransitionError, 'Could not execute %s() ' % (trans)
-      logging.info('Current state is "%s" (%s() took %.2f s)' % (self.state, 
-                                                                 trans, total))
-    else:
-      raise FSMTransitionError, 'Cannot %s() when state is %s' % (trans, 
-                                                                  self.state)
-  
-    self._check_fatal()  # we check it again because otherwise the main flow of 
-                        # execution would only get a chance to exit on the next 
-                        # state transition attempt
-    return retval
-  
-  def _transit_infrastructure(self, trans):
-    if getattr(self.infrastructure, trans)():
-      logging.debug1('Successfully executed transition "%s" on %s' 
-                     % (trans, self.infrastructure.NAME))
-    else:
-      logging.warning('Transition "%s" unsuccessful on %s. Trying to continue.' 
-                      % (trans, self.infrastructure.NAME))
-      
-
-################################################################################
-#                                   Tests                                      #
-################################################################################
-
-import unittest, string, random, glob, os, re
-from pausable_istream import pausable_istream
-from infrastructure import infrastructure as dummy_infrastructure
-from configuration import configuration, run_number_error, dummy_configuration
-from option import file_opt_spec
-
-class dummy_processor(Processor):
-  def __init__(self, input_stream, run_number = 0):
-    self.infrastructure = dummy_infrastructure(None)
-    self.stream = input_stream
-    self.run_number = run_number
-    self.rewind = False
-    self.ostream = None
-    self.save_output = ''
-    self.state = 'LOADED'
-    self.event_modifier = []
-    self.interactive = False
-    self.debug_stage = None
-    self.skip_events = 0
-    self._add_config_specific_stuff()
-  def _add_config_specific_stuff(self):
-    self.config = dummy_configuration()
-    self.config.event_modifiers = []
-    self.config.do_save_output = lambda: False
-  def _check_fatal(self):
-    pass
-  def prepareForRun(self):
-    runn = (self.run_number if self.run_number != 0
-                            else self.stream.current_run_number())
-    logging.info('Setting run number to %d' % runn)
-    self._transit('CONNECTED', 'prepareForRun', 'PREPARED', [])
-  def _transit(self, condition, method, post, *args):
-    logging.info('dummy transition: %s' % method)
-    self.state = post
-  def process(self, event):
-    pass  
-
-class pausable_istream_tests(unittest.TestCase):
-  def setUp(self):
-    self.stream = pausable_istream(filelist)
-    self.processor = dummy_processor(self.stream)
-    logging.getLogger().setLevel(logging.INFO)
-  def test_run_one(self):
-    self.aux_test_run_n(1)
-  def test_run_all(self):
-    self.aux_test_run_n(0)
-  def test_run_50(self):
-    self.aux_test_run_n(50)
-  def test_run_100(self):
-    self.aux_test_run_n(100)
-  def test_run_101(self):
-    self.aux_test_run_n(101)
-  def test_run_200(self):
-    self.aux_test_run_n(200)
-  def test_run_399(self):
-    self.aux_test_run_n(399)
-  def test_run_400(self):
-    self.aux_test_run_n(400)
-  def test_run_798(self):
-    self.aux_test_run_n(798)
-  def aux_test_run_n(self, n):
-    logging.info('running through %s event(s)', 'all' if n < 0 else n)
-    self.processor.number_of_events = n
-    self.processor.run()
-    
-class dummy_stream:
-  def current_run_number(self):
-    return 0
-
-class processor_tests(unittest.TestCase):
-  jops = 'TrigExMTHelloWorld/MTHelloWorldOptions.py'
-  def setUp(self):
-    self._setup_cli_args()
-    self._init_proc()
-  def tearDown(self):
-    self.processor.tearDown()
-    self._assertState('LOADED')
-  def test_run_number_required(self):
-    self.processor.config['run-number'] = 0
-    self.processor.config.stream = dummy_stream()
-    self.assertRaises(run_number_error, self.processor.prepareForRun, "0")
-  def testStopStart(self):
-    self._test_init()
-    self._test_configure()
-    self._test_connect()
-    self._test_prepare("177531")
-    self._test_run()
-    self.processor.stopRun()
-    self._test_prepare("105200")
-    self._test_run()
-  def _setup_cli_args(self):
-    self.cli_args = ["-n", '10'] + self._typical_cli_args()
-  def _typical_cli_args(self):
-    return ["-f", repr(filelist), '-M', self.jops]
-  def _assertState(self, state):
-    self.assertEquals(self.processor.state, state)
-  def _init_proc(self):
-    self.processor = Processor(configuration(file_opt_spec, self.cli_args))
-  def _test_init(self):
-    self._assertState('LOADED')
-  def _test_configure(self):
-    self.processor.configure()
-    self._assertState('CONFIGURED')
-  def _test_connect(self):
-    self.processor.connect()
-    self._assertState('CONNECTED')
-  def _test_prepare(self, run_number=-1):
-    self.processor.prepareForRun(run_number)
-    self._assertState('PREPARED')
-  def _test_run(self):
-    self.processor.run()
-    self._assertState('PREPARED')
-    
-class datawriter_plain_processor_tests(processor_tests):
-  def setUp(self):
-    self.tmpdir = "/tmp"
-    self.tmpbasefilename = "tmpoutfile_athenaHLT_processor_test_"
-    self.fname = self._unique_filename()
-    super(datawriter_plain_processor_tests, self).setUp()
-  def tearDown(self):
-    super(datawriter_plain_processor_tests, self).tearDown()
-    for f in glob.glob("%s/%s*" % (self.tmpdir, self.tmpbasefilename)):
-      os.remove(f)
-  def test_save_output_attr(self):
-    regexp = "^%s/%s[a-zA-Z]*$" % (self.tmpdir, self.tmpbasefilename)
-    self.assertRegexpMatches(self.processor.save_output, regexp)
-  def test_save_output(self):
-    # test we get the expected output files after running
-    self._test_init()
-    self._test_configure()
-    self._test_connect()
-    self._test_prepare()
-    self._test_run()
-    self.processor.tearDown()
-    fre = "%s*" % self.fname
-    noutfiles = len(glob.glob(fre))
-    self.assertEqual(noutfiles, 2,
-                     "Expected to find 2 files matching '%s' but found %d"
-                     % (fre, noutfiles))
-  def _setup_cli_args(self):
-    self.cli_args = (["-o", self.fname,
-                      "-C", "HltEventLoopMgr.ForceHltAccept=True", # accept&save
-                      "-k", "295", "-n", "10"] # to move through all files
-                     + self._typical_cli_args())
-  def _unique_filename(self):
-    return "%s/%s%s" % (self.tmpdir, self.tmpbasefilename, 
-                        ''.join([random.choice(string.ascii_letters) 
-                                 for _ in range(8)]))
-
-class datawriter_conventional_processor_tests(processor_tests):
-  def setUp(self):
-    self.tmpdir = "/tmp"
-    self.tmpbasefilename = "tmpprojtag_processor_test"
-    super(datawriter_conventional_processor_tests, self).setUp()
-  def tearDown(self):
-    super(datawriter_conventional_processor_tests, self).tearDown()
-    for f in glob.glob("%s/%s*" % (self.tmpdir, self.tmpbasefilename)):
-      os.remove(f)
-  def _setup_cli_args(self):
-    self.cli_args = (["-O", ("{'dir': '%s', 'ProjectTag': '%s'}" 
-                             % (self.tmpdir, self.tmpbasefilename)),
-                      "-C", "HltEventLoopMgr.ForceHltAccept=True", # accept&save
-                      "-k", "140", "-n", "20", # to move through both files
-                      "-f", repr(extra_datafiles), '-M', self.jops])
-  def test_save_output_conventional(self):
-    # test we get the expected output files after running
-    self._test_init()
-    self._test_configure()
-    self._test_connect()
-    self._test_prepare()
-    self._test_run()
-    self.processor.tearDown()
-    # build expected substrings 
-    # we discard whatever comes before the first 8 digit sequence (run number)
-    # and everything after the lumiblock (_lb followed by 4 digits)
-    rexp = r"\d{8}.+_lb\d{4}"
-    expect_sub1 = re.search(rexp, os.path.basename(extra_datafiles[0])).group()
-    expect_sub2 = re.search(rexp, os.path.basename(extra_datafiles[1])).group()
-    # find actual filenames
-    actual_files = glob.glob("%s/%s*" % (self.tmpdir, self.tmpbasefilename))
-    self.assertEquals(len(actual_files), 2, "Expected to find 2 output files, "
-                                            "but found %d" % len(actual_files))
-    for f in actual_files:
-      self.assert_(expect_sub1 in f or expect_sub2 in f,
-                   "Found file '%s' which does not contain any of the expected "
-                   "substrings ('%s' and '%s')" % (f, expect_sub1, expect_sub2))
-
-
-def _test_in_subprocesss(test, headmsg, spanwmsg):
-  # announce spawning clearly
-  print ("\n%s\n%s %s\n%s %s\n%s\n" % (headmsg, headmsg, spawnmsg, headmsg, 
-                                     test, headmsg))
-  p = Process(target=test_main, args=([test],))
-  try: # spawn, run, join, etc.
-    p.start(); p.join()
-  except KeyboardInterrupt:
-    # unittest messes with Ctrl-C and we don't want child to go on alone
-    while p.is_alive():
-      try:
-        print '\nExplicitly terminating child\n'
-        p.terminate(); p.join()          
-      except KeyboardInterrupt: 
-        pass
-  # If this test  failed, exit already (otherwise go on)
-  if p.exitcode:
-    print "%s Test(s) failed in child process" % headmsg
-    sys.exit(p.exitcode)
-
-
-if __name__ == '__main__':
-  import sys
-  from multiprocessing import Process
-  from HLTTestApps import test_main
-  # we want to execute these test sets in separate processes, to ensure a clean
-  # athena/gaudi slate (otherwise things fail the second time around)
-  separate_tests = ('pausable_istream_tests',
-                    'processor_tests',
-                    'datawriter_plain_processor_tests.test_save_output_attr',
-                    'datawriter_plain_processor_tests.test_save_output',
-                    'datawriter_conventional_processor_tests.' # no comma 
-                    + 'test_save_output_conventional') # explicit same string
-  
-  spawnmsg = ("Spawning process for the test(s) below (to ensure a clean "
-              "athena/gaudi slate):")
-  headmsg = "!!!!!!"
-  
-  print "%s Running multiple tests in separate processes\n" % headmsg
-  for test in separate_tests:
-    _test_in_subprocesss(test, headmsg, spawnmsg)
-
-  print "\n%s Successfully ran multiple tests in separate processes\n" % headmsg
-
diff --git a/HLT/HLTTestApps/python/scripts/athenaHLT-select-PEB-stream.py b/HLT/HLTTestApps/python/scripts/athenaHLT-select-PEB-stream.py
deleted file mode 100755
index 106ce30964feb8dbdeb8f12adb85733993049c98..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/scripts/athenaHLT-select-PEB-stream.py
+++ /dev/null
@@ -1,205 +0,0 @@
-#!/usr/bin/env tdaq_python
-# Werner.Wiedenmann@cern.ch
-# select events for a given stream name from an input file and write them in an outfile
-# the output file obeys the conventions used by the SFO in P1
-
-import sys
-import os
-
-def peb_writer(argv):
-  """Runs the splitting routines"""
-
-  import eformat, logging
-  import EventApps.myopt as myopt
-
-  option = {}
-
-  # run mode options
-  option['start-event'] = {'short': 'a', 'arg': True,
-                           'default': 0,
-                           'group': 'Run mode',
-                           'description': 'Number of events which should be skippped from the begin'}
-
-  option['max-events'] = {'short': 'n', 'arg': True,
-                          'default': 0,
-                          'group': 'Run mode',
-                          'description': 'Maximum number of events in the output file. 0 means, all useful events from the input.'}
-
-  option['verbosity'] = {'short': 'v', 'arg': True,
-                         'default': logging.INFO,
-                         'group': 'Run mode',
-                         'description': 'Log verbosity'}
-
-  option['progress-bar'] = {'short': 'P', 'arg': False,
-                            'default': None,
-                            'group': 'Run mode',
-                            'description': 'Show progress bar when running interactively'}
-
-  option['output-dir'] = {'short': 'd', 'arg': True,
-                          'default': '.',
-                          'group': 'Run mode',
-                          'description': 'Directory in which the output file should be written'}
-
-  # stream tag options
-  option['stream-name'] = {'short': 's', 'arg': True,
-                           'default': 'DataScouting_05_Jets',
-                           'group': 'Stream Tag',
-                           'description': 'Name of stream which should be written out'}
-
-  option['project-tag'] = {'short': 'p', 'arg': True,
-                           'default': 'data18_13Tev',
-                           'group': 'Stream Tag',
-                           'description': 'Project tag which should be used for the output file'}
-
-  option['lumi-block'] = {'short': 'l', 'arg': True,
-                          'default': 0,
-                          'group': 'Stream Tag',
-                          'description': 'Lumiblock number used for the output file. Use 0 if multiple LB in file.'}
-
-  parser = myopt.Parser(extra_args=True)
-  for (k,v) in option.items():
-    parser.add_option(k, v['short'], v['description'], v['arg'], v['default'],v['group'])
- 
-  if len(sys.argv) == 1:
-    print parser.usage('global "%s" options:' % sys.argv[0])
-    sys.exit(1)
-
-  # process the global options
-  (kwargs, extra) = parser.parse(sys.argv[1:], prefix='global "%s" options:' % sys.argv[0])
-
-  # global defaults
-  logging.getLogger('').name = os.path.splitext(os.path.basename(sys.argv[0]))[0]
-  logging.getLogger('').setLevel(kwargs['verbosity'])
-
-  # input data stream
-  stream = eformat.istream(extra)
-  # input event counter
-  totalEvents_in = 0
-
-  # get metadata from inputfile
-  dr = eformat.EventStorage.pickDataReader(extra[0])
-
-  # parameters for building the output file name
-  runNumber       = dr.runNumber() 
-  outputDirectory = kwargs['output-dir']
-  streamName      = kwargs['stream-name']
-  projectTag      = kwargs['project-tag']
-  lumiBlockNumber = kwargs['lumi-block']  # if output file can have multiple lumi blocks, use 0 
-  applicationName = 'athenaHLT'
-  productionStep  = 'merge' # output file with multiple lumi blocks
-  streamType      = 'unknown' # the real stream type will be extracted from the matching stream tag
-
-  # check the output directory if it exists
-  if (not os.path.exists(outputDirectory)) or (not os.path.isdir(outputDirectory)): 
-    logging.fatal(' Output directory %s does not exist ' % outputDirectory)
-    sys.exit(1)
-
-  # output event counter
-  totalEvents_out = 0
-
-  # counter of skipped events 
-  totalEvents_skipped = 0
-
-  # Loop over events
-  for e in stream:
-    totalEvents_in += 1
-
-    # select events
-    if kwargs['start-event'] > 0:
-      kwargs['start-event'] -= 1
-      totalEvents_skipped += 1
-      continue
-
-    if kwargs['max-events'] > 0 and totalEvents_in >= kwargs['max-events']:
-      logging.info(' Maximum number of events reached : %d' % kwargs['max-events'])
-      break
-
-    # find StreamTags and see if there is a match
-    streamTags = e.stream_tag()
-    logging.debug(' === New Event nr = %s (Run,Global ID) = (%d,%d) === ' % (totalEvents_in,e.run_no(),e.global_id()))
-    for tag in streamTags:
-      if tag.name == streamName:
-        # the event should be written out        
-        logging.debug(' Matching event found for stream tag = %s' % tag)
-        logging.debug('      Stream Tag:Robs = %s' % [hex(r) for r in tag.robs])
-        logging.debug('      Stream Tag:Dets = %s' % [hex(d) for d in tag.dets])
-
-        # check the lumi block number from the event against the lumi block number defined for the file
-        # this check is only done if the lumi block number for the file is different from 0
-        if lumiBlockNumber > 0:
-          if e.lumi_block() != lumiBlockNumber:
-            logging.error(' Event (Run,Global ID) = (%d,%d) has a lumi block number %d,'
-                          ' which is different from LB = %d for the output file. Event skipped.' % 
-                          (e.run_no(),e.global_id(),e.lumi_block(),lumiBlockNumber))
-            continue
-
-        # check that all events have the same run number as the output file indicates otherwise skip event
-        if e.run_no() != runNumber:
-            logging.error(' Event (Run,Global ID) = (%d,%d) has a run number,'
-                          ' which is different from the run number = %d for the output file. Event skipped.' % 
-                          (e.run_no(),e.global_id(),runNumber))
-            continue
-
-        # set the overall tag type for the first match
-        if streamType != tag.type:
-          streamType = tag.type
-          logging.debug(' streamType set to = %s' % streamType)
-          # create the RAW output file name
-          outRawFile = eformat.EventStorage.RawFileName(projectTag,
-                                                        runNumber,
-                                                        streamType,
-                                                        streamName,
-                                                        lumiBlockNumber,
-                                                        applicationName,
-                                                        productionStep)
-          logging.debug(' set output file name = %s'% outRawFile.fileNameCore())
-
-          # create the output stream
-          ostream = eformat.ostream(directory=outputDirectory,
-                                    core_name=outRawFile.fileNameCore(),
-                                    run_number=dr.runNumber(), 
-                                    trigger_type=dr.triggerType(),
-                                    detector_mask=dr.detectorMask(), 
-                                    beam_type=dr.beamType(),
-                                    beam_energy=dr.beamEnergy())
-        
-        # decide what to write out
-        if streamType == 'physics' or streamType == 'express' or (len(tag.robs)==0 and len(tag.dets)==0):
-          # write out the full event fragment
-          pbev = eformat.write.FullEventFragment(e)  
-          logging.debug(' Write full event fragment ')
-        else:
-          # select ROBs to write out
-          rob_output_list = []
-          logging.debug(' Write partial event fragment ')
-          for rob in e: 
-            if rob.source_id().code() in tag.robs:
-              rob_output_list.append(rob)
-            if rob.source_id().subdetector_id() in tag.dets:
-              rob_output_list.append(rob)
-          # write out the partial event fragment
-          pbev = eformat.write.FullEventFragment()
-          pbev.copy_header(e)
-          for out_rob in rob_output_list: 
-            pbev.append_unchecked(out_rob)
-        
-        # put the event onto the output stream
-        ostream.write(pbev)
-        if (logging.getLogger('').getEffectiveLevel() > logging.DEBUG) and kwargs['progress-bar']:
-          sys.stdout.write('.')
-          sys.stdout.flush()
-
-        # increase output event counter
-        totalEvents_out += 1
-
-  # print final statistics
-  logging.info('Total number of events processed          = %d ' % totalEvents_in)
-  logging.info('Number of events skipped at the beginning = %d ' % totalEvents_skipped)
-  logging.info('Number of events written to output file   = %d ' % totalEvents_out)
-  if totalEvents_out > 0:
-    logging.info('Output file                               = %s ' % ostream.last_filename())   
-
-  sys.exit(0)
-
-if __name__ == "__main__":
-  peb_writer(sys.argv)
diff --git a/HLT/HLTTestApps/python/scripts/athenaHLT.py b/HLT/HLTTestApps/python/scripts/athenaHLT.py
deleted file mode 100755
index e1d02b82b7e3c68c889cffb0b060d45b8ee75957..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/scripts/athenaHLT.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-# $Id: athenaHLT.py 578197 2014-01-13 19:16:56Z ricab $
-# Ricardo Abreu <ricardo.abreu@cern.ch>
-
-"""true"
-
-### Ugly hack to preload certain libraries
-### (typically malloc)
-
-python_path=`which python`
-
-preload=`which hlt_test_apps_preload.sh`
-if [ -z preload ]; then
-    echo "hlt_test_apps_preload.sh was not found >&2"
-else
-    . "$preload"
-fi
-
-"exec" "$python_path" "-tt" "$0" "$@";
-
-"""
-
-from HLTTestApps import script_main
-from HLTTestApps.application import file_based
-
-if __name__ == '__main__':
-  script_main(file_based)
-  
diff --git a/HLT/HLTTestApps/python/scripts/hlt_test_apps_preload.sh b/HLT/HLTTestApps/python/scripts/hlt_test_apps_preload.sh
deleted file mode 100755
index 90fe701fc638ee7cd3f696b79c3395f63709b95a..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/scripts/hlt_test_apps_preload.sh
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/bin/sh
-
-
-export USETCMALLOC=true
-export USEIMF=true
-export LEAKCHECK=false
-export TCMALLOC_LIB="libtcmalloc_minimal.so"
-export IMF_LIB1="libimf.so"
-export IMF_LIB2="libintlc.so.5"
-export ADD_PRELOAD
-
-for a in ${@}
-do
-    if [[ "$a" = "--leak-check"* ]] || [ "$a" = "-Q" ] ; then
-        LEAKCHECK=true
-    elif [ "$a" = "--tcmalloc" ]; then
-        USETCMALLOC=true
-    elif [ "$a" = "--stdcmalloc" ]; then
-        USETCMALLOC=false
-    elif [ "$a" = "--imf" ]; then
-        USEIMF=true
-    elif [ "$a" = "--stdcmath" ]; then
-        USEIMF=false
-    elif [ "$a" = "--no-ers-signal-handlers" ]; then
-        export TDAQ_ERS_NO_SIGNAL_HANDLERS=1
-    elif [[ "$a" = "--preloadlib"* ]] ; then
-        ADD_PRELOAD=${a#*=}
-        if [ "$a" = "--preloadlib" ] ; then
-            echo "ERROR: option --preloadlib needs to be specified with an equals sign (e.g. --preloadlib=foobar.so)"
-            exit 1
-        fi
-    fi
-done
-
-if [ $USETCMALLOC == true ]; then
-    if [ $LEAKCHECK == true ]; then
-        echo 'WARNING: cannot use tcmalloc and do leak check simultaneously. Will use libc malloc instead'
-        USETCMALLOC=false
-    elif [ -z TCMALLOCDIR ]; then
-        echo "WARNING: TCMALLOCDIR not defined. Will use libc malloc instead"
-        USETCMALLOC=false
-    fi
-fi
-
-if [ $USETCMALLOC == true ]; then
-    if [ ! -e "$TCMALLOCDIR/$TCMALLOC_LIB" ]; then
-        echo "ERROR: $TCMALLOCDIR/$TCMALLOC_LIB does not exist"
-        exit 1
-    else
-        echo "Preloading $TCMALLOC_LIB"
-        export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$TCMALLOCDIR"
-        
-        # if 32 bit binaries on an 64 bit OS are used add also the path to the 64 bit tcmalloc version
-        # this may be needed in subshells which are opened by the code  
-        if [ `echo $CMTCONFIG | cut -d '-' -f1` == "i686" ]; then
-            echo "Preloading also 64 bit version of $TCMALLOC_LIB"
-            cmtconfig64=`echo $CMTCONFIG | sed s/i686/x86_64/`
-            export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$TCMALLOCDIR/../../$cmtconfig64/lib"
-        fi
-        
-        if [ -z $LD_PRELOAD ]; then
-            export LD_PRELOAD="$TCMALLOC_LIB"
-        else
-            export LD_PRELOAD="$TCMALLOC_LIB:$LD_PRELOAD"
-        fi
-    fi
-fi
-
-if [ $USEIMF == true ]; then
-fullimf1="$ATLASMKLLIBDIR_PRELOAD/$IMF_LIB1"
-fullimf2="$ATLASMKLLIBDIR_PRELOAD/$IMF_LIB2"
-    if [ ! -e "$fullimf1" ]; then
-        echo "ERROR: $fullimf1 does not exit"
-        exit 1
-    elif [ ! -e "$fullimf2" ]; then
-        echo "ERROR: $fullimf2 does not exit"
-        exit 1
-    else
-        echo "Preloading $IMF_LIB1"
-        echo "Preloading $IMF_LIB2"
-        if [ -z $LD_PRELOAD ]; then
-            export LD_PRELOAD="$fullimf1:$fullimf2"
-        else
-            export LD_PRELOAD="$fullimf1:$fullimf2:$LD_PRELOAD"
-        fi
-    fi
-fi
-
-# optionally add user-specific preload library
-if [ "x$ADD_PRELOAD" != "x" ] ; then
-    echo "Preloading $ADD_PRELOAD"
-    if [ -z $LD_PRELOAD ]; then
-        export LD_PRELOAD="$ADD_PRELOAD"
-    else
-        export LD_PRELOAD="$ADD_PRELOAD:$LD_PRELOAD"
-    fi
-else
-    unset ATHENA_ADD_PRELOAD
-fi
diff --git a/HLT/HLTTestApps/python/scripts/ros2rob_from_partition.py b/HLT/HLTTestApps/python/scripts/ros2rob_from_partition.py
deleted file mode 100755
index d153e8489c5a7faf6959ec85ad316b73965b61e6..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/scripts/ros2rob_from_partition.py
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-import eformat
-from pm.project import Project
-from argparse import ArgumentParser
-from types import MethodType
-from sys import stdout, stderr
-
-# get the arg parser
-def argparser():
-  parser = ArgumentParser(description='Produce a ros2rob map, as a python '
-                                      'dictionary, from a given partition.')
-  parser.add_argument('--database_file', '-d', required=True, 
-                      help='A partition filename (e.g. ATLAS.data.xml).')
-  parser.add_argument('--partition', '-p', required=True,
-                      help='A partition filename. The name of the partition '
-                           'that is read from pfile (e.g. ATLAS).')
-  parser.add_argument('--output_file', '-o',
-                      help='The output filename. The name of the file to which '
-                           'the ros2rob map is written. If omitted, stdout is '
-                           'used (e.g. myros2rob.py).')
-  make_parser_print_help_on_error(parser)
-  return parser
-
-def make_parser_print_help_on_error(parser):
-  """
-  Alter an ArgumentParser so that it shows a help msg whenever there is an 
-  error in the command line
-  """
-  def error(self, msg):
-    print >> stderr, 'error: %s\n' % msg
-    self.print_help()
-    exit(2)
-  parser.error = MethodType(error, parser)
-
-def get_roses(pfname, pname):
-  """
-  Get all the ROSes in the partition
-  """
-  return Project(pfname).getObject('Partition', pname).get('ROS')
-
-def get_ros2rob(roses):
-  """
-  Get the ros2rob map from the ROS list
-  """
-  ros2rob = {}
-  for ros in roses:
-    if ros.id in ros2rob:
-      print >> stderr, ("WARNING: %s is repeated in the partition: ignoring "
-                        "second occurrence")
-    else:
-      ros2rob[ros.id] = get_robs(ros)
-  return ros2rob
-
-
-def get_robs(ros):
-  """
-  Get the list of ROBs that correspond to a ROS
-  """
-  return [eformat.helper.SourceIdentifier(rol.Id).code() 
-          for robin in ros.Contains for rol in robin.Contains]
-
-def print_ros2rob(ros2rob, out):
-  """
-  Print the ros2rob map as an easily readable/editable python dictionary
-  """
-  print >> out, "ros2rob = {"
-  count = 0
-  for k, v in ros2rob.iteritems():
-    count += 1
-    print >> out, "\t'%s': \n\t[" % k
-    for i in range(len(v)):
-      print >> out, "\t\t%s" % hex(v[i]), 
-      if i+1 != len(v):
-        print >> out, ","
-      else:
-        print >> out, "\n\t]",
-    if count != len(ros2rob):
-      print >> out, ","
-  print >> out, "\n}"
-
-# main
-if __name__ == '__main__':
-  args = argparser().parse_args()
-  out = open(args.output_file, 'w') if args.output_file else stdout
-  print >> stderr, "# Extracting ROS2ROB map"
-  print >> out, "# ROS2ROB map extracted from %s:" % args.database_file
-  print_ros2rob(get_ros2rob(get_roses(args.database_file, args.partition)), out)
diff --git a/HLT/HLTTestApps/python/tests/test_app.sh b/HLT/HLTTestApps/python/tests/test_app.sh
deleted file mode 100755
index 0f22c958f453798ba810be6b8164215e99a89a79..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/tests/test_app.sh
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/bin/bash 
-# author Andre Anjos <andre.dos.anjos@cern.ch>
-# author Ricardo Abreu <ricardo.abreu@cern.ch>
-
-# Runs, in sequence, a few athenaMT.py tests
-
-# temporary solution
-DATADIR="/afs/cern.ch/work/r/ricab/datafiles/"
-DATAFILE="--file $DATADIR/2012-05-04VALAllPT_physicsV4-1.only3events.data"
-export PYTHONPATH="$DATADIR:$PYTHONPATH" # so that the robhit module is found
-
-#DEBUG=-l 'DEBUG'
-#DEBUG=-l 'INFO,ERROR'
-
-i=1
-function runtest() {
-  echo "==============================================================="
-  echo "$i) Options are [$*]"
-  echo "==============================================================="
-  echo 
-  athenaHLT.py $*
-  ret=$?
-  echo
-  echo "=========================================="
-  echo "$i) The status output of this test is $ret"
-  echo "=========================================="
-  echo
-  if [ $ret -ne 0 ]; then
-    exit $ret
-  else
-    i=$((i+1))
-  fi
-}
-
-
-# This test tries to perform a basic run of athenaHLT
-runtest $DEBUG $DATAFILE -n5 TrigExMTHelloWorld/MTHelloWorldOptions.py
-                         
-# This test tries to run with --tcmalloc
-runtest $DEBUG $DATAFILE --tcmalloc TrigExMTHelloWorld/MTHelloWorldOptions.py
-
-# This test tries to run with --leak-check-execute
-runtest $DEBUG $DATAFILE --leak-check-execute \
-                         TrigExMTHelloWorld/MTHelloWorldOptions.py
-
-# This test tries to run with --tcmalloc and --leak-check-execute
-# simultaneously, which mustn't be possible. A warning should be printed 
-# informing the user that libc malloc is chosen instead
-runtest $DEBUG $DATAFILE --tcmalloc --leak-check-execute\
-                         TrigExMTHelloWorld/MTHelloWorldOptions.py
-
-# try to apply the print_event_header plugin; force accept all events
-runtest $DEBUG $DATAFILE --postcommand 'HltEventLoopMgr.ForceHltAccept=True'\
-                         -Z 'HLTTestApps.plugins.print_event_header'\
-                         TrigExMTHelloWorld/MTHelloWorldOptions.py
-
-# try to apply the fill_empty plugin; force accept all events
-runtest $DEBUG $DATAFILE --postcommand 'HltEventLoopMgr.ForceHltAccept=True'\
-                         -Z 'HLTTestApps.plugins.fill_empty'\
-                         TrigExMTHelloWorld/MTHelloWorldOptions.py
-
-# try to apply the remove_nonlisted plugin; force accept all events
-runtest $DEBUG $DATAFILE --postcommand 'HltEventLoopMgr.ForceHltAccept=True'\
-                         -Z 'HLTTestApps.plugins.remove_nonlisted'\
-                         TrigExMTHelloWorld/MTHelloWorldOptions.py
-
-# try to apply the remove_nonlisted and truncate plugins; force accept all events
-runtest $DEBUG $DATAFILE --postcommand 'HltEventLoopMgr.ForceHltAccept=True'\
-                         -Z 'HLTTestApps.plugins.remove_nonlisted' \
-                         -Z 'HLTTestApps.plugins.truncate'\
-                         TrigExMTHelloWorld/MTHelloWorldOptions.py
-                         
-runtest $DEBUG $DATAFILE -n5 -M -W TrigExMTHelloWorld/MTHelloWorldOptions.py
diff --git a/HLT/HLTTestApps/python/tests/test_lib.sh b/HLT/HLTTestApps/python/tests/test_lib.sh
deleted file mode 100755
index fd33926d01cd3720b4d154eb20d0250b4e89357b..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/python/tests/test_lib.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash
-# author Andre Anjos <andre.dos.anjos@cern.ch>
-# author Ricardo Abreu <ricardo.abreu@cern.ch>
-
-thisdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd -P )"
-testdir="$thisdir/../HLTTestApps"
-echo $testdir
-
-function runtest()
-{
-  echo
-  echo "==============================================================="
-  echo "Running "$@" tests"
-  echo "==============================================================="
-  echo 
-  python "$testdir/$@"
-  ret=$? 
-  echo
-  echo "============================================"
-  echo "The status output of this set of tests is $ret"
-  echo "============================================"
-  echo
-  if [ $ret -ne 0 ]; then
-    exit $ret
-  fi
-}
-
-targets=( "option.py" "pausable_istream.py" "configuration.py" "infrastructure.py" "online_infrastructure.py" "processor.py")
-                     
-for tgt in "${targets[@]}" 
-do
-  runtest $tgt
-done
-
diff --git a/HLT/HLTTestApps/src/Event.cxx b/HLT/HLTTestApps/src/Event.cxx
deleted file mode 100644
index d717abfe63ca4bb5908c662d458bb815944d7ff5..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/src/Event.cxx
+++ /dev/null
@@ -1,825 +0,0 @@
-//Dear emacs, this is -*- c++ -*-
-
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-
-/**
- * @file HLTTestApps/src/Event.cxx
- * @author <a href="mailto:Andre.dos.Anjos@cern.ch">Andre DOS ANJOS</a> 
- * $Author: ricab $
- * $Revision: 64 $
- * $Date: 2013-06-24 20:16:17 +0200 (Mon, 24 Jun 2013) $
- *
- * Implements all the Event functionality
- */
-
-#include <chrono>
-#include <sstream>
-#include <algorithm>
-#include <array>
-#include <execinfo.h>
-#include <cstdlib>
-#include <stdlib.h>
-#include <boost/python.hpp>
-#include <boost/python/stl_iterator.hpp>
-#include "issue.h"
-#include "Event.h"
-#include "L1_ROBs.h"
-#include "eformat/eformat.h"
-#include "eformat/index.h"
-#include "eformat/SourceIdentifier.h"
-
-#ifndef NDEBUG
-
-#define DEBUG_WARN_NO_ROB(l1id, robid) \
-  do { debug_warn_no_rob(l1id, robid); } while(false)
-#define DEBUG_PRINT_ROB_ROS_MAP \
-  do { debug_print_rob_ros_map(); } while(false)
-#define DEBUG_OUT_ROBINFOS(data) \
-  do { debug_out_robinfos(data); } while(false)
-#define DEBUG_PRINT_HIT_ROSES \
-  do { debug_print_hit_roses(); } while(false)
-#define DEBUG_PRINT_L1R_ROBS \
-  do { debug_print_l1r_robs(); } while(false)
-
-#else
-
-#define DEBUG_WARN_NO_ROB(l1id, robid) {}
-#define DEBUG_PRINT_ROB_ROS_MAP {}
-#define DEBUG_OUT_ROBINFOS(data) {}
-#define DEBUG_PRINT_HIT_ROSES {}
-#define DEBUG_PRINT_L1R_ROBS {}
-
-#endif
-
-using namespace boost::python;
-using namespace std::chrono;
-using time_point = time_point<steady_clock>;
-using std::vector;
-using std::string;
-using std::map;
-using std::array;
-using std::find;
-
-namespace
-{
-
-#pragma GCC diagnostic ignored "-Wunused-function"
-  void debug_warn_no_rob(uint32_t l1id, uint32_t robid)
-  {
-    if(ers::debug_level() > 0)
-    {
-      boost::format msg("Event with LVL1 id=%lu does NOT contain ROB 0x%08x");
-      ERS_DEBUG(1, (msg % l1id % robid).str());
-    }
-  }
-
-#pragma GCC diagnostic ignored "-Wunused-function"
-  void debug_out_robinfos(const std::vector<hltinterface::DCM_ROBInfo>& data)
-  {
-    if(ers::debug_level() >= 2)
-    {
-      for(const auto& rob : data)
-      {
-        boost::format rmsg("0x%08x");
-
-        auto millis0 = duration_cast<milliseconds>(
-            rob.robRequestTime.time_since_epoch()).count();
-        auto millis1 = duration_cast<milliseconds>(
-            rob.robDeliveryTime.time_since_epoch()).count();
-        auto deltamillis = duration_cast<milliseconds>(
-            rob.robDeliveryTime - rob.robRequestTime).count();
-
-        ERS_DEBUG(2, "Output ROBInfo:\n[ROB ID: "
-                     << (rmsg % rob.robFragment.rob_source_id()).str()
-                     << ", cached: " << rob.robIsCached
-                     << ", robRequestTime: " << millis0
-                     << " milliseconds since epoch, robDeliveryTime: "
-                     << millis1 << " milliseconds since epoch (elapsed time = "
-                     << deltamillis << "ms)]");
-      }
-    }
-  }
-
-  template <typename LIST>
-  string to_string_list(const LIST& l)
-  {
-    std::ostringstream oss;
-    oss << std::hex << "[";
-    if(!l.empty())
-    {
-      oss << "0x";
-      std::copy(begin(l), --end(l),
-          std::ostream_iterator<typename LIST::value_type>(oss, ", 0x"));
-      oss << *--end(l); // add last one without comma
-    }
-    oss << std::dec << ']';
-    return oss.str();
-  }
-}
-
-// Static attributes
-HLTTestApps::Event::ROB2ROSMap HLTTestApps::Event::sm_rob2ros{};
-HLTTestApps::Event::ROSHitMap  HLTTestApps::Event::sm_rosHitMap{};
-HLTTestApps::Event::ROSHitMap  HLTTestApps::Event::sm_rosHitMapReject{};
-HLTTestApps::Event::ROSHitMap  HLTTestApps::Event::sm_rosHitMapAccept{};
-std::set<HLTTestApps::Event::ROBID> HLTTestApps::Event::sm_l1r_robs{};
-std::vector<int> HLTTestApps::Event::sm_eventsForROSStat{};
-int HLTTestApps::Event::sm_strategy{};
-std::ofstream HLTTestApps::Event::sm_ros_rejected_outfile{};
-std::ofstream HLTTestApps::Event::sm_ros_accepted_outfile{};
-
-enum RosHitMapIndex {
-  // total number of ROBs in ROS
-  rh_number_of_robs=0,
-  // for all events: average number of hits/evt., average fraction of ROBs retrieved/evt., average size in words retrieved/evt.
-  rh_all_hit_fra=1,
-  rh_all_rob_fra=2,
-  rh_all_rob_siz=3,
-  // normal collect (no evt. building): average number of hits/evt., average fraction of ROBs retrieved/evt., average size in words retrieved/evt.
-  rh_normal_hit_fra=4,
-  rh_normal_rob_fra=5,
-  rh_normal_rob_siz=6,
-  // collect for evt. building: average number of hits/evt., average fraction of ROBs retrieved/evt., average size in words retrieved/evt.
-  rh_evbld_hit_fra=7,
-  rh_evbld_rob_fra=8,
-  rh_evbld_rob_siz=9,
-  // total size of rosHitMap per ROS
-  rh_total_size=10
-};
-
-enum RosHitMapIndexPerEvent {
-  // total number of ROBs in ROS
-  rh_number_ev_of_robs=0,
-  // for all events: average number of hits/evt., average fraction of ROBs retrieved/evt.
-  rh_all_ev_hit_fra=1,    // for single event 
-  rh_all_ev_rob_fra=2,    // for single event
-  rh_all_ev_rob_siz=3,  // for single event
-  // normal collect (no evt. building): average number of hits/evt., average fraction of ROBs retrieved/evt.
-  rh_normal_ev_hit_fra=4, // for single event
-  rh_normal_ev_rob_fra=5, // for single event
-  rh_normal_ev_rob_siz=6,  // for single event
-  // collect for evt. building: average number of hits/evt., average fraction of ROBs retrieved/evt.
-  rh_evbld_ev_hit_fra=7, // for single event
-  rh_evbld_ev_rob_fra=8, // for single event
-  rh_evbld_ev_rob_siz=9,  // for single event
-  // total size of rosHitMap per ROS per event
-  rh_total_ev_size=10
-};
-
-enum EventCounterIndex {
-  // total number of rejected events
-  rh_count_reject=0,
-  // total number of accepted events
-  rh_count_accept=1,
-  // total number of accepted events
-  rh_count_size=2
-};
-
-// Static method
-void HLTTestApps::Event::set_ros2rob_map(const boost::python::dict& d)
-{
-  sm_rob2ros.clear();
-  sm_rosHitMap.clear();
-  sm_rosHitMapReject.clear();
-  sm_rosHitMapAccept.clear();
-  sm_eventsForROSStat.clear();
-
-  // initialize event counter
-  sm_eventsForROSStat.assign(rh_count_size,0);
-
-  // get begin and end iterators to the python dictionary's keys
-  stl_input_iterator<ROSID> itros{d}, endros{};
-
-  // for each ROSID in the dictionary...
-  std::for_each(itros, endros,
-                [&d](ROSID rosid){
-
-    // ... initialize ROS hit map
-    sm_rosHitMap[rosid]       = std::vector<float>(rh_total_ev_size,0.0);
-    sm_rosHitMapReject[rosid] = std::vector<float>(rh_total_size,0.0);
-    sm_rosHitMapAccept[rosid] = std::vector<float>(rh_total_size,0.0);
-
-    // ... get begin and end iterators to the list of corresponding ROBIDs
-    stl_input_iterator<ROBID> itrob1{extract<list>(d.get(rosid))()},
-                              endrob{};
-
-    // ... fill in the ROB2ROS map and get the number of ROBs in this ROS 
-    std::for_each(itrob1, endrob,
-                  [rosid](ROBID robid){
-		    sm_rob2ros[robid] = rosid;
-		    (sm_rosHitMap[rosid])[rh_number_ev_of_robs]    += 1.;
-		    (sm_rosHitMapReject[rosid])[rh_number_of_robs] += 1.;
-		    (sm_rosHitMapAccept[rosid])[rh_number_of_robs] += 1.;
-		  });
-  });
-
-  // open output files for ROS statistics
-  if ((ers::debug_level() > 0) && (!sm_rob2ros.empty())) {
-    std::ostringstream out_reject_filename, out_accept_filename;
-    out_reject_filename << "ROS-rejected-events.txt";
-    out_accept_filename << "ROS-accepted-events.txt";
-    sm_ros_rejected_outfile.open((out_reject_filename.str()).c_str());
-    sm_ros_accepted_outfile.open((out_accept_filename.str()).c_str());
-    }
-  DEBUG_PRINT_ROB_ROS_MAP;
-}
-
-// Static method
-void HLTTestApps::Event::set_l1r_robs(const boost::python::list& l)
-{
-  // get begin and end iterators to the python list
-  stl_input_iterator<ROBID> itros{l}, endros{};
-
-  sm_l1r_robs.clear();
-  std::copy(itros, endros, std::inserter(sm_l1r_robs, begin(sm_l1r_robs)));
-
-  DEBUG_PRINT_L1R_ROBS;
-}
-
-// Static method
-void HLTTestApps::Event::set_dcm_strategy(const boost::python::list& s)
-{
-  // get begin and end iterators to the python list
-  stl_input_iterator<int> itros{s}, endstrategy{};
-
-  // ROS prefetching strategy 
-  //  0 = strategy as in Run 1,i.e. use of the prefetching list only when a ROB is needed 
-  //  1 = strategy as at begin of Run 2, i.e. immediate retrieval of all ROBs on the prefetching list
-  sm_strategy = *itros;
-  ERS_DEBUG(1, " DCM prefetching strategy set to " << sm_strategy);
-}
-
-HLTTestApps::Event::Event(const eformat::read::FullEventFragment& event)
- : hltinterface::DataCollector()
-{
-  m_lvl1_id = event.lvl1_id();
-  
-  std::ostringstream ost; 
-  ost << "=== EVENT:  LVL1 id " 
-      << " Run / Event / Lvl1id = " << event.run_no() << " / " << event.global_id() << " / " << m_lvl1_id ; 
-  if (sm_ros_rejected_outfile.is_open()) sm_ros_rejected_outfile << ost.str() << std::endl;
-  if (sm_ros_accepted_outfile.is_open()) sm_ros_accepted_outfile << ost.str() << std::endl;
-
-  // Reset the ROB prefetching map
-  m_Det_Robs_for_retrieval.clear(); 
-  m_l1r.clear();
-  m_map.clear();
-
-  // Build a source_id based table-of-contents of this event
-  map<uint32_t, const uint32_t*> sid_toc;
-  eformat::helper::build_toc(event, sid_toc);
-
-  for(const auto& pair : sid_toc) {
-    auto sid = eformat::helper::SourceIdentifier(pair.first);
-    auto sdid = sid.subdetector_id();
-    switch (sdid) {
-      case eformat::TDAQ_BEAM_CRATE:
-      case eformat::TDAQ_SFI:
-      case eformat::TDAQ_SFO:
-      case eformat::TDAQ_LVL2:
-      case eformat::TDAQ_HLT:
-      case eformat::OTHER:
-        //we ignore these
-        break;
-
-      default:
-        auto robid = sid.simple_code();
-        if(find(begin(L1R_SDS), end(L1R_SDS), sdid) != end(L1R_SDS) ||
-           find(begin(L1R_ROBS), end(L1R_ROBS), robid) != end(L1R_ROBS) ||
-           find(begin(sm_l1r_robs), end(sm_l1r_robs), robid) !=end(sm_l1r_robs))
-        {
-          // these, we treat as Level-1 result robs
-          m_l1r.emplace_back(pair.second);
-        }
-        else
-        {
-          //these, we include in our internal data map for fast access
-          if(m_map.find(robid) != end(m_map))
-          {
-            boost::format msg("Found duplicate ROB id's (0x%08x) while "
-                              "configuring event with LVL1 id=%lu. I will "
-                              "ignore the current ROB fragment.");
-            msg % robid % m_lvl1_id;
-            ers::warning(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-          } 
-	  else if ((!sm_rob2ros.empty()) && (sm_rob2ros.find(robid)==sm_rob2ros.end())) 
-          {
-            boost::format msg("Found ROB id (0x%08x) while "
-                              "configuring event with LVL1 id=%lu, which is not in the provided ROS to ROB mapping. "
-                              "This ROB fragment will be ignored.");
-            msg % robid % m_lvl1_id;
-            ers::warning(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-	  }
-          else
-          {
-            m_map.insert(std::make_pair(robid, ROB{robid, pair.second, eformat::read::ROBFragment(pair.second).fragment_size_word()}));
-            // std::map::emplace still not available in gcc4.7.2
-            // m_map.emplace(robid, ROB{robid, it->second[k]});
-          }
-        }
-        break;
-    }
-  }
-}
-
-uint32_t HLTTestApps::Event::
-collect(std::vector<hltinterface::DCM_ROBInfo>& data,
-         const uint32_t lvl1_id,
-         const std::vector<uint32_t>& ids)
-{
-  auto t0 = steady_clock::now();
-  if(check_l1id(lvl1_id))
-  {
-    std::vector<uint32_t> ids_for_ros_collection;
-    ids_for_ros_collection.reserve(ids.size());
-
-    for(const auto& id : ids)
-    {
-      auto it = m_map.find(id);
-      if(it != m_map.end())
-      {
-        auto& rob = it->second;
-        data.emplace_back(rob.rob, is_cached(rob), t0, steady_clock::now());
-	if (!is_cached(rob)) ids_for_ros_collection.push_back(id);
-        rob.reserved = true; // it was already retrieved, so it should
-                             // be marked as cached next time around
-      }
-      else
-        DEBUG_WARN_NO_ROB(lvl1_id, id);
-    }
-
-    // couldn't use the previous loop for caching. Otherwise, would be marking
-    // as cached, robs that could still be added to the output, in a subsequent
-    // iteration
-    hit_roses(ids_for_ros_collection);
-
-    int n_additional_robs(0);
-    if (sm_strategy == 0) {
-      for(auto ros : m_hit_roses) {
-	// retrieve also all ROBs in the hit ROS into the cache which are
-	// on the prefetch list and mark them as retrieved
-	auto it_prefetch_ros = m_Det_Robs_for_retrieval.find(ros);
-	if (it_prefetch_ros != m_Det_Robs_for_retrieval.end()) {
-	  // mark all prefetch ROBs on the list for this ROS as retrieved
-	  for (const auto& it_prefetch_rob_id : it_prefetch_ros->second) {
-	    auto rob_prefetched = m_map.find(it_prefetch_rob_id);
-	    if(rob_prefetched != m_map.end() && !(rob_prefetched->second).reserved ) { 
-	      (rob_prefetched->second).reserved = true ;
-	      if (!sm_rob2ros.empty()) {
-		(sm_rosHitMap[ros])[rh_all_ev_rob_fra] += 1.;
-		(sm_rosHitMap[ros])[rh_normal_ev_rob_fra] += 1.;
-		(sm_rosHitMap[ros])[rh_all_ev_rob_siz] += (rob_prefetched->second).size_word ;
-		(sm_rosHitMap[ros])[rh_normal_ev_rob_siz] += (rob_prefetched->second).size_word ;
-	      }
-	      n_additional_robs++;
-	    } 
-	  }
-	  // reset the list of prefetch ROBs for this ROS
-	  (it_prefetch_ros->second).clear();
-	}
-      }
-    }
-    DEBUG_OUT_ROBINFOS(data);
-    return data.size();
-  }
-
-  return 0;
-}
-
-uint32_t HLTTestApps::Event::
-collect(std::vector<hltinterface::DCM_ROBInfo>& data,
-         const uint32_t lvl1_id)
-{
-  auto t0 = steady_clock::now();
-  if(check_l1id(lvl1_id))
-  {
-    // find out what ROSes are still needed for retrieval
-    // (do this before all elements are set to retrieved)
-    hit_roses();
-
-    for(auto& elem : m_map)
-    {
-      auto& rob = elem.second;
-      data.emplace_back(rob.rob, is_cached(rob), t0, steady_clock::now());
-      rob.reserved = true; // it was already retrieved, so it should
-                           // be marked as cached next time around
-    }
-
-    DEBUG_OUT_ROBINFOS(data);
-    return data.size();
-  }
-
-  return 0;
-}
-
-void HLTTestApps::Event::reserveROBData(const uint32_t lvl1_id,
-                                        const vector<uint32_t>& ids)
-{
-  if(check_l1id(lvl1_id))
-  {
-    // for old strategy (sm_strategy=1) the ROBs are immediately retrieved
-    std::vector<uint32_t> ids_for_ros_collection;
-    ids_for_ros_collection.reserve(ids.size());
-
-    for(auto id : ids)
-    {
-      auto it = m_map.find(id);
-      if(it != m_map.end())
-	if (sm_strategy == 0) {
-	  m_Det_Robs_for_retrieval[get_rosid(id)].insert(id);
-	  it->second.prefetched = true;
-	} else {
-	  // old strategy: immediately retrieve ROBs on prefetching list
-	  auto& rob = it->second;
-	  if (!is_cached(rob)) ids_for_ros_collection.push_back(id);
-	  it->second.reserved = true;
-	}
-      else
-        DEBUG_WARN_NO_ROB(lvl1_id, id);
-    }
-
-    // increase ROS hits for old strategy
-    if (sm_strategy == 1) {
-      hit_roses(ids_for_ros_collection);
-    }
-  }
-}
-
-void HLTTestApps::Event::hit_roses()
-{
-  m_hit_roses.clear();
-  std::for_each(begin(m_map), end(m_map),
-                [this](std::pair<uint32_t, ROB> elem){
-		  if (!is_cached(elem.second)) {
-		    m_hit_roses.insert(get_rosid(elem.first));
-		    if (!sm_rob2ros.empty()) {
-		      (sm_rosHitMap[get_rosid(elem.first)])[rh_all_ev_rob_fra] += 1.;
-		      (sm_rosHitMap[get_rosid(elem.first)])[rh_evbld_ev_rob_fra] += 1.;
-		      (sm_rosHitMap[get_rosid(elem.first)])[rh_all_ev_rob_siz] += (elem.second).size_word ;
-		      (sm_rosHitMap[get_rosid(elem.first)])[rh_evbld_ev_rob_siz] += (elem.second).size_word ;
-		    }
-		  }
-                });
-
-  // increase the ROS hit counter
-  if (!sm_rob2ros.empty()) {
-    for(const auto& ros : m_hit_roses) {
-      (sm_rosHitMap[ros])[rh_all_ev_hit_fra] += 1.;
-      (sm_rosHitMap[ros])[rh_evbld_ev_hit_fra] += 1.;
-    }
-  }
-
-  DEBUG_PRINT_HIT_ROSES;
-}
-
-void HLTTestApps::Event::hit_roses(const std::vector<ROBID>& robids)
-{
-  m_hit_roses.clear();
-  std::for_each(begin(robids), end(robids),
-                [this](uint32_t id){
-		  m_hit_roses.insert(get_rosid(id));
-		  if (!sm_rob2ros.empty()) {
-		    (sm_rosHitMap[get_rosid(id)])[rh_all_ev_rob_fra] += 1.;
-		    (sm_rosHitMap[get_rosid(id)])[rh_normal_ev_rob_fra] += 1.;
-		    auto rob = m_map.find(id);
-		    if(rob != m_map.end()) {
-		      (sm_rosHitMap[get_rosid(id)])[rh_all_ev_rob_siz] += (rob->second).size_word ;
-		      (sm_rosHitMap[get_rosid(id)])[rh_normal_ev_rob_siz] += (rob->second).size_word ;
-		    }
-		  }
-		});
-
-  // increase the ROS hit counter
-  if (!sm_rob2ros.empty()) {
-    for(const auto& ros : m_hit_roses) {
-      (sm_rosHitMap[ros])[rh_all_ev_hit_fra] += 1.;
-      (sm_rosHitMap[ros])[rh_normal_ev_hit_fra] += 1.;
-    }
-  }
-
-  DEBUG_PRINT_HIT_ROSES;
-}
-
-auto HLTTestApps::Event::get_rosid(ROBID robid) const -> ROSID
-{
-  auto it = sm_rob2ros.find(robid);
-  if(it != sm_rob2ros.end())
-    return it->second;
-
-  // by default, assume each subdetector corresponds to a ROS and work with that
-  return get_fake_rosid(robid);
-}
-
-auto HLTTestApps::Event::get_fake_rosid(ROBID robid) const -> ROSID
-{
-  if(!sm_rob2ros.empty())
-  {
-    boost::format msg("The ROB with ID 0x%08X is being collected, but it is "
-                      "not part of the ROS2ROB mapping. You probably provided "
-                      "a ROS2ROB mapping that is not in agreement with your "
-                      "data (not all ROBs are covered by the map). This could "
-                      "create problems online. You can compile in dbg mode and "
-                      "run with a high debug output level to get detailed "
-                      "printouts of the internal mapping and caching "
-                      "simulation (hit ROSes).");
-    msg % robid;
-    ers::warning(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-  }
-
-  std::ostringstream oss;
-  boost::format rmsg("0x%04x");
-  auto sid = eformat::helper::SourceIdentifier(robid);
-  oss << "FAKE_ROS_" << sid.human_detector() << "_"
-      << (rmsg % sid.subdetector_id()).str();
-  return oss.str();
-}
-
-bool HLTTestApps::Event::is_cached(const ROB& rob) const
-{
-  return (rob.reserved);
-}
-
-bool HLTTestApps::Event::check_l1id(const uint32_t lvl1_id) const
-{
-  if (m_lvl1_id != lvl1_id) {
-    boost::format msg("You are not processing event %lu, but %lu. "
-                      "Ignoring request.");
-    msg % lvl1_id % m_lvl1_id;
-    ers::warning(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-    return false;
-  }
-
-  return true;
-}
-
-// static
-void HLTTestApps::Event::debug_print_rob_ros_map()
-{
-  if(ers::debug_level() > 0)
-  {
-    std::ostringstream oss;
-    if(sm_rob2ros.empty())
-      oss << "{}";
-    else
-    {
-      oss << "\n{" << std::hex;
-      for(const auto& robitem : sm_rob2ros)
-        oss << "\n\tROB 0x" << robitem.first << ": " << robitem.second;
-      oss << "\n}";
-    }
-
-    ERS_DEBUG(1, "Internal ROB2ROS map: " << oss.str());
-  }
-}
-
-// static
-void HLTTestApps::Event::debug_print_l1r_robs()
-{
-  if(ers::debug_level() > 0)
-  {
-    ERS_DEBUG(1, "Custom L1R rob ids: " << to_string_list(sm_l1r_robs));
-  }
-}
-
-void HLTTestApps::Event::debug_print_hit_roses() const
-{
-  if(ers::debug_level() > 0)
-  {
-    ERS_DEBUG(2, "Hit ROSes: " << to_string_list(m_hit_roses));
-  }
-}
-
-void HLTTestApps::Event::debug_print_ros_hit_map(const int nevent)
-{
-  if (sm_rob2ros.empty()) {
-    ERS_DEBUG(1," No ROS-ROB mapping available");
-    return;
-  }
-  std::ostringstream oss, oss_r, oss_a;
-  float hit_fraction, rob_fraction, rob_size ;
-  float hit_fraction_normal, rob_fraction_normal, rob_size_normal ;
-  float hit_fraction_evbuild, rob_fraction_evbuild, rob_size_evbuild ;
-
-  oss << "\n\tprint_ros_hit_map: DCM prefetching strategy                      = " << sm_strategy ;
-  oss << "\n\tprint_ros_hit_map: Total number of events processed              = " << nevent ;
-
-  oss_r << "\n\tprint_ros_hit_map: +-----------------+ " ;
-  oss_r << "\n\tprint_ros_hit_map: | Rejected Events | " ;
-  oss_r << "\n\tprint_ros_hit_map: +-----------------+ " ;
-  oss_r << "\n\tprint_ros_hit_map: Number of rejected events used for statistics = " << sm_eventsForROSStat[rh_count_reject] <<"\n" ;
-  if (sm_eventsForROSStat[rh_count_reject] > 0) {
-    oss_r << "\n" << std::setw(27) << std::left << std::setfill(' ') << " " 
-	  << std::setw(36) << std::left << std::setfill(' ') << " | total"
-	  << std::setw(36) << std::left << std::setfill(' ') << " | no evt. bld."
-	  << std::setw(36) << std::left << std::setfill(' ') << " | evt. bld." 
-	  << " | ";
-
-    oss_r << "\n" << std::setw(18) << std::left << std::setfill(' ') << "ROS" 
-	  << std::setw(6)  << std::left << std::setfill(' ') << " | # ROBs" 
-	  << std::setw(36) << std::left << std::setfill(' ') 
-	  << " | Hits/Evt. , ROBs/Evt. , Data/Evt." 
-	  << " | Hits/Evt. , ROBs/Evt. , Data/Evt." 
-	  << " | Hits/Evt. , ROBs/Evt. , Data/Evt." 
-	  << " | ";
-
-    for(const auto& ros : sm_rosHitMapReject) {
-      hit_fraction = (ros.second)[rh_all_hit_fra]/float(sm_eventsForROSStat[rh_count_reject]);
-      rob_fraction = (ros.second)[rh_all_rob_fra]/float(sm_eventsForROSStat[rh_count_reject]);
-      rob_size     = (ros.second)[rh_all_rob_siz]/float(sm_eventsForROSStat[rh_count_reject]);
-
-      hit_fraction_normal = (ros.second)[rh_normal_hit_fra]/float(sm_eventsForROSStat[rh_count_reject]);
-      rob_fraction_normal = (ros.second)[rh_normal_rob_fra]/float(sm_eventsForROSStat[rh_count_reject]);
-      rob_size_normal     = (ros.second)[rh_normal_rob_siz]/float(sm_eventsForROSStat[rh_count_reject]);
-
-      hit_fraction_evbuild = (ros.second)[rh_evbld_hit_fra]/float(sm_eventsForROSStat[rh_count_reject]);
-      rob_fraction_evbuild = (ros.second)[rh_evbld_rob_fra]/float(sm_eventsForROSStat[rh_count_reject]);
-      rob_size_evbuild     = (ros.second)[rh_evbld_rob_siz]/float(sm_eventsForROSStat[rh_count_reject]);
-
-      oss_r << "\n" << std::setw(18) << std::left  << std::setfill(' ') << ros.first 
-	    << " | " << std::setw(6) << std::setfill(' ') << std::fixed << std::setprecision(0) << std::right << (ros.second)[rh_number_of_robs]
-	    << " | " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(4) << hit_fraction << " , "
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(4) << rob_fraction << " , " 
-	    << std::setw(9) << std::right << std::setfill(' ') << std::setprecision(2) << rob_size     << " | " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(4) << hit_fraction_normal << " , " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(4) << rob_fraction_normal << " , "
-	    << std::setw(9) << std::right << std::setfill(' ') << std::setprecision(2) << rob_size_normal     << " | "
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(4) << hit_fraction_evbuild << " , " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(4) << rob_fraction_evbuild << " , "
-	    << std::setw(9) << std::right << std::setfill(' ') << std::setprecision(2) << rob_size_evbuild     << " | " ;
-    }
-  }
-
-  oss_a << "\n\tprint_ros_hit_map: +-----------------+ " ;
-  oss_a << "\n\tprint_ros_hit_map: | Accepted Events | " ;
-  oss_a << "\n\tprint_ros_hit_map: +-----------------+ " ;
-  oss_a << "\n\tprint_ros_hit_map: Number of accepted events used for statistics = " << sm_eventsForROSStat[rh_count_accept] <<"\n" ;
-  if (sm_eventsForROSStat[rh_count_accept] > 0) {
-    // Accepted events
-    oss_a << "\n" << std::setw(27) << std::left << std::setfill(' ') << " " 
-	  << std::setw(36) << std::left << std::setfill(' ') << " | total"
-	  << std::setw(36) << std::left << std::setfill(' ') << " | no evt. bld."
-	  << std::setw(36) << std::left << std::setfill(' ') << " | evt. bld." 
-	  << " | ";
-
-    oss_a << "\n" << std::setw(18) << std::left << std::setfill(' ') << "ROS" 
-	  << std::setw(6)  << std::left << std::setfill(' ') << " | # ROBs" 
-	  << std::setw(36) << std::left << std::setfill(' ') 
-	  << " | Hits/Evt. , ROBs/Evt. , Data/Evt." 
-	  << " | Hits/Evt. , ROBs/Evt. , Data/Evt." 
-	  << " | Hits/Evt. , ROBs/Evt. , Data/Evt." 
-	  << " | ";
-
-    for(const auto& ros : sm_rosHitMapAccept) {
-      hit_fraction = (ros.second)[rh_all_hit_fra]/float(sm_eventsForROSStat[rh_count_accept]);
-      rob_fraction = (ros.second)[rh_all_rob_fra]/float(sm_eventsForROSStat[rh_count_accept]);
-      rob_size     = (ros.second)[rh_all_rob_siz]/float(sm_eventsForROSStat[rh_count_accept]);
-
-      hit_fraction_normal = (ros.second)[rh_normal_hit_fra]/float(sm_eventsForROSStat[rh_count_accept]);
-      rob_fraction_normal = (ros.second)[rh_normal_rob_fra]/float(sm_eventsForROSStat[rh_count_accept]);
-      rob_size_normal     = (ros.second)[rh_normal_rob_siz]/float(sm_eventsForROSStat[rh_count_accept]);
-
-      hit_fraction_evbuild = (ros.second)[rh_evbld_hit_fra]/float(sm_eventsForROSStat[rh_count_accept]);
-      rob_fraction_evbuild = (ros.second)[rh_evbld_rob_fra]/float(sm_eventsForROSStat[rh_count_accept]);
-      rob_size_evbuild     = (ros.second)[rh_evbld_rob_siz]/float(sm_eventsForROSStat[rh_count_accept]);
-
-      oss_a << "\n" << std::setw(18) << std::left  << std::setfill(' ') << ros.first 
-	    << " | " << std::setw(6) << std::setfill(' ') << std::fixed << std::setprecision(0) << std::right << (ros.second)[rh_number_of_robs]
-	    << " | " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(4) << hit_fraction << " , "
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(4) << rob_fraction << " , " 
-	    << std::setw(9) << std::right << std::setfill(' ') << std::setprecision(2) << rob_size     << " | " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(4) << hit_fraction_normal << " , " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(4) << rob_fraction_normal << " , "
-	    << std::setw(9) << std::right << std::setfill(' ') << std::setprecision(2) << rob_size_normal     << " | "
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(4) << hit_fraction_evbuild << " , " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(4) << rob_fraction_evbuild << " , "
-	    << std::setw(9) << std::right << std::setfill(' ') << std::setprecision(2) << rob_size_evbuild     << " | " ;
-    }
-  } else {
-    oss << " print_ros_hit_map: number of input events - 0 ";
-  }
-
-  // print summary and close output files for ROS statistics
-  if (sm_ros_rejected_outfile.is_open()) {
-    sm_ros_rejected_outfile << oss.str()   << std::endl;
-    sm_ros_rejected_outfile << oss_r.str() << std::endl;
-    sm_ros_rejected_outfile.close();
-  }
-  if (sm_ros_accepted_outfile.is_open()) {
-    sm_ros_accepted_outfile << oss.str()   << std::endl;
-    sm_ros_accepted_outfile << oss_a.str() << std::endl;
-    sm_ros_accepted_outfile.close();
-  }
-
-  ERS_DEBUG(1,oss.str());
-  ERS_DEBUG(1,oss_r.str());
-  ERS_DEBUG(1,oss_a.str());
-}
-
-void HLTTestApps::Event::accumulateStatistics(const int numberOfStreamTags)
-{
-  // No ROS-ROB mapping available
-  if (sm_rob2ros.empty()) {
-    return;
-  }
-
-  // Increase event conter
-  if (numberOfStreamTags == 0) {
-    // rejected events
-    sm_eventsForROSStat[rh_count_reject]++;
-  } else {
-    // accpeted events
-    sm_eventsForROSStat[rh_count_accept]++;
-  }
-
-  // Accumulate ROB/ROS statistics for accepted/rejected events
-  for (auto& ros : sm_rosHitMap) {
-    if (numberOfStreamTags == 0) {
-      // total
-      sm_rosHitMapReject[ros.first][rh_all_hit_fra] += (ros.second)[rh_all_ev_hit_fra];
-      if ((ros.second)[rh_all_ev_hit_fra] != 0.) { 
-	sm_rosHitMapReject[ros.first][rh_all_rob_fra] += ( (ros.second)[rh_all_ev_rob_fra]/(ros.second)[rh_all_ev_hit_fra]/(ros.second)[rh_number_of_robs] );
-      }
-      sm_rosHitMapReject[ros.first][rh_all_rob_siz] += (ros.second)[rh_all_ev_rob_siz];
-      // normal collect
-      sm_rosHitMapReject[ros.first][rh_normal_hit_fra] += (ros.second)[rh_normal_ev_hit_fra];
-      if ((ros.second)[rh_normal_ev_hit_fra] != 0.) { 
-	sm_rosHitMapReject[ros.first][rh_normal_rob_fra] += ( (ros.second)[rh_normal_ev_rob_fra]/(ros.second)[rh_normal_ev_hit_fra]/(ros.second)[rh_number_of_robs] );
-      }
-      sm_rosHitMapReject[ros.first][rh_normal_rob_siz] += (ros.second)[rh_normal_ev_rob_siz];
-      // eventbuilding collect
-      sm_rosHitMapReject[ros.first][rh_evbld_hit_fra] += (ros.second)[rh_evbld_ev_hit_fra];
-      if ((ros.second)[rh_evbld_ev_hit_fra] != 0.) {
-	sm_rosHitMapReject[ros.first][rh_evbld_rob_fra] += ( (ros.second)[rh_evbld_ev_rob_fra]/(ros.second)[rh_evbld_ev_hit_fra]/(ros.second)[rh_number_of_robs] );
-      }
-      sm_rosHitMapReject[ros.first][rh_evbld_rob_siz] += (ros.second)[rh_evbld_ev_rob_siz];
-      if ((ros.second)[rh_all_ev_hit_fra] >= 1) {
-	std::ostringstream ost; 
-	ost << std::setw(18) << std::left  << std::setfill(' ') << ros.first 
-	    << " | " << std::setw(4) << std::setfill(' ') << std::fixed << std::setprecision(0) << std::right << (ros.second)[rh_number_of_robs]
-	    << " | " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_all_ev_hit_fra] << " , "
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_all_ev_rob_fra] << " , " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_all_ev_rob_siz] << " | " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_normal_ev_hit_fra] << " , " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_normal_ev_rob_fra] << " , " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_normal_ev_rob_siz] << " | " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_evbld_ev_hit_fra] << " , " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_evbld_ev_rob_fra] << " , " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_evbld_ev_rob_siz] << " | " ;
-	if (sm_ros_rejected_outfile.is_open()) sm_ros_rejected_outfile << ost.str() << std::endl;
-      }
-    } else {
-      // total
-      sm_rosHitMapAccept[ros.first][rh_all_hit_fra] += (ros.second)[rh_all_ev_hit_fra];
-      if ((ros.second)[rh_all_ev_hit_fra] != 0.) { 
-	sm_rosHitMapAccept[ros.first][rh_all_rob_fra] += ( (ros.second)[rh_all_ev_rob_fra]/(ros.second)[rh_all_ev_hit_fra]/(ros.second)[rh_number_of_robs] );
-      }
-      sm_rosHitMapAccept[ros.first][rh_all_rob_siz] += (ros.second)[rh_all_ev_rob_siz];
-      // normal collect
-      sm_rosHitMapAccept[ros.first][rh_normal_hit_fra] += (ros.second)[rh_normal_ev_hit_fra];
-      if ((ros.second)[rh_normal_ev_hit_fra] != 0.) { 
-	sm_rosHitMapAccept[ros.first][rh_normal_rob_fra] += ( (ros.second)[rh_normal_ev_rob_fra]/(ros.second)[rh_normal_ev_hit_fra]/(ros.second)[rh_number_of_robs] );
-      }
-      sm_rosHitMapAccept[ros.first][rh_normal_rob_siz] += (ros.second)[rh_normal_ev_rob_siz];
-      // eventbuilding collect
-      sm_rosHitMapAccept[ros.first][rh_evbld_hit_fra] += (ros.second)[rh_evbld_ev_hit_fra];
-      if ((ros.second)[rh_evbld_ev_hit_fra] != 0.) { 
-	sm_rosHitMapAccept[ros.first][rh_evbld_rob_fra] += ( (ros.second)[rh_evbld_ev_rob_fra]/(ros.second)[rh_evbld_ev_hit_fra]/(ros.second)[rh_number_of_robs] );
-      }
-      sm_rosHitMapAccept[ros.first][rh_evbld_rob_siz] += (ros.second)[rh_evbld_ev_rob_siz];
-      if ((ros.second)[rh_all_ev_hit_fra] >= 1) {
-	std::ostringstream ost; 
-	ost << std::setw(18) << std::left  << std::setfill(' ') << ros.first 
-	    << " | " << std::setw(4) << std::setfill(' ') << std::fixed << std::setprecision(0) << std::right << (ros.second)[rh_number_of_robs]
-	    << " | " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_all_ev_hit_fra] << " , "
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_all_ev_rob_fra] << " , " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_all_ev_rob_siz] << " | " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_normal_ev_hit_fra] << " , " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_normal_ev_rob_fra] << " , " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_normal_ev_rob_siz] << " | " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_evbld_ev_hit_fra] << " , " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_evbld_ev_rob_fra] << " , " 
-	    << std::setw(9) << std::left  << std::setfill(' ') << std::setprecision(1) << (ros.second)[rh_evbld_ev_rob_siz] << " | " ;
-	if (sm_ros_accepted_outfile.is_open()) sm_ros_accepted_outfile << ost.str() << std::endl;
-      }
-    }
-    // total
-    (ros.second)[rh_all_ev_hit_fra] = 0.; 
-    (ros.second)[rh_all_ev_rob_fra] = 0.; 
-    (ros.second)[rh_all_ev_rob_siz] = 0.; 
-    // normal collect
-    (ros.second)[rh_normal_ev_hit_fra] = 0.; 
-    (ros.second)[rh_normal_ev_rob_fra] = 0.; 
-    (ros.second)[rh_normal_ev_rob_siz] = 0.; 
-    // eventbuilding collect
-    (ros.second)[rh_evbld_ev_hit_fra] = 0.; 
-    (ros.second)[rh_evbld_ev_rob_fra] = 0.; 
-    (ros.second)[rh_evbld_ev_rob_siz] = 0.; 
-  }
-}
diff --git a/HLT/HLTTestApps/src/Event.h b/HLT/HLTTestApps/src/Event.h
deleted file mode 100644
index ab9d31ec676eb0ac3b3b0a9ddda7fb14e9835873..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/src/Event.h
+++ /dev/null
@@ -1,248 +0,0 @@
-//Dear emacs, this is -*- c++ -*-
-
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-
-/**
- * @file HLTTestApps/src/Event.h
- * @author <a href="mailto:Andre.dos.Anjos@cern.ch">Andre Anjos</a> 
- * $Author: ricab $
- * $Revision: 89 $
- * $Date: 2013-07-05 15:44:02 +0200 (Fri, 05 Jul 2013) $
- *
- * @brief Describes a utility class to handle the event data in an Event-basis
- * way.
- */
-
-#ifndef HLTTESTAPPS_EVENT_H
-#define HLTTESTAPPS_EVENT_H 
-
-#include <map>
-#include <set>
-#include <vector>
-#include <cstdint>
-#include <iostream>
-#include <fstream>
-#include "eformat/ROBFragment.h"
-#include "eformat/FullEventFragment.h"
-#include "hltinterface/DataCollector.h"
-#include "hltinterface/DCM_ROBInfo.h"
-
-// Fwd decl
-namespace boost
-{
-  namespace python
-  {
-    class dict;
-  }
-}
-
-namespace HLTTestApps {
-
-  /**
-   * The hltinterface::DataCollector implementation. This class keeps both the
-   * event map and the original data that should be deleted when the event is
-   * supposed to be deleted. It provides the HLT with a transparent emulation
-   * of online data collection.
-   */
-  class Event: public hltinterface::DataCollector {
-    
-  public: //interface
-
-    /**
-     * C'tor.
-     *
-     * @param event The self contained input event
-     */
-    Event(const eformat::read::FullEventFragment& event);
-
-    /**
-     * D'tor
-     */
-    virtual ~Event() {}
-    
-    /**
-     * Access the LVL1 identifier for this event
-     */
-    inline uint32_t lvl1_id (void) const { return m_lvl1_id; }
-    
-    /**
-     * Accesses the LVL1 result
-     */
-    inline const std::vector<eformat::ROBFragment<const uint32_t*> >& 
-    l1r (void) const { return m_l1r; }
-
-    /**
-     * Reserve a series of ROB's for possible future retrieval. This method allows to
-     * tell the DataCollector what ROBs may be needed based on the geometrical RoI
-     * dimensions. In this way ROB requests can be grouped and the ROS access rate can
-     * be reduced. The method can be called several times before an actual ROB retreval
-     * happens with the "collect" method.
-     *
-     * @param lvl1_id The LVL1 identifier for the data of interest
-     * @param ids The identifiers of the ROBs to reserve.
-     */
-    virtual void reserveROBData(const uint32_t lvl1_id,
-        const std::vector<uint32_t>& ids);
-
-    /**
-     * Collects a series of ROB's, given their identifiers. This method should
-     * return in addition to the number of ROB's successfully collected also their
-     * corresponding ROBInfo objects with additional information for cost monitoring
-     *
-     * @param data Output vector of ROBInfo objects
-     * @param lvl1_id The LVL1 identifier for the data of interest
-     * @param ids The identifiers of each ROB requested.
-     * @return Number of output ROBInfo objects
-     */
-     virtual uint32_t
-     collect(std::vector<hltinterface::DCM_ROBInfo>& data,
-              const uint32_t lvl1_id,
-              const std::vector<uint32_t>& ids);
-
-     /**
-      * Collect all remaining data for this event, AKA event building. This method should
-      * return in addition to the number of ROB's successfully collected also their
-      * corresponding ROBInfo objects with additional information for cost monitoring.
-      *
-      * @param data Output vector of ROBInfo objects
-      * @param lvl1_id The LVL1 identifier for the data of interest
-      * @return Number of output ROBInfo objects
-      */
-     virtual uint32_t
-     collect(std::vector<hltinterface::DCM_ROBInfo>& data,
-              const uint32_t lvl1_id);
-    
-    /**
-     * Register this instance as the current DataCollector instance
-     */
-    inline void register_datacollector(void) {
-      hltinterface::DataCollector::instance(this);
-    }
-
-  // Static stuff
-  public:
-
-    /**
-     * Method that is exposed to python to set the ROS2ROB map (fills in the
-     * internal ROB2ROS map).
-     *
-     * @param d A dictionary mapping ROSID to lists of ROBID's.
-     * @throws Boost.Python.ArgumentError if d is not a dictionary.
-     * @throws Boost.Python.TypeError if d does not map ROSID's to lists of
-     * ROBID's.
-     * @throws Boost.Python.OverflowError if d's keys/values do not fit into
-     * ROSID and ROBID types respectively.
-     */
-    static void set_ros2rob_map(const boost::python::dict& d);
-
-    /**
-     * Method that is exposed to python to set the set of ROB IDs of the custom
-     * ROBs that should also be included in the L1 Result
-     *
-     * @param l A list of ROBID's
-     * @throws Boost.Python.ArgumentError if l is not a list
-     * @throws Boost.Python.TypeError if any of l's elements is not ROBID's
-     * @throws Boost.Python.OverflowError if any of l's elements does not fit
-     * into the ROBID type.
-     */
-    static void set_l1r_robs(const boost::python::list& l);
-
-    /**
-     * Method that is exposed to python to set the ROB prefetching strategy used in
-     * the DCM
-     *
-     * @param s A list with one element and with a value of either 0 or 1
-     * @throws Boost.Python.ArgumentError if s is not a list
-     * @throws Boost.Python.TypeError if any of s's elements of type integer
-     * @throws Boost.Python.OverflowError if any of s's elements does not fit
-     */
-    static void set_dcm_strategy(const boost::python::list& s);
-    /**
-     * Method that is exposed to python to print the map of ROS hits
-     *
-     * @param number of events
-    */
-    static void debug_print_ros_hit_map(const int);
-
-    /**
-     * Method to accumulate statistics for the map of ROS hits
-     *
-     * @param number of stream tags
-    */
-    void accumulateStatistics(const int); 
-
-  // More static stuff
-  private:
-    typedef std::string ROSID; // must be unique - used for logging
-    typedef uint32_t ROBID;    // as received by collect methods
-    typedef std::map<ROBID, ROSID> ROB2ROSMap;
-    typedef std::map<ROSID, std::vector<float> > ROSHitMap;
-
-    // valid for all Events in the whole run
-    // this should be set with set_ros2rob_map
-    static ROB2ROSMap sm_rob2ros;
-    static ROSHitMap  sm_rosHitMap;
-    static ROSHitMap  sm_rosHitMapReject;
-    static ROSHitMap  sm_rosHitMapAccept;
-
-    // valid for all Events in the whole run
-    // this specifies a set of custom source IDs for the ROBs that should be
-    // considered part of the L1 Result
-    static std::set<ROBID> sm_l1r_robs;
-   
-    // Number of events used for ROS hit map
-    static std::vector<int> sm_eventsForROSStat;
-
-    // ROS prefetching strategy 
-    //  0 = strategy as in Run 1,i.e. use of the prefetching list only when a ROB is needed 
-    //  1 = strategy as at begin of Run 2, i.e. immediate retrieval of all ROBs on the prefetching list
-    static int sm_strategy;
-
-    // for debug purposes
-    static void debug_print_rob_ros_map();
-    static void debug_print_l1r_robs();
-
-    // data output files
-    static std::ofstream sm_ros_rejected_outfile;      ///< name of output file with ROS hits for rejected events
-    static std::ofstream sm_ros_accepted_outfile;      ///< name of output file with ROS hits for accepted events
-
-  // Representation
-  private:
-    struct ROB
-    {
-      ROB(ROBID id, const uint32_t * r) : id(id), rob{r} {}
-      ROB(ROBID id, const uint32_t * r, const uint32_t s) : id(id), rob{r} , size_word(s) {}
-      const ROBID id;
-      const uint32_t * rob = nullptr;
-      const uint32_t size_word = 0;
-      bool reserved = false;
-      bool prefetched = false;
-    };
-
-    std::map<uint32_t, ROB> m_map; ///< The ROB ID to ROB info map
-    std::set<ROSID> m_hit_roses; ///< ROSes ROBs were retrieved from
-    std::vector<eformat::ROBFragment<const uint32_t*> > m_l1r; ///< LVL1 result
-    uint32_t m_lvl1_id; ///< My unique LVL1 identifier
-    std::map<std::string, std::set<uint32_t> > m_Det_Robs_for_retrieval; ///< for ROB prefetching
-
-    // Mark all ROSes with ROBs in the event as hit
-    void hit_roses();
-    // Mark all ROSes with specified ROBs as hit
-    void hit_roses(const std::vector<ROBID>& robids);
-    // get the ROSID this ROBID corresponds to. Default to a fake ROSID
-    ROSID get_rosid(ROBID robid) const;
-    // get a fake ROSID for this ROBID
-    ROSID get_fake_rosid(ROBID robid) const;
-    // check whether a ROB is cached
-    bool is_cached(const ROB& rob) const;
-    // check an L1 ID against the current event
-    bool check_l1id(const uint32_t l1id) const;
-    // for debug purposes
-    void debug_print_hit_roses() const;
-  };
-}
-
-#endif /* HLTTESTAPPS_EVENT_H */
diff --git a/HLT/HLTTestApps/src/IInfoRegister_wrap.cxx b/HLT/HLTTestApps/src/IInfoRegister_wrap.cxx
deleted file mode 100644
index 465944dcd4671bf8a14f93b516fa3447a32cb32f..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/src/IInfoRegister_wrap.cxx
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/**
- * @file IInfoRegister_wrap.cxx
- * @author Ricardo Abreu
- *
- * @brief Python bindings for hltinterface::IInfoRegister
- */
-
-#include "IInfoRegister_wrap.h"
-#include "issue.h"
-#include "util.h"
-
-#include "hltinterface/IInfoRegister.h"
-#include "dynlibs/Module.h"
-
-#include <boost/python.hpp>
-
-#include <memory>
-#include <string>
-#include <vector>
-
-
-using namespace std;
-using namespace boost::python;
-using namespace boost::property_tree;
-using hltinterface::IInfoRegister;
-
-namespace
-{
-  //////////////////////////////////////////////////////////////////////////////
-  const string factory_name = "create_hltmp_infoservice";
-
-  //////////////////////////////////////////////////////////////////////////////
-  shared_ptr<IInfoRegister> create_IInfoRegister(const string& lib)
-  {
-    typedef IInfoRegister* (*factory)();
-
-    Module::add("InfoService", vector<string>{lib}, vector<string>{});
-    auto fact = Module::get("InfoService")->function<factory>(factory_name);
-
-    if(!fact)
-    {
-      boost::format msg{"Failed to locate function %s in library %s"};
-      throw(HLTTESTAPPS_UNCLASSIFIED((msg % factory_name % lib).str()));
-    }
-
-    auto raw = fact();
-    if(!raw)
-    {
-      boost::format msg{"Failed to create IInfoRegister with function %s "
-                        "from library %s"};
-      throw(HLTTESTAPPS_UNCLASSIFIED((msg % factory_name % lib).str()));
-    }
-
-    return shared_ptr<IInfoRegister>(raw);
-  }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void HLTTestApps::wrap_IInfoRegister()
-{
-  class_<IInfoRegister, boost::noncopyable>("IInfoRegister", docstr, no_init)
-      .def("__init__", make_constructor(&create_IInfoRegister), docstr)
-      .def("configure", &IInfoRegister::configure, docstr)
-      .def("prepareForRun", &IInfoRegister::prepareForRun, docstr)
-      .def("prepareWorker", &IInfoRegister::prepareWorker, docstr)
-      .def("finalizeWorker", &IInfoRegister::finalizeWorker, docstr)
-      .def("finalize", &IInfoRegister::finalize, docstr);
-}
-
-
diff --git a/HLT/HLTTestApps/src/IInfoRegister_wrap.h b/HLT/HLTTestApps/src/IInfoRegister_wrap.h
deleted file mode 100644
index d88e33fa5700a19c3047d9203d2e86ac9eb53cf1..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/src/IInfoRegister_wrap.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/**
- * @file src/IInfoRegister_wrap.h
- * @author Ricardo Abreu
- *
- * @brief Python bindings for hltinterface::IInfoRegister
- */
-
-#ifndef IINFOREGISTER_WRAP_H_
-#define IINFOREGISTER_WRAP_H_
-
-namespace HLTTestApps
-{
-  /**
-   *  Wrap the IInfoRegister type. When this is called, a wrapped IInfoRegister
-   *  is declared for Python usage, with the following public members:
-   *    - a ctor, which receives a string, specifying the name of the
-   *      library that contains a particular IInfoRegister implementation
-   *    - configure, which receives a ptree, and returns a boolean value
-   *      indicating success or failure
-   *    - prepareForRun, which receives a ptree, and returns a boolean value
-   *      indicating success or failure
-   *    - prepareWorker, which receives a ptree, and returns a boolean value
-   *      indicating success or failure
-   *    - finalizeWorker, which receives a ptree, and returns a boolean value
-   *      indicating success or failure
-   *    - finalize, which receives a ptree, and returns a boolean value
-   *      indicating success or failure
-   *
-   *  For more information, refer to the IInfoRegister directly.
-   *
-   */
-  void wrap_IInfoRegister();
-}
-
-#endif /* IINFOREGISTER_WRAP_H_ */
diff --git a/HLT/HLTTestApps/src/L1_ROBs.h b/HLT/HLTTestApps/src/L1_ROBs.h
deleted file mode 100644
index 1e254a20a3e50343af2154823dddfa2692169642..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/src/L1_ROBs.h
+++ /dev/null
@@ -1,25 +0,0 @@
-//Dear emacs, this is -*- c++ -*-
-
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#include <array>
-#include <cstdint>
-#include "eformat/SourceIdentifier.h"
-
-namespace
-{
-  // ROBs that should go into the L1R
-  constexpr std::array<uint32_t, 12> L1R_ROBS =
-    {{
-      0x7300a8, 0x7300a9, 0x7300aa, 0x7300ab, // TDAQ_CALO_CLUSTER_PROC_ROI ROBs
-      0x7500ac, 0x7500ad,                     // TDAQ_CALO_JET_PROC_ROI ROBs
-      0x760001,                               // TDAQ_MUON_CTP_INTERFACE ROB
-      0x770001,                               // TDAQ_CTP ROB
-      0x910081, 0x910091, 0x910082, 0x910092  // TDAQ_CALO_TOPO_PROC ROBs
-    }};
-
-  constexpr std::array<eformat::SubDetector, 1> L1R_SDS =
-    {{eformat::TDAQ_CALO_FEAT_EXTRACT_ROI}};
-}
diff --git a/HLT/HLTTestApps/src/TimeoutGuard.cxx b/HLT/HLTTestApps/src/TimeoutGuard.cxx
deleted file mode 100644
index 1d0f8ee2428f55fbb213299852929f3fa21c2136..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/src/TimeoutGuard.cxx
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/**
- * @file TimeoutGuard.cxx 
- * @author <a href="mailto:andre.dos.anjos@cern.ch">Andre Anjos</a> 
- *
- * @brief Implementation of our timeout watchdog. 
- */
-
-#include "TimeoutGuard.h"
-#include <boost/property_tree/ptree.hpp>
-#include <boost/date_time/posix_time/posix_time_types.hpp>
-#include <boost/format.hpp>
-#include "ers/ers.h"
-#include "issue.h"
-
-class BooleanPredicate {
-  private:
-    const bool& m_value;
-  public:
-    BooleanPredicate(const bool& value): m_value(value) {}
-    bool operator()() const { return m_value; }
-};
-
-/**
- * Private helper
- */
-struct HLTTestApps::TimeoutGuard::Watchdog {
-
-  void operator()(unsigned int timeout_ms, 
-                  float warn_fraction, 
-                  HLTTestApps::TimeoutGuard& guard,
-                  hltinterface::HLTInterface* processor) {
-
-    const static boost::property_tree::ptree empty_ptree;
-    unsigned int warn_time_ms = unsigned(timeout_ms * warn_fraction);
-    unsigned int additional_error_time_ms = timeout_ms - warn_time_ms;
-    BooleanPredicate start_pred(guard.m_can_start);
-    BooleanPredicate reset_pred(guard.m_reset);
-
-    while (!guard.m_stop) {
-      
-      boost::unique_lock<boost::mutex> lock(guard.m_mutex);
-      //temporarily unlocks mutex, waits for start signal
-      guard.m_condition.wait(lock, start_pred);
-      guard.m_can_start = false;
-
-      //temporarily unlocks mutex, waits for reset signal or timeout
-      if (guard.m_condition.timed_wait(lock, boost::posix_time::milliseconds(warn_time_ms), reset_pred)) {
-        guard.m_reset = false;
-        continue;
-      }
-
-      processor->timeOutReached(empty_ptree);
-      boost::format msg1("Reached \"soft timeout\" - %f%% (%d ms) of the total timeout value (%d ms). Asking HLT to wrap-up event processing...");
-      msg1 % (100.0*warn_time_ms/timeout_ms) % warn_time_ms % timeout_ms;
-      ers::warning(HLTTESTAPPS_UNCLASSIFIED(msg1.str()));
-
-      //temporarily unlocks mutex, waits for reset signal or timeout
-      if (guard.m_condition.timed_wait(lock, boost::posix_time::milliseconds(additional_error_time_ms), reset_pred)) {
-        guard.m_reset = false;
-        continue;
-      }
-      
-      boost::format msg2("Reached the \"hard timeout\" value (%d ms)");
-      msg2 % timeout_ms;
-      ers::error(HLTTESTAPPS_UNCLASSIFIED(msg2.str()));
-
-      // Got hard timeout, need to wait for reset before continuing
-      guard.m_condition.wait(lock, reset_pred);
-      guard.m_reset = false;
-    }
-
-  }
-};
-
-HLTTestApps::TimeoutGuard::TimeoutGuard(unsigned int timeout_ms,
-    float warn_fraction, hltinterface::HLTInterface* processor)
-  : m_stop(false),
-    m_mutex(),
-    m_condition(),
-    m_can_start(false),
-    m_reset(false),
-    m_timer(0)
-{
-  if (timeout_ms != 0) 
-    m_timer = new boost::thread(Watchdog(), timeout_ms, warn_fraction, 
-        boost::ref(*this), processor);
-}
-
-HLTTestApps::TimeoutGuard::~TimeoutGuard() 
-{
-  if (m_timer) {
-    m_stop = true;
-
-    // try to reach one of the stop checks 
-    start();
-    reset();
-
-    m_timer->join();
-    delete m_timer;
-    m_timer = 0;
-  }
-}
-
-void HLTTestApps::TimeoutGuard::start()
-{
-  if (m_timer) {
-    boost::unique_lock<boost::mutex> lock(m_mutex);
-    m_can_start = true;
-    m_condition.notify_one();
-  }
-}
-
-void HLTTestApps::TimeoutGuard::reset()
-{
-  if (m_timer) {
-    boost::unique_lock<boost::mutex> lock(m_mutex);
-    m_reset = true;
-    m_condition.notify_one();
-  }
-}
diff --git a/HLT/HLTTestApps/src/TimeoutGuard.h b/HLT/HLTTestApps/src/TimeoutGuard.h
deleted file mode 100644
index 4d85862b1407799d53fea70806392510f324236e..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/src/TimeoutGuard.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/**
- * @file TimeoutGuard.h 
- * @author <a href="mailto:andre.dos.anjos@cern.ch">Andre Anjos</a> 
- *
- * @brief Implements a python'able interface to a timeout thread. 
- */
-
-#ifndef HLTTESTAPPS_TIMEOUTGUARD_H 
-#define HLTTESTAPPS_TIMEOUTGUARD_H
-
-#include "hltinterface/HLTInterface.h"
-#include <boost/thread.hpp>
-
-namespace HLTTestApps {
-  
-  /**
-   * A threaded timer that keeps track of the time the HLT takes to process an
-   * event, notifying it when a timeout is imminent and issuing (logging, no
-   * exception is thrown) an error when the timeout is reached. The timer thread
-   * is started at the first call of start() (not upon object construction). It
-   * is stopped either when the instance is destroyed or when the timeout is
-   * reached (whichever happens first). A TimeoutGuard can also be reset() and
-   * re- start() -ed. This allows reusing the same instance -- typically for all
-   * the events in a process loop - as well as the timer thread itself --
-   * which is not stopped or recreated, only held and released.
-   */
-  class TimeoutGuard {
-  public:
-
-    /**
-     * Constructor.
-     *
-     * @param timeout_ms The total timeout to be used for indicating an event is
-     * processing more than what was expected. In milliseconds.
-     * @param warn_fraction A fraction of the total time that should be used to
-     * warn the HLT framework a timeout is imminent. For instance, a
-     * warn_fraction of 0.8 means the HLT is warned about an imminent timeout
-     * when 80% of the time has elapsed.
-     * @param processor A pointer to the HLT implementation currently
-     * processing the event.
-     */
-    TimeoutGuard(unsigned int timeout_ms, 
-                 float warn_fraction, 
-                 hltinterface::HLTInterface* processor);
-
-    /**
-     * D'tor. Stops and joins the timer thread it it is running.
-     */
-    virtual ~TimeoutGuard();
-
-    /**
-     * Launches the timer thread to start accounting for the current event being
-     * processed.
-     */
-    void start();
-
-    /**
-     * Reset and stop the current counting until the next start. Notice the
-     * timer thread is kept alive and ready to go again until either start or
-     * the d'tor is called.
-     */
-    void reset();
-
-  private:
-    struct Watchdog;
-
-    bool m_stop;
-    boost::mutex m_mutex;
-    boost::condition_variable m_condition;
-    bool m_can_start;
-    bool m_reset;
-    boost::thread* m_timer;
-  };
-
-}
-
-#endif /* HLTTESTAPPS_TIMEOUTGUARD_H */
-
diff --git a/HLT/HLTTestApps/src/bindings.cxx b/HLT/HLTTestApps/src/bindings.cxx
deleted file mode 100644
index 0394a0ca839603f352fe3d9bde6d5f1d99d4fa20..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/src/bindings.cxx
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/**
- * @file src/bindings.cxx
- * @author Andre Anjos, Ricardo Abreu
- *
- * @brief Python bindings linking to the HLT Interface.
- */
-
-#include <string>
-#include <boost/python.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/property_tree/ptree.hpp>
-#include <boost/lexical_cast.hpp>
-#include "eformat/python/util.h"
-#include "ptree_wrap.h"
-#include "IInfoRegister_wrap.h"
-#include "util.h"
-#include "Event.h"
-#include "issue.h"
-#include "TimeoutGuard.h"
-
-using namespace boost::python;
-using namespace boost::property_tree;
-using namespace HLTTestApps;
-using eformat::python::translate_ers_issue;
-
-/*
- * Wrapper for hltinterface::HLTInterface::hltUserCommand that can receive the
- * user parameters as a python tuple and puts everything in the required ptree
- */
-bool hltUserCommand(hltinterface::HLTInterface& interface,
-                    const std::string& usrCmd, 
-                    tuple usrParam)
-{
-    ptree pt(usrCmd);
-    int len = extract<int>(usrParam.attr("__len__")());
-    for(int i = 0; i < len; i++)
-        pt.put("Params." + boost::lexical_cast<std::string>(i),
-               extract<std::string>(usrParam[i])());
-        
-    return interface.hltUserCommand(pt);
-}
-
-BOOST_PYTHON_FUNCTION_OVERLOADS(process_overloads,
-    process, 3, 4)
-
-BOOST_PYTHON_MODULE(libpyhlttestapps)
-{
-  //a catch-all for exception types
-  register_exception_translator<ers::Issue>(&translate_ers_issue);
-
-  // wrap the boost ptree type
-  wrap_ptree();
-
-  // wrap the IInfoRegister type
-  wrap_IInfoRegister();
- 
-  class_<TimeoutGuard, boost::noncopyable>("TimeoutGuard", docstr, no_init)
-    .def(init<unsigned int, float, hltinterface::HLTInterface*>(docstr))
-    .def("start", &TimeoutGuard::start, docstr)
-    .def("reset", &TimeoutGuard::reset, docstr)
-    ;
-
-  class_<hltinterface::HLTInterface, boost::noncopyable>("HLTInterface", docstr,
-                                                         no_init)
-    .def("__init__", make_constructor(&load_impl<hltinterface::HLTInterface>),
-                     docstr)
-    .def("configure", &hltinterface::HLTInterface::configure, docstr)
-    .def("connect", &hltinterface::HLTInterface::connect, docstr)
-    .def("prepareForRun", &hltinterface::HLTInterface::prepareForRun, docstr)
-    .def("process", process, process_overloads(docstr))
-    .def("stopRun", &hltinterface::HLTInterface::stopRun, docstr)
-    .def("disconnect", &hltinterface::HLTInterface::disconnect, docstr)
-    .def("unconfigure", &hltinterface::HLTInterface::unconfigure, docstr)
-    .def("publishStatistics", &hltinterface::HLTInterface::publishStatistics,
-                              docstr)
-    .def("prepareWorker", &hltinterface::HLTInterface::prepareWorker, docstr)
-    .def("finalizeWorker", &hltinterface::HLTInterface::finalizeWorker, docstr)
-    .def("hltUserCommand", hltUserCommand, docstr)
-    ;
-
-  def("set_ros2rob_map", &Event::set_ros2rob_map, docstr);
-  def("set_l1r_robs", &Event::set_l1r_robs, docstr);
-  def("set_dcm_strategy", &Event::set_dcm_strategy, docstr);
-  def("print_ros_hit_map", &Event::debug_print_ros_hit_map, docstr);
-  def("python_prompt", &python_prompt, docstr);
-  def("python_exec", &python_exec, docstr);
-  def("python_execfile", &python_execfile, docstr);
-  def("tdaq_time_str_from_microsec", &tdaq_time_str_from_microsec, docstr);
-  def("ers_debug_level", &ers_debug_level, docstr);
-  def("get_ers_debug_level", &get_ers_debug_level, docstr);
-  def("ers_debug", &ers_debug, docstr);
-  def("ers_info", &ers_info, docstr);
-  def("ers_warning", &ers_warning, docstr);
-  def("ers_error", &ers_error, docstr);
-  def("ers_fatal", &ers_fatal, docstr);
-  def("ipc_init", &ipc_init, docstr);
-}
diff --git a/HLT/HLTTestApps/src/issue.h b/HLT/HLTTestApps/src/issue.h
deleted file mode 100644
index fe3f6d805df2428ceefb44ead4aa134189a286f0..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/src/issue.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/**
- * @file issue.h
- * @author <a href="mailto:andre.dos.anjos@cern.ch">Andre Anjos</a> 
- *
- * @brief ERS issues that can be raised by our Boost.Python framework
- */
-
-#ifndef HLTTESTAPPS_ISSUE_H 
-#define HLTTESTAPPS_ISSUE_H
-
-#include <ers/ers.h>
-#include <boost/format.hpp>
-
-ERS_DECLARE_ISSUE(HLTTestApps, Issue, " - HLTTestApps base issue", )
-#define HLTTESTAPPS_ISSUE HLTTestApps::Issue(ERS_HERE)
-
-ERS_DECLARE_ISSUE_BASE(HLTTestApps, Unclassified, HLTTestApps::Issue, 
-    ": " << reason, , ((std::string)reason))
-#define HLTTESTAPPS_UNCLASSIFIED(x) HLTTestApps::Unclassified(ERS_HERE, x)
-
-#endif /* HLTTESTAPPS_ISSUE_H */
-
diff --git a/HLT/HLTTestApps/src/ptree_wrap.cxx b/HLT/HLTTestApps/src/ptree_wrap.cxx
deleted file mode 100644
index 8c684a7d38a3d066173b5f32aa5c6050c4270827..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/src/ptree_wrap.cxx
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/*
- * @file: src/ptree_wrap.cxx
- * @author: Ricardo Abreu
- *
- * @brief Python bindings for boost::property_tree::ptree
- */
-
-#include "ptree_wrap.h"
-#include "util.h"
-#include "eformat/python/util.h"
-#include <boost/property_tree/ptree.hpp>
-#include <boost/property_tree/xml_parser.hpp>
-#include <boost/python.hpp>
-#include <boost/foreach.hpp>
-#include <sstream>
-#include <fstream>
-
-using namespace boost::python;
-using namespace boost::property_tree;
-using std::string;
-
-namespace
-{
-  //////////////////////////////////////////////////////////////////////////////
-  enum ListTarget {KEYS, VALS, VALS_DATA, ITEMS};
-
-  //////////////////////////////////////////////////////////////////////////////
-  void readxml(ptree& p, const string& xml_filename)
-  {
-    std::ifstream input(xml_filename.c_str());
-    int flags = xml_parser::no_comments | xml_parser::trim_whitespace;
-    xml_parser::read_xml(input, p, flags);
-  }
-
-  // The methods involving a path couldn't be bound to python directly unless
-  // we told python how to convert from string to ptree::path_type. We use
-  // instead the implicit conversion of string to ptree::path_type in C++
-
-  //////////////////////////////////////////////////////////////////////////////
-  ptree& put(ptree& p, const string& path, const string& value)
-  {
-    return p.put(path, value);
-  }
-
-  //////////////////////////////////////////////////////////////////////////////
-  ptree& add(ptree& p, const string& path, const string& value)
-  {
-    return p.add(path, value);
-  }
-
-  //////////////////////////////////////////////////////////////////////////////
-  ptree& add_child(ptree& p, const string& path, ptree& child)
-  {
-    return p.add_child(path, child);
-  }
-
-  //////////////////////////////////////////////////////////////////////////////
-  ptree& put_child(ptree& p, const string& path, ptree& child)
-  {
-    return p.put_child(path, child);
-  }
-
-  //////////////////////////////////////////////////////////////////////////////
-  const ptree& get_child(const ptree& p, const string& path)
-  {
-    boost::optional<const ptree&> ret = p.get_child_optional(path);
-    if(!ret)
-    {
-      PyErr_SetString(PyExc_KeyError, path.c_str());
-      boost::python::throw_error_already_set();
-    }
-    return *ret;
-  }
-
-  //////////////////////////////////////////////////////////////////////////////
-  const string& get(const ptree& p, const string& path)
-  {
-    return get_child(p, path).data();
-  }
-
-  //////////////////////////////////////////////////////////////////////////////
-  void set_data(ptree& p, const string& data)
-  {
-    p.data() = data;
-  }
-
-  //////////////////////////////////////////////////////////////////////////////
-  list to_list(const ptree& p, ListTarget target)
-  {
-    list ret;
-    BOOST_FOREACH(const ptree::value_type& val, p)
-      switch(target)
-      {
-      case KEYS:
-        ret.append(val.first);
-        break;
-      case VALS:
-        ret.append(val.second);
-        break;
-      case VALS_DATA:
-        ret.append(val.second.data());
-        break;
-      default:
-        ret.append(make_tuple(val.first, val.second));
-      }
-
-    return ret;
-  }
-
-  //////////////////////////////////////////////////////////////////////////////
-  list keys(const ptree& p)
-  {
-    return to_list(p, KEYS);
-  }
-
-  //////////////////////////////////////////////////////////////////////////////
-  list values(const ptree& p)
-  {
-    return to_list(p, VALS);
-  }
-
-  //////////////////////////////////////////////////////////////////////////////
-  list values_data(const ptree& p)
-  {
-    return to_list(p, VALS_DATA);
-  }
-
-  //////////////////////////////////////////////////////////////////////////////
-  list items(const ptree& p)
-  {
-    return to_list(p, ITEMS);
-  }
-
-  //////////////////////////////////////////////////////////////////////////////
-  object iter(const ptree& p)
-  {
-    return object(handle<>(PyObject_GetIter(keys(p).ptr())));
-  }
-
-  //////////////////////////////////////////////////////////////////////////////
-  bool in(const ptree& p, const string& path)
-  {
-    return static_cast<bool>(p.get_child_optional(path));
-  }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void HLTTestApps::wrap_ptree()
-{
-  const string& (ptree::* const_data)() const = &ptree::data;
-
-  // some of the operations provided below are useful mainly for testing
-
-  class_<ptree> ("ptree", docstr, init<>(docstr))
-
-    // default policy
-    .def(init<string>(docstr))
-    .def("readxml", readxml, docstr)
-    .def("__str__", to_string, docstr)
-    .def("__len__", &ptree::size, docstr)
-    .def("set_data", set_data, docstr)
-    .def("keys", keys, docstr)
-    .def("values", values, docstr)
-    .def("values_data", values_data, docstr)
-    .def("items", items, docstr)
-    .def("__iter__", iter, docstr)
-    .def("__contains__", in, docstr)
-
-    // Strings are immutable => python does not accept refs => need to copy
-    .def("data", const_data, return_value_policy<copy_const_reference>(),docstr)
-    .def("__getitem__", get, return_value_policy<copy_const_reference>(),docstr)
-
-    // Can return internal reference
-    .def("__setitem__", put, return_internal_reference<>(), docstr)
-
-    // if we need to add an item with a repeated path
-    .def("add", add, return_internal_reference<>(), docstr)
-
-    // if we need to add a sub-ptree (possibly with a repeated path)
-    .def("add_child", add_child, return_internal_reference<>(), docstr)
-
-    // if we need to add a sub-ptree (replacing existing path)
-    .def("put_child", put_child, return_internal_reference<>(), docstr)
-
-    // Can return internal reference. For this one, notice that const doesn't
-    // mean anything at the python level, so, in python, the returned ptree
-    // can be modified.
-    .def("get_child", get_child, return_internal_reference<>(), docstr)
-  ;
-}
-
diff --git a/HLT/HLTTestApps/src/ptree_wrap.h b/HLT/HLTTestApps/src/ptree_wrap.h
deleted file mode 100644
index fbc3bb91044c54f540b7f533bb355d161d782578..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/src/ptree_wrap.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/*
- * @file: src/ptree_wrap.h
- * @author: Ricardo Abreu
- *
- * @brief Python bindings for boost::property_tree::ptree
- */
-
-#ifndef PTREE_WRAP_H_
-#define PTREE_WRAP_H_
-
-namespace HLTTestApps
-{
-  /**
-   *  Wrap the boost ptree (string values and paths) type. When this is called,
-   *  a wrapped IInfoRegister is declared for Python usage, with the following
-   *  public members:
-   *    - a ctor with no parameters.
-   *    - a ctor receiving a string.
-   *    - readxml, receives a string specifying an xml file name and fills in
-   *      the ptree from the contents of this file (replacing previous ptree
-   *      contents).
-   *    - \__str__, returns a string representation of the ptree (following the
-   *      xml format). Usage examples: print my_ptree, str(my_ptree).
-   *    - \__len__, returns the size of the ptree (ptree::size). Usage example:
-   *      len(my_ptree).
-   *    - set_data, sets the data of the root ptree node.
-   *    - keys, returns a list with the keys of the first children in this
-   *      ptree.
-   *    - values, returns a list with the first children in this ptree
-   *      (themselves ptrees).
-   *    - items, returns a list of key-value pairs. The keys and values are the
-   *      same as those returned in the corresponding methods.
-   *    - \__iter__, returns an iterator to this ptree's keys. Usage example:
-   *      for x in my_ptree: print x.
-   *    - \__contains__, receives a string and returns whether or not it.
-   *      corresponds to an existing path in this ptree. Usage example:
-   *      x in my_ptree.
-   *    - data, returns a copy of the data contained in the root node of this
-   *      ptree.
-   *    - \__getitem__, receives a string path and returns a copy of the data
-   *      contained in the corresponding node. Usage example: my_ptree['a.b.c'].
-   *    - \__setitem__, receives a string path and a string value. Sets the data
-   *      of node at the specified path to the specified value. Returns a
-   *      reference to the ptree at the specified path. Usage examples:
-   *      my_ptree['a.b.c] = 'abc'. Notice the returned reference allows
-   *      modifying the ptree - for instance, after the following Python code,
-   *      my_ptree['x.y.z'] will contain the data '_'
-   *      pt.__setitem__('x.y.z', 'xyz').set_data('_').
-   *    - add, receives a string path and a string value and adds a ptree node
-   *      with the value data at the specified path. Returns a reference to the
-   *      new ptree node (which can be modified through it). Notice the path can
-   *      be repeated. For instance, after doing my_pree.add('a','a1') and
-   *      my_ptree.add('a','a2'), my_ptree will have two new children, both at
-   *      key 'a' but with different values.
-   *    - add_child, receives a string path and a ptree and adds the ptree at
-   *      the specified path. Returns a reference to the newly inserted ptree
-   *      which can be modified through it. Notice the path can be repeated,
-   *      just like with add.
-   *    - put_child, receives a string path and a ptree and puts the ptree at
-   *      the specified path. If there was already one ptree at this path, it is
-   *      replaced. If there were more than one ptree with this path, one of it
-   *      is replaced (which one is unspecified).
-   *    - get_child, receives a string path and returns an internal reference
-   *      to the ptree at the specified path. If no ptree exists at that path,
-   *      a KeyError is raised.
-   *
-   *  For more information refer to the boost::ptree directly.
-   *
-   */
-  void wrap_ptree();
-}
-
-
-#endif /* PTREE_WRAP_H_ */
diff --git a/HLT/HLTTestApps/src/util.cxx b/HLT/HLTTestApps/src/util.cxx
deleted file mode 100644
index 58f083b6bcf98f6ee8fb40d31473f71e334ddfe9..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/src/util.cxx
+++ /dev/null
@@ -1,736 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/**
- * @file src/util.cxx
- * @author <a href="mailto:andre.dos.anjos@cern.ch">Andre Anjos</a> 
- *
- * @brief Implements a few of the utilities in util.h  
- */
-
-#include "util.h"
-#include "hltinterface/EventId.h"
-#include "eformat/index.h"
-#include "eformat/eformat.h"
-#include "eformat/write/eformat.h"
-#include "owl/time.h"
-#include "GaudiKernel/ITHistSvc.h"
-#include "GaudiKernel/ServiceHandle.h"
-#include "StoreGate/DataHandle.h"
-#include "StoreGate/StoreGate.h"
-#include "TrigT1Result/RoIBResult.h"
-#include "TrigT1Result/CTP_RDO.h"
-#include "TrigT1Result/MuCTPI_RDO.h"
-#include "CTPfragment/CTPdataformatVersion.h"
-#include "Event.h" // datacollector implementation
-#include "L1_ROBs.h" // L1 RoIB ROB identifiers
-#include <Python.h>
-#include <cstdlib>
-#include <set>
-#include <algorithm>
-#include <iterator>
-#include <functional>
-#include <cctype>
-#include <execinfo.h>
-#include <iostream>
-#include <boost/property_tree/xml_parser.hpp>
-
-using namespace std;
-
-namespace
-{
-  class ProcessProxy
-  {
-  public:
-    ProcessProxy(hltinterface::HLTInterface& interface,
-                 const eformat::read::FullEventFragment& e,
-                 HLTTestApps::TimeoutGuard& watchdog,
-                 uint32_t max_result_size);
-                 
-    /**
-     * Call operator. Processes the event
-     */
-    eformat::helper::u32list operator()();
-    
-  private:
-    hltinterface::HLTInterface& m_interface;
-    const eformat::read::FullEventFragment& m_event;
-    hltinterface::HLTResult m_hltr;
-    HLTTestApps::TimeoutGuard& m_watchdog;
-    uint32_t m_max_result_size;
-  };
-
-  /**
-   * Programatically obtain and print a stack trace.
-   */
-  void print_stack_trace ()
-  {
-    static const int TRACE_DEPTH=128;
-    void * array[TRACE_DEPTH];
-    int nSize = backtrace(array, TRACE_DEPTH);
-    char ** symbols = backtrace_symbols(array, nSize);
-    std::cerr << "Found " << nSize << " backtrace symbols." << std::endl;
-    for (int i = 0; i < nSize; i++) std::cerr << symbols[i] << std::endl;
-    free(symbols);
-  }
-
-  /*
-   * A PEB specification type consisting of a pair with a set of robs and a set
-   * of sub-detectors
-   */
-  using PebSpec = std::pair<std::set<uint32_t>, std::set<eformat::SubDetector>>;
-
-  /*
-   * If all tags specify PEB lists, get a pair with a list of ROB IDs and a list
-   * of SubDetector IDs, corresponding to the union of the PEB lists specified
-   * in all tags. Otherwise (at least one tag specifies FEB), get a pair with
-   * two empty sets.
-   */
-  PebSpec get_peb_list(const std::vector<eformat::helper::StreamTag>& tags)
-  {
-    std::pair<std::set<uint32_t>, std::set<eformat::SubDetector>> ret;
-    for(const auto& t : tags)
-    {
-      if(!t.robs.empty() || !t.dets.empty())
-      {
-        copy(begin(t.robs), end(t.robs), inserter(ret.first,
-                                                  begin(ret.first)));
-        copy(begin(t.dets), end(t.dets), inserter(ret.second,
-                                                  begin(ret.second)));
-      }
-      else // at least one tag requires full event building
-      {
-        // we clear everything and we're done (empty return signals no PEB)
-        ret.first.clear();
-        ret.second.clear();
-        break;
-      }
-    }
-
-    return ret;
-  }
-
-  /*
-   * select robs from src_robs following peb_spec, and put them into selection,
-   * filtering result robs or not according to filter_hltrs
-   */
-  void choose_robs(std::vector<const uint32_t*>& selection,
-                   const std::vector<eformat::read::ROBFragment>& src_robs,
-                   const PebSpec& peb_spec,
-                   bool filter_hltrs)
-  {
-    // for each rob...
-    for(const auto& rob : src_robs)
-    {
-      auto sid = rob.source_id();
-      auto sdid = eformat::helper::SourceIdentifier{sid}.subdetector_id();
-      if(!filter_hltrs || // ... if we don't need to filter...
-         (sdid != eformat::TDAQ_HLT &&  // ... or if we don't have to filter
-          sdid != eformat::TDAQ_LVL2))  // this particular rob...
-      {
-        auto end_peb_robs = end(peb_spec.first);
-        auto end_peb_dets = end(peb_spec.second);
-        bool peb_empty = peb_spec.first.empty() && peb_spec.second.empty();
-        if(peb_empty || // ... if we need FEB, or if the rob is covered by PEB
-           find(begin(peb_spec.first), end_peb_robs, sid) != end_peb_robs ||
-           find(begin(peb_spec.second), end_peb_dets, sdid) != end_peb_dets)
-        {
-          selection.push_back(rob.start()); // then we select it
-        }
-      }
-    }
-  }
-
-  /*
-   * Choose which ROBs, from both src and hltr_robs, to put into the output
-   * event. If FEB is required, all robs from hltr_robs are included in the
-   * output, as well as all robs from src, with the exception of HLT results.
-   * If PEB is required, only the robs covered by it are included. HLTR robs
-   * from src are still not included in this case.
-   */
-  std::vector<const uint32_t*>
-  choose_event_payload(const eformat::read::FullEventFragment& src,
-                       const std::vector<eformat::read::ROBFragment>& hltr_robs,
-                       const std::vector<eformat::helper::StreamTag>& tags)
-  {
-    std::vector<const uint32_t*> ret;
-    std::vector<eformat::read::ROBFragment> src_robs;
-    src.robs(src_robs);
-    ret.reserve(src_robs.size() + hltr_robs.size());
-
-    auto peb_spec = get_peb_list(tags);
-    choose_robs(ret, src_robs, peb_spec, true);
-    choose_robs(ret, hltr_robs, peb_spec, false);
-
-    return ret;
-  }
-
-  /*
-   * check if L1 simulation was run and get the new L1 trigger info words and the
-   * updated L1 ROBs
-   */
-  bool check_rerun_L1(const eformat::read::FullEventFragment& src_event, 
-		      std::vector<uint32_t>& l1_info,
-		      std::map<uint32_t,uint32_t* >& l1_robs)
-  {
-    bool ret(0);
-    // get the l1 trigger info from the original event
-    unsigned int number_of_words_tav = src_event.nlvl1_trigger_info()/3;
-    const uint32_t* buffer;
-    src_event.lvl1_trigger_info(buffer);
-    std::vector<uint32_t> original_l1_info(buffer, buffer+src_event.nlvl1_trigger_info());
-    std::vector<uint32_t> original_l1_info_TBP(buffer,buffer+number_of_words_tav);
-    std::vector<uint32_t> original_l1_info_TAV(buffer+2*number_of_words_tav, buffer+src_event.nlvl1_trigger_info());
-
-    // get the l1 trigger info from the RoIB result (remade if L1 is rerun)
-
-    // use only the RoIB object in the transient store, do not try to remake it from persistent store and
-    // avoid any data collector call 
-    if ( !StoreGate::instance().transientContains<ROIB::RoIBResult>("RoIBResult") ) {
-      return ret; // if there is no RoIB object in SG there is nothing to do and rerunLVL1 can not be checked
-    }
-
-    // a transient object is available
-    const DataHandle<ROIB::RoIBResult> dobj;
-    StoreGate::instance().retrieve(dobj,"RoIBResult");
-    if (!dobj.isValid()) { 
-      return ret; // if there is no RoIB object there is nothing to do
-    }
-
-    // check if the CTPResult from RoIB is different from event header (use only the TAV words)
-    if (number_of_words_tav != dobj->cTPResult().TAV().size()) { // e.g. run 1 data are used to simulate run 2
-      ret = 1;
-    } else { // input data and simulation are for the same run period
-      for (unsigned int index = 0; index < dobj->cTPResult().TAV().size(); ++index) {
-        if (dobj->cTPResult().TBP()[index].roIWord() != original_l1_info_TBP[index]) {ret = 1;}
-        if (dobj->cTPResult().TAV()[index].roIWord() != original_l1_info_TAV[index]) {ret = 1;}
-      }
-    } 
-
-    // the L1 was not re-made, return immediately
-    if (!ret) return ret;
-
-    //-------------------------+
-    //  L1 decision was remade |
-    //-------------------------+
-
-    // get all original L1 ROBs
-    std::map<uint32_t, std::vector<const uint32_t*> > original_RoIB_Robs, original_DAQ_Robs; 
-    std::vector<eformat::read::ROBFragment> src_robs;
-    src_event.robs(src_robs);
-    for(const auto& rob : src_robs) {
-      auto sid = rob.source_id();
-      auto sdid = eformat::helper::SourceIdentifier{sid}.subdetector_id();
-      switch (sdid) {
-      case eformat::TDAQ_CALO_CLUSTER_PROC_DAQ:  // = 0x72
-	original_DAQ_Robs[sdid].push_back(rob.start());
-	break;
-      case eformat::TDAQ_CALO_CLUSTER_PROC_ROI:  // = 0x73,
-	if (find(begin(L1R_ROBS),end(L1R_ROBS),sid) != end(L1R_ROBS))
-	  original_RoIB_Robs[sdid].push_back(rob.start());
-	break;
-      case eformat::TDAQ_CALO_JET_PROC_DAQ: // = 0x74,
-	original_DAQ_Robs[sdid].push_back(rob.start());
-	break;
-      case eformat::TDAQ_CALO_JET_PROC_ROI: // = 0x75,
-	if (find(begin(L1R_ROBS),end(L1R_ROBS),sid) != end(L1R_ROBS))
-	  original_RoIB_Robs[sdid].push_back(rob.start());
-	break;
-      case eformat::TDAQ_MUON_CTP_INTERFACE: // = 0x76,
-	if (find(begin(L1R_ROBS),end(L1R_ROBS),sid) != end(L1R_ROBS))
-	  original_RoIB_Robs[sdid].push_back(rob.start());
-	else
-	  original_DAQ_Robs[sdid].push_back(rob.start());
-	break;
-      case eformat::TDAQ_CTP: // = 0x77
-	if (find(begin(L1R_ROBS),end(L1R_ROBS),sid) != end(L1R_ROBS))
-	  original_RoIB_Robs[sdid].push_back(rob.start());
-	else
-	  original_DAQ_Robs[sdid].push_back(rob.start());
-	break;
-      case eformat::TDAQ_CALO_TOPO_PROC: // = 0x91,
-	if (find(begin(L1R_ROBS),end(L1R_ROBS),sid) != end(L1R_ROBS))
-	  original_RoIB_Robs[sdid].push_back(rob.start());
-	else
-	  original_DAQ_Robs[sdid].push_back(rob.start());
-	break;
-
-      default:
-	break;
-      }
-    }
-
-    // Remake the new L1 trigger info words for the event header
-    l1_info.resize(3*dobj->cTPResult().TAV().size(),0);
-    for (unsigned i = 0; i < dobj->cTPResult().TAV().size(); ++i) {
-      if ( i < dobj->cTPResult().TBP().size() ) l1_info[i] = dobj->cTPResult().TBP()[i].roIWord() ;
-      if ( i < dobj->cTPResult().TAP().size() ) l1_info[i+dobj->cTPResult().TAV().size()] = dobj->cTPResult().TAP()[i].roIWord() ;
-      if ( i < dobj->cTPResult().TAV().size() ) l1_info[i+2*dobj->cTPResult().TAV().size()] = dobj->cTPResult().TAV()[i].roIWord() ;
-    }
-
-    // remake the L1 ROB payload data from the RoIB result
-    /** CTP ROD */
-    // Default CTP minor version word
-    uint16_t minorVersion = 0x0004; // default minor CTP version
-    bool minorVersionFromRDO(0);
-    if (dobj->cTPResult().TAV().size() == 8) { minorVersion = 0x0003; } // CTP version for Run 1
-    // DAQ
-    // get the l1 CTP_RDO which was remade
-    const DataHandle<CTP_RDO> dobj_ctp_rdo;
-    StoreGate::instance().retrieve(dobj_ctp_rdo,"CTP_RDO_Rerun");
-    if (dobj_ctp_rdo.isValid()) {
-      // calculate CTP minor version word
-      CTPdataformatVersion ctpVersion(dobj_ctp_rdo->getCTPVersionNumber());
-      // Set L1Apos to center of readout window
-      uint16_t l1a = ( dobj_ctp_rdo->getNumberOfBunches() - 1u ) / 2u;
-      l1a <<= ctpVersion.getL1APositionShift();
-      uint16_t addWords = dobj_ctp_rdo->getNumberOfAdditionalWords();
-      addWords <<= ctpVersion.getProgrammableExtraWordsShift();
-      uint16_t ctpVer = dobj_ctp_rdo->getCTPVersionNumber();
-      ctpVer <<= ctpVersion.getCTPFormatVersionShift();
-      minorVersion = addWords + l1a + ctpVer;
-      minorVersionFromRDO = 1;
-      // payload data
-      std::vector<uint32_t> ctpDAQRod;
-      ctpDAQRod.reserve(dobj_ctp_rdo->getDataWords().size());
-      for(const auto& j: dobj_ctp_rdo->getDataWords()) ctpDAQRod.push_back( j );
-
-      if ( (original_DAQ_Robs.find(eformat::TDAQ_CTP) != original_DAQ_Robs.end()) &&
-	   (original_DAQ_Robs[eformat::TDAQ_CTP].size() == 1)) {
-	  eformat::write::ROBFragment ctpDAQRob(original_DAQ_Robs[eformat::TDAQ_CTP][0]);
-	  ctpDAQRob.rod_minor_version( minorVersion );
-	  ctpDAQRob.rod_data(ctpDAQRod.size(),ctpDAQRod.data());
-	  l1_robs[ ctpDAQRob.source_id() ] = new uint32_t[ctpDAQRob.size_word()];
-	  auto copied = eformat::write::copy(*ctpDAQRob.bind(), l1_robs[ ctpDAQRob.source_id() ], ctpDAQRob.size_word());
-	  if(copied == 0 || copied != ctpDAQRob.size_word()) {
-	    boost::format msg("Copy failed for DAQ CTP Rob: words copied: %s words expected %s");
-	    msg % copied, ctpDAQRob.size_word();
-	    throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-	  }
-      }
-    }
-
-    // RoIB
-    std::vector<uint32_t> ctpRod;
-    ctpRod.reserve(dobj->cTPResult().roIVec().size());
-    for(const auto& j: dobj->cTPResult().roIVec()) ctpRod.push_back( j.roIWord() );
-
-    if ( (original_RoIB_Robs.find(eformat::TDAQ_CTP) != original_RoIB_Robs.end()) &&
-	 (original_RoIB_Robs[eformat::TDAQ_CTP].size() == 1)) {
-	eformat::write::ROBFragment ctpRob(original_RoIB_Robs[eformat::TDAQ_CTP][0]);
-	ctpRob.rod_data(ctpRod.size(),ctpRod.data());
-	if (minorVersionFromRDO) ctpRob.rod_minor_version(minorVersion); // reuse minor version of DAQ CTP ROB
-	l1_robs[ ctpRob.source_id() ] = new uint32_t[ctpRob.size_word()];
-	auto copied = eformat::write::copy(*ctpRob.bind(), l1_robs[ ctpRob.source_id() ], ctpRob.size_word());
-	if(copied == 0 || copied != ctpRob.size_word()) {
-	  boost::format msg("Copy failed for RoIB CTP Rob: words copied: %s words expected %s");
-	  msg % copied, ctpRob.size_word() ;
-	  throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-	}
-    }
-
-    /** Muon ROD */
-    // DAQ
-    // get the l1 MuCTP_RDO which was remade
-    const DataHandle<MuCTPI_RDO> dobj_muctpi_rdo;
-    StoreGate::instance().retrieve(dobj_muctpi_rdo,"MUCTPI_RDO+");
-    if (dobj_muctpi_rdo.isValid()) {
-      // payload data
-      std::vector<uint32_t> muCTPIDAQRod;
-      muCTPIDAQRod.reserve(dobj_muctpi_rdo->getAllCandidateMultiplicities().size() + dobj_muctpi_rdo->dataWord().size());
-      for(const auto& j: dobj_muctpi_rdo->getAllCandidateMultiplicities()) muCTPIDAQRod.push_back( j );
-      for(const auto& j: dobj_muctpi_rdo->dataWord()) muCTPIDAQRod.push_back( j );
-
-      if ( (original_DAQ_Robs.find(eformat::TDAQ_MUON_CTP_INTERFACE) != original_DAQ_Robs.end()) &&
-	   (original_DAQ_Robs[eformat::TDAQ_MUON_CTP_INTERFACE].size() == 1)) {
-	  eformat::write::ROBFragment muCTPIDAQRob(original_DAQ_Robs[eformat::TDAQ_MUON_CTP_INTERFACE][0]);
-	  muCTPIDAQRob.rod_data(muCTPIDAQRod.size(),muCTPIDAQRod.data());
-	  l1_robs[ muCTPIDAQRob.source_id() ] = new uint32_t[muCTPIDAQRob.size_word()];
-	  auto copied = eformat::write::copy(*muCTPIDAQRob.bind(), l1_robs[ muCTPIDAQRob.source_id() ], muCTPIDAQRob.size_word());
-	  if(copied == 0 || copied != muCTPIDAQRob.size_word()) {
-	    boost::format msg("Copy failed for DAQ muCTPI Rob: words copied: %s words expected %s");
-	    msg % copied, muCTPIDAQRob.size_word();
-	    throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-	  }
-      }
-    } 
-    // RoIB
-    std::vector<uint32_t> muCTPIRod;
-    muCTPIRod.reserve(dobj->muCTPIResult().roIVec().size());
-    for(const auto& j: dobj->muCTPIResult().roIVec()) muCTPIRod.push_back( j.roIWord() );
-
-    if ( (original_RoIB_Robs.find(eformat::TDAQ_MUON_CTP_INTERFACE) != original_RoIB_Robs.end()) &&
-	 (original_RoIB_Robs[eformat::TDAQ_MUON_CTP_INTERFACE].size() == 1)) {
-	eformat::write::ROBFragment muCTPIRob(original_RoIB_Robs[eformat::TDAQ_MUON_CTP_INTERFACE][0]);
-	muCTPIRob.rod_data(muCTPIRod.size(),muCTPIRod.data());
-	l1_robs[ muCTPIRob.source_id() ] = new uint32_t[muCTPIRob.size_word()];
-	auto copied = eformat::write::copy(*muCTPIRob.bind(), l1_robs[ muCTPIRob.source_id() ], muCTPIRob.size_word());
-	if(copied == 0 || copied != muCTPIRob.size_word()) {
-	  boost::format msg("Copy failed for RoIB muCTPI Rob: words copied: %s words expected %s");
-	  msg % copied, muCTPIRob.size_word() ;
-	  throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-	}
-    }
-
-    /** Jet/Energy ROD */
-    // RoIB
-    for( unsigned int slink = 0; slink < dobj->jetEnergyResult().size(); ++slink ) {
-      std::vector<uint32_t> jetEnergyRod;
-      jetEnergyRod.reserve(dobj->jetEnergyResult()[slink].roIVec().size());
-      for(const auto& j: dobj->jetEnergyResult()[slink].roIVec()) jetEnergyRod.push_back( j.roIWord() );
-
-      if ( (original_RoIB_Robs.find(eformat::TDAQ_CALO_JET_PROC_ROI) != original_RoIB_Robs.end()) &&
-	   (original_RoIB_Robs[eformat::TDAQ_CALO_JET_PROC_ROI].size() == dobj->jetEnergyResult().size())) {
-	eformat::write::ROBFragment jetEnergyRob(original_RoIB_Robs[eformat::TDAQ_CALO_JET_PROC_ROI][slink]);
-	jetEnergyRob.rod_data(jetEnergyRod.size(),jetEnergyRod.data());
-	l1_robs[ jetEnergyRob.source_id() ] = new uint32_t[jetEnergyRob.size_word()];
-	auto copied = eformat::write::copy(*jetEnergyRob.bind(), l1_robs[ jetEnergyRob.source_id() ], jetEnergyRob.size_word());
-	if(copied == 0 || copied != jetEnergyRob.size_word()) {
-	  boost::format msg("Copy failed for RoIB JET/Energy Rob: words copied: %s words expected %s");
-	  msg % copied, jetEnergyRob.size_word() ;
-	  throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-	}
-      }
-    }
-
-    /* EMTau RODs */
-    // RoIB
-    for( unsigned int slink = 0; slink < dobj->eMTauResult().size(); ++slink ) {
-      std::vector<uint32_t> eMTauRod;
-      eMTauRod.reserve(dobj->eMTauResult()[slink].roIVec().size());
-      for(const auto& j: dobj->eMTauResult()[slink].roIVec()) eMTauRod.push_back( j.roIWord() );
-
-      if ( (original_RoIB_Robs.find(eformat::TDAQ_CALO_CLUSTER_PROC_ROI) != original_RoIB_Robs.end()) &&
-	   (original_RoIB_Robs[eformat::TDAQ_CALO_CLUSTER_PROC_ROI].size() == dobj->eMTauResult().size())) {
-	eformat::write::ROBFragment eMTauRob(original_RoIB_Robs[eformat::TDAQ_CALO_CLUSTER_PROC_ROI][slink]);
-	eMTauRob.rod_data(eMTauRod.size(),eMTauRod.data());
-	l1_robs[ eMTauRob.source_id() ] = new uint32_t[eMTauRob.size_word()];
-	auto copied = eformat::write::copy(*eMTauRob.bind(), l1_robs[ eMTauRob.source_id() ], eMTauRob.size_word());
-	if(copied == 0 || copied != eMTauRob.size_word()) {
-	  boost::format msg("Copy failed for RoIB EM/Tau Rob: words copied: %s words expected %s");
-	  msg % copied, eMTauRob.size_word() ;
-	  throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-	}
-      }
-    }
-
-    /** L1Topo ROD */
-    // RoIB
-    for( unsigned int slink = 0; slink < dobj->l1TopoResult().size(); ++slink ) {
-      std::vector<uint32_t> l1TopoRod;
-      l1TopoRod.reserve(dobj->l1TopoResult()[slink].rdo().getDataWords().size());
-      for(const auto& j: dobj->l1TopoResult()[slink].rdo().getDataWords()) l1TopoRod.push_back( j );
-
-      if ( (original_RoIB_Robs.find(eformat::TDAQ_CALO_TOPO_PROC) != original_RoIB_Robs.end()) &&
-	   (original_RoIB_Robs[eformat::TDAQ_CALO_TOPO_PROC].size() == dobj->l1TopoResult().size())) {
-	eformat::write::ROBFragment l1TopoRob(original_RoIB_Robs[eformat::TDAQ_CALO_TOPO_PROC][slink]);
-	l1TopoRob.rod_data(l1TopoRod.size(),l1TopoRod.data());
-	l1_robs[ l1TopoRob.source_id() ] = new uint32_t[l1TopoRob.size_word()];
-	auto copied = eformat::write::copy(*l1TopoRob.bind(), l1_robs[ l1TopoRob.source_id() ], l1TopoRob.size_word());
-	if(copied == 0 || copied != l1TopoRob.size_word()) {
-	  boost::format msg("Copy failed for RoIB L1 Topo Rob: words copied: %s words expected %s");
-	  msg % copied, l1TopoRob.size_word() ;
-	  throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-	}
-      }
-    }
-    // in case the result size = 0 produce empty ROBs
-    if ((dobj->l1TopoResult().size() == 0) && (original_RoIB_Robs.find(eformat::TDAQ_CALO_TOPO_PROC) != original_RoIB_Robs.end())) {
-      for( unsigned int slink = 0; slink < original_RoIB_Robs[eformat::TDAQ_CALO_TOPO_PROC].size(); ++slink ) {
-	std::vector<uint32_t> l1TopoRod;
-	eformat::write::ROBFragment l1TopoRob(original_RoIB_Robs[eformat::TDAQ_CALO_TOPO_PROC][slink]);
-	l1TopoRob.rod_data(l1TopoRod.size(),l1TopoRod.data());
-	l1_robs[ l1TopoRob.source_id() ] = new uint32_t[l1TopoRob.size_word()];
-	auto copied = eformat::write::copy(*l1TopoRob.bind(), l1_robs[ l1TopoRob.source_id() ], l1TopoRob.size_word());
-	if(copied == 0 || copied != l1TopoRob.size_word()) {
-	  boost::format msg("Copy failed for RoIB (empty) L1 Topo Rob: words copied: %s words expected %s");
-	  msg % copied, l1TopoRob.size_word() ;
-	  throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-	}
-      }
-    }
-
-    return ret;
-  }
-}
-
-ProcessProxy::ProcessProxy(hltinterface::HLTInterface& interface,
-                           const eformat::read::FullEventFragment& e,
-                           HLTTestApps::TimeoutGuard& watchdog,
-                           uint32_t max_result_size)
-  : m_interface(interface)
-  , m_event(e)
-  , m_watchdog(watchdog)
-  , m_max_result_size(max_result_size)
-{
-  m_hltr.max_result_size = m_max_result_size;
-  m_hltr.fragment_pointer = new uint32_t[m_max_result_size];
-  m_hltr.fragment_pointer[0] = 0; //makes WW happier
-}
-
-eformat::helper::u32list ProcessProxy::operator()()
-{
-  try
-  {
-    HLTTestApps::Event proxy(m_event); //our DataCollector interface
-    proxy.register_datacollector();
-    auto eid = hltinterface::EventId{m_event.global_id(),
-                                     m_event.lvl1_id(),
-                                     m_event.lumi_block()};
-
-    m_watchdog.start();
-    if(!m_interface.process(proxy.l1r(), m_hltr, eid))
-      ers::warning(HLTTESTAPPS_UNCLASSIFIED("HLT framework has not returned OK "
-                                            "for process() call"));
-    m_watchdog.reset();
-
-    // accumulate ROS statistics      
-    proxy.accumulateStatistics(m_hltr.stream_tag.size());
-  }
-  catch (ers::Issue& e) 
-  {
-    m_watchdog.reset();
-    print_stack_trace();
-    boost::format msg("Uncaught ers::Issue left HLT framework: %s");
-    msg % e.what();
-    throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-  }
-  catch (std::exception& e) 
-  {
-    m_watchdog.reset();
-    print_stack_trace();
-    boost::format msg("Uncaught std::exception left HLT framework: %s");
-    msg % e.what();
-    throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-  }
-  catch (...) 
-  {
-    m_watchdog.reset();
-    print_stack_trace();
-    boost::format msg("Unknown left HLT framework");
-    throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-  }
-      
-  //do we need to do continue?
-  if (m_hltr.stream_tag.size() == 0) 
-  {
-    delete[] m_hltr.fragment_pointer;
-    return eformat::helper::u32list(0, 0, 0);
-  }
-      
-  //check the quality of data we get back
-  try 
-  {
-    eformat::ROBFragment<const uint32_t*>(m_hltr.fragment_pointer).check();
-  }
-  catch (ers::Issue& e) 
-  {
-    boost::format msg("HLT result ROB does not validate: %s");
-    msg % e.what();
-    throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-  }
-  
-  eformat::write::FullEventFragment retval;
-  retval.copy_header(m_event.start());
-  retval.lvl2_trigger_info(0, nullptr); // drop l2 trigger bits
-  
-  //set the L1 trigger info if needed
-  uint32_t* new_l1_info = 0;
-  std::vector<uint32_t> remade_l1_info;
-  std::map<uint32_t, uint32_t* > remade_l1_robs;
-  if(check_rerun_L1(m_event,remade_l1_info,remade_l1_robs)) {
-    new_l1_info = new uint32_t[remade_l1_info.size()];
-    for(unsigned i = 0; i < remade_l1_info.size(); ++i) new_l1_info[i] = remade_l1_info[i];
-    retval.lvl1_trigger_info(remade_l1_info.size(), new_l1_info); 
-  }
-
-  //set the HLT trigger info if needed
-  uint32_t* hlt_info = 0;
-  if(m_hltr.trigger_info.size()) 
-  {
-    hlt_info = new uint32_t[m_hltr.trigger_info.size()];
-    for(unsigned i = 0; i < m_hltr.trigger_info.size(); ++i) 
-      hlt_info[i] = m_hltr.trigger_info[i];
-    retval.hlt_info(m_hltr.trigger_info.size(), hlt_info);
-  }
-  
-  //set the stream tags
-  uint32_t* stream_tag = 0;
-  if (m_hltr.stream_tag.size()) {
-    uint32_t size = eformat::helper::size_word(m_hltr.stream_tag);
-    stream_tag = new uint32_t[size];
-    eformat::helper::encode(m_hltr.stream_tag, size, stream_tag);
-    retval.stream_tag(size, stream_tag);
-  }
-  
-  //choose the stuff to put on the final event output
-  auto to_pack = choose_event_payload(m_event,
-                                      m_hltr.hltResult_robs,
-                                      m_hltr.stream_tag);
-
-  //copy the selected ROB fragments to the output event
-  std::vector<eformat::write::ROBFragment> rob;
-  for(std::vector<const uint32_t*>::const_iterator it = to_pack.begin(); it != to_pack.end(); ++it)
-    try
-    {
-      eformat::read::ROBFragment old(*it) ;
-      if (remade_l1_robs.find(old.source_id()) == remade_l1_robs.end()) { // no remade l1 rob available
-	rob.push_back(*it);
-      } else { // take the remade L1 ROB
-	rob.push_back(remade_l1_robs[old.source_id()]);
-      }
-    }
-    catch(const eformat::Issue&)
-    {
-      ers::warning(HLTTESTAPPS_UNCLASSIFIED("Got an invalid ROBFragment that will be skipped"));
-    }
-
-  for(unsigned i = 0; i < rob.size(); ++i) 
-    retval.append(&rob[i]);
-    
-
-  // this signals the event is finished (no more robs will be added)
-  // If activated, compression kicks in now
-  const eformat::write::node_t* top = retval.bind();
-  
-    //finally, we serialize the new event and return that
-  uint32_t final_size = retval.size_word();
-  uint32_t* final_event = new uint32_t[final_size];
-  uint32_t result = eformat::write::copy(*top, final_event, final_size);
-  if (final_size != result) {
-    boost::format msg("Event serialization failed. Serialized %lu words out of %lu");
-    msg % result % final_size;
-    delete[] m_hltr.fragment_pointer;
-    delete[] hlt_info;
-    delete[] stream_tag;
-    delete[] new_l1_info;
-    for (const auto& rob: remade_l1_robs) delete[] rob.second;
-    throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-  }
-  
-  //cleanup
-  delete[] m_hltr.fragment_pointer;
-  delete[] hlt_info;
-  delete[] stream_tag;
-  delete[] new_l1_info;  
-  for (const auto& rob: remade_l1_robs) delete[] rob.second;
-
-  return eformat::helper::u32list(final_event, 0, final_size);
-}
-
-eformat::helper::u32list HLTTestApps::process
-  (boost::shared_ptr<hltinterface::HLTInterface> interface,
-   const eformat::read::FullEventFragment& e,
-   HLTTestApps::TimeoutGuard& watchdog,
-   uint32_t max_result_size)
-{
-  ProcessProxy pp(*interface, e, watchdog, max_result_size);
-  return pp();
-}
-
-void HLTTestApps::python_prompt(void) {
-  PyRun_InteractiveLoop(stdin, const_cast< char* >( "\0" ));
-}
-
-void HLTTestApps::python_exec(const std::string& command) {
-  int result = PyRun_SimpleString(command.c_str());
-  if (result != 0) {
-    boost::format msg("Error detected while executing '%s'.");
-    msg % command;
-    throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-  }
-}
-
-void HLTTestApps::python_execfile(const std::string& filename) {
-  FILE *fp;
-  if((fp = fopen(filename.c_str(), "rb")) == NULL) {
-    boost::format msg("Cannot open file '%s'.");
-    msg % filename;
-    throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-  }
-  int result = PyRun_SimpleFileEx(fp, filename.c_str(), 1); //close "fp"
-  if (result != 0) {
-    boost::format msg("Error detected while executing file '%s'.");
-    msg % filename;
-    throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-  }
-}
-
-std::string HLTTestApps::tdaq_time_str_from_microsec(time_t sec, time_t microsec)
-{
-  auto * cstr = OWLTime{sec, microsec}.c_str();
-  auto ret = std::string{cstr};
-  delete[] cstr;
-  return ret;
-}
-
-void HLTTestApps::ers_debug_level(int level) {
-  ers::Configuration::instance().debug_level(level);
-}
-
-int HLTTestApps::get_ers_debug_level() {
-  return ers::Configuration::instance().debug_level();
-}
-
-void HLTTestApps::ers_debug(const std::string& msg)
-{
-    ers::debug(HLTTESTAPPS_UNCLASSIFIED(msg));
-}
-
-void HLTTestApps::ers_info(const std::string& msg)
-{
-    ers::info(HLTTESTAPPS_UNCLASSIFIED(msg));
-}
-
-void HLTTestApps::ers_warning(const std::string& msg)
-{
-    ers::warning(HLTTESTAPPS_UNCLASSIFIED(msg));
-}
-
-void HLTTestApps::ers_error(const std::string& msg)
-{
-    ers::error(HLTTESTAPPS_UNCLASSIFIED(msg));
-}
-
-void HLTTestApps::ers_fatal(const std::string& msg)
-{
-    ers::fatal(HLTTESTAPPS_UNCLASSIFIED(msg));
-}
-
-void HLTTestApps::ipc_init()
-{
-  try
-  {
-    IPCCore::init({});
-  }
-  catch(const daq::ipc::AlreadyInitialized& e)
-  {
-    ers::log(e);
-  }
-}
-
-using namespace boost::property_tree;
-namespace
-{
-#if BOOST_VERSION >= 105600
-  using T = ptree::key_type;
-#else
-  using T = char;  
-#endif
-
-  auto wsettings = xml_parser::xml_writer_make_settings<T>(' ', 2);
-}
-
-string HLTTestApps::to_string(const ptree& p)
-{
-  std::ostringstream oss;
-  xml_parser::write_xml(oss, p, wsettings);
-  return oss.str();
-}
-
-void HLTTestApps::print_ptree(const ptree& p)
-{
-  xml_parser::write_xml(std::cout, p, wsettings);
-}
-
diff --git a/HLT/HLTTestApps/src/util.h b/HLT/HLTTestApps/src/util.h
deleted file mode 100644
index b538dcb812dd6e32bf54a726c9acfc4425a8b1c4..0000000000000000000000000000000000000000
--- a/HLT/HLTTestApps/src/util.h
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/**
- * @file HLTTestApps/src/util.h
- * @author <a href="mailto:andre.dos.anjos@cern.ch">Andre Anjos</a> 
- *
- * @brief Utilties required by the python bindings to work cooperatively in
- * HLT in a nice way.
- */
-
-#ifndef HLTTESTAPPS_UTIL_H 
-#define HLTTESTAPPS_UTIL_H
-
-#include <boost/python.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/property_tree/ptree.hpp>
-#include <string>
-#include <ctime>
-#include "issue.h"
-#include "eformat/FullEventFragment.h"
-#include "eformat/blob.h"
-#include "hltinterface/HLTInterface.h"
-#include "hltinterface/HLTResult.h"
-#include "dynlibs/Module.h"
-#include "TimeoutGuard.h"
-#include "ipc/core.h"
-
-namespace HLTTestApps {
-
-  constexpr char docstr[] = "See doxygen documentation (from C++ code)";
-
-  /**
-   * Loads an HLTInterface from libs.
-   */
-  template <class T> boost::shared_ptr<T> load_impl(boost::python::list libs);
-
-  /**
-   * Process an event. Uses the provided HLTInterface to process an event.
-   * Filters earlier HLT/L2/EF results out. Checks the validity of the HLTResult
-   * fragment provided by the HLT. Resets L2 trigger bits (which would be
-   * present in events from Run 1). Monitors the HLT's execution time through
-   * a TimeoutGuard.
-   *
-   * @param interface The interface to the HLT (which processes the event)
-   * @param e The input event
-   * @param watchdog The timeout guard thread
-   * @param max_result_size The maximum size the HLTResult can occupy
-   * @return A possibly empty event that is serialized in the form of an u32list.
-   * This is an empty list if the event is not selected by the HLTInterface.
-   * Otherwise, it is a valid event with the new HLTResult, the new trigger info
-   * bits, the new stream tag(s) and without any original L2/EF/HLT result. This
-   * event is a partial event @a iff the HLT produced calibration and only
-   * calibration stream tags (tags with the type CALIBRATION_TAG, including data
-   * scouting).
-   */
-  eformat::helper::u32list process
-    (boost::shared_ptr<hltinterface::HLTInterface> interface,
-     const eformat::read::FullEventFragment& e,
-     HLTTestApps::TimeoutGuard& watchdog,
-     uint32_t max_result_size=hltinterface::HLTResult::DEFAULT_MAX_RESULTSIZE);
-
-  /**
-   * Makes the application go immediately into the python prompt. Exiting that
-   * prompt resumes.
-   */
-  void python_prompt(void);
-
-  /**
-   * Makes the application execute the given python statement inside the
-   * jobOptions context. Execution resumes immediately after.
-   *
-   * @param command A string containing python statement (e.g. "print 1+2")
-   */
-  void python_exec(const std::string& command);
-
-  /**
-   * Makes the application execute the given python file inside the jobOptions
-   * context. Execution resumes when the file ends.
-   *
-   * @param filename The name of the file that will be executed
-   */
-  void python_execfile(const std::string& filename);
-
-  /**
-   * Get a TDAQ compatible string representation of the time specified by the
-   * sec and microsec parameters
-   *
-   * @param sec The number of seconds
-   * @param microsec The number of micro seconds
-   */
-  std::string tdaq_time_str_from_microsec(time_t sec, time_t microsec);
-
-  /**
-   * Changes the ERS debug level, dynamically
-   *
-   * @param level The debugging level (0 means no messages will be printed),
-   * options besides that are 1, 2 or 3.
-   */
-  void ers_debug_level(int level);
-  
-  /**
-   * Get the current ERS debug level
-   */
-  int get_ers_debug_level();
-
-  /**
-   * A wrapper for ers::debug that takes a string message
-   *
-   * @param msg The message to log
-   */
-  void ers_debug(const std::string& msg);
-  
-  /**
-   * A wrapper for ers::info that takes a string message
-   *
-   * @param msg The message to log
-   */
-  void ers_info(const std::string& msg);
-  
-  /**
-   * A wrapper for ers::warning that takes a string message
-   *
-   * @param msg The message to log
-   */
-  void ers_warning(const std::string& msg);
-  
-  /**
-   * A wrapper for ers::error that takes a string message
-   *
-   * @param msg The message to log
-   */
-  void ers_error(const std::string& msg);
-  
-  /**
-   * A wrapper for ers::fatal that takes a string message
-   *
-   * @param msg The message to log
-   */
-  void ers_fatal(const std::string& msg);
-  
-  /**
-   * Initialize the IPC
-   */
-  void ipc_init();
-
-  /**
-   * Get an XML format string representing a ptree.
-   */
-  std::string to_string(const boost::property_tree::ptree& p);
-
-  /**
-   * Print a ptree in XML format (Useful to print ptree's within gdb).
-   */
-  void print_ptree(const boost::property_tree::ptree& p);
-}
-
-template <class T> 
-boost::shared_ptr<T> HLTTestApps::load_impl(boost::python::list l) {
-  // The factory function that we are loading
-  typedef T* (*factory_func)();
-  // A function that is a const member of Module, that receives a const string 
-  //  reference and that returns a factory_func
-  typedef factory_func (Module::*my_symbol_func)(const std::string&)const;
-  
-  ERS_DEBUG(1, "Going to load algorithm libraries...");
-
-  std::vector<std::string> libs;
-  for (long i=0; i<PyList_Size(l.ptr()); ++i) { 
-    PyObject* item = PyList_GetItem(l.ptr(), i);
-    if (PyString_Check(item)) libs.push_back(PyString_AsString(item));
-    else {
-      boost::format msg("Entry %ld at input list is not string");
-      msg % i;
-      throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-    }
-  }
-
-  if (libs.size() == 0) {
-    boost::format msg("Cannot load implementation with zero libraries...");
-    throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-  }
-
-  std::vector<std::string> other_modules; // no other modules
-  std::string module_name = libs[0] + "_framework";
-
-  // Load and configure the libraries for the first time
-  Module::add(module_name, libs, other_modules);
-  const Module* handle = Module::get(module_name);
-  if (handle == 0) {
-    std::ostringstream o;
-    o << "[ ";
-    for (unsigned int i=0; i<(libs.size()-1); ++i) 
-      o << "'" << libs[i] << "', ";
-    o << "'" << libs[libs.size()-1] << "'";
-    o << " ]";
-    boost::format msg("Failed to load shared libraries: %s");
-    msg % o.str();
-    throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-  }
-   
-  // Loading our factory function and then creating our interface.
-  //  We cast the Module::symbol method to something that returns the 
-  //  factory function we need, instead of a void*. We go this way because ISO
-  //  C++ forbids casts between pointers to objects and pointers to functions.
-  //  If we were to obtain our factory as a void* and then cast it to 
-  //  factory_func we wouldn't be respecting the standard and we would always
-  //  get an annoying g++43 warning about this.
-  //T* (*sym)() = (handle->*reinterpret_cast<T* (*(Module::*) (const std::string&) const) ()>(&Module::symbol))("factory");    
-  factory_func sym = (handle->*reinterpret_cast<my_symbol_func>(&Module::symbol))("hlt_factory");
-
-  
-  if (sym == 0) {
-    boost::format msg("Failed to locate the factory() function inside shared object.");
-    throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-  }
-  T * interface = sym();
-
-  if (interface == 0) {
-    boost::format msg("Failed to get the Interface implementation");
-    throw(HLTTESTAPPS_UNCLASSIFIED(msg.str()));
-  }
-
-  return boost::shared_ptr<T>(interface);
-}
-
-#endif /* HLTTESTAPPS_UTIL_H */
-
diff --git a/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt b/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt
index e1f77dcff664ea71989088a221d5db4a588fe7a2..f449aaaf3a836508fc3f8ea2a07e8ac411610d8e 100644
--- a/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt
+++ b/HLT/Trigger/TrigControl/TrigCommon/CMakeLists.txt
@@ -8,4 +8,23 @@ atlas_subdir( TrigCommon )
 # Install files from the package:
 atlas_install_python_modules( python/*.py )
 atlas_install_joboptions( share/*.py )
+atlas_install_scripts( bin/athenaHLT.py )
 
+# Aliases:
+atlas_add_alias( athenaHLT "athenaHLT.py" )
+
+# Check python syntax:
+atlas_add_test( flake8
+   SCRIPT flake8 --select=F,E7,E9,W6 --ignore=E701 ${CMAKE_CURRENT_SOURCE_DIR}/python ${CMAKE_CURRENT_SOURCE_DIR}/bin
+   POST_EXEC_SCRIPT nopost.sh )
+
+# Tests:
+atlas_add_test( test_AthHLT
+   SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/python/AthHLT.py
+   POST_EXEC_SCRIPT nopost.sh )
+
+#atlas_add_test( athenaHLT_jo_noopts
+#   SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/share/test_athenaHLT.sh dummy.py)
+
+#atlas_add_test( athenaHLT_jo_allopts
+#   SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/share/test_athenaHLT.sh --number-of-events 3 --skip-events 7 -l ERROR,FATAL -c 'x=1' -c 'y=2' -C 'x=2' -o out.data --threads 2 --nprocs 4 --timeout 777 --python-setup mysetup.py --partition mypart dummy.py)
diff --git a/HLT/Trigger/TrigControl/TrigCommon/bin/athenaHLT.py b/HLT/Trigger/TrigControl/TrigCommon/bin/athenaHLT.py
new file mode 100755
index 0000000000000000000000000000000000000000..4a9ad45ee0846b845559ca1dc50bdae2679d7164
--- /dev/null
+++ b/HLT/Trigger/TrigControl/TrigCommon/bin/athenaHLT.py
@@ -0,0 +1,349 @@
+#!/bin/sh
+#
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+#
+# This is a script that is born as shell to setup the preloading and then
+# resurrected as python script for the actual athenaHLT.py application.
+#
+"""date"
+
+# defaults
+export USETCMALLOC=1
+export USEIMF=1
+
+# parse command line arguments
+for a in ${@}
+do
+    case "$a" in
+	--leak-check*)   USETCMALLOC=0;;
+	--stdcmalloc)    USETCMALLOC=0;;
+	--tcmalloc)      USETCMALLOC=1;;
+	--stdcmath)      USEIMF=0;;
+	--imf)           USEIMF=1;;
+	--preloadlib*)   export ATHENA_ADD_PRELOAD=${a#*=};;
+        --no-ers-signal-handlers)  export TDAQ_ERS_NO_SIGNAL_HANDLERS=1;;
+    esac
+done
+
+# Do the actual preloading via LD_PRELOAD
+source `which athena_preload.sh `
+
+# Now resurrect ourselves as python script
+python_path=`which python`
+"exec" "$python_path" "-tt" "$0" "$@";
+
+"""
+
+import sys
+import os
+import argparse
+import ast
+import collections
+from datetime import datetime as dt
+
+from TrigCommon import AthHLT
+from AthenaCommon.Logging import logging
+log = logging.getLogger('athenaHLT')
+
+##
+## The following arg_* methods are used as custom types in argparse
+##
+def arg_sor_time(s):
+   """Convert possible SOR time arguments to an OWLTime compatible string"""
+   fmt = '%d/%m/%y %H:%M:%S.%f'
+   if s=='now':        return dt.now().strftime(fmt)
+   elif s.isdigit():   return dt.fromtimestamp(float(s)/1e9).strftime(fmt)
+   else:               return s
+
+def arg_detector_mask(s):
+   """Convert detector mask to format expected by eformat"""
+   dmask = hex(int(s,16))                                    # Normalize input to hex-string
+   dmask = dmask.lower().replace('0x', '').replace('l', '')  # remove markers
+   return '0' * (32 - len(dmask)) + dmask                    # (pad with 0s)
+
+def arg_log_level(s):
+   """Argument handler for log levels"""
+   lvls = s.split(',')
+   if len(lvls)==1: lvls.append('ERROR')
+   return lvls
+
+def arg_eval(s):
+   """Argument handler for pyton types (list, dict, ...)"""
+   return ast.literal_eval(s)
+
+
+def update_pcommands(args, cdict):
+   """Apply modifications to pre/postcommands"""
+
+   cdict['trigger']['precommand'].append('_run_number=%d' % args.run_number)
+
+   if not args.oh_monitoring:
+       cdict['trigger']['precommand'].append("include('TrigServices/OfflineTHistSvc.py')")
+
+   if args.perfmon:
+      cdict['trigger']['precommand'].insert(0, "include('TrigCommon/PerfMon.py')")
+
+   if args.leak_check:
+      doLeakCheck = [] if args.leak_check=='all' else [args.leak_check]
+
+      #early import is needed for proper offloading later
+      import Hephaestus.MemoryTracker as memtrack  # noqa
+      cdict['trigger']['precommand'].insert(0, "memChkMode='leak-check';doLeakCheck=%s;"
+                                            "include('TrigCommon/LeakTracer.py')" % doLeakCheck)
+
+def update_run_params(args):
+   """Update run parameters from file/COOL"""
+
+   if args.run_number is None:
+      from eformat import EventStorage
+      args.run_number = EventStorage.pickDataReader(args.file[0]).runNumber()
+
+   if args.sor_time is None:
+      args.sort_time = arg_sor_time(str(AthHLT.get_sor_params(args.run_number)['SORTime']))
+
+   if args.detector_mask is None:
+      dmask = AthHLT.get_sor_params(args.run_number)['DetectorMask']
+      if args.run_number < AthHLT.CondDB._run2:
+         dmask = hex(dmask)
+      args.detector_mask = arg_detector_mask(dmask)
+
+
+def update_nested_dict(d, u):
+   """Update nested dictionary (https://stackoverflow.com/q/3232943)"""
+   for k, v in u.iteritems():
+      if isinstance(v, collections.Mapping):
+         d[k] = update_nested_dict(d.get(k, {}), v)
+      else:
+         d[k] = v
+   return d
+
+
+def HLTMPPy_cfgdict(args):
+   """
+   Create the configuration dictionary as expected by HLTMPPy as defined in
+   https://gitlab.cern.ch/atlas-tdaq-software/HLTMPPU/blob/master/python/HLTMPPy/runner.py
+   """
+
+   cdict = {}
+   cdict['HLTMPPU'] = {
+      'application_name' : 'athenaHLT',
+      'extra_params' : None,
+      'interactive' : args.interactive,
+      'log_root' : os.getcwd(),
+      'module' : 'HLTMPPU',
+      'num_forks' : args.nprocs,
+      'num_threads' : args.threads,
+      'num_slots' : args.threads,
+      'partition_name' : args.partition,
+      'hard_timeout' : args.timeout,
+      'soft_timeout_fraction' : 0.9
+   }
+
+   cdict['datasource'] = {
+      'module': 'dffileds',
+      'dslibrary': 'DFFileBackend',
+      'compressionFormat': 'ZLIB',
+      'compressionLevel': 2,
+      'file': args.file,
+      'loopFiles': False,
+      'numEvents': args.number_of_events,
+      'outFile': args.save_output,
+      'preload': False,
+      'extraL1Robs': args.extra_l1r_robs,
+      'skipEvents': args.skip_events
+   }
+
+   cdict['global'] = {
+      'date': args.sor_time,
+      'detector_mask': args.detector_mask,
+      'log_root': cdict['HLTMPPU']['log_root'],
+      'options_file': None,
+      'partition_name': args.partition,
+      'run_number': args.run_number,
+      'save_options': None,
+      'solenoid_current': 7730,
+      'toroid_current': 20400,
+      'with_infrastructure': args.oh_monitoring
+   }
+
+   cdict['monitoring'] = {
+      'module': 'monsvcis',
+      'library': 'MonSvcInfoService',
+      'ISInterval': 10,
+      'ISRegex': '.*',
+      'ISServer': '${TDAQ_IS_SERVER=DF}',
+      'ISSlots': 1,
+      'OHInterval': args.oh_interval,
+      'OHInclude': '.*',
+      'OHExclude': '',
+      'OHServerName': 'HLT-Histogramming',
+      'OHSlots': 5
+   }
+
+   cdict['trigger'] = {
+      'library': ['TrigServices', 'TrigPSC'],
+      'joType' : args.joboptionsvc_type
+   }
+   if not args.use_database:      # job options
+      cdict['trigger'].update({
+         'module': 'joboptions',
+         'pythonSetupFile' : args.python_setup,
+         'joFile': args.jobOptions,
+         'SMK': None,
+         'l1PSK': None,
+         'l1BG': 0,
+         'l1MenuConfig': 'DB',
+         'precommand' : args.precommand,
+         'postcommand' : args.postcommand,
+         'logLevels' : args.log_level
+      })
+   else:
+      cdict['trigger'].update({
+         'module': 'DBPython',
+         'pythonSetupFile' : args.python_setup,
+         'db_alias': args.db_server,
+         'SMK': args.smk,
+         'l1PSK': args.l1pks,
+         'HLTPSK': args.hltpks,
+         'l1BG': 0,
+         'l1MenuConfig': 'DB',
+         'precommand' : args.precommand,
+         'postcommand' : args.postcommand,
+         'logLevels' : args.log_level
+      })
+      if args.db_type == "Coral":           # DBPython (with CORAL)
+         cdict['trigger'].update({
+            'use_coral': True,
+            'coral_server': args.db_server
+         })
+      else:                                 # DBPython (without CORAL)
+         cdict['trigger'].update({
+            'use_coral': False,
+            'db_alias': args.db_server
+         })
+
+   return cdict
+
+
+class MyHelp(argparse.Action):
+   """Custom help to hide/show expert groups"""
+   def __call__(self, parser, namespace, values, option_string=None):
+
+      for g in parser.expert_groups:
+         for a in g._group_actions:
+            if values!='all':
+               a.help = argparse.SUPPRESS
+
+      parser.print_help()
+      if values!='all':
+         print('\nUse --help=all to show all (expert) options')
+      sys.exit(0)
+
+
+def main():
+   parser = argparse.ArgumentParser(prog='athenaHLT.py', formatter_class=
+                                    lambda prog : argparse.ArgumentDefaultsHelpFormatter(prog, max_help_position=32, width=100),
+                                    usage = '%(prog)s [OPTION]... -f FILE jobOptions',
+                                    add_help=False)
+   parser.expert_groups = []   # Keep list of expert option groups
+
+   ## Global options
+   g = parser.add_argument_group('Options')
+   g.add_argument('jobOptions', help='job options file')
+   g.add_argument('--file', '-f', action='append', required=True, help='input RAW file')
+   g.add_argument('--save-output', '-o', metavar='FILE', help='output file name')
+   g.add_argument('--number-of-events', '-n', metavar='N', default=-1, help='processes N events (<=0 means all)')
+   g.add_argument('--skip-events', '-k', metavar='N', default=0, help='skip N first events')
+   g.add_argument('--threads', metavar='N', type=int, default=1, help='number of threads')
+   g.add_argument('--nprocs', metavar='N', type=int, default=1, help='number of children to fork')
+   g.add_argument('--log-level', '-l', metavar='LVL', type=arg_log_level, default='INFO,ERROR', help='OutputLevel of athena,POOL')
+   g.add_argument('--precommand', '-c', metavar='CMD', action='append', default=[],
+                  help='Python commands executed before job options or database configuration')
+   g.add_argument('--postcommand', '-C', metavar='CMD', action='append', default=[],
+                  help='Python commands executed after job options or database configuration')
+   g.add_argument('--interactive', '-i', action='store_true', help='interactive mode')
+   g.add_argument('--help', '-h', nargs='?', choices=['all'], action=MyHelp, help='show help')
+
+   ## Performance and debugging
+   g = parser.add_argument_group('Performance and debugging')
+   g.add_argument('--perfmon', action='store_true', help='enable PerfMon')
+   g.add_argument('--leak-check', metavar='<stage>', nargs='?', const='execute',
+                  choices=['all','initialize','start','beginrun','execute','finalize','endrun','stop'],
+                  help='Perform leak checking during <stage>')
+   g.add_argument('--tcmalloc', action='store_true', default=True, help='use tcmalloc')
+   g.add_argument('--stdcmalloc', action='store_true', help='use stdcmalloc')
+   g.add_argument('--stdcmath', action='store_true', help='use stdcmath library')
+   g.add_argument('--imf', action='store_true', help='use Intel math library')
+   g.add_argument('--show-includes', '-s', action='store_true', help='show printout of included files')
+   g.add_argument('--timeout', metavar='SEC', default=3600*10, help='timeout in seconds')
+
+   ## Database
+   g = parser.add_argument_group('Database')
+   g.add_argument('--use-database', '-b', action='store_true', help='configure from trigger database')
+   g.add_argument('--db-type', default='Coral', choices=['MySQL','Oracle','SQLite','Coral'], help='database type')
+   g.add_argument('--db-server', metavar='DB', default='TRIGGERDB', help='DB server name')
+   g.add_argument('--smk', type=int, default=0, help='Super Master Key')
+   g.add_argument('--l1psk', type=int, default=0, help='L1 prescale key')
+   g.add_argument('--hltpsk', type=int, default=0, help='HLT prescale key')
+
+   ## Online histogramming
+   g = parser.add_argument_group('Online Histogramming')
+   g.add_argument('--oh-monitoring', '-M', action='store_true',
+                  help='enable OH monitoring')
+   g.add_argument('--oh-interval', metavar='SEC', type=int, default=5,
+                  help='seconds between histogram publications.')
+
+   ## Conditions
+   g = parser.add_argument_group('Conditions')
+   g.add_argument('--run-number', '-R', metavar='RUN', type=int,
+                  help='run number (if None, read from first event)')
+   g.add_argument('--sor-time', type=arg_sor_time,
+                  help='The Start Of Run time. Three formats are accepted: '
+                  '1) the string "now", for current time; '
+                  '2) the number of nanoseconds since epoch (e.g. 1386355338658000000 or int(time.time() * 1e9)); '
+                  '3) human-readable "20/11/18 17:40:42.3043". If not specified the sor-time is read from COOL')
+   g.add_argument('--detector-mask', metavar='MASK', type=arg_detector_mask,
+                  help='detector mask (if None, read from COOL)')
+
+   ## Expert options
+   g = parser.add_argument_group('Expert')
+   parser.expert_groups.append(g)
+   g.add_argument('--joboptionsvc-type', metavar='TYPE', default='JobOptionsSvc', help='JobOptionsSvc type')
+   g.add_argument('--msgsvc-type', metavar='TYPE', default='TrigMessageSvc', help='MessageSvc type')
+   g.add_argument('--python-setup', default='TrigPSC/TrigPSCPythonSetup.py', help='Python bootstrap/setup file')
+   g.add_argument('--partition', '-p', metavar='NAME', default='athenaHLT', help='partition name')
+   g.add_argument('--no-ers-signal-handlers', action='store_true', help='disable ERS signal handlers')
+   g.add_argument('--preloadlib', metavar='LIB', help='preload an arbitrary library')
+   g.add_argument('--extra-l1r-robs', metavar='ROBS', type=arg_eval, default=[],
+                  help='List of additional ROB IDs that are considered part of the L1 result and passed to the HLT')
+   g.add_argument('--cfgdict', metavar='DICT', type=arg_eval, default={},
+                  help='HLTMPPy config dictionary with additional options, e.g.: '
+                  '--cfgdict \'{"global": {"log_root" : "/tmp"}}\'')
+
+   args = parser.parse_args()
+
+   # set default OutputLevels and file inclusion
+   import AthenaCommon.Logging
+   AthenaCommon.Logging.log.setLevel(getattr(logging, args.log_level[0]))
+   from AthenaCommon.Include import include
+   include.setShowIncludes( args.show_includes )
+
+   # update parameters based on SOR
+   update_run_params(args)
+
+   # get HLTMPPY config dictionary
+   cdict = HLTMPPy_cfgdict(args)
+
+   # Apply any expert-level overrides
+   update_nested_dict(cdict, args.cfgdict)
+
+   # Modify pre/postcommands if necessary
+   update_pcommands(args, cdict)
+
+   # Run HLTMPPU
+   from HLTMPPy.runner import runHLTMPPy
+   runHLTMPPy(cdict)
+
+
+if "__main__" in __name__:
+   sys.exit(main())
diff --git a/HLT/Trigger/TrigControl/TrigCommon/python/AthHLT.py b/HLT/Trigger/TrigControl/TrigCommon/python/AthHLT.py
new file mode 100644
index 0000000000000000000000000000000000000000..4a4050670f6ba942c13443837eca8c662460ddb0
--- /dev/null
+++ b/HLT/Trigger/TrigControl/TrigCommon/python/AthHLT.py
@@ -0,0 +1,57 @@
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+#
+# Utilities used in athenaHLT.py
+#
+from PyUtils.Decorators import memoize
+from AthenaCommon.Logging import logging
+log = logging.getLogger('athenaHLT')
+
+class CondDB:
+   _run2 = 236108
+   def __init__(self, run):
+      self.run = run
+   def db_instance(self):
+      if self.run>=self._run2:
+         return 'CONDBR2'
+      else:
+         return 'COMP200'
+   def sor_folder(self):
+      if self.run>=self._run2:
+         return '/TDAQ/RunCtrl/SOR'
+      else:
+         return '/TDAQ/RunCtrl/SOR_Params'
+
+@memoize
+def get_sor_params(run_number):
+
+   log.info('Reading SOR record for run %s from COOL' % run_number)
+
+   from CoolConvUtilities import AtlCoolLib
+   cdb = CondDB(run_number)
+   dbcon = AtlCoolLib.readOpen('COOLONL_TDAQ/%s' % cdb.db_instance())
+   folder = dbcon.getFolder(cdb.sor_folder())
+
+   # need to keep sor variable while using payload (cannot do the following in
+   # one single line nor overwrite sor). Otherwise: 1) GC comes into play;
+   # 2) the object is deleted; 3) since it's a shared_ptr, the internal
+   # cool::IObject also gets deleted; 4) payload is not valid any longer
+   try:
+      sor = folder.findObject(run_number << 32, 0)
+   except Exception:
+      return None        # This can happen for unknown run numbers
+
+   payload = sor.payload()
+   return {k: payload[k] for k in payload}
+
+
+#
+# Testing (used as ctest)
+#
+if __name__=='__main__':
+   d = get_sor_params(327265)  # Run-2
+   print(d)
+   assert(d['DetectorMask']=='0000000000000000c10069fffffffff7')
+
+   d = get_sor_params(216416)  # Run-1
+   print(d)
+   assert(d['DetectorMask']==281474976710647)
diff --git a/HLT/Trigger/TrigControl/TrigCommon/python/TrigPyHelper.py b/HLT/Trigger/TrigControl/TrigCommon/python/TrigPyHelper.py
index 9cdb10c6332e55a754e7f9b2c7932f3e767695be..c489e36b1a9707a05bc6d330dcc60e46d663fdcc 100644
--- a/HLT/Trigger/TrigControl/TrigCommon/python/TrigPyHelper.py
+++ b/HLT/Trigger/TrigControl/TrigCommon/python/TrigPyHelper.py
@@ -1,13 +1,13 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 ######################################################################
 ## @file   TrigPyHelper.py
 ## @brief  Helpers for C++ Python bindings
 ## @author Frank Winklmeier
-## $Id: TrigPyHelper.py,v 1.1 2008-09-02 16:37:18 fwinkl Exp $
 ######################################################################
 
-from GaudiPython import *
+from GaudiPython import *    # noqa
+from GaudiPython import gbl, InterfaceCast
 from GaudiPython.Bindings import Helper, iProperty
 from AthenaCommon.Logging import logging
     
@@ -32,7 +32,7 @@ class TrigApp(object):
       
       jobOptSvc = InterfaceCast(gbl.IJobOptionsSvc)(Helper.service(gbl.Gaudi.svcLocator(), "JobOptionsSvc"))
       if not jobOptSvc:
-         log.error("Cannot find JobOptionsSvc")
+         self.log.error("Cannot find JobOptionsSvc")
          return
 
       import re
@@ -43,7 +43,7 @@ class TrigApp(object):
       for client in jobOptSvc.getClients():
          for prop in jobOptSvc.getProperties(client):      
             if reClient.match(client) and reProp.match(prop.name()):
-               self.log.info("Changing %s.%s from '%s' to '%s'" % \
+               self.log.info("Changing %s.%s from '%s' to '%s'" %
                              (client, prop.name(), prop.value(), newValue))
                iprop = iProperty(client)
                setattr(iprop, prop.name(), newValue)
diff --git a/HLT/Trigger/TrigControl/TrigCommon/share/LeakTracer.py b/HLT/Trigger/TrigControl/TrigCommon/share/LeakTracer.py
index 324c4e6ec32c31716c126d9ef4fb9e5995dfcd59..33e6ac52affd074645a91f82d0144a2613e6923f 100644
--- a/HLT/Trigger/TrigControl/TrigCommon/share/LeakTracer.py
+++ b/HLT/Trigger/TrigControl/TrigCommon/share/LeakTracer.py
@@ -1,13 +1,13 @@
 # Job option fragment to enable the leak tracer
-# doLeakCheck is set by athenaMT/PT
+# doLeakCheck/memChkMode are set by athenaHLT
 
 # from Control/AthenaCommon/share/Preparation.py
-if doLeakCheck != False:
+if doLeakCheck is not False:
    from AthenaCommon.AppMgr import theApp, ServiceMgr
    
    from Hephaestus.Auditor import HephaestusAuditor
    theApp.AuditAlgorithms = True
-   ServiceMgr.AuditorSvc += HephaestusAuditor( mode = memChkMode ,auditOn = doLeakCheck )
+   ServiceMgr.AuditorSvc += HephaestusAuditor( mode = memChkMode, auditOn = doLeakCheck )
 
 del doLeakCheck
 del memChkMode
diff --git a/HLT/Trigger/TrigControl/TrigCommon/share/athenaHLT_jo_allopts.ref b/HLT/Trigger/TrigControl/TrigCommon/share/athenaHLT_jo_allopts.ref
new file mode 100644
index 0000000000000000000000000000000000000000..9cda86352a9cb6810fa0d1f6828b8916ba6e9a72
--- /dev/null
+++ b/HLT/Trigger/TrigControl/TrigCommon/share/athenaHLT_jo_allopts.ref
@@ -0,0 +1,166 @@
+<Configuration>
+  <HLTMPPUApplication>
+    <numForks>4</numForks>
+    <childLogRoot>/scratch/fwinkl/athenaHLT/HLT/Trigger/TrigControl/TrigCommon/unitTestRun</childLogRoot>
+    <InfoServiceLibrary>MonSvcInfoService</InfoServiceLibrary>
+    <softTimeoutFraction>0.9</softTimeoutFraction>
+    <HLTImplementationLibraries>
+      <library>TrigServices</library>
+      <library>TrigPSC</library>
+    </HLTImplementationLibraries>
+    <UID>HLTMPPy</UID>
+    <HardTimeout>777</HardTimeout>
+    <finalizeTimeout>120</finalizeTimeout>
+    <numberOfEventSlots>2</numberOfEventSlots>
+    <DataSourceLibrary>DFFileBackend</DataSourceLibrary>
+    <numberOfAthenaMTThreads>2</numberOfAthenaMTThreads>
+    <DataSource>
+      <HLTDFFileBackend>
+        <preload>False</preload>
+        <numEvents>3</numEvents>
+        <start_id>1</start_id>
+        <library>DFFileBackend</library>
+        <fileOffset>-1</fileOffset>
+        <UID>DataSource-is-DCM</UID>
+        <compressionLevel>2</compressionLevel>
+        <skipEvents>7</skipEvents>
+        <compressionFormat>ZLIB</compressionFormat>
+        <outputFileName>out.data</outputFileName>
+        <loopOverFiles>False</loopOverFiles>
+        <fileList>
+          <file>dummy.data</file>
+        </fileList>
+        <extraL1Robs/>
+      </HLTDFFileBackend>
+    </DataSource>
+    <InfoService>
+      <HLTMonInfoImpl>
+        <UID>hltMonSvc</UID>
+        <library>MonSvcInfoService</library>
+        <ConfigurationRules>
+          <ConfigurationRuleBundle>
+            <UID>HltpuConfigurationRuleBundle</UID>
+            <Rules>
+              <ConfigurationRule>
+                <ExcludeFilter></ExcludeFilter>
+                <Name>Dumm</Name>
+                <UID>HltpuOHRule</UID>
+                <Parameters>
+                  <OHPublishingParameters>
+                    <PublishInterval>5</PublishInterval>
+                    <ROOTProvider>${TDAQ_APPLICATION_NAME}</ROOTProvider>
+                    <OHServer>${TDAQ_OH_SERVER=HLT-Histogramming}</OHServer>
+                    <UID>HltpuOHPublishingParameters</UID>
+                    <NumberOfSlots>5</NumberOfSlots>
+                  </OHPublishingParameters>
+                </Parameters>
+                <IncludeFilter>.*</IncludeFilter>
+              </ConfigurationRule>
+              <ConfigurationRule>
+                <ExcludeFilter></ExcludeFilter>
+                <Name>DummDumm</Name>
+                <UID>HltpuISRule</UID>
+                <Parameters>
+                  <ISPublishingParameters>
+                    <PublishInterval>10</PublishInterval>
+                    <UID>HltpuISPublishingParameters</UID>
+                    <NumberOfSlots>1</NumberOfSlots>
+                    <ISServer>${TDAQ_IS_SERVER=DF}</ISServer>
+                  </ISPublishingParameters>
+                </Parameters>
+                <IncludeFilter>.*</IncludeFilter>
+              </ConfigurationRule>
+            </Rules>
+          </ConfigurationRuleBundle>
+        </ConfigurationRules>
+      </HLTMonInfoImpl>
+    </InfoService>
+  </HLTMPPUApplication>
+  <Partition>
+    <UID>mypart</UID>
+    <LogRoot>/scratch/fwinkl/athenaHLT/HLT/Trigger/TrigControl/TrigCommon/unitTestRun</LogRoot>
+    <TriggerConfiguration>
+      <TriggerConfiguration>
+        <L1TriggerConfiguration>
+          <L1TriggerConfiguration>
+            <ConfigureLvl1MenuFrom>DB</ConfigureLvl1MenuFrom>
+            <Lvl1BunchGroupKey>0</Lvl1BunchGroupKey>
+            <UID>L1TrigConf</UID>
+            <Lvl1PrescaleKey>0</Lvl1PrescaleKey>
+          </L1TriggerConfiguration>
+        </L1TriggerConfiguration>
+        <hlt>
+          <HLTImplementationJobOptions>
+            <libraries>
+              <library>TrigServices</library>
+              <library>TrigPSC</library>
+            </libraries>
+            <preCommands>
+              <preCommand>x=1</preCommand>
+              <preCommand>y=2</preCommand>
+              <preCommand>_run_number=327265</preCommand>
+              <preCommand>include('TrigServices/OfflineTHistSvc.py')</preCommand>
+            </preCommands>
+            <postCommands>
+              <postCommand>x=2</postCommand>
+            </postCommands>
+            <UID>HLTImplementationJobOptions-1</UID>
+            <evtSel>NONE</evtSel>
+            <HLTCommonParameters>
+              <HLTCommonParameters>
+                <factoryName></factoryName>
+                <dllName></dllName>
+                <messageSvcType>TrigMessageSvc</messageSvcType>
+                <jobOptionsSvcType>JobOptionsSvc</jobOptionsSvcType>
+              </HLTCommonParameters>
+            </HLTCommonParameters>
+            <logLevels>
+              <logLevel>INFO</logLevel>
+              <logLevel>ERROR</logLevel>
+            </logLevels>
+            <pythonSetupFile>mysetup.py</pythonSetupFile>
+            <jobOptionsPath>dummy.py</jobOptionsPath>
+          </HLTImplementationJobOptions>
+        </hlt>
+        <UID>JobOptionsTriggerConfig-1</UID>
+        <TriggerDBConnection>
+          <TriggerDBConnection>
+            <Name>dummy</Name>
+            <Server>TRIGGERDB</Server>
+            <Alias>TRIGGERDB</Alias>
+            <User></User>
+            <Password></Password>
+            <Type>Coral</Type>
+            <SuperMasterKey>0</SuperMasterKey>
+          </TriggerDBConnection>
+        </TriggerDBConnection>
+      </TriggerConfiguration>
+    </TriggerConfiguration>
+  </Partition>
+  <ROS2ROBS/>
+</Configuration>
+<RunParams>
+  <totalTime>0</totalTime>
+  <run_type>Physics</run_type>
+  <timeEOR>1/1/70 01:00:00</timeEOR>
+  <det_mask>00000000000000000001fffffffffff7</det_mask>
+  <beam_type>0</beam_type>
+  <filename_tag></filename_tag>
+  <max_events>0</max_events>
+  <run_number>327265</run_number>
+  <timeSOR>22/11/18 11:02:32.703856</timeSOR>
+  <trigger_type>0</trigger_type>
+  <T0_project_tag></T0_project_tag>
+  <beam_energy>0</beam_energy>
+  <recording_enabled>0</recording_enabled>
+</RunParams>
+<Magnets>
+  <ToroidsCurrent>
+    <ts>22/11/18 11:02:32.703856</ts>
+    <value>20400</value>
+  </ToroidsCurrent>
+  <SolenoidCurrent>
+    <ts>22/11/18 11:02:32.703856</ts>
+    <value>7730</value>
+  </SolenoidCurrent>
+</Magnets>
diff --git a/HLT/Trigger/TrigControl/TrigCommon/share/athenaHLT_jo_noopts.ref b/HLT/Trigger/TrigControl/TrigCommon/share/athenaHLT_jo_noopts.ref
new file mode 100644
index 0000000000000000000000000000000000000000..6083e1b27b98483f5d21fbdef7bfd9089da082bf
--- /dev/null
+++ b/HLT/Trigger/TrigControl/TrigCommon/share/athenaHLT_jo_noopts.ref
@@ -0,0 +1,161 @@
+<Configuration>
+  <HLTMPPUApplication>
+    <numForks>1</numForks>
+    <childLogRoot>/scratch/fwinkl/athenaHLT/HLT/Trigger/TrigControl/TrigCommon/unitTestRun</childLogRoot>
+    <InfoServiceLibrary>MonSvcInfoService</InfoServiceLibrary>
+    <softTimeoutFraction>0.9</softTimeoutFraction>
+    <HLTImplementationLibraries>
+      <library>TrigServices</library>
+      <library>TrigPSC</library>
+    </HLTImplementationLibraries>
+    <UID>HLTMPPy</UID>
+    <HardTimeout>36000</HardTimeout>
+    <finalizeTimeout>120</finalizeTimeout>
+    <numberOfEventSlots>1</numberOfEventSlots>
+    <DataSourceLibrary>DFFileBackend</DataSourceLibrary>
+    <numberOfAthenaMTThreads>1</numberOfAthenaMTThreads>
+    <DataSource>
+      <HLTDFFileBackend>
+        <preload>False</preload>
+        <numEvents>-1</numEvents>
+        <start_id>1</start_id>
+        <library>DFFileBackend</library>
+        <fileOffset>-1</fileOffset>
+        <UID>DataSource-is-DCM</UID>
+        <compressionLevel>2</compressionLevel>
+        <skipEvents>0</skipEvents>
+        <compressionFormat>ZLIB</compressionFormat>
+        <loopOverFiles>False</loopOverFiles>
+        <fileList>
+          <file>dummy.data</file>
+        </fileList>
+        <extraL1Robs/>
+      </HLTDFFileBackend>
+    </DataSource>
+    <InfoService>
+      <HLTMonInfoImpl>
+        <UID>hltMonSvc</UID>
+        <library>MonSvcInfoService</library>
+        <ConfigurationRules>
+          <ConfigurationRuleBundle>
+            <UID>HltpuConfigurationRuleBundle</UID>
+            <Rules>
+              <ConfigurationRule>
+                <ExcludeFilter></ExcludeFilter>
+                <Name>Dumm</Name>
+                <UID>HltpuOHRule</UID>
+                <Parameters>
+                  <OHPublishingParameters>
+                    <PublishInterval>5</PublishInterval>
+                    <ROOTProvider>${TDAQ_APPLICATION_NAME}</ROOTProvider>
+                    <OHServer>${TDAQ_OH_SERVER=HLT-Histogramming}</OHServer>
+                    <UID>HltpuOHPublishingParameters</UID>
+                    <NumberOfSlots>5</NumberOfSlots>
+                  </OHPublishingParameters>
+                </Parameters>
+                <IncludeFilter>.*</IncludeFilter>
+              </ConfigurationRule>
+              <ConfigurationRule>
+                <ExcludeFilter></ExcludeFilter>
+                <Name>DummDumm</Name>
+                <UID>HltpuISRule</UID>
+                <Parameters>
+                  <ISPublishingParameters>
+                    <PublishInterval>10</PublishInterval>
+                    <UID>HltpuISPublishingParameters</UID>
+                    <NumberOfSlots>1</NumberOfSlots>
+                    <ISServer>${TDAQ_IS_SERVER=DF}</ISServer>
+                  </ISPublishingParameters>
+                </Parameters>
+                <IncludeFilter>.*</IncludeFilter>
+              </ConfigurationRule>
+            </Rules>
+          </ConfigurationRuleBundle>
+        </ConfigurationRules>
+      </HLTMonInfoImpl>
+    </InfoService>
+  </HLTMPPUApplication>
+  <Partition>
+    <UID>athenaHLT</UID>
+    <LogRoot>/scratch/fwinkl/athenaHLT/HLT/Trigger/TrigControl/TrigCommon/unitTestRun</LogRoot>
+    <TriggerConfiguration>
+      <TriggerConfiguration>
+        <L1TriggerConfiguration>
+          <L1TriggerConfiguration>
+            <ConfigureLvl1MenuFrom>DB</ConfigureLvl1MenuFrom>
+            <Lvl1BunchGroupKey>0</Lvl1BunchGroupKey>
+            <UID>L1TrigConf</UID>
+            <Lvl1PrescaleKey>0</Lvl1PrescaleKey>
+          </L1TriggerConfiguration>
+        </L1TriggerConfiguration>
+        <hlt>
+          <HLTImplementationJobOptions>
+            <libraries>
+              <library>TrigServices</library>
+              <library>TrigPSC</library>
+            </libraries>
+            <preCommands>
+              <preCommand>_run_number=327265</preCommand>
+              <preCommand>include('TrigServices/OfflineTHistSvc.py')</preCommand>
+            </preCommands>
+            <postCommands/>
+            <UID>HLTImplementationJobOptions-1</UID>
+            <evtSel>NONE</evtSel>
+            <HLTCommonParameters>
+              <HLTCommonParameters>
+                <factoryName></factoryName>
+                <dllName></dllName>
+                <messageSvcType>TrigMessageSvc</messageSvcType>
+                <jobOptionsSvcType>JobOptionsSvc</jobOptionsSvcType>
+              </HLTCommonParameters>
+            </HLTCommonParameters>
+            <logLevels>
+              <logLevel>INFO</logLevel>
+              <logLevel>ERROR</logLevel>
+            </logLevels>
+            <pythonSetupFile>TrigPSC/TrigPSCPythonSetup.py</pythonSetupFile>
+            <jobOptionsPath>dummy.py</jobOptionsPath>
+          </HLTImplementationJobOptions>
+        </hlt>
+        <UID>JobOptionsTriggerConfig-1</UID>
+        <TriggerDBConnection>
+          <TriggerDBConnection>
+            <Name>dummy</Name>
+            <Server>TRIGGERDB</Server>
+            <Alias>TRIGGERDB</Alias>
+            <User></User>
+            <Password></Password>
+            <Type>Coral</Type>
+            <SuperMasterKey>0</SuperMasterKey>
+          </TriggerDBConnection>
+        </TriggerDBConnection>
+      </TriggerConfiguration>
+    </TriggerConfiguration>
+  </Partition>
+  <ROS2ROBS/>
+</Configuration>
+<RunParams>
+  <totalTime>0</totalTime>
+  <run_type>Physics</run_type>
+  <timeEOR>1/1/70 01:00:00</timeEOR>
+  <det_mask>00000000000000000001fffffffffff7</det_mask>
+  <beam_type>0</beam_type>
+  <filename_tag></filename_tag>
+  <max_events>0</max_events>
+  <run_number>327265</run_number>
+  <timeSOR>22/11/18 11:02:32.703856</timeSOR>
+  <trigger_type>0</trigger_type>
+  <T0_project_tag></T0_project_tag>
+  <beam_energy>0</beam_energy>
+  <recording_enabled>0</recording_enabled>
+</RunParams>
+<Magnets>
+  <ToroidsCurrent>
+    <ts>22/11/18 11:02:32.703856</ts>
+    <value>20400</value>
+  </ToroidsCurrent>
+  <SolenoidCurrent>
+    <ts>22/11/18 11:02:32.703856</ts>
+    <value>7730</value>
+  </SolenoidCurrent>
+</Magnets>
diff --git a/HLT/Trigger/TrigControl/TrigCommon/share/test_athenaHLT.sh b/HLT/Trigger/TrigControl/TrigCommon/share/test_athenaHLT.sh
new file mode 100755
index 0000000000000000000000000000000000000000..4ae2f732aae7b2a6a2c9328efa268d00b9461c45
--- /dev/null
+++ b/HLT/Trigger/TrigControl/TrigCommon/share/test_athenaHLT.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+#
+# Configuration testing script for athenaHLT.py
+#
+
+test_options=$@
+
+# Cleanup any orphaned processes
+trap cleanup INT TERM EXIT
+function cleanup {
+    sid=`ps -o sess= -p $$`  # our own session id
+    pkill -9 --parent 1 --session $sid ipc_server
+    pkill -9 --parent 1 --session $sid is_server
+}
+
+# We only test the configuration stage, so these dummy values are just fine.
+# Specifying run/sor/detmask avoids the COOL lookup.
+file="dummy.data"
+run="327265"
+sortime="1542880952703855872"
+detmask="00000000000000000001fffffffffff7"
+
+# Run only config stage (exit immediately via interactive mode) and filter final ptree
+# If there was a failure, the exit code will be non-zero
+echo "e" | athenaHLT.py --file ${file} --detector-mask ${detmask} --run-number ${run} --sor-time ${sortime} --interactive ${test_options} | sed -n '/<Configuration>/,/<\/Magnets>/p;/<\/Magnets>/q' | grep '<'
diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py
index dd5a507f2dc25c45d3844601e4fca370bf978f4d..5ce18abe2e3458cd434ffccd8f04a57bbf1e7e3b 100644
--- a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py
+++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/share/MTCalibPeb.py
@@ -55,9 +55,25 @@ hypo.HypoOutputDecisions = "MTCalibPebDecisions"
 
 hypoTool1 = MTCalibPebHypoTool("HLT_MTCalibPeb1")
 hypoTool1.RandomAcceptRate = 0.75
+hypoTool1.BurnTimePerCycleMillisec = 100
+hypoTool1.NumBurnCycles = 3
 
 hypoTool2 = MTCalibPebHypoTool("HLT_MTCalibPeb2")
 hypoTool2.RandomAcceptRate = 0.25
+hypoTool2.BurnTimePerCycleMillisec = 200
+hypoTool2.NumBurnCycles = 10
+hypoTool2.TimeBetweenROBReqMillisec = 100
+hypoTool2.ROBAccessDict = {
+ "01 :ADD: Preload  ": [ 0x42002a, 0x42002b ],    # robs for 1st preload
+ "02 :ADD: Preload  ": [ 0x42002e, 0x42002f ],    # robs for 2nd preload
+ "03 :GET: Retrieve ": [ 0x42002e, 0x420060 ],    # robs for 1st retrieval
+ "04 :ADD: Preload  ": [ 0x420060 ],              # robs for 3rd preload
+ "05 :ADD: Preload  ": [ 0x420064 ],              # robs for 4th preload
+ "06 :ADD: Preload  ": [ 0x42002e, 0x420060 ],    # robs for 5th preload
+ "07 :GET: Retrieve ": [ 0x420060 ],              # robs for 2nd retrieval
+ "08 :GET: Retrieve ": [ 0x420064 ],              # robs for 3rd retrieval
+ "09 :COL: Ev.Build ": [ 0x0 ]                    # event building
+} # This is just an example with a few ROBs (LAr in this case) for testing the ROBDataProvider
 
 hypo.HypoTools = [hypoTool1, hypoTool2]
 
@@ -77,6 +93,10 @@ stmaker.ChainDecisions = "HLTFinalDecisions"
 stmaker.ChainToStream = {}
 stmaker.ChainToStream["HLT_MTCalibPeb1"] = "DataScouting_05_Jets"
 stmaker.ChainToStream["HLT_MTCalibPeb2"] = "Main"
+stmaker.StreamSubDets = {}
+stmaker.StreamSubDets["Main"] = [0x41, 0x42]
+stmaker.StreamRobs = {}
+stmaker.StreamRobs["Main"] = [0x42002e, 0x420060, 0x420064]
 
 # Tool adding HLT bits to HLT result
 bitsmaker = TriggerBitsMakerTool()
diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoAlg.cxx b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoAlg.cxx
index b752081e438684b3a5989abd57b45d15152b9e40..9d8a72ff20bed2c2c18768c200f7a797f2b52c16 100644
--- a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoAlg.cxx
+++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoAlg.cxx
@@ -28,6 +28,7 @@ MTCalibPebHypoAlg::~MTCalibPebHypoAlg() {}
 // =============================================================================
 StatusCode MTCalibPebHypoAlg::initialize() {
   ATH_MSG_INFO("Initialising " << name());
+  ATH_CHECK(m_hypoTools.retrieve());
   return StatusCode::SUCCESS;
 }
 
@@ -36,6 +37,7 @@ StatusCode MTCalibPebHypoAlg::initialize() {
 // =============================================================================
 StatusCode MTCalibPebHypoAlg::finalize() {
   ATH_MSG_INFO("Finalising " << name());
+  ATH_CHECK(m_hypoTools.release());
   return StatusCode::SUCCESS;
 }
 
@@ -50,12 +52,11 @@ StatusCode MTCalibPebHypoAlg::execute_r(const EventContext& eventContext) const
   auto aux = std::make_unique<DecisionAuxContainer>();
   decisions->setStore(aux.get());
 
-  // Prepare input for hypo tools
-  std::vector<MTCalibPebHypoTool::Input> toolInput;
-
   // Create new decision
   Decision* newd = newDecisionIn(decisions.get()); // DecisionContainer decisions owns the pointer
-  toolInput.emplace_back(newd);
+
+  // Prepare input for hypo tools
+  MTCalibPebHypoTool::Input toolInput(newd, eventContext);
 
   // Call the hypo tools
   for (const auto& tool: m_hypoTools) {
diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx
index ecb5371e2935cce1bb6e680defa9bb7576be6c78..8f2dee375d82cc47f4222d4bf9117eaa1927c67b 100644
--- a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx
+++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.cxx
@@ -2,15 +2,54 @@
   Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
+// Trigger includes
 #include "MTCalibPebHypoTool.h"
+
+// Athena includes
+#include "AthenaKernel/Timeout.h"
+
+// System includes
 #include <random>
+#include <thread>
+#include <sstream>
 
 // Local implementation-specific helper methods
 namespace {
+  /// Returns a reference to static thread-local random number generator
+  std::mt19937& threadLocalGenerator() {
+    static thread_local std::random_device rd; // used only to ensure different seeds for mt19937
+    static thread_local std::mt19937 generator(rd());
+    return generator;
+  }
+  /// Basic random real number generation
+  template<typename T> T randomRealNumber(const T min, const T max) {
+    std::uniform_real_distribution<T> distribution(min, max);
+    return distribution(threadLocalGenerator());
+  }
+  /// Basic random integer generation
+  template<typename T> T randomInteger(const T min, const T max) {
+    std::uniform_int_distribution<T> distribution(min, max);
+    return distribution(threadLocalGenerator());
+  }
+  /// Random bool with a given true rate
   bool randomAccept(const double acceptRate) {
-      static thread_local std::mt19937 generator;
-      std::uniform_real_distribution<double> distribution(0.0, 1.0);
-      return (distribution(generator) < acceptRate);
+      return (randomRealNumber(0.0, 1.0) < acceptRate);
+  }
+  /// ROBFragments vector print helper
+  std::ostream& operator<<(std::ostream& str, const IROBDataProviderSvc::VROBFRAG& robFragments) {
+    for (const IROBDataProviderSvc::ROBF* robf : robFragments) {
+      str << "---> ROB ID = 0x" << std::hex << robf->rob_source_id() << std::dec << std::endl
+          << "     ROD ID = 0x" << std::hex << robf->rod_source_id() << std::dec << std::endl
+          << "     ROD Level-1 ID = " << robf->rod_lvl1_id() << std::endl;
+    }
+    return str;
+  }
+  /// ROB ID vector print helper
+  std::string robIdVecToString(const std::vector<uint32_t>& robIdVec) {
+    std::ostringstream str;
+    for (const uint32_t robId : robIdVec)
+      str << "0x" << std::hex << robId << std::dec << " ";
+    return str.str();
   }
 }
 
@@ -19,6 +58,7 @@ namespace {
 // =============================================================================
 MTCalibPebHypoTool::MTCalibPebHypoTool(const std::string& type, const std::string& name, const IInterface* parent)
 : AthAlgTool(type,name,parent),
+  m_robDataProviderSvc("ROBDataProviderSvc", name),
   m_decisionId (HLT::Identifier::fromToolName(name)) {}
 
 // =============================================================================
@@ -31,21 +71,86 @@ MTCalibPebHypoTool::~MTCalibPebHypoTool() {}
 // =============================================================================
 StatusCode MTCalibPebHypoTool::initialize() {
   ATH_MSG_INFO("Initialising " << name());
+  ATH_CHECK(m_robDataProviderSvc.retrieve());
   return StatusCode::SUCCESS;
 }
 
 // =============================================================================
-StatusCode MTCalibPebHypoTool::decide(const std::vector<MTCalibPebHypoTool::Input>& inputs) const {
+// Implementation of AthAlgTool::finalize
+// =============================================================================
+StatusCode MTCalibPebHypoTool::finalize() {
+  ATH_MSG_INFO("Finalising " << name());
+  ATH_CHECK(m_robDataProviderSvc.release());
+  return StatusCode::SUCCESS;
+}
 
-  bool accept = randomAccept(m_acceptRate);
-  for (auto& in : inputs) {
-    if (accept) {
-      ATH_MSG_DEBUG("Decision " << m_decisionId << " is accept");
-      TrigCompositeUtils::addDecisionID(m_decisionId, in.decision);
+// =============================================================================
+StatusCode MTCalibPebHypoTool::decide(const MTCalibPebHypoTool::Input& input) const {
+
+  // ---------------------------------------------------------------------------
+  // Burn CPU time
+  // ---------------------------------------------------------------------------
+  for (unsigned int iCycle = 0; iCycle < m_numBurnCycles; ++iCycle) {
+    if (Athena::Timeout::instance(input.eventContext).reached()) {
+      if (m_failOnTimeout) {
+        ATH_MSG_ERROR("Timeout reached in CPU time burning cycle # " << iCycle+1 << " and FailOnTimeout is true");
+        return StatusCode::FAILURE;
+      }
+      ATH_MSG_INFO("Timeout reached in CPU time burning cycle # " << iCycle+1);
+      break;
+    }
+    unsigned int burnTime = m_burnTimeRandomly
+                            ? randomInteger<unsigned int>(0, m_burnTimePerCycleMillisec)
+                            : m_burnTimePerCycleMillisec.value();
+    ATH_MSG_VERBOSE("CPU time burning cycle # " << iCycle+1 << ", burn time [ms] = " << burnTime);
+    std::this_thread::sleep_for(std::chrono::milliseconds(burnTime));
+  }
+
+  // ---------------------------------------------------------------------------
+  // Prefetch or retrieve ROBs
+  // ---------------------------------------------------------------------------
+  for (const auto& p : m_robAccessDict) {
+    // Check for timeout
+    if (Athena::Timeout::instance(input.eventContext).reached()) {
+      ATH_MSG_INFO("Timeout reached in ROB retrieval loop");
+      break;
+    }
+    const std::string& instruction = p.first;
+    const std::vector<uint32_t>& robs = p.second;
+    if (instruction.find(":ADD:")!=std::string::npos) {
+      // Prefetch ROBs
+      ATH_MSG_DEBUG("Preloading ROBs: " << robIdVecToString(robs));
+      m_robDataProviderSvc->addROBData(input.eventContext, robs, name()+"-ADD");
     }
-    else {
-      ATH_MSG_DEBUG("Decision " << m_decisionId << " is reject");
+    if (instruction.find(":GET:")!=std::string::npos) {
+      // Retrieve ROBs
+      ATH_MSG_DEBUG("Retrieving ROBs: " << robIdVecToString(robs));
+      // VROBFRAG = std::vector<const eformat::ROBFragment<const uint32_t*>* >
+      IROBDataProviderSvc::VROBFRAG robFragments;
+      m_robDataProviderSvc->getROBData(input.eventContext, robs, robFragments, name()+"-GET");
+      ATH_MSG_DEBUG("Number of ROBs retrieved: " << robFragments.size());
+      if (!robFragments.empty())
+        ATH_MSG_DEBUG("List of ROBs found: " << std::endl << robFragments);
     }
+    if (instruction.find(":COL:")!=std::string::npos) {
+      // Event building
+      ATH_MSG_DEBUG("Requesting full event ROBs");
+      int nrobs = m_robDataProviderSvc->collectCompleteEventData(input.eventContext, name()+"-COL");
+      ATH_MSG_DEBUG("Number of ROBs retrieved: " << nrobs);
+    }
+    std::this_thread::sleep_for(std::chrono::milliseconds(m_timeBetweenRobReqMillisec));
+  }
+
+  // ---------------------------------------------------------------------------
+  // Random accept decision
+  // ---------------------------------------------------------------------------
+  bool accept = randomAccept(m_acceptRate);
+  if (accept) {
+    ATH_MSG_DEBUG("Decision " << m_decisionId << " is accept");
+    TrigCompositeUtils::addDecisionID(m_decisionId, input.decision);
+  }
+  else {
+    ATH_MSG_DEBUG("Decision " << m_decisionId << " is reject");
   }
 
   return StatusCode::SUCCESS;
diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h
index 2fa92ae597464e897bc082e5c19ecff6e3c5a337..a511a354cd568f4143eb8b3904b7fee0c4a32ad8 100644
--- a/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h
+++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExPartialEB/src/MTCalibPebHypoTool.h
@@ -6,18 +6,19 @@
 #define TRIGEXPARTIALEB_MTCALIBPEBHYPOTOOL_H
 
 // Trigger includes
+#include "ByteStreamCnvSvcBase/IROBDataProviderSvc.h"
 #include "DecisionHandling/HLTIdentifier.h"
 #include "DecisionHandling/TrigCompositeUtils.h"
 
 // Athena includes
 #include "AthenaBaseComps/AthAlgTool.h"
 
+// Gaudi includes
+#include "Gaudi/Parsers/Factory.h" // needed to declare less common Property types
+
 // TDAQ includes
 #include "eformat/StreamTag.h"
 
-// System includes
-#include <random>
-
 /** @class MTCalibPebHypoTool
  *  @brief Base class for tools used by MTCalibPebHypoAlg
  **/
@@ -30,26 +31,55 @@ public:
 
   // ------------------------- AthAlgTool methods ------------------------------
   virtual StatusCode initialize() override;
+  virtual StatusCode finalize() override;
 
   // ------------------------- Public types ------------------------------------
   struct Input {
-    Input(TrigCompositeUtils::Decision* d)
-    : decision(d) {}
+    Input(TrigCompositeUtils::Decision* d, const EventContext& ctx)
+    : decision(d), eventContext(ctx) {}
     TrigCompositeUtils::Decision* decision;
+    const EventContext& eventContext;
   };
 
   // ------------------------- Specific methods of this class ------------------
   /// Decides whether to accept the event
-  StatusCode decide(const std::vector<Input>& inputs) const;
+  StatusCode decide(const Input& input) const;
 
 private:
   // ------------------------- Properties --------------------------------------
   Gaudi::Property<double> m_acceptRate {
-    this,
-    "RandomAcceptRate",
-    -1,
+    this, "RandomAcceptRate", -1,
     "Rate of random accepts, <=0 is never, >=1 is always"
   };
+  Gaudi::Property<unsigned int> m_burnTimePerCycleMillisec {
+    this, "BurnTimePerCycleMillisec", 0,
+    "Burn time per cycle in milliseconds"
+  };
+  Gaudi::Property<unsigned int> m_numBurnCycles {
+    this, "NumBurnCycles", 0,
+    "Number of time burning cycles"
+  };
+  Gaudi::Property<bool> m_burnTimeRandomly {
+    this, "BurnTimeRandomly", true,
+    "If true, burn time per cycle is a random value from uniform distribution between 0 and the given value"
+  };
+  Gaudi::Property<bool> m_failOnTimeout {
+    this, "FailOnTimeout", true,
+    "If true, the execution will return StatusCode::FAILURE when Athena timeout is detected"
+  };
+  Gaudi::Property<std::map<std::string,std::vector<uint32_t> > > m_robAccessDict {
+    this, "ROBAccessDict", {},
+    "List of prefetch/retrieve operations with given ROB IDs."
+    "The string key has to contain :ADD: (prefetch), :GET: (retrieve), or :COL: (full event building)."
+    "The value is a vector of corresponding ROB IDs."
+  };
+  Gaudi::Property<unsigned int> m_timeBetweenRobReqMillisec {
+    this, "TimeBetweenROBReqMillisec", 0,
+    "Delay in milliseconds between subsequent ROB request operations from ROBAccessDict"
+  };
+
+  // ------------------------- Service or tool handles -------------------------
+  ServiceHandle<IROBDataProviderSvc> m_robDataProviderSvc;
 
   // ------------------------- Other private members ---------------------------
   /// The decision id of the tool instance
diff --git a/HLT/Trigger/TrigControl/TrigPSC/TrigPSC/Utils.h b/HLT/Trigger/TrigControl/TrigPSC/TrigPSC/Utils.h
index ad8034838cc8572f2d6751df9276a85dc24d8ce7..fd58602034dbebff894eddeef92c251485021d32 100644
--- a/HLT/Trigger/TrigControl/TrigPSC/TrigPSC/Utils.h
+++ b/HLT/Trigger/TrigControl/TrigPSC/TrigPSC/Utils.h
@@ -1,13 +1,10 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
  * @file TrigPSC/Utils.h
  * @author Frank Winklmeier
- * $Author: ricab $
- * $Revision: 11 $
- * $Date: 2013-05-14 17:22:39 +0200 (Tue, 14 May 2013) $
  *
  * @brief Some helpers for the PSC
  */
@@ -17,7 +14,7 @@
 
 #include <vector>
 #include <string>
-#include <sys/time.h>
+#include <chrono>
 
 namespace psc {
   
@@ -68,9 +65,9 @@ namespace psc {
       void stop();
             
     private:
-      std::string     m_descr;     ///< description of timer
-      struct timeval  m_t1;        ///< start time
-      bool            m_running;   ///< timer running?
+      std::string     m_descr;                     ///< description of timer
+      std::chrono::system_clock::time_point m_t1;  ///< start time
+      bool            m_running;                   ///< timer running?
     };
     
   } /* namespace Utils */  
diff --git a/HLT/Trigger/TrigControl/TrigPSC/share/TrigHLTImplementationDBPythonSwitchToDebug.py b/HLT/Trigger/TrigControl/TrigPSC/share/TrigHLTImplementationDBPythonSwitchToDebug.py
deleted file mode 100644
index a3a53b184850eeeb7baffcec2d259a049b00804b..0000000000000000000000000000000000000000
--- a/HLT/Trigger/TrigControl/TrigPSC/share/TrigHLTImplementationDBPythonSwitchToDebug.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Switch Output Level to DEBUG when using HLTImplementationDBPython in OKS
-#
-from AthenaCommon.Include import include
-from AthenaCommon.Constants import *
-from TrigPSC import PscConfig
-from TrigServices.TriggerUnixStandardSetup import _Conf
-_Conf.useOnlineTHistSvc=True
-PscConfig.optmap['LOGLEVEL']='DEBUG'
-include('TrigPSC/TrigPSCPythonDbSetup.py')
diff --git a/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonDbSetup.py b/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonDbSetup.py
index c3d8a6aac4d677e26abd4463c55f236464530160..e56abfb74e7164b8344e1665adad9a266ef2e614 100644
--- a/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonDbSetup.py
+++ b/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonDbSetup.py
@@ -2,7 +2,6 @@
 ## @file   TrigPSCPythonDbSetup.py
 ## @brief  Minimal Python setup for running from TrigDB
 ## @author Frank Winklmeier
-## $Id: TrigPSCPythonDbSetup.py 11 2013-05-14 15:22:39Z ricab $
 ###############################################################
 
 ## This is a very minimal Python setup. It is only included when
@@ -12,9 +11,6 @@
 
 ## !!! Do NOT import theApp. It will screw up the configuration !!!
 
-import string, os, sys
-
-
 def setTHistSvcOutput():
    """Helper to set THistSvc.Output"""
 
@@ -32,22 +28,7 @@ from AthenaCommon.Constants import *
 import AthenaCommon.ExitCodes as ExitCodes
 
 from TrigPSC import PscConfig
-logLevel=string.upper(PscConfig.optmap['LOGLEVEL'])
-logLevel=string.split(logLevel,",")
-if len(logLevel)==0:
-   logLevel=["INFO","ERROR"]
-
-if len(logLevel)==1:
-   logLevel.append("ERROR")
-
-## test and set log level
-try:
-   exec( 'log.setLevel( logging.%s )' % logLevel[0] )
-except:
-   sys.exit( ExitCodes.OPTIONS_UNKNOWN )
-
-if not os.environ.has_key( "POOL_OUTMSG_LEVEL" ):
-   exec 'os.environ[ "POOL_OUTMSG_LEVEL" ] = str(%s)' % logLevel[1]
+logLevel=PscConfig.optmap['LOGLEVEL'].split(',')[0]
 
 ## Minimal Python bindings
 from GaudiPython import *
@@ -55,8 +36,8 @@ from GaudiPython.Bindings import iProperty
 from TrigCommon.TrigPyHelper import trigApp
 
 ## Set OutputLevel in JobOptionsSvc if "-l" option was used in athenaMT/PT
-if logLevel[0]!="INFO":
-   outputLevel = int(locals()[logLevel[0]])
+if logLevel!="INFO":
+   outputLevel = int(locals()[logLevel])
    outputLevelProp = gbl.IntegerProperty("OutputLevel", outputLevel)
    
    ## Reset message levels
diff --git a/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonSetup.py b/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonSetup.py
index 3a1a962df3e82192686a418d72b3f13293f2c0bc..c4bb4dedbbd8c087d3e48297a9eb4194376f9e07 100755
--- a/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonSetup.py
+++ b/HLT/Trigger/TrigControl/TrigPSC/share/TrigPSCPythonSetup.py
@@ -20,7 +20,9 @@ else:
    pscServiceSetupBegin = "TrigServices/TrigServicesCommonBegin.py" # Service definitions
    pscServiceSetupEnd   = "TrigServices/TrigServicesCommonEnd.py"   # Service definitions
 
-   import sys, os, string
+   import sys
+   import os
+   import string
 
    ### Set up some common flags --------------------------------------------------
 
@@ -39,62 +41,14 @@ else:
       
    del TriggerFlags
 
-   ### logging and messages -----------------------------------------------------
-   from AthenaCommon.Logging import *
-   from AthenaCommon.Constants import *
-   import AthenaCommon.ExitCodes as ExitCodes
-
-   from TrigPSC import PscConfig
-   logLevel=string.upper(PscConfig.optmap['LOGLEVEL'])
-   logLevel=string.split(logLevel,",")
-   if len(logLevel)==0:
-      logLevel=["INFO","ERROR"]
-
-   if len(logLevel)==1:
-      logLevel.append("ERROR")
-
-   ### FOR DEVELOPMENT: force verbose log level
-   logLevel=["VERBOSE","DEBUG","INFO","ERROR"]
-
-   ## test and set log level
-   try:
-      exec( 'log.setLevel( logging.%s )' % logLevel[0] )
-   except:
-      sys.exit( ExitCodes.OPTIONS_UNKNOWN )
-
-   ### file inclusion and tracing -----------------------------------------------
-   from AthenaCommon.Include import Include, IncludeError, include
-   showincludes = eval(PscConfig.optmap['SHOWINCLUDE'])
-   include.setShowIncludes( showincludes )
-   if showincludes:
-      import AthenaCommon.Include as AthCIncMod
-      AthCIncMod.marker = ' -#-'      # distinguish bootstrap from other jo-code
-
-   if PscConfig.optmap['TRACEPATTERN']:
-      import AthenaCommon.Include
-      AthenaCommon.Include.tracePattern = PscConfig.optmap['TRACEPATTERN']
-
-   #
-   ### gaudi --------------------------------------------------------------------
-   try:
-      from GaudiPython import *
-   except ImportError:
-      from gaudimodule import *
-
+   ### Athena configuration -----------------------------------------------------
+   from GaudiPython import *
    from AthenaCommon.Configurable import *
    from AthenaCommon.OldStyleConfig import *
-
-   ### set output level  --------------------------------------------------------
-   exec 'OUTPUTLEVEL = %s' % logLevel[0]
-   if not os.environ.has_key( "POOL_OUTMSG_LEVEL" ):
-      exec 'os.environ[ "POOL_OUTMSG_LEVEL" ] = str(%s)' % logLevel[1]
-   del logLevel
-
-   OutputLevel=OUTPUTLEVEL
-   HLTOutputLevel=OUTPUTLEVEL
-            
-   ### Athena configuration -----------------------------------------------------
    from AthenaCommon import CfgMgr
+   from AthenaCommon.Logging import *
+   from AthenaCommon.Constants import *
+   import AthenaCommon.ExitCodes as ExitCodes
 
    ## create the application manager and start in a non-initialised state
    from AthenaCommon.AppMgr import theApp
@@ -110,6 +64,21 @@ else:
    ServiceMgr += getConfigurable(theApp.JobOptionsSvcType)("JobOptionsSvc")
    ServiceMgr += getConfigurable(theApp.MessageSvcType   )("MessageSvc"   )
 
+   ## set OutputLevel
+   logLevel = PscConfig.optmap['LOGLEVEL'].upper().split(',')
+
+   if len(logLevel) > 0:
+      from AthenaCommon import Constants
+      theApp.setOutputLevel(getattr(Constants, logLevel[0]))
+
+   if 'POOL_OUTMSG_LEVEL' not in os.environ and len(logLevel)>1:
+      os.environ['POOL_OUTMSG_LEVEL'] = logLevel[1]
+
+   del logLevel
+
+   ## file inclusion and tracing
+   from AthenaCommon.Include import Include, IncludeError, include
+
    ## set the default values
    try:
       include( pscBootstrapFile )
@@ -122,7 +91,6 @@ else:
 
    ## properties of the application manager
    theApp.StatusCodeCheck = False     # enabled via TriggerFlags.Online.doValidation (see below)
-   theApp.setOutputLevel(OUTPUTLEVEL)
 
    # Configure the CoreDumpSvc
    if not hasattr(ServiceMgr,"CoreDumpSvc"):
@@ -133,7 +101,7 @@ else:
    # in case this is not available try for backward compatibility
    # to load the old libAthenaServicesDict and try to install it from there
    #
-   if ServiceMgr.CoreDumpSvc.properties().has_key('FatalHandler'): 
+   if 'FatalHandler' in ServiceMgr.CoreDumpSvc.properties():
       ServiceMgr.CoreDumpSvc.FatalHandler = -1         # make SIG_INT fatal
 
    ## set resource limits
@@ -141,12 +109,6 @@ else:
    SetMaxLimits()
    del SetMaxLimits
 
-   ## reset include markers
-   if showincludes:
-      AthCIncMod.marker = AthCIncMod.__marker__      # reset
-      del AthCIncMod
-   del showincludes
-
    ### run optional command before user job options script ----------------------
    if PscConfig.optmap['PRECOMMAND']:
       print "\n"
@@ -201,7 +163,7 @@ else:
 
       short_tb = []
       for frame_info in tb:
-         if not 'AthenaCommon' in frame_info[0]:
+         if 'AthenaCommon' not in frame_info[0]:
             short_tb.append( frame_info )
 
       print 'Shortened traceback (most recent user call last):'
diff --git a/HLT/Trigger/TrigControl/TrigPSC/src/Config.cxx b/HLT/Trigger/TrigControl/TrigPSC/src/Config.cxx
index 88729ef3683d153dabdcdd5ca352993e2ec73ef9..1873a4d1adcec6eb15dbfe0878a33f075d9a2fd6 100644
--- a/HLT/Trigger/TrigControl/TrigPSC/src/Config.cxx
+++ b/HLT/Trigger/TrigControl/TrigPSC/src/Config.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
@@ -248,10 +248,8 @@ bool psc::Config::didUserSetLogLevel() const
 ////////////////////////////////////////////////////////////////////////////////
 void psc::Config::setup_optmap_defaults()
 {
-  optmap["SHOWINCLUDE"]       = "False";
   optmap["EVENTSELECTOR"]     = "NONE";
   optmap["LOGLEVEL"]          = "INFO";
-  optmap["TRACEPATTERN"]      = "";
   optmap["PRECOMMAND"]        = "";
   optmap["POSTCOMMAND"]       = "";
   optmap["MUONCALBUFFERNAME"] = "";
@@ -263,8 +261,6 @@ void psc::Config::fillopt_jo(const ptree& hlt)
 {
   optmap["JOBOPTIONSPATH"]  = hlt.get_child("jobOptionsPath").data();
   optmap["EVENTSELECTOR"]   = hlt.get_child("evtSel").data();
-  optmap["SHOWINCLUDE"]     = hlt.get_child("showInclude").data();
-  optmap["TRACEPATTERN"]    = hlt.get_child("tracePattern").data();
   optmap["PYTHONSETUPFILE"] = hlt.get_child("pythonSetupFile").data();
   optmap["JOBOPTIONSTYPE"]  = "NONE";
   optmap["LOGLEVEL"]        = plevelToStr(hlt.get_child_optional("logLevels"),
diff --git a/HLT/Trigger/TrigControl/TrigPSC/src/Psc.cxx b/HLT/Trigger/TrigControl/TrigPSC/src/Psc.cxx
index 0469d616712174bd69fd7e3b7c7472f843ff7777..d7ab8a89b90ec9f87475f16d89cc29ace8971880 100644
--- a/HLT/Trigger/TrigControl/TrigPSC/src/Psc.cxx
+++ b/HLT/Trigger/TrigControl/TrigPSC/src/Psc.cxx
@@ -269,9 +269,7 @@ bool psc::Psc::configure(const ptree& config)
     pyCmds.push_back("from AthenaCommon.Include import include");
     // have C++ bool representation be recognized in python:
     pyCmds.push_back("true, false = True, False");
-    pyCmds.push_back(std::string("include.setShowIncludes(") +
-        m_config->getOption("SHOWINCLUDE") + std::string(")"));
-    if ( !psc::Utils::execPython(pyCmds) ) {      
+    if ( !psc::Utils::execPython(pyCmds) ) {
       ERS_PSC_ERROR("Athena 'include' setup failed.");
       return false;
     }       
diff --git a/HLT/Trigger/TrigControl/TrigPSC/src/Utils.cxx b/HLT/Trigger/TrigControl/TrigPSC/src/Utils.cxx
index b8f2d99bedf2939ff2b447e3614452c1f685ccaa..2eddd12c15b40e0532b268c1c056d5303cf6bcbc 100644
--- a/HLT/Trigger/TrigControl/TrigPSC/src/Utils.cxx
+++ b/HLT/Trigger/TrigControl/TrigPSC/src/Utils.cxx
@@ -1,13 +1,10 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
  * @file TrigPSC/src/Utils.cxx
  * @author Frank Winklmeier
- * $Author: ricab $
- * $Revision: 11 $
- * $Date: 2013-05-14 17:22:39 +0200 (Tue, 14 May 2013) $
  *
  * @brief Some helpers for the PSC
  */
@@ -18,7 +15,6 @@
 
 #undef _POSIX_C_SOURCE
 #include <Python.h>
-#include <sys/time.h>
 #include <errno.h>
 
 //--------------------------------------------------------------------------------
@@ -59,35 +55,19 @@ bool psc::Utils::pyInclude (const std::string& pyFileName)
 // ScopeTimer class
 //--------------------------------------------------------------------------------
 
-
 psc::Utils::ScopeTimer::ScopeTimer (const std::string& descr) :
   m_descr(descr),
   m_running(true)
 {
-  gettimeofday(&m_t1, 0);
-
-  // Format time
-  char buf[64];
-  struct tm tms;
-  time_t sec = m_t1.tv_sec;  
-  localtime_r(&sec, &tms);  
-  strftime(buf, 64, "%Y-%m-%d %H:%M:%S", &tms);
-
-  // Print and append milliseconds
-  ERS_LOG( m_descr << " started at time: " << buf
-           << "," << static_cast<unsigned int>(m_t1.tv_usec/1000) );
+  m_t1 = std::chrono::system_clock::now();
+  auto t = std::chrono::system_clock::to_time_t(m_t1);
+  ERS_LOG( m_descr << " started at time: " << std::put_time(std::localtime(&t), "%Y-%m-%d %H:%M:%S") );
 }
 
 void psc::Utils::ScopeTimer::stop()
 {
-  struct timeval t2;
-  gettimeofday(&t2, 0);
-
-  int secs = 0 ;
-  if (t2.tv_sec >= m_t1.tv_sec)
-    secs = t2.tv_sec - m_t1.tv_sec;
-
-  int usecs = t2.tv_usec - m_t1.tv_usec;
-  float mtime = static_cast<float>(secs)*1000 + static_cast<float>(usecs)/1000;
-  ERS_LOG( m_descr << " finished. Time used [ms] = " << mtime );
+  auto t2 = std::chrono::system_clock::now();
+  auto dt_ms = std::chrono::duration_cast<std::chrono::milliseconds>(t2 - m_t1);
+  ERS_LOG( m_descr << " finished. Time used [ms] = " << dt_ms.count() );
+  m_running = false;
 }
diff --git a/HLT/Trigger/TrigControl/TrigServices/share/MessageSvc.py b/HLT/Trigger/TrigControl/TrigServices/share/MessageSvc.py
index cde14a414ff5d94c9811eb1a9ea1290dd0a5d6d8..dd17ca5e0bbf8c2b36af7b6a0b5b4c81ee86f8e7 100644
--- a/HLT/Trigger/TrigControl/TrigServices/share/MessageSvc.py
+++ b/HLT/Trigger/TrigControl/TrigServices/share/MessageSvc.py
@@ -10,8 +10,7 @@ from AthenaCommon.Constants import *
 # make the message service available
 svcMgr.MessageSvc = theApp.service( "MessageSvc" )     # already instantiated
 MessageSvc = svcMgr.MessageSvc
-
-MessageSvc.OutputLevel  = OutputLevel
+MessageSvc.OutputLevel = theApp.OutputLevel
 
 # Use color for different message levels
 # --------------------------------------
@@ -38,10 +37,7 @@ MessageSvc.errorLimit   = 0
 MessageSvc.fatalLimit   = 0
 
 # set message limit to unlimited when general DEBUG is requested
-if (("OutputLevel" in dir()) and (OutputLevel<=DEBUG)) :
-    MessageSvc.defaultLimit = 0
-    MessageSvc.enableSuppression = False
-if (("HLTOutputLevel" in dir()) and (HLTOutputLevel<=DEBUG)) :
+if MessageSvc.OutputLevel<=DEBUG :
     MessageSvc.defaultLimit = 0
     MessageSvc.enableSuppression = False
 
diff --git a/HLT/Trigger/TrigControl/TrigServices/share/TrigServicesEventLoopMgr.py b/HLT/Trigger/TrigControl/TrigServices/share/TrigServicesEventLoopMgr.py
index 4ee0949303cc82279719e9253bfb6f2b6d10373e..c4f65529f9e6e763118c7273ee04e1fe7dc9c6bb 100644
--- a/HLT/Trigger/TrigControl/TrigServices/share/TrigServicesEventLoopMgr.py
+++ b/HLT/Trigger/TrigControl/TrigServices/share/TrigServicesEventLoopMgr.py
@@ -31,7 +31,7 @@ svcMgr += SG__HiveMgrSvc("EventDataSvc")
 #svcMgr.EventDataSvc.OutputLevel = VERBOSE
 
 from GaudiHive.GaudiHiveConf import AlgResourcePool
-arp=AlgResourcePool( OutputLevel = INFO )
+arp=AlgResourcePool()
 arp.TopAlg=["AthMasterSeq"] #this should enable control flow
 svcMgr += arp
 
@@ -39,16 +39,12 @@ from AthenaCommon.AlgScheduler import AlgScheduler
 #AlgScheduler.setThreadPoolSize(nThreads)
 AlgScheduler.ShowDataDependencies(True)
 AlgScheduler.ShowControlFlow(True)
-AlgScheduler.OutputLevel=VERBOSE
 
 from StoreGate.StoreGateConf import StoreGateSvc
 svcMgr += StoreGateSvc()
-svcMgr.StoreGateSvc.OutputLevel = VERBOSE
-svcMgr.StoreGateSvc.Dump = True
 
 from StoreGate.StoreGateConf import SGImplSvc
 svcMgr += SGImplSvc("SGImplSvc")
-svcMgr.SGImplSvc.OutputLevel = VERBOSE
 
 # ThreadPoolService thread local initialization
 from GaudiHive.GaudiHiveConf import ThreadPoolSvc
@@ -72,10 +68,6 @@ theApp.AuditAlgorithms=True
 from SGComps.SGCompsConf import SGCommitAuditor
 theAuditorSvc += SGCommitAuditor()
 
-# for easier browsing of verbose logs
-ClassIDSvc = Service("ClassIDSvc")
-ClassIDSvc.OutputLevel = DEBUG
-
 # ==============================================================================
 # Event selector and input service
 # ==============================================================================
diff --git a/InnerDetector/InDetConditions/InDetBeamSpotService/InDetBeamSpotService/IBeamCondSvc.h b/InnerDetector/InDetConditions/InDetBeamSpotService/InDetBeamSpotService/IBeamCondSvc.h
index ef66b649e13515e581cdfe0eb8d7fc4d0b4bdf9a..e178fd56254ad4005ac5f8d6911f96273242b554 100644
--- a/InnerDetector/InDetConditions/InDetBeamSpotService/InDetBeamSpotService/IBeamCondSvc.h
+++ b/InnerDetector/InDetConditions/InDetBeamSpotService/InDetBeamSpotService/IBeamCondSvc.h
@@ -12,7 +12,7 @@
 #ifndef SIMULATIONBASE
 #include "VxVertex/RecVertex.h"
 #endif
-
+//[[deprecated("Use BeamSpotData condition object")]] 
 class IBeamCondSvc : virtual public IInterface {
 
  public:
diff --git a/InnerDetector/InDetDetDescr/PixelGeoModel/src/GeoPixelTMT.cxx b/InnerDetector/InDetDetDescr/PixelGeoModel/src/GeoPixelTMT.cxx
index 0aad3fca0773686b24604b31c93a2bd5b3c53975..2138e77957ca532db0dd792e04672a4f016f85ba 100644
--- a/InnerDetector/InDetDetDescr/PixelGeoModel/src/GeoPixelTMT.cxx
+++ b/InnerDetector/InDetDetDescr/PixelGeoModel/src/GeoPixelTMT.cxx
@@ -3,7 +3,7 @@
 */
 
 // Build The TMT.
-// This is built one time per layer. 
+// This is built one time per layer.
 // Each layer is given slightly different mass due to differences
 // in the measured mass.
 
@@ -14,6 +14,7 @@
 #include "GeoModelKernel/GeoLogVol.h"
 #include "GeoModelKernel/GeoPhysVol.h"
 #include "GeoModelKernel/GeoMaterial.h"
+#include "GeoModelKernel/GeoNameTag.h"
 
 #include "GeoModelKernel/GeoTransform.h"
 #include "GeoModelKernel/GeoShapeShift.h"
@@ -32,8 +33,23 @@ GeoPixelTMT::~GeoPixelTMT(){
 }
 
 GeoVPhysVol* GeoPixelTMT::Build() {
-  const GeoShape * lastShape = 0;
-  double totVolume = 0;
+
+  // we want to use a assemby, tehrefor we need to dummy volume to trigger the mechanism
+  const GeoMaterial* ether = m_mat_mgr->getMaterial("special::Ether");
+  GeoBox* dummybox= new GeoBox(4711., 4711., 4711.);
+  GeoLogVol* dummyTMT = new GeoLogVol("TMT",dummybox,ether);
+  GeoPhysVol* theTMT = new GeoPhysVol(dummyTMT);
+
+  // get the material by dividing the total material by the volume per layer,
+  // the weight is only stored in DB for the whole TMT layer
+  // we will commonly use TMT as name for the stuff
+  std::string matName = m_gmt_mgr->getMaterialName("TMT", m_gmt_mgr->GetLD());
+
+  double volume = 12647.7; // this number seems to be wrong
+  const GeoMaterial* material = m_mat_mgr->getMaterialForVolume(matName,volume);
+  GeoNameTag* tag = new GeoNameTag("TMT");
+
+  // this part is unchanged: reading the DB, creating the shapes of the volumes and defining their position
   HepGeom::RotateX3D traprot(180.*CLHEP::deg);
 
   int halfNModule = m_gmt_mgr->PixelNModule()/2;
@@ -61,7 +77,7 @@ GeoVPhysVol* GeoPixelTMT::Build() {
     double zpos = 0.5*(z1+z2);
     double xpos = 0.5*(xbase1 + xbase2 - 0.5*(w2+w1));
 
-    double theta = 0;  
+    double theta = 0;
     if (w1 != w2 || xbase1 != xbase2) {
       theta = std::atan((xbase2 - xbase1 - 0.5*(w2-w1))/length);
     }
@@ -69,58 +85,64 @@ GeoVPhysVol* GeoPixelTMT::Build() {
     double phi = 0;
     double angleydzn = 0;
     double angleydzp = 0;
-  
+
     const GeoShape * shape = 0;
     if (w1 == w2 && theta == 0) {
       // Its a box
       shape = new GeoBox(0.5*w1, 0.5*widthy, 0.5*length);
     } else {
-      shape = new GeoTrap(0.5*length, theta, phi, 0.5*widthy, 0.5*w1, 0.5*w1, angleydzn, 
-			  0.5*widthy, 0.5*w2, 0.5*w2, angleydzp);
+      shape = new GeoTrap(0.5*length, theta, phi, 0.5*widthy, 0.5*w1, 0.5*w1, angleydzn,
+                          0.5*widthy, 0.5*w2, 0.5*w2, angleydzp);
       // Test GeoModel volume calculation. OK.
     }
     //assuming 'shape' cannot be null.
     shape->ref();
 
+    // end of the old part
+    // now we put everything into the assembly
     if (!perModule) { // For middle section and others
-      totVolume += shape->volume();
-      HepGeom::Translate3D trans(xpos,ypos,zpos);
-      lastShape = addShape(lastShape, shape, trans);
+
+      // create the colume, move it to the correct relative position and add it to the assembly
+
+      GeoLogVol* tmpLogVol= new GeoLogVol("TMT",shape,material);
+      GeoPhysVol* tmpPhysVol= new GeoPhysVol(tmpLogVol);
+      GeoTransform* trans = new GeoTransform(HepGeom::Translate3D(xpos,ypos,zpos));
+
+      theTMT->add(tag);
+      theTMT->add(trans);
+      theTMT->add(tmpPhysVol);
 
     } else { // Once per module, copied in +z and -z side.
+      // we will add the same volume many times, need to create it only once
+
+      GeoLogVol* tmpLogVol= new GeoLogVol("TMT",shape,material);
+      GeoPhysVol* tmpPhysVol= new GeoPhysVol(tmpLogVol);
+
       for (int ii = 0; ii < halfNModule; ii++) {
-        totVolume += shape->volume() * 2;// added twice below
+
+        // move the dublicates to the correct relative position and add it to the assembly
         double zshift = m_gmt_mgr->PixelModuleZPosition(1) * ii;
 
-        HepGeom::Translate3D transPos(xpos,ypos,zpos+zshift);
-        lastShape = addShape(lastShape, shape, transPos); 
+        GeoTransform* transPos = new GeoTransform(HepGeom::Translate3D(xpos,ypos,zpos+zshift));
+        theTMT->add(tag);
+        theTMT->add(transPos);
+        theTMT->add(tmpPhysVol);
+
+        GeoTransform* transNeg = new GeoTransform(HepGeom::Translate3D(xpos,ypos,-(zpos+zshift))*HepGeom::RotateX3D(180*CLHEP::deg));
+        theTMT->add(tag);
+        theTMT->add(transNeg);
+        theTMT->add(tmpPhysVol);
 
-        HepGeom::Transform3D transNeg = HepGeom::Translate3D(xpos,ypos,-(zpos+zshift))*HepGeom::RotateX3D(180*CLHEP::deg);
-        lastShape = addShape(lastShape, shape, transNeg); 
-      }      
+      }
     }
-    shape->unref(); //this will delete shape if it was never added 
+    shape->unref(); //this will delete shape if it was never added
   }
+  // Return the assembly
+  return theTMT;
 
-  if(lastShape==0) {
-    msg(MSG::ERROR) << "There is no shape for GeoPixelTMT in "<<__FILE__<<":"<<__LINE__<<endmsg;
-    exit(EXIT_FAILURE);
-  } else {
-  const GeoShape * tmtShape = lastShape;
-    // don't trust boolean volume
-    // double totVolume = tmtShape->volume();
-    //std::cout << "TMT volume " << totVolume/CLHEP::cm3 << std::endl;
-    std::string matName = m_gmt_mgr->getMaterialName("TMT", m_gmt_mgr->GetLD());
-    const GeoMaterial* trapMat = m_mat_mgr->getMaterialForVolume(matName,totVolume);
-    GeoLogVol* theTMT = new GeoLogVol("TMT",tmtShape,trapMat);
-
-    // No need to set m_transform as default transform is OK.
-
-     return new GeoPhysVol(theTMT);
-  }
 }
 
-const GeoShape * 
+const GeoShape *
 GeoPixelTMT::addShape(const GeoShape * lastShape, const GeoShape * nextShape, const HepGeom::Transform3D & trans)
 {
   const GeoShape * shiftedShape = &(*nextShape << trans);
diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx
index f964b1044e3460161fdda986eb30552a0353a157..7cb06b753bc1b4da8a10cd0ed52c82a8b70dcca4 100644
--- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx
+++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.cxx
@@ -4,71 +4,66 @@
 
 #include "SCTRawContByteStreamCnv.h"
 
-// Gaudi
-#include "GaudiKernel/DataObject.h"
-
-// Athena
-#include "AthenaBaseComps/AthCheckMacros.h"
+#include "SCT_RawDataByteStreamCnv/ISCTRawContByteStreamTool.h"
 #include "ByteStreamCnvSvcBase/ByteStreamAddress.h" 
 #include "ByteStreamData/RawEvent.h" 
 #include "ByteStreamCnvSvcBase/IByteStreamEventAccess.h"
-#include "SCT_RawDataByteStreamCnv/ISCTRawContByteStreamTool.h"
+
+#include "AthenaBaseComps/AthCheckMacros.h"
 #include "StoreGate/StoreGateSvc.h"
 
-/// ------------------------------------------------------
-/// constructor
+#include "GaudiKernel/DataObject.h"
+#include "GaudiKernel/MsgStream.h"
+
+// Constructor
 
-SCTRawContByteStreamCnv::SCTRawContByteStreamCnv(ISvcLocator* svcloc) :
-  Converter(ByteStream_StorageType, classID(),svcloc),
-  m_tool{"SCTRawContByteStreamTool"},
+SCTRawContByteStreamCnv::SCTRawContByteStreamCnv(ISvcLocator* svcLoc) :
+  Converter(ByteStream_StorageType, classID(),svcLoc),
+  m_rawContByteStreamTool{"SCTRawContByteStreamTool"},
   m_byteStreamEventAccess{"ByteStreamCnvSvc", "SCTRawContByteStreamCnv"},
   m_log{msgSvc(), "SCTRawContByteStreamCnv"}
 {
 }
 
-/// ------------------------------------------------------
-/// initialize
+// Initialize
 
-StatusCode
-SCTRawContByteStreamCnv::initialize()
+StatusCode SCTRawContByteStreamCnv::initialize()
 {
   ATH_CHECK(Converter::initialize());
   m_log << MSG::DEBUG<< " initialize " << endmsg;
 
-  /** Retrieve ByteStreamCnvSvc */
+  // Retrieve ByteStreamCnvSvc
   ATH_CHECK(m_byteStreamEventAccess.retrieve());
   m_log << MSG::INFO << "Retrieved service " << m_byteStreamEventAccess << endmsg;
 
-  /** Retrieve byte stream tool */
-  ATH_CHECK(m_tool.retrieve());
-  m_log << MSG::INFO << "Retrieved tool " << m_tool << endmsg;
+  // Retrieve byte stream tool
+  ATH_CHECK(m_rawContByteStreamTool.retrieve());
+  m_log << MSG::INFO << "Retrieved tool " << m_rawContByteStreamTool << endmsg;
 
   return StatusCode::SUCCESS;
 }
 
-/// ------------------------------------------------------
-/// convert SCT Raw Data in the container into ByteStream
+// Method to create RawEvent fragments
 
-StatusCode
-SCTRawContByteStreamCnv::createRep(DataObject* pObj, IOpaqueAddress*& pAddr)
+StatusCode SCTRawContByteStreamCnv::createRep(DataObject* pDataObject, IOpaqueAddress*& pOpaqueAddress)
 {
-  /** get RawEvent pointer */
-  RawEventWrite* re{m_byteStreamEventAccess->getRawEvent()};
+  // Get RawEvent pointer
+  RawEventWrite* rawEvtWrite{m_byteStreamEventAccess->getRawEvent()};
 
-  /** get IDC for SCT Raw Data */
-  SCT_RDO_Container* cont{nullptr};
-  StoreGateSvc::fromStorable(pObj, cont);
-  if (cont==nullptr) {
+  // Get IDC for SCT Raw Data
+  SCT_RDO_Container* sctRDOCont{nullptr};
+  StoreGateSvc::fromStorable(pDataObject, sctRDOCont);
+  if (sctRDOCont==nullptr) {
     m_log << MSG::ERROR << " Can not cast to SCTRawContainer " << endmsg;
     return StatusCode::FAILURE;
   }
 
-  /** set up the IOpaqueAddress for Storegate */
-  std::string nm{pObj->registry()->name()};
-  pAddr = new ByteStreamAddress(classID(), nm, "");
+  // Set up the IOpaqueAddress for Storegate
+  std::string dataObjectName{pDataObject->registry()->name()};
+  pOpaqueAddress = new ByteStreamAddress(classID(), dataObjectName, "");
 
-  /** now use the tool to do the conversion */
-  ATH_CHECK(m_tool->convert(cont, re, m_log));
+  // Use the tool to do the conversion
+  ATH_CHECK(m_rawContByteStreamTool->convert(sctRDOCont, rawEvtWrite, m_log));
 
   return StatusCode::SUCCESS;
 }
diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h
index a762d1893eee7bb4a507ee86f907d02d88a67dae..ed047e772bcf818fe1afe707db48525a4b684d4e 100644
--- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h
+++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamCnv.h
@@ -2,61 +2,75 @@
   Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-#ifndef SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTRAWEVENTCNV_H
-#define SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTRAWEVENTCNV_H
+#ifndef SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTBYTESTREAMCNV_H
+#define SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTBYTESTREAMCNV_H
+
+#include "ByteStreamCnvSvcBase/IByteStreamEventAccess.h"
+#include "InDetRawData/InDetRawDataCLASS_DEF.h"
 
-// Gaudi
 #include "GaudiKernel/Converter.h"
 #include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-
-// C++ Standard Library
-#include <string>
-
-// Athena
-#include "InDetRawData/InDetRawDataCLASS_DEF.h"
-#include "ByteStreamCnvSvcBase/IByteStreamEventAccess.h"
 
 class DataObject;
 class ISCTRawContByteStreamTool;
+class MsgStream;
 
-/** Externals */ 
 extern long ByteStream_StorageType;
 
-/** the converter for writing BS from SCT Raw Data 
- * This will do the conversion on demand, triggered by the 
- * ByteStreamAddressProviderSvc. 
- * Since it is not possible to configure a Converter with
- * Python Configurables, we use a service (SCTRawContByteStreamService)
- * which in turn uses the  lightweight SCT_RodEncoder class, 
- * to do the actual converting. */
+/** 
+ * @class SCTRawContByteStreamCnv
+ *
+ * @brief Converter for writing ByteStream from SCT Raw Data
+ *
+ * This will do the conversion on demand, triggered by the ByteStreamAddressProviderSvc. 
+ * Since it is not possible to configure a Converter with Python Configurables, 
+ * we use a service (SCTRawContByteStreamService) which in turn uses the lightweight 
+ * SCT_RodEncoder class, to do the actual converting. 
+ */
+class SCTRawContByteStreamCnv : public Converter 
+{
+ public:
 
-class SCTRawContByteStreamCnv: public Converter {
+  /** Constructor */
+  SCTRawContByteStreamCnv(ISvcLocator* svcLoc);
 
- public:
-  SCTRawContByteStreamCnv(ISvcLocator* svcloc);
+  /** Destructor */
+  virtual ~SCTRawContByteStreamCnv() = default;
+  
+  /** Initialize */
+  virtual StatusCode initialize() override;
   
-  typedef SCT_RDO_Container SCTRawContainer; 
-
   /** Storage type and class ID */
-  virtual long repSvcType() const { return ByteStream_StorageType;}
+  virtual long repSvcType() const override { return ByteStream_StorageType; }
   static long storageType() { return ByteStream_StorageType; } 
-  static const CLID& classID() { return ClassID_traits<SCTRawContainer>::ID(); }
-  
-  /** initialize */
-  virtual StatusCode initialize();
+  static const CLID& classID() { return ClassID_traits<SCT_RDO_Container>::ID(); }
   
-  /** create Obj is not used ! */
-  virtual StatusCode createObj(IOpaqueAddress*, DataObject*&)
-  { return StatusCode::FAILURE;}
+  /** createObj method (not used!) */
+  virtual StatusCode createObj(IOpaqueAddress*, DataObject*&) override { return StatusCode::FAILURE; }
 
-  /** this creates the RawEvent fragments for the SCT */
-  virtual StatusCode createRep(DataObject* pObj, IOpaqueAddress*& pAddr);
+  /** 
+   * @brief Method to convert SCT Raw Data into ByteStream
+   *
+   * Gets pointer to RawEvent, get ID container of SCT RDO.
+   * Sets up opaque address for Storegate.
+   *
+   * Uses SCT RawContByteStreamTool to convert Raw Data to ByteStream.
+   *
+   * @param pDataObject Pointer to data object
+   * @param pOpaqueAddress Opaque address to object
+   */
+  virtual StatusCode createRep(DataObject* pDataObject, IOpaqueAddress*& pOpaqueAddress) override;
 
  private: 
-  /** for BS infrastructure */
-  ToolHandle<ISCTRawContByteStreamTool> m_tool;
+
+  /** Tool to do coversion from SCT RDO container to ByteStream */
+  ToolHandle<ISCTRawContByteStreamTool> m_rawContByteStreamTool;
+
+  /** Interface for accessing raw data */
   ServiceHandle<IByteStreamEventAccess> m_byteStreamEventAccess; 
+
+  /** Object used to transmit messages and log errors */
   MsgStream m_log;
 };
-#endif // SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTRAWEVENTCNV_H
+
+#endif // SCT_RAWDATABYTESTREAMCNV_SCTRAWCONTBYTESTREAMCNV_H
diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.cxx b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.cxx
index cad10c574e9e4d72f69c10e7f28584e53934401d..0e779ff564f5b648e18ac46b3361b3264c56bd77 100644
--- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.cxx
+++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.cxx
@@ -14,7 +14,7 @@
 #include "StoreGate/ReadCondHandle.h"
 #include "eformat/SourceIdentifier.h"
 
-// Contructor 
+// Constructor 
 
 SCTRawContByteStreamTool::SCTRawContByteStreamTool(const std::string& type, const std::string& name,
                                                    const IInterface* parent) :
diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.h b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.h
index cedfb6dc003ec1bfd63b4ca3c90ae1030e3bd928..e6b87651cc7178519126bb4216b5a375d36edbdc 100644
--- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.h
+++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCTRawContByteStreamTool.h
@@ -19,7 +19,6 @@
 #include "GaudiKernel/ToolHandle.h"
 
 #include <mutex>
-#include <string>
 
 class ISCT_RodEncoder;
 class ISCT_CablingTool;
diff --git a/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py b/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py
index 9b1cc0da3800610ae192f8f0b643ba7b0f10030f..2ec6f97f3607d61fbbfc4664faf2daf51291b08e 100644
--- a/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py
+++ b/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py
@@ -1311,7 +1311,7 @@ class InDetJobProperties(JobPropertyContainer):
        self.checkThenSet(self.priVtxCutLevel         , 1    )
        self.checkThenSet(self.doTrackSegmentsPixelPrdAssociation, False)
        self.checkThenSet(self.perigeeExpression      , 'Vertex')
-       self.checkThenSet(self.doRefitInvalidCov      ,True)
+       #self.checkThenSet(self.doRefitInvalidCov      ,True) temporarily commenting out due to ATLASRECTS-4691
 
     # --- special case SLHC
     elif (self.doSLHC()):
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecCaloSeededROISelection.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecCaloSeededROISelection.py
index 8831f403ddf2114d695ff42763d14e0cba1f4327..dab9d4f4d4111ee396eeddecc9a5331330c0098e 100644
--- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecCaloSeededROISelection.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecCaloSeededROISelection.py
@@ -15,7 +15,7 @@ egammaCaloClusterROISelector = ToolFactory( egammaCaloToolsConf.egammaCaloCluste
                                             name = 'caloClusterROISelector',
                                             egammaCheckEnergyDepositTool = egammaCheckEnergyDepositTool,
                                             EMEtRanges = [1500.,2500.],
-                                            EMFCuts = [0.9,0.85],
+                                            EMFCuts = [0.85,0.8],
                                             RetaCut = [0.7,0.65]
                                             ) 
 #
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecConditionsAccess.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecConditionsAccess.py
index dd4cc0a56607b138b0347a88445fa57486a858c3..854d16936cc0b47c7ea35cf76de046fd8b8a3d14 100644
--- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecConditionsAccess.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecConditionsAccess.py
@@ -21,10 +21,6 @@ if not ('conddb' in dir()):
     IOVDbSvc = Service("IOVDbSvc")
     from IOVDbSvc.CondDB import conddb
 
-# Conditions sequence for Athena MT
-from AthenaCommon.AlgSequence import AthSequencer
-condSeq = AthSequencer("AthCondSeq")
-
 #
 # --- Setup BeamSpot data
 #
@@ -40,9 +36,12 @@ except ImportError:
     # Protection for AthSimulationBase release which does not contain RecExConfig
     conddb.addFolderSplitOnline("INDET", "/Indet/Onl/Beampos", "/Indet/Beampos", className="AthenaAttributeList")
 
-
-from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg
-condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" )
+# Conditions sequence for Athena MT
+from AthenaCommon.AlgSequence import AthSequencer
+condSeq = AthSequencer("AthCondSeq")
+if not hasattr(condSeq, "BeamSpotCondAlg"):
+   from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg
+   condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" )
 
 
 #
diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/CMakeLists.txt b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/CMakeLists.txt
index d0ff183148c9ad43546ede3023d8d02e9a594bed..3058906eda2967831ea9effc76b8624abcbb4f51 100644
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/CMakeLists.txt
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/CMakeLists.txt
@@ -21,6 +21,7 @@ atlas_depends_on_subdirs(
    Event/xAOD/xAODTracking
    InnerDetector/InDetAlignTools/InDetAlignGenTools
    InnerDetector/InDetConditions/InDetBeamSpotService
+   InnerDetector/InDetConditions/BeamSpotConditionsData
    InnerDetector/InDetConditions/TRT_ConditionsServices
    InnerDetector/InDetDetDescr/InDetIdentifier
    InnerDetector/InDetDetDescr/InDetReadoutGeometry
diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.cxx
index 58f6f9bdf3a1d20d0c022b6a21abcc28201cefa8..2acac3c3f002d1ff2338783e37b76534d879ba96 100644
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.cxx
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.cxx
@@ -34,7 +34,6 @@
 #include "TrkEventPrimitives/FitQuality.h"
 #include "TrkEventPrimitives/LocalParameters.h"
 
-#include "InDetBeamSpotService/IBeamCondSvc.h"
 #include "xAODEventInfo/EventInfo.h"
 
 
@@ -68,7 +67,6 @@ IDAlignMonGenericTracks::IDAlignMonGenericTracks( const std::string & type, cons
 	m_z0Range(250.0),
 	m_etaRange(3.0),
 	m_NTracksRange(200),
-        m_beamCondSvc("BeamCondSvc",name),
 	m_hWeightInFile(0),
 	m_etapTWeight(0)
 	
@@ -96,7 +94,6 @@ IDAlignMonGenericTracks::IDAlignMonGenericTracks( const std::string & type, cons
   declareProperty("etaRange"             , m_etaRange);
   declareProperty("pTRange"              , m_pTRange);
   declareProperty("NTracksRange"         , m_NTracksRange);
-  declareProperty("beamCondSvc"          , m_beamCondSvc);
   declareProperty("applyHistWeight"      , m_applyHistWeight = false);
   declareProperty("hWeightInFileName"    , m_hWeightInFileName  = "hWeight.root" ); 
   declareProperty("hWeightHistName"      , m_hWeightHistName    = "trk_pT_vs_eta" );
@@ -494,13 +491,13 @@ StatusCode IDAlignMonGenericTracks::initialize()
     ATH_CHECK (m_trackToVertexIPEstimator.retrieve());
   }
   
-  if ( m_beamCondSvc.retrieve().isFailure() ) {
-    if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Failed to retrieve beamspot service " << m_beamCondSvc << " - will use nominal beamspot at (0,0,0)" << endmsg;
+  if ( m_beamSpotKey.initialize().isFailure() ) {
+    if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Failed to retrieve beamspot service " << m_beamSpotKey << " - will use nominal beamspot at (0,0,0)" << endmsg;
     m_hasBeamCondSvc = false;
   } 
   else {
     m_hasBeamCondSvc = true;
-    ATH_MSG_DEBUG("Retrieved service " << m_beamCondSvc);
+    ATH_MSG_DEBUG("Retrieved service " << m_beamSpotKey);
   }
   
  
@@ -1705,13 +1702,14 @@ StatusCode IDAlignMonGenericTracks::fillHistograms()
   float beamTiltX = 0.;
   float beamTiltY = 0.;
   if (m_hasBeamCondSvc) {
-    Amg::Vector3D bpos = m_beamCondSvc->beamPos();
+    SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
+    Amg::Vector3D bpos = beamSpotHandle->beamPos();
     beamSpotX = bpos.x();
     beamSpotY = bpos.y();
     beamSpotZ = bpos.z();
-    beamTiltX = m_beamCondSvc->beamTilt(0);
-    beamTiltY = m_beamCondSvc->beamTilt(1);
-    if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Beamspot from " << m_beamCondSvc << ": x0 = " << beamSpotX << ", y0 = " << beamSpotY
+    beamTiltX = beamSpotHandle->beamTilt(0);
+    beamTiltY = beamSpotHandle->beamTilt(1);
+    if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Beamspot from " << beamSpotHandle.retrieve() << ": x0 = " << beamSpotX << ", y0 = " << beamSpotY
           << ", z0 = " << beamSpotZ << ", tiltX = " << beamTiltX
           << ", tiltY = " << beamTiltY <<endmsg;
 
diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.h b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.h
index b0fafe01a03daf692d4ad2c3218f8eece49f6637..1ceaea096af40bf448aa531e59a3c6bb1da82356 100755
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.h
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.h
@@ -28,6 +28,7 @@
 #include "xAODTracking/Vertex.h"
 #include "xAODTracking/VertexContainer.h"
 #include <map>
+#include "BeamSpotConditionsData/BeamSpotData.h"
 
 class VxContainer;
 class TH1F;
@@ -37,7 +38,6 @@ class AtlasDetectorID;
 class PixelID;
 class SCT_ID;
 class TRT_ID;
-class IBeamCondSvc;
 class EventInfo;
 
 namespace Trk  { 
@@ -434,7 +434,7 @@ protected:
   
   ToolHandle< InDetAlignMon::TrackSelectionTool > m_trackSelection; 
   ToolHandle<IInDetAlignHitQualSelTool>  m_hitQualityTool;
-   ServiceHandle<IBeamCondSvc> m_beamCondSvc;
+  SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
   
   PublicToolHandle< Trk::ITrackToVertexIPEstimator >  m_trackToVertexIPEstimator
      {this,"TrackToVertexIPEstimator","Trk::TrackToVertexIPEstimator",""};
diff --git a/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx b/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx
index 1cd0013f59903fdd374f8d22c7df42ba7963dbe1..82f89687b7985e752b513289aca63e6a28fb8565 100644
--- a/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx
+++ b/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx
@@ -92,6 +92,7 @@ InDetGlobalTrackMonTool::InDetGlobalTrackMonTool( const std::string & type,
       m_holes_quality(nullptr),
       m_holes_quality_profile(nullptr),
       m_Trk_eta_phi_Base(nullptr),
+      m_Trk_eta_phi_Tight(nullptr),
       m_Trk_eta_phi_Tight_ratio(nullptr),
       m_Trk_eta_phi_noIBLhit_ratio(nullptr),
       m_Trk_eta_phi_noBLhit_ratio(nullptr),
@@ -230,6 +231,12 @@ StatusCode InDetGlobalTrackMonTool::bookHistograms()
                      m_nBinsPhi, -M_PI, M_PI,
                      "eta", "#phi_{0}" ).ignore();
 
+    registerManHist( m_Trk_eta_phi_Tight, "InDetGlobal/Track", detailsInterval,
+		     "Trk_Tight_eta_phi","Distribution of eta vs phi for combined tracks passing monitoring selection",
+		     m_nBinsEta, -m_c_etaRange, m_c_etaRange,
+		     m_nBinsPhi, -M_PI, M_PI,
+		     "eta", "#phi_{0}" ).ignore();
+
     registerManHist( m_Trk_eta_phi_Tight_ratio, "InDetGlobal/Track", detailsInterval,
 		     "Trk_Tight_eta_phi_ratio","Distribution of eta vs phi for combined tracks passing Tight selection",
                      m_nBinsEta, -m_c_etaRange, m_c_etaRange,
@@ -866,7 +873,9 @@ void InDetGlobalTrackMonTool::FillEtaPhi( const Trk::Track *track, const std::un
 	else
 	    m_Trk_eta_phi_noTRText_ratio->Fill( eta, phi, 0 );
     }
-    
+ 
+    m_Trk_eta_phi_Tight->Fill( eta, phi);
+
     /// TRACKSEL: Tight
     if ( m_tight_selTool->accept(*track) )
     {
diff --git a/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.h b/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.h
index 8c8f896ea893caae81d9686a9d875742a78971fb..9cfe9573419ac3e9c3c23c6049fe3f120b821180 100755
--- a/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.h
+++ b/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.h
@@ -175,6 +175,7 @@ private:
     TH1I * m_Trk_Base;
     ///Distribution of eta vs phi for combined tracks
     TH2F  * m_Trk_eta_phi_Base;
+    TH2F  * m_Trk_eta_phi_Tight;
     TProfile2D  * m_Trk_eta_phi_Tight_ratio;
     TProfile2D  * m_Trk_eta_phi_noIBLhit_ratio;
     TProfile2D  * m_Trk_eta_phi_noBLhit_ratio;
diff --git a/InnerDetector/InDetMonitoring/InDetPerformanceMonitoring/src/IDPerfMonZmumu.cxx b/InnerDetector/InDetMonitoring/InDetPerformanceMonitoring/src/IDPerfMonZmumu.cxx
index 9428a56201ea8f6597e6efd8f5a168532c15c2fc..42ca9bc3c8e719093c590195287d1a374d0727fb 100755
--- a/InnerDetector/InDetMonitoring/InDetPerformanceMonitoring/src/IDPerfMonZmumu.cxx
+++ b/InnerDetector/InDetMonitoring/InDetPerformanceMonitoring/src/IDPerfMonZmumu.cxx
@@ -547,8 +547,10 @@ void IDPerfMonZmumu::FillRecParameters(const Trk::Track* track, double charge)
       z0 = trkPerigee->parameters()[Trk::z0];
     }
   }
+  //TODO optimize use of BeamSpotData and eventcontext
   const Trk::AtaStraightLine*  atBL =
-       dynamic_cast<const Trk::AtaStraightLine*>(m_trackToVertexTool->trackAtBeamline( *track ));
+       dynamic_cast<const Trk::AtaStraightLine*>(m_trackToVertexTool->trackAtBeamline( *track ,
+              m_trackToVertexTool->GetBeamLine(m_trackToVertexTool->GetBeamSpotData(Gaudi::Hive::currentContext())).get() ));
   if (atBL){
     double qOverP   = atBL->parameters()[Trk::qOverP];
     if(qOverP){
@@ -597,8 +599,10 @@ StatusCode IDPerfMonZmumu::FillTruthParameters(const xAOD::TrackParticle* trackP
     if(truthParticle->pdgId() == muonId) charge = -1.;
     else if(truthParticle->pdgId() == -muonId) charge = 1.;
     Trk::TrackParameters* parameters  = new Trk::Perigee(pos,mom,charge,pos);
+    //TODO optimize use of BeamSpotData and eventcontext
     const Trk::AtaStraightLine*  atBLi =
-      dynamic_cast<const Trk::AtaStraightLine*>(m_trackToVertexTool->trackAtBeamline( *parameters ));
+      dynamic_cast<const Trk::AtaStraightLine*>(m_trackToVertexTool->trackAtBeamline( *parameters, 
+          m_trackToVertexTool->GetBeamLine(m_trackToVertexTool->GetBeamSpotData(Gaudi::Hive::currentContext())).get() ));
     if(atBLi){
       if (charge == 1) {
         double qOverP   = atBLi->parameters()[Trk::qOverP];
diff --git a/InnerDetector/InDetRecAlgs/TRT_TrackSegmentsFinder/src/TRT_TrackSegmentsFinder.cxx b/InnerDetector/InDetRecAlgs/TRT_TrackSegmentsFinder/src/TRT_TrackSegmentsFinder.cxx
index 0c2054cd6ec327adefe1f86b935362abbb9b6a3a..be596ca5fd2fa1efe105f41f1f452f984ac0a6cb 100755
--- a/InnerDetector/InDetRecAlgs/TRT_TrackSegmentsFinder/src/TRT_TrackSegmentsFinder.cxx
+++ b/InnerDetector/InDetRecAlgs/TRT_TrackSegmentsFinder/src/TRT_TrackSegmentsFinder.cxx
@@ -32,7 +32,7 @@ InDet::TRT_TrackSegmentsFinder::TRT_TrackSegmentsFinder
   m_nsegmentsTotal    = 0                                ;
   m_useCaloSeeds      = false                            ;
   m_minNumberDCs     = 9                                 ; 
-  m_ClusterEt         = 2000.0                           ; 
+  m_ClusterEt         = 2500.0                           ; 
   declareProperty("SegmentsMakerTool",m_segmentsMakerTool);
   declareProperty("SegmentsLocation" ,m_foundSegments    );
   declareProperty("useCaloSeeds"     ,m_useCaloSeeds     );
diff --git a/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/TRT_SeededTrackFinderTool/TRT_SeededTrackFinder_ATL.h b/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/TRT_SeededTrackFinderTool/TRT_SeededTrackFinder_ATL.h
index 0ffabc0c1783127a725173b829e71f9c874bffaf..eb7d133c0594abe31364783d52ac1fc633cb3b6f 100755
--- a/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/TRT_SeededTrackFinderTool/TRT_SeededTrackFinder_ATL.h
+++ b/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/TRT_SeededTrackFinderTool/TRT_SeededTrackFinder_ATL.h
@@ -210,7 +210,7 @@ namespace InDet{
       std::list<double>              m_caloE         ;
       double m_phiWidth                              ;
       double m_etaWidth                              ;
-      double m_ClusterE				     ;
+      double m_ClusterEt				                     ;
 
       MsgStream&    dumpconditions(MsgStream&    out) const;
       MsgStream&    dumpevent     (MsgStream&    out) const;
diff --git a/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx b/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx
index 5470c32fea73103a308291a1bfe757300b8b6c44..16096e6b33129044836fe55b5322c9bcbcfdf042 100755
--- a/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx
+++ b/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx
@@ -105,7 +105,7 @@ InDet::TRT_SeededTrackFinder_ATL::TRT_SeededTrackFinder_ATL
   m_searchInCaloROI   = false       ;
   m_phiWidth     = .3                 ;
   m_etaWidth     = 4.0                ;
-  m_ClusterE     = 15000.0                ;
+  m_ClusterEt     = 12000.0                ;
 
 
   declareInterface<ITRT_SeededTrackFinder>(this);
@@ -133,7 +133,7 @@ InDet::TRT_SeededTrackFinder_ATL::TRT_SeededTrackFinder_ATL
   declareProperty("SearchInCaloROI"         ,m_searchInCaloROI);
   declareProperty("phiWidth"                ,m_phiWidth    );
   declareProperty("etaWidth"                ,m_etaWidth    );
-  declareProperty("CaloClusterE"            ,m_ClusterE    );
+  declareProperty("CaloClusterEt"            ,m_ClusterEt    );
 
 }
 
@@ -383,7 +383,6 @@ void InDet::TRT_SeededTrackFinder_ATL::newEvent()
     m_nprint=1; msg(MSG::DEBUG) << (*this) << endmsg;
   }
 
-
   //  Get the calo ROI:
   //
   if(m_searchInCaloROI ) {
@@ -395,13 +394,12 @@ void InDet::TRT_SeededTrackFinder_ATL::newEvent()
 
     if (calo.isValid()) {
 
-      CaloClusterROI_Collection::const_iterator c = calo->begin(), ce = calo->end();
+      for( const Trk::CaloClusterROI* c : *calo) {
 
-      for(; c!=ce; ++c) {
-	if ( (*c)->energy() < m_ClusterE) continue;
-        double x = (*c)->globalPosition().x();
-        double y = (*c)->globalPosition().y();
-        double z = (*c)->globalPosition().z();
+        if ( (c->energy()*sin(c->globalPosition().theta())) < m_ClusterEt) {continue;}
+        double x = c->globalPosition().x();
+        double y = c->globalPosition().y();
+        double z = c->globalPosition().z();
         m_caloF.push_back(atan2(y,x));
         m_caloE.push_back(atan2(1.,z/sqrt(x*x+y*y)));
       }
diff --git a/InnerDetector/InDetTrigRecAlgs/InDetTrigParticleCreation/src/TrigTrackingxAODCnvMT.cxx b/InnerDetector/InDetTrigRecAlgs/InDetTrigParticleCreation/src/TrigTrackingxAODCnvMT.cxx
index 4b63c8d008046f0c5d82244b7a1793357e5c704a..7e91c1fa389992583716671e6acf6af8d3931894 100644
--- a/InnerDetector/InDetTrigRecAlgs/InDetTrigParticleCreation/src/TrigTrackingxAODCnvMT.cxx
+++ b/InnerDetector/InDetTrigRecAlgs/InDetTrigParticleCreation/src/TrigTrackingxAODCnvMT.cxx
@@ -223,7 +223,7 @@ namespace InDet
     //+++ DQM (SA): monitoring
     //    ResetMon();
 
-    auto ctx = getContext();
+    const auto &ctx = getContext();
     auto tpHandle =   SG::makeHandle (m_trackParticleKey, ctx);
     
     ATH_CHECK( tpHandle.record (std::make_unique<xAOD::TrackParticleContainer>(),
@@ -266,6 +266,7 @@ namespace InDet
       //    if(doTiming()) m_timerMemAlloc->start();
       tpCont->reserve(tracks->size());                                                     
       //    if(doTiming()) m_timerMemAlloc->stop();
+//      const InDet::BeamSpotData* BsData = m_particleCreatorTool->CacheBeamSpotData(ctx);
       for(unsigned int idtr=0; idtr< tracks->size(); ++idtr) {
         const ElementLink<TrackCollection> trackLink(*tracks, idtr);
 
diff --git a/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.cxx b/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.cxx
index 1307bc50fc8ed88c82d664fe9533cb497d5f09c2..a7084dbe85275e9b2cdffef6b0ec4d4997820bdd 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "LArDetectorFactory.h"
@@ -22,7 +22,6 @@
 #include "LArGeoCode/LArMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelUtilities/GeoDBUtils.h"
-#include "StoreGate/DataHandle.h"
 
 #include "StoreGate/StoreGateSvc.h"
 #include "GaudiKernel/MsgStream.h"
@@ -113,7 +112,7 @@ void LArGeo::LArDetectorFactory::create( GeoPhysVol* a_container )
       }
 
   
-      DataHandle<StoredMaterialManager> materialManager;
+      StoredMaterialManager* materialManager = nullptr;
       if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) {
 	throw std::runtime_error("Error in LArDetectorFactory, cannot access Material Manager");
       }
diff --git a/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorTool.cxx b/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorTool.cxx
index dfeda29711ee1f01f1be4ea625c9bbab802cd260..3649ee7794598a9d77d0ec5f1ec7eff205b4e558 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorTool.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "LArReadoutGeometry/FCAL_ChannelMap.h"
@@ -157,7 +157,7 @@ StatusCode LArDetectorToolNV::create()
   log << MSG::INFO  << "  Endcap            = "  << (m_buildEndcap ? "ON" : "OFF") << endmsg;
 
   // Locate the top level experiment node 
-  DataHandle<GeoModelExperiment> theExpt; 
+  GeoModelExperiment* theExpt = nullptr;
   if (StatusCode::SUCCESS != detStore()->retrieve( theExpt, "ATLAS" )) 
   { 
     log << MSG::ERROR << "Could not find GeoModelExperiment ATLAS" << endmsg; 
diff --git a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelConstruction.cxx
index a162af7ff48d63d34ab73745889aa5ef4535a969..e44bc1b243026fb45a4398341a5dafa28721c815 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
@@ -38,7 +38,6 @@
 #include "GeoModelKernel/GeoBox.h"
 #include "GeoModelKernel/GeoTrap.h"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelUtilities/StoredPhysVol.h"
@@ -212,48 +211,48 @@ void LArGeo::BarrelConstruction::MakeEnvelope()
   }
   
 
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) {
     throw std::runtime_error("Error in BarrelConstruction, stored MaterialManager is not found.");
   }
   
-  GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
+  const GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
   if (!Iron) throw std::runtime_error("Error in BarrelConstruction, std::Iron is not found.");
   
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if (!LAr) throw std::runtime_error("Error in BarrelConstruction, std::LiquidArgon is not found.");
 
-  GeoMaterial *Lead = materialManager->getMaterial("std::Lead");
+  const GeoMaterial *Lead = materialManager->getMaterial("std::Lead");
   if (!Lead) throw std::runtime_error("Error in BarrelConstruction, std::Lead is not found.");
   
-  GeoMaterial *G10_bar  = materialManager->getMaterial("LAr::G10_bar");
+  const GeoMaterial *G10_bar  = materialManager->getMaterial("LAr::G10_bar");
   if (!G10_bar) throw std::runtime_error("Error in BarrelConstruction, LAr::G10_bar is not found.");
   
-  GeoMaterial *Moth_elect  = materialManager->getMaterial("LAr::MBoards");
+  const GeoMaterial *Moth_elect  = materialManager->getMaterial("LAr::MBoards");
   if (!Moth_elect) throw std::runtime_error("Error in BarrelConstruction, LAr::MBoards is not found.");
   
-  GeoMaterial *Cable_elect  = materialManager->getMaterial("LAr::Cables");
+  const GeoMaterial *Cable_elect  = materialManager->getMaterial("LAr::Cables");
   if (!Cable_elect) throw std::runtime_error("Error in BarrelConstruction, LAr::Cables is not found.");
   
-  GeoMaterial *Thin_abs  = materialManager->getMaterial("LAr::Thinabs");
+  const GeoMaterial *Thin_abs  = materialManager->getMaterial("LAr::Thinabs");
   if (!Thin_abs) throw std::runtime_error("Error in BarrelConstruction, LAr::Thinabs is not found.");
   
-  GeoMaterial *Thick_abs  = materialManager->getMaterial("LAr::Thickabs");
+  const GeoMaterial *Thick_abs  = materialManager->getMaterial("LAr::Thickabs");
   if (!Thick_abs) throw std::runtime_error("Error in BarrelConstruction, LAr::Thickabs is not found.");
   
-  GeoMaterial *Kapton_Cu  = materialManager->getMaterial("LAr::KaptonC");
+  const GeoMaterial *Kapton_Cu  = materialManager->getMaterial("LAr::KaptonC");
   if (!Kapton_Cu) throw std::runtime_error("Error in BarrelConstruction, LAr::KaptonC is not found.");
 
-  GeoMaterial *Sumb       = materialManager->getMaterial("LAr::SBoard");
+  const GeoMaterial *Sumb       = materialManager->getMaterial("LAr::SBoard");
   if (!Sumb) throw std::runtime_error("Error in BarrelConstruction, LAr::SBoard is not found.");
 
-  GeoMaterial *Glue  = materialManager->getMaterial("LAr::Glue");
+  const GeoMaterial *Glue  = materialManager->getMaterial("LAr::Glue");
   if (!Glue) throw std::runtime_error("Error in BarrelConstruction, LAr::Glue is not found.");
 
-  GeoElement *Pb = materialManager->getElement("Lead");
+  const GeoElement *Pb = materialManager->getElement("Lead");
   if (!Pb)  throw std::runtime_error("Error in BarrelConstruction,  element lead not found ");
 
-  GeoElement *Fe = materialManager->getElement("Iron");
+  const GeoElement *Fe = materialManager->getElement("Iron");
   if (!Fe)  throw std::runtime_error("Error in BarrelConstruction,  element Fe not found ");
 
 
diff --git a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelCryostatConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelCryostatConstruction.cxx
index fa5eb38dddcea76131109f6407779b893887d240..ba3a3b001725b43ea52142c358a3efc16f3f70b5 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelCryostatConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelCryostatConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // BarrelCryostatConstruction
@@ -38,7 +38,6 @@
 #include "GeoModelUtilities/StoredAlignX.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelUtilities/GeoDBUtils.h"
-#include "StoreGate/DataHandle.h"
 #include "StoreGate/StoreGateSvc.h"
 #include "GaudiKernel/MsgStream.h"
 #include "GaudiKernel/Bootstrap.h"
@@ -110,27 +109,27 @@ GeoFullPhysVol* LArGeo::BarrelCryostatConstruction::GetEnvelope()
 
   // Get the materials from the material manager:-----------------------------------------------------//
   //                                                                                                  //
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL;
 
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) {
     throw std::runtime_error("Error in BarrelCryostatConstruction, std::Air is not found.");
   }
 
-  GeoMaterial *Aluminium  = materialManager->getMaterial("std::Aluminium");
+  const GeoMaterial *Aluminium  = materialManager->getMaterial("std::Aluminium");
   if (!Aluminium) {
     throw std::runtime_error("Error in BarrelCryostatConstruction, std::Aluminium is not found.");
   }
 
-  GeoMaterial *Titanium  = materialManager->getMaterial("std::Titanium");
+  const GeoMaterial *Titanium  = materialManager->getMaterial("std::Titanium");
   if (!Titanium) {
     Titanium = Aluminium;
     //    No need to throw an error.  Some configurations do not build anything out of titanium.
     //    throw std::runtime_error("Error in BarrelCryostatConstruction, std::Titanium is not found.");
   }
 
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if (!LAr) {
     throw std::runtime_error("Error in BarrelCryostatConstruction, std::LiquidArgon is not found.");
   }
@@ -306,7 +305,7 @@ GeoFullPhysVol* LArGeo::BarrelCryostatConstruction::GetEnvelope()
     if(currentRecord->getString("CYL_LOCATION")=="Barrel::CryoMother")
     {
 
-      GeoMaterial *material  = materialManager->getMaterial(currentRecord->getString("MATERIAL"));
+      const GeoMaterial *material  = materialManager->getMaterial(currentRecord->getString("MATERIAL"));
 
       if (!material) 
       {
@@ -507,7 +506,7 @@ GeoFullPhysVol* LArGeo::BarrelCryostatConstruction::GetEnvelope()
         double RhoPosB  = cryoBoltsRecord->getDouble("RADIUS");
         int index1      = cryoBoltsRecord->getInt("INDEXWALL1");
         int index2      = cryoBoltsRecord->getInt("INDEXWALL2");
-        GeoMaterial *bolt_material  = materialManager->getMaterial(cryoBoltsRecord->getString("MATERIAL"));
+        const GeoMaterial *bolt_material  = materialManager->getMaterial(cryoBoltsRecord->getString("MATERIAL"));
         if (!bolt_material) {
           throw std::runtime_error("Error in BarrelCryostatConstruction, material for bolt not found");
         }
@@ -597,7 +596,7 @@ GeoFullPhysVol* LArGeo::BarrelCryostatConstruction::GetEnvelope()
 
     // Throw in coil support block
     {
-      GeoMaterial* myMaterial;
+      const GeoMaterial* myMaterial;
       double length,height,width,pairSeparation,distFromRidge;
       int nPairTot,indexWall;
       IRDBRecordset_ptr newBlocks        = rdbAccess->getRecordsetPtr("LArBarBumperBlocks", larVersionKey.tag(),larVersionKey.node());
@@ -846,7 +845,7 @@ GeoFullPhysVol* LArGeo::BarrelCryostatConstruction::GetEnvelope()
 	   currentRecord->getString("CYL_LOCATION")=="Barrel::TotalLAr") {
 	  bool isHalfLar = currentRecord->getString("CYL_LOCATION")=="Barrel::HalfLAr";
 
-	  GeoMaterial *material  = materialManager->getMaterial(currentRecord->getString("MATERIAL"));
+	  const GeoMaterial *material  = materialManager->getMaterial(currentRecord->getString("MATERIAL"));
 	
 	  if (!material) {
 	    std::ostringstream errorMessage;
@@ -952,7 +951,7 @@ GeoFullPhysVol* LArGeo::BarrelCryostatConstruction::GetEnvelope()
     double dPhi     = (*cryoPconPhiSect)[i]->getDouble("DPHI");
     double centerPhi = startPhi + 0.5*dPhi;
 
-    GeoMaterial* material  = materialManager->getMaterial((*cryoPconPhiSect)[i]->getString("MATERIAL"));
+    const GeoMaterial* material  = materialManager->getMaterial((*cryoPconPhiSect)[i]->getString("MATERIAL"));
     if (!material) {
       std::string message = std::string("Error in BarrelCryostatConstruction! ") + (*cryoPconPhiSect)[i]->getString("MATERIAL") + std::string(" is not found.");
       throw std::runtime_error(message.c_str());
diff --git a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelDMConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelDMConstruction.cxx
index 40b202a2dd3495a81e0dc24b5fc9bd0ccab16e01..04fc2df01cd834707f8d44bdfc12a6f93a86edb2 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelDMConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelDMConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
@@ -31,7 +31,6 @@
 #include "GeoModelKernel/GeoShapeShift.h"
 #include "GeoModelKernel/GeoShapeSubtraction.h"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelInterfaces/IGeoModelSvc.h"
@@ -83,7 +82,7 @@ static const double DYc=2771.6*tan(Alfa/2);
 
 void
 createSectorEnvelopes2FromDB (GeoFullPhysVol* envelope,
-                              DataHandle<StoredMaterialManager>& materialManager,
+                              const StoredMaterialManager& materialManager,
                               std::map<std::string, unsigned int>& trdMap,
                               IRDBRecordset& BarrelDMTrds,
                               std::map<std::string, unsigned int>& trapMap,
@@ -170,12 +169,12 @@ createSectorEnvelopes2FromDB (GeoFullPhysVol* envelope,
   double Spb2ytr = BarrelDMTraps[recordIndex]->getDouble("YTR");
   double Spb2ztr = BarrelDMTraps[recordIndex]->getDouble("ZTR");
 
-  GeoMaterial* matLArServices17  = materialManager->getMaterial("LAr::LArServices17");// 0.035*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices18  = materialManager->getMaterial("LAr::LArServices18");// 0.240*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices19  = materialManager->getMaterial("LAr::LArServices19");// 0.469*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices20  = materialManager->getMaterial("LAr::LArServices20");// 0.353*CLHEP::gram/CLHEP::cm3
-  GeoMaterial *alu               = materialManager->getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3
-  GeoMaterial *air               = materialManager->getMaterial("std::Air"); //0.001214 CLHEP::g/CLHEP::cm3
+  const GeoMaterial* matLArServices17  = materialManager.getMaterial("LAr::LArServices17");// 0.035*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices18  = materialManager.getMaterial("LAr::LArServices18");// 0.240*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices19  = materialManager.getMaterial("LAr::LArServices19");// 0.469*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices20  = materialManager.getMaterial("LAr::LArServices20");// 0.353*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial *alu               = materialManager.getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3
+  const GeoMaterial *air               = materialManager.getMaterial("std::Air"); //0.001214 CLHEP::g/CLHEP::cm3
 
   HepGeom::Transform3D Cut3Boxe  = HepGeom::Translate3D(Boxxtr, Boxytr, Boxztr)*HepGeom::RotateX3D(-20*CLHEP::deg)*HepGeom::RotateY3D(90*CLHEP::deg);
   HepGeom::Transform3D Cut4Boxe  = HepGeom::Translate3D(Boxxtr, -Boxytr,Boxztr)*HepGeom::RotateX3D(20*CLHEP::deg)*HepGeom::RotateY3D(90*CLHEP::deg);
@@ -293,7 +292,7 @@ void
 createBridgeEnvelopesFromDB (GeoFullPhysVol* envelope,
                              std::map<std::string, unsigned int>& trapMap,
                              IRDBRecordset& BarrelDMTraps,
-                             GeoMaterial* matLArServices8,
+                             const GeoMaterial* matLArServices8,
                              GENFUNCTION& f)
 {
   unsigned int recordIndex = trapMap["BridgeE"];
@@ -329,7 +328,7 @@ void
 createBaseEnvelopesFromDB (GeoFullPhysVol* envelope,
                            std::map<std::string, unsigned int>& trdMap,
                            IRDBRecordset& BarrelDMTrds,
-                           GeoMaterial* matLArServices8,
+                           const GeoMaterial* matLArServices8,
                            GENFUNCTION& f)
 {
   unsigned int recordIndex = trdMap["BaseE"];
@@ -358,7 +357,7 @@ createBaseEnvelopesFromDB (GeoFullPhysVol* envelope,
 void createFromDB (GeoFullPhysVol* envelope,
                    IRDBAccessSvc* rdbAccess,
                    IGeoModelSvc* geoModel,
-                   DataHandle<StoredMaterialManager>& materialManager)
+                   const StoredMaterialManager& materialManager)
 {
   // Use Geometry Database
   DecodeVersionKey keyLAr(geoModel,"LAr");
@@ -395,24 +394,24 @@ void createFromDB (GeoFullPhysVol* envelope,
   unsigned int recordIndex;
     
   // Get materials
-  GeoMaterial *alu               = materialManager->getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3
-  GeoMaterial* matBoardsEnvelope = materialManager->getMaterial("LAr::BoardsEnvelope");// 0.932*CLHEP::gram/CLHEP::cm3);
-  GeoMaterial* matLArServices1   = materialManager->getMaterial("LAr::LArServices1");// 1.020*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices2   = materialManager->getMaterial("LAr::LArServices2");// 0.955*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices3   = materialManager->getMaterial("LAr::LArServices3");// 1.005*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices4   = materialManager->getMaterial("LAr::LArServices4");// 0.460*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices5   = materialManager->getMaterial("LAr::LArServices5");// 0.480*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices6   = materialManager->getMaterial("LAr::LArServices6");// 1.000*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices7   = materialManager->getMaterial("LAr::LArServices7");// 0.935*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices8   = materialManager->getMaterial("LAr::LArServices8");// 1.070*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices9   = materialManager->getMaterial("LAr::LArServices9");// 1.020*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices10  = materialManager->getMaterial("LAr::LArServices10");// 0.995*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices11  = materialManager->getMaterial("LAr::LArServices11");// 0.835*CLHEP::gram/CLHEP::cm3 
-  GeoMaterial* matLArServices12  = materialManager->getMaterial("LAr::LArServices12");// 0.640*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices13  = materialManager->getMaterial("LAr::LArServices13");// 0.690*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices14  = materialManager->getMaterial("LAr::LArServices14");// 0.825*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices15  = materialManager->getMaterial("LAr::LArServices15");// 0.875*CLHEP::gram/CLHEP::cm3
-  GeoMaterial* matLArServices16  = materialManager->getMaterial("LAr::LArServices16");// 1.035*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial *alu               = materialManager.getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3
+  const GeoMaterial* matBoardsEnvelope = materialManager.getMaterial("LAr::BoardsEnvelope");// 0.932*CLHEP::gram/CLHEP::cm3);
+  const GeoMaterial* matLArServices1   = materialManager.getMaterial("LAr::LArServices1");// 1.020*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices2   = materialManager.getMaterial("LAr::LArServices2");// 0.955*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices3   = materialManager.getMaterial("LAr::LArServices3");// 1.005*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices4   = materialManager.getMaterial("LAr::LArServices4");// 0.460*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices5   = materialManager.getMaterial("LAr::LArServices5");// 0.480*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices6   = materialManager.getMaterial("LAr::LArServices6");// 1.000*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices7   = materialManager.getMaterial("LAr::LArServices7");// 0.935*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices8   = materialManager.getMaterial("LAr::LArServices8");// 1.070*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices9   = materialManager.getMaterial("LAr::LArServices9");// 1.020*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices10  = materialManager.getMaterial("LAr::LArServices10");// 0.995*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices11  = materialManager.getMaterial("LAr::LArServices11");// 0.835*CLHEP::gram/CLHEP::cm3 
+  const GeoMaterial* matLArServices12  = materialManager.getMaterial("LAr::LArServices12");// 0.640*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices13  = materialManager.getMaterial("LAr::LArServices13");// 0.690*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices14  = materialManager.getMaterial("LAr::LArServices14");// 0.825*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices15  = materialManager.getMaterial("LAr::LArServices15");// 0.875*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial* matLArServices16  = materialManager.getMaterial("LAr::LArServices16");// 1.035*CLHEP::gram/CLHEP::cm3
 
   const double inv_Endab = 1. / (Endb - Enda);
   Variable       i;
@@ -659,7 +658,7 @@ void createFromDB (GeoFullPhysVol* envelope,
       double dy1 = DYa + (DYb-DYa)*(radiusMin-Enda)*inv_Endab;
       double dy2 = DYa + (DYb-DYa)*(radiusMax-Enda)*inv_Endab;
       double zpos=0.5*(radiusMax+radiusMin - (Endb+Enda));
-      GeoMaterial *matExtraTdr = materialManager->getMaterial((*BarrelDMRing)[i]->getString("MATERIAL"));
+      const GeoMaterial *matExtraTdr = materialManager.getMaterial((*BarrelDMRing)[i]->getString("MATERIAL"));
 
       //std::cout << " extraTdr: etamin,etamx " << etaMin << " " << etaMax << " thickness " << thicknessExtra << " size in Radius " << (radiusMax-radiusMin)
       //   << " size in R.phi " << dy1*2 << " " << dy2*2 << std::endl;
@@ -688,7 +687,7 @@ void createFromDB (GeoFullPhysVol* envelope,
       int nphi=(*BarrelDMPhiBox)[i]->getInt("NPHI");
       int noHorizontal = (*BarrelDMPhiBox)[i]->getInt("NOHORIZ");
 
-      GeoMaterial* matExtraPPF1 = materialManager->getMaterial((*BarrelDMPhiBox)[i]->getString("MATERIAL"));
+      const GeoMaterial* matExtraPPF1 = materialManager.getMaterial((*BarrelDMPhiBox)[i]->getString("MATERIAL"));
       std::string boxName = "LAr::DM::SectorEnvelopes1::"+(*BarrelDMPhiBox)[i]->getString("BOXNAME");
 
       //std::cout << " extraBox name " << boxName << " eta " << eta << " phi0" << phi0 << " deltaR " << deltaR << " deltaRphi " << deltaRphi
@@ -934,7 +933,7 @@ void LArGeo::BarrelDMConstruction::create(GeoFullPhysVol* envelope)
 
   DecodeVersionKey larVersionKey(geoModel, "LAr");
   
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) {
     throw std::runtime_error("Error in BarrelDMConstruction, stored MaterialManager is not found.");
 
@@ -959,20 +958,20 @@ void LArGeo::BarrelDMConstruction::create(GeoFullPhysVol* envelope)
   else if(strDMTopTag=="LArBarrelDM-00")
   {
     // Get some standard materials
-    GeoMaterial *air        = materialManager->getMaterial("std::Air");
+    const GeoMaterial *air        = materialManager->getMaterial("std::Air");
     const GeoMaterial *alu        = materialManager->getMaterial("std::Aluminium");
     //const GeoMaterial *c        = materialManager->getMaterial("std::Carbon");
     //const GeoMaterial *cu        = materialManager->getMaterial("std::Copper");
-    GeoMaterial *matXeCO2O2 = materialManager->getMaterial("trt::XeCO2O2");
-    GeoMaterial *shieldSteel = materialManager->getMaterial("shield::ShieldSteel");
-    GeoMaterial *matRubber = materialManager->getMaterial("sct::Rubber");
+    const GeoMaterial *matXeCO2O2 = materialManager->getMaterial("trt::XeCO2O2");
+    const GeoMaterial *shieldSteel = materialManager->getMaterial("shield::ShieldSteel");
+    const GeoMaterial *matRubber = materialManager->getMaterial("sct::Rubber");
     
     // Get required elements
-    GeoElement* silicon = materialManager->getElement("Silicon");
-    GeoElement* oxygen = materialManager->getElement("Oxygen");
-    GeoElement* hydrogen = materialManager->getElement("Hydrogen");
-    GeoElement* carbon = materialManager->getElement("Carbon");
-    GeoElement* copper = materialManager->getElement("Copper");
+    const GeoElement* silicon = materialManager->getElement("Silicon");
+    const GeoElement* oxygen = materialManager->getElement("Oxygen");
+    const GeoElement* hydrogen = materialManager->getElement("Hydrogen");
+    const GeoElement* carbon = materialManager->getElement("Carbon");
+    const GeoElement* copper = materialManager->getElement("Copper");
     
     
     // Define some custom materials - That will move to the GeomDB
@@ -1201,21 +1200,21 @@ void LArGeo::BarrelDMConstruction::create(GeoFullPhysVol* envelope)
   else if(strDMTopTag=="LArBarrelDM-01" || strDMTopTag=="LArBarrelDM-02")
   {
   // Get some standard materials
-  GeoMaterial *air        = materialManager->getMaterial("std::Air"); //0.001214 CLHEP::g/CLHEP::cm3
-  GeoMaterial *alu        = materialManager->getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3
-  GeoMaterial *shieldSteel = materialManager->getMaterial("shield::ShieldSteel"); //8 CLHEP::g/CLHEP::cm3
-  GeoMaterial *matCO2 = materialManager->getMaterial("trt::CO2"); //0.001842 CLHEP::g/CLHEP::cm3
-  GeoMaterial *matKapton = materialManager->getMaterial("std::Kapton"); // 1.42*CLHEP::gram/CLHEP::cm3
-  GeoMaterial *matC3F8 = materialManager->getMaterial("std::C3F8"); //1.032*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial *air        = materialManager->getMaterial("std::Air"); //0.001214 CLHEP::g/CLHEP::cm3
+  const GeoMaterial *alu        = materialManager->getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3
+  const GeoMaterial *shieldSteel = materialManager->getMaterial("shield::ShieldSteel"); //8 CLHEP::g/CLHEP::cm3
+  const GeoMaterial *matCO2 = materialManager->getMaterial("trt::CO2"); //0.001842 CLHEP::g/CLHEP::cm3
+  const GeoMaterial *matKapton = materialManager->getMaterial("std::Kapton"); // 1.42*CLHEP::gram/CLHEP::cm3
+  const GeoMaterial *matC3F8 = materialManager->getMaterial("std::C3F8"); //1.032*CLHEP::gram/CLHEP::cm3
 
   // Get required elements
-  GeoElement* silicon = materialManager->getElement("Silicon");
-  GeoElement* oxygen = materialManager->getElement("Oxygen");
-  GeoElement* hydrogen = materialManager->getElement("Hydrogen");
-  GeoElement* carbon = materialManager->getElement("Carbon");
-  GeoElement* copper = materialManager->getElement("Copper");
-  GeoElement* nitrogen = materialManager->getElement("Nitrogen"); 
-  GeoElement* fluorine = materialManager->getElement("Fluorine");
+  const GeoElement* silicon = materialManager->getElement("Silicon");
+  const GeoElement* oxygen = materialManager->getElement("Oxygen");
+  const GeoElement* hydrogen = materialManager->getElement("Hydrogen");
+  const GeoElement* carbon = materialManager->getElement("Carbon");
+  const GeoElement* copper = materialManager->getElement("Copper");
+  const GeoElement* nitrogen = materialManager->getElement("Nitrogen"); 
+  const GeoElement* fluorine = materialManager->getElement("Fluorine");
 
   // Define some custom materials - That will move to the GeomDB
 
@@ -1578,7 +1577,7 @@ void LArGeo::BarrelDMConstruction::create(GeoFullPhysVol* envelope)
   } 
   else
   {
-    LArGeo::BarrelDM::createFromDB (envelope, rdbAccess, geoModel, materialManager);
+    LArGeo::BarrelDM::createFromDB (envelope, rdbAccess, geoModel, *materialManager);
   }
 }
 
diff --git a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelPresamplerConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelPresamplerConstruction.cxx
index d9b648e564e222d287be85d80f8ca7971d282faf..c35aac31d91176783bb7469e2a11de95814b4b73 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelPresamplerConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoBarrel/src/BarrelPresamplerConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "LArGeoBarrel/BarrelPresamplerConstruction.h"
@@ -26,7 +26,6 @@
 #include "GeoModelKernel/GeoTrap.h"
 #include "GeoModelKernel/GeoTrd.h"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 
@@ -82,47 +81,47 @@ LArGeo::BarrelPresamplerConstruction ::BarrelPresamplerConstruction(bool fullGeo
   }
   
 
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) {
     throw std::runtime_error("Error in BarrelPresamplerConstruction, stored MaterialManager is not found.");
   }
   
-  GeoMaterial *Copper  = materialManager->getMaterial("std::Copper");
+  const GeoMaterial *Copper  = materialManager->getMaterial("std::Copper");
   if (!Copper) throw std::runtime_error("Error in BarrelPresamplerConstruction, std::Copper is not found.");
   
-  GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
+  const GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
   if (!Iron) throw std::runtime_error("Error in BarrelPresamplerConstruction, std::Iron is not found.");
   
-  GeoMaterial *Lead  = materialManager->getMaterial("std::Lead");
+  const GeoMaterial *Lead  = materialManager->getMaterial("std::Lead");
   if (!Lead) throw std::runtime_error("Error in BarrelPresamplerConstruction, std::Lead is not found.");
   
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if (!LAr) throw std::runtime_error("Error in BarrelPresamplerConstruction, std::LiquidArgon is not found.");
   
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) throw std::runtime_error("Error in BarrelPresamplerConstruction, std::Air is not found.");
   
-  GeoMaterial *Kapton  = materialManager->getMaterial("std::Kapton");
+  const GeoMaterial *Kapton  = materialManager->getMaterial("std::Kapton");
   if (!Kapton) throw std::runtime_error("Error in BarrelPresamplerConstruction, std::Kapton is not found."); 
-  GeoMaterial *Glue  = materialManager->getMaterial("LAr::Glue");
+  const GeoMaterial *Glue  = materialManager->getMaterial("LAr::Glue");
   if (!Glue) throw std::runtime_error("Error in BarrelPresamplerConstruction, LAr::Glue is not found.");
   
-  GeoMaterial *G10  = materialManager->getMaterial("LAr::G10");
+  const GeoMaterial *G10  = materialManager->getMaterial("LAr::G10");
   if (!G10) throw std::runtime_error("Error in BarrelPresamplerConstruction, LAr::G10 is not found.");
   
-  GeoMaterial *FR4  = materialManager->getMaterial("LAr::FR4");
+  const GeoMaterial *FR4  = materialManager->getMaterial("LAr::FR4");
   if (!FR4) throw std::runtime_error("Error in BarrelPresamplerConstruction, LAr::FR4 is not found.");
 
-  GeoMaterial *MBMat  = materialManager->getMaterial("LAr::MBMat");
+  const GeoMaterial *MBMat  = materialManager->getMaterial("LAr::MBMat");
   if (!MBMat) throw std::runtime_error("Error in BarrelPresamplerConstruction, LAr::MBMat is not found.");
 
-  GeoMaterial *AnodeMat  = materialManager->getMaterial("LAr::AnodeMat");
+  const GeoMaterial *AnodeMat  = materialManager->getMaterial("LAr::AnodeMat");
   if (!AnodeMat) throw std::runtime_error("Error in BarrelPresamplerConstruction, LAr::AnodeMat is not found.");
 
-  GeoMaterial *CathodeMat  = materialManager->getMaterial("LAr::CathodeMat");
+  const GeoMaterial *CathodeMat  = materialManager->getMaterial("LAr::CathodeMat");
   if (!CathodeMat) throw std::runtime_error("Error in BarrelPresamplerConstruction, LAr::CathodeMat is not found.");
 
-  GeoMaterial *ConnecMat  = materialManager->getMaterial("LAr::ConnecMat");
+  const GeoMaterial *ConnecMat  = materialManager->getMaterial("LAr::ConnecMat");
   if (!ConnecMat) throw std::runtime_error("Error in BarrelPresamplerConstruction, LAr::ConnecMat is not found.");
   //  double rMinPresamplerMother   =1385*CLHEP::mm;
   double rMinPresamplerMother   =1410*CLHEP::mm;
diff --git a/LArCalorimeter/LArGeoModel/LArGeoCode/LArGeoCode/LArMaterialManager.h b/LArCalorimeter/LArGeoModel/LArGeoCode/LArGeoCode/LArMaterialManager.h
index dd73a6bc6619ac3dedaa73a3a0fc122eca65e6df..5ff9e83f1524b0e135164e1d990b11fd5d48ff8c 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoCode/LArGeoCode/LArMaterialManager.h
+++ b/LArCalorimeter/LArGeoModel/LArGeoCode/LArGeoCode/LArMaterialManager.h
@@ -1,9 +1,9 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-#ifndef _LARMATERIALMANAGER_H_
-#define _LARMATERIALMANAGER_H_
+#ifndef LARGEOCODE_LARMATERIALMANAGER_H
+#define LARGEOCODE_LARMATERIALMANAGER_H
 //----------------------------------------------------------//
 //                                                          //
 // class LArMaterialManager  This is a material manager     //
diff --git a/LArCalorimeter/LArGeoModel/LArGeoCode/src/LArMaterialManager.cxx b/LArCalorimeter/LArGeoModel/LArGeoCode/src/LArMaterialManager.cxx
index 13402c6376b5e0bb45a5c02c925c49dc5a28100e..7dd801739093ae4789f8bac193e5d5f052265a0f 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoCode/src/LArMaterialManager.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoCode/src/LArMaterialManager.cxx
@@ -1,12 +1,11 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "LArGeoCode/LArMaterialManager.h"
 #include "GeoModelKernel/GeoMaterial.h"
 #include "GeoModelKernel/GeoElement.h"
 #include "StoreGate/StoreGate.h"
-#include "StoreGate/DataHandle.h"
 #include "StoreGate/StoreGateSvc.h"
 #include "CLHEP/Units/PhysicalConstants.h"
 #include "GaudiKernel/Bootstrap.h"
@@ -27,7 +26,7 @@ LArMaterialManager::LArMaterialManager(StoreGateSvc* detStore):
   if(status.isFailure())
     throw std::runtime_error("LArMaterialManager: cannot initialize message service");
 
-  DataHandle<StoredMaterialManager> materialManager;
+  StoredMaterialManager* materialManager = nullptr;
   status = detStore->retrieve(materialManager, std::string("MATERIALS"));
   if(status.isFailure())
     throw std::runtime_error("Error in LArMaterialManager, list of precalculated materials is absent..");
@@ -46,7 +45,7 @@ void LArMaterialManager::buildMaterials()
   msg << "**** in Material Manager " << endmsg;
 #endif
 
-  GeoMaterial *Copper  = m_storedManager->getMaterial("std::Copper");
+  const GeoMaterial *Copper  = m_storedManager->getMaterial("std::Copper");
   if (!Copper) throw std::runtime_error("Error in LArMaterialManager, std::Copper is not found.");
 #ifdef DEBUGGEO
   msg << "Copper radiation length " << Copper->getRadLength() << " "
@@ -54,10 +53,10 @@ void LArMaterialManager::buildMaterials()
 #endif
 
 
-  GeoMaterial *Iron  = m_storedManager->getMaterial("std::Iron");
+  const GeoMaterial *Iron  = m_storedManager->getMaterial("std::Iron");
   if (!Iron) throw std::runtime_error("Error in LArMaterialManager, std::Iron is not found.");
 
-  GeoMaterial *Lead  = m_storedManager->getMaterial("std::Lead");
+  const GeoMaterial *Lead  = m_storedManager->getMaterial("std::Lead");
   if (!Lead) throw std::runtime_error("Error in LArMaterialManager, std::Lead is not found.");
 #ifdef DEBUGGEO
   msg << MSG::INFO<< "Lead radiation length " << Lead->getRadLength() << " "
@@ -65,7 +64,7 @@ void LArMaterialManager::buildMaterials()
 #endif
 
 
-  GeoMaterial *LAr  = m_storedManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = m_storedManager->getMaterial("std::LiquidArgon");
   if (!LAr) throw std::runtime_error("Error in LArMaterialManager, std::LiquidArgon is not found.");
 
 #ifdef DEBUGGEO
@@ -73,10 +72,10 @@ void LArMaterialManager::buildMaterials()
             << LAr->getDensity()/(CLHEP::g/CLHEP::cm3) << endmsg;
 #endif
 
-  GeoMaterial *Air  = m_storedManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = m_storedManager->getMaterial("std::Air");
   if (!Air) throw std::runtime_error("Error in LArMaterialManager, std::Air is not found.");
 
-  GeoMaterial *Kapton  = m_storedManager->getMaterial("std::Kapton");
+  const GeoMaterial *Kapton  = m_storedManager->getMaterial("std::Kapton");
   if (!Kapton) throw std::runtime_error("Error in LArMaterialManager, std::Kapton is not found.");
 #ifdef DEBUGGEO
   msg << MSG::INFO<< "Kapton radiation length " << Kapton->getRadLength() <<  " "
@@ -88,7 +87,7 @@ void LArMaterialManager::buildMaterials()
 
 #endif
 
-  GeoMaterial *Glue  = m_storedManager->getMaterial("LAr::Glue");
+  const GeoMaterial *Glue  = m_storedManager->getMaterial("LAr::Glue");
   if (!Glue) throw std::runtime_error("Error in LArMaterialManager, LAr::Glue is not found.");
 #ifdef DEBUGGEO
   msg << MSG::INFO<< "Glue   radiation length " << Glue->getRadLength() << " "
@@ -99,7 +98,7 @@ void LArMaterialManager::buildMaterials()
 
 #endif
 
-  GeoMaterial *G10  = m_storedManager->getMaterial("LAr::G10");
+  const GeoMaterial *G10  = m_storedManager->getMaterial("LAr::G10");
   if (!G10) throw std::runtime_error("Error in LArMaterialManager, LAr::G10 is not found.");
 #ifdef DEBUGGEO
   msg << MSG::INFO<< "G10    radiation length " << G10->getRadLength() << " "
@@ -253,8 +252,8 @@ void LArMaterialManager::buildMaterials()
 
 //==GU  28 July 2005
 //  implement latest definitions from hard coded geometry
-    GeoElement* Si = m_storedManager->getElement("Silicon");
-    GeoElement *O = m_storedManager->getElement("Oxygen");
+    const GeoElement* Si = m_storedManager->getElement("Silicon");
+    const GeoElement *O = m_storedManager->getElement("Oxygen");
 
     density = dB.getDouble("BarrelMotherboards", "BarrelMotherboards-00", "DG10")*(CLHEP::g/CLHEP::cm3);   //LArEMBEpoxyVolumicMass
     GeoMaterial* SiO2 = new GeoMaterial("SiO2",density);
@@ -311,7 +310,7 @@ void LArMaterialManager::buildMaterials()
     // Vacuum for TB cryostat
     // ----------------------
 
-    GeoElement *H = m_storedManager->getElement( "Hydrogen" );
+    const GeoElement *H = m_storedManager->getElement( "Hydrogen" );
 
     GeoMaterial *Vacuum = new GeoMaterial( "Vacuum", CLHEP::universe_mean_density );
     Vacuum->add( H, 1. );
diff --git a/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EMECSupportConstruction.h b/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EMECSupportConstruction.h
index b89d457dc7d0d182bec22728fcefc53f0e1eba0e..08d202b1adc0b02f065ec1a9227d336c7b630fbd 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EMECSupportConstruction.h
+++ b/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EMECSupportConstruction.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
@@ -95,10 +95,16 @@ class EMECSupportConstruction
     std::string m_BaseName;
     double m_Position, m_PhiStart, m_PhiSize;
 
-	GeoMaterial *m_LAr, *m_Alu, *m_Gten, *m_PermaliE730;
-	GeoMaterial *m_G10FeInner, *m_G10FeOuter, *m_Kapton_Cu;
-	GeoMaterial *m_Cable, *m_Copper;
-        GeoMaterial *m_Lead;
+        const GeoMaterial* m_LAr;
+        const GeoMaterial* m_Alu;
+        const GeoMaterial* m_Gten;
+        const GeoMaterial* m_PermaliE730;
+        const GeoMaterial* m_G10FeInner;
+        const GeoMaterial* m_G10FeOuter;
+        const GeoMaterial* m_Kapton_Cu;
+        const GeoMaterial* m_Cable;
+        const GeoMaterial* m_Copper;
+        const GeoMaterial* m_Lead;
 
 	IRDBRecordset_ptr m_DB_EmecGeometry, m_DB_EmecWheelParameters, m_DB_mn;
 	IRDBRecordset_ptr m_DB_boxes, m_DB_numbers, m_DB_tubes, m_DB_pcons;
diff --git a/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EndcapCryostatConstruction.h b/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EndcapCryostatConstruction.h
index 09fa51ffa48c4324c4ab4a749474fda7aec5174b..57d04146ad82d23e4dc91071c7b32e0296f5b3ad 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EndcapCryostatConstruction.h
+++ b/LArCalorimeter/LArGeoModel/LArGeoEndcap/LArGeoEndcap/EndcapCryostatConstruction.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
@@ -18,7 +18,6 @@
 #include "LArGeoHec/HEC2WheelConstruction.h"
 #include "LArGeoFcal/FCALConstruction.h"
 #include "LArGeoEndcap/EMECConstruction.h"
-#include "StoreGate/DataHandle.h"
 
 class IRDBAccessSvc;
 class IRDBRecord;
@@ -65,7 +64,7 @@ namespace LArGeo {
     friend class ::LArDetectorToolNV;
 
     GeoPhysVol* buildMbtsTrd(const IRDBRecord* rec
-			     , const DataHandle<StoredMaterialManager>& matmanager
+			     , const StoredMaterialManager* matmanager
 			     , GeoPhysVol* parent);
   };
 
diff --git a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECConstruction.cxx
index a7dc1ef3001eb6ec8edd76d373d85ff1c34ff7d9..0c866b27039aea4712ddecebb0c097797943c5c2 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // EMECConstruction
@@ -147,17 +147,17 @@ GeoFullPhysVol* LArGeo::EMECConstruction::GetEnvelope(bool bPos)
 	      << "================================================"
 	      << std::endl;
 
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if(StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return 0;
 
   //////////////////////////////////////////////////////////////////
   // Get materials from the manager
   //////////////////////////////////////////////////////////////////
 
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if(!LAr) throw std::runtime_error("Error in EMECConstruction, std::LiquidArgon is not found.");
 
-	GeoMaterial* innerAbsorberMaterial = 0;
+	const GeoMaterial* innerAbsorberMaterial = 0;
 	std::string innerAbsorberMaterial_name = "LAr::EMEC_Thickabs";
 	if(mlabs > 0){
 		if(mlabs != 2){
@@ -175,7 +175,7 @@ GeoFullPhysVol* LArGeo::EMECConstruction::GetEnvelope(bool bPos)
 		);
 	}
 
-	GeoMaterial* outerAbsorberMaterial = 0;
+	const GeoMaterial* outerAbsorberMaterial = 0;
 	std::string outerAbsorberMaterial_name = "LAr::EMEC_Thinabs";
 	if(mlabs > 0){
 		if(mlabs != 2){
@@ -193,7 +193,8 @@ GeoFullPhysVol* LArGeo::EMECConstruction::GetEnvelope(bool bPos)
 		);
 	}
 
-	GeoMaterial *Glue = 0, *Lead = 0;
+	const GeoMaterial *Glue = 0;
+        const GeoMaterial *Lead = 0;
 	if(mlabs > 0){
 // to be replaced with glue and lead - finished by Adam Agocs
 		Glue = materialManager->getMaterial("LAr::Glue");
@@ -202,10 +203,10 @@ GeoFullPhysVol* LArGeo::EMECConstruction::GetEnvelope(bool bPos)
 		if(!Lead) throw std::runtime_error("Error in EMECConstruction, LAr::Lead is not found.");
 	}
 
-  GeoMaterial* innerElectrodMaterial = materialManager->getMaterial("LAr::KaptonC");
+  const GeoMaterial* innerElectrodMaterial = materialManager->getMaterial("LAr::KaptonC");
   if(!innerElectrodMaterial) throw std::runtime_error("Error in EMECConstruction, LAr::KaptonC is not found.");
 
-  GeoMaterial* outerElectrodMaterial = innerElectrodMaterial;
+  const GeoMaterial* outerElectrodMaterial = innerElectrodMaterial;
 
   //////////////////////////////////////////////////////////////////
   // Define geometry
diff --git a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECSupportConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECSupportConstruction.cxx
index 9de61749dab09c9cb0ee190d73717234e79f1642..537bf556ce431b3fb9d22b5bac644950046a4cb1 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECSupportConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EMECSupportConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // EMECSupportConstruction
@@ -104,8 +104,10 @@ EMECSupportConstruction::EMECSupportConstruction
 	if(svcLocator->service("DetectorStore", detStore, false) == StatusCode::FAILURE){
 		throw std::runtime_error("Error in EMECSupportConstruction, cannot access DetectorStore");
 	}
-	DataHandle<StoredMaterialManager> materialManager;
-	detStore->retrieve(materialManager, std::string("MATERIALS"));
+	const StoredMaterialManager* materialManager = nullptr;
+	if (detStore->retrieve(materialManager, std::string("MATERIALS")).isFailure()) {
+          throw std::runtime_error("Error in EMECSupportConstruction, cannot access MATERIALS");
+        }
 
 	m_PhiStart = 0.;
 	m_PhiSize = CLHEP::twopi*CLHEP::rad;
@@ -1689,11 +1691,13 @@ void EMECSupportConstruction::put_front_outer_extracyl(GeoPhysVol *motherPhysica
               if(svcLocator->service("DetectorStore", detStore, false) == StatusCode::FAILURE){
                 throw std::runtime_error("Error in EMECSupportConstruction/extracyl, cannot access DetectorStore");
               }
-              DataHandle<StoredMaterialManager> materialManager;
-              detStore->retrieve(materialManager, std::string("MATERIALS"));
+              const StoredMaterialManager* materialManager = nullptr;
+              if (detStore->retrieve(materialManager, std::string("MATERIALS")).isFailure()) {
+                throw std::runtime_error("Error in EMECSupportConstruction: cannot find MATERIALS.");
+              }
 
               std::string material=(*m_DB_emecExtraCyl)[i]->getString("MATERIAL"); //lead
-              GeoMaterial *mat = materialManager->getMaterial(material);
+              const GeoMaterial *mat = materialManager->getMaterial(material);
               if (!mat) {
                 throw std::runtime_error("Error in EMECSupportConstruction/extracyl,material for CylBeforePS is not found.");
               }
diff --git a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapCryostatConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapCryostatConstruction.cxx
index 52247bac9b6e8d439ffe81795b1070bcb7669b62..36e803b82e2a346502a123be4350adaca5479eb5 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapCryostatConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapCryostatConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // EndcapCryostatConstruction
@@ -140,39 +140,39 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos)
 
   // Get the materials from the material manager:-----------------------------------------------------//
   //                                                                                                  //
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL;
 
-  GeoMaterial *Lead = materialManager->getMaterial("std::Lead");
+  const GeoMaterial *Lead = materialManager->getMaterial("std::Lead");
   if (!Lead) {
     throw std::runtime_error("Error in EndcapCryostatConstruction, std::Lead is not found.");
   }
   
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) {
     throw std::runtime_error("Error in EndcapCryostatConstruction, std::Air is not found.");
   }
   
-  GeoMaterial *Al  = materialManager->getMaterial("std::Aluminium");
+  const GeoMaterial *Al  = materialManager->getMaterial("std::Aluminium");
   if (!Al) {
     throw std::runtime_error("Error in EndcapCryostatConstruction, std::Aluminium is not found.");
   }
 
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if (!LAr) {
     throw std::runtime_error("Error in EndcapCryostatConstruction, std::LiquidArgon is not found.");
   }
 
-  GeoMaterial *G10  = materialManager->getMaterial("LAr::G10");
+  const GeoMaterial *G10  = materialManager->getMaterial("LAr::G10");
   if (!G10) throw std::runtime_error("Error in EndcapCryostatConstruction, LAr::G10 is not found.");
 
-  GeoMaterial *Copper  = materialManager->getMaterial("std::Copper");
+  const GeoMaterial *Copper  = materialManager->getMaterial("std::Copper");
   if (!Copper) throw std::runtime_error("Error in EndcapCryostatConstruction, std::Copper is not found.");
   
-  GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
+  const GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
   if (!Iron) throw std::runtime_error("Error in EndcapCryostatConstruction, std::Iron is not found.");
 
-  GeoMaterial *Polystyrene  = materialManager->getMaterial("std::Polystyrene");
+  const GeoMaterial *Polystyrene  = materialManager->getMaterial("std::Polystyrene");
   if (!Polystyrene) throw std::runtime_error("Error in EndcapCryostatConstruction, std::Polystyrene is not found.");
 
   //                                                                                                 //
@@ -334,7 +334,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos)
                 double dphi=(*cryoExtraCyl)[i]->getDouble("DPHI");
                 if(dphi>6.28) dphi=2.*M_PI;
                 std::string material=(*cryoExtraCyl)[i]->getString("MATERIAL"); //lead
-                GeoMaterial *mat = materialManager->getMaterial(material);
+                const GeoMaterial *mat = materialManager->getMaterial(material);
                 if (!mat) {
                   throw std::runtime_error("Error in EndcapCryostatConstruction,material for CylBeforePS is not found.");
                 }
@@ -398,7 +398,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos)
 			currentRecord->getDouble("DZ")*CLHEP::cm / 2.,
 			(double) 0.,
 			(double) 2.*M_PI*CLHEP::rad);
-	GeoMaterial *material  = materialManager->getMaterial(currentRecord->getString("MATERIAL"));
+	const GeoMaterial *material  = materialManager->getMaterial(currentRecord->getString("MATERIAL"));
       
 	if (!material) {
 	  std::ostringstream errorMessage;
@@ -516,7 +516,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos)
   GeoFullPhysVol* totalEMHLArPhysical = new GeoFullPhysVol(totalEMHLArLogical);
 
   // Add brass plugs
-  GeoMaterial *PlugBrass(0);
+  const GeoMaterial *PlugBrass(0);
   for(size_t i(0);i<2;++i) {
     const planeIndMap& brassPlugPlanes = brassPlugPlanesVect[i];
     if (brassPlugPlanes.size()) {
@@ -737,7 +737,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos)
 	double dzMM = (*itMother)->getDouble("DZ")*CLHEP::mm;
 	zposMM = (*itMother)->getDouble("ZPOS")*CLHEP::mm;
 	
-	GeoMaterial *matMM  = materialManager->getMaterial((*itMother)->getString("MATERIAL"));
+	const GeoMaterial *matMM  = materialManager->getMaterial((*itMother)->getString("MATERIAL"));
 	
 	GeoTube  *tubeMM = new GeoTube(rminMM,rmaxMM,dzMM);
 	
@@ -770,7 +770,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos)
 	double dzMod = (*itModerator)->getDouble("DZ")*CLHEP::mm;
 	double zposMod = (*itModerator)->getDouble("ZPOS")*CLHEP::mm;
 	
-	GeoMaterial *matMod  = materialManager->getMaterial((*itModerator)->getString("MATERIAL"));
+	const GeoMaterial *matMod  = materialManager->getMaterial((*itModerator)->getString("MATERIAL"));
 	
 	GeoTube* solidMod = new GeoTube(rminMM,rmaxMM,dzMod);
 	GeoLogVol* lvMod = new GeoLogVol("Moderator",solidMod, matMod);
@@ -854,7 +854,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos)
 	GeoTube* tubeJM = new GeoTube((*mbtsTubs)[0]->getDouble("RMIN"),
 				      (*mbtsTubs)[0]->getDouble("RMAX"),
 				      (*mbtsTubs)[0]->getDouble("DZ"));
-	GeoMaterial* matJM  = materialManager->getMaterial((*mbtsTubs)[0]->getString("MATERIAL"));
+	const GeoMaterial* matJM  = materialManager->getMaterial((*mbtsTubs)[0]->getString("MATERIAL"));
 	GeoLogVol* lvJM = new GeoLogVol("ModeratorJMTube",tubeJM, matJM);
 	GeoPhysVol* pvJM = new GeoPhysVol(lvJM);
 
@@ -890,7 +890,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos)
 	  }
 	  catch(std::runtime_error&) {}
 	
-	  GeoMaterial *matScin  = materialManager->getMaterial(curScin->getString("MATERIAL"));
+	  const GeoMaterial *matScin  = materialManager->getMaterial(curScin->getString("MATERIAL"));
 	
 	  std::ostringstream ostr;
 	  ostr << curScin->getInt("SCIN_ID");
@@ -1086,7 +1086,7 @@ GeoFullPhysVol* LArGeo::EndcapCryostatConstruction::createEnvelope(bool bPos)
 }
 
 GeoPhysVol* LArGeo::EndcapCryostatConstruction::buildMbtsTrd(const IRDBRecord* rec
-							     , const DataHandle<StoredMaterialManager>& matmanager
+							     , const StoredMaterialManager* matmanager
 							     , GeoPhysVol* parent)
 {
   // Construct the Trd
diff --git a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapDMConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapDMConstruction.cxx
index 275438dfbf00bb29608fa9e6b524d4c5f0e007d5..75f1f7af96147f42a581d0a10e7b3d3d0bcffb96 100644
--- a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapDMConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapDMConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "EndcapDMConstruction.h"
@@ -8,7 +8,6 @@
 #include "GaudiKernel/MsgStream.h"
 #include "GaudiKernel/IMessageSvc.h"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 
 #include "GeoModelKernel/GeoMaterial.h"
 #include "GeoModelKernel/GeoFullPhysVol.h"
@@ -75,7 +74,7 @@ void LArGeo::EndcapDMConstruction::create(GeoFullPhysVol* envelope)
     throw std::runtime_error("Error in EndcapDMConstruction, cannot access RDBAccessSvc");
 
   DecodeVersionKey keyLAr(geoModel, "LAr");
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if(StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) 
     throw std::runtime_error("Error in EndcapDMConstruction, stored MaterialManager is not found");
 
@@ -109,8 +108,8 @@ void LArGeo::EndcapDMConstruction::create(GeoFullPhysVol* envelope)
   unsigned int recordIndex;
 
   // Get materials
-  GeoMaterial *alu               = materialManager->getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3
-  GeoMaterial* matBoardsEnvelope = materialManager->getMaterial("LAr::BoardsEnvelope");// 0.932*CLHEP::gram/CLHEP::cm3);
+  const GeoMaterial *alu               = materialManager->getMaterial("std::Aluminium"); //2.7 CLHEP::g/CLHEP::cm3
+  const GeoMaterial* matBoardsEnvelope = materialManager->getMaterial("LAr::BoardsEnvelope");// 0.932*CLHEP::gram/CLHEP::cm3);
 
   ////----------- Building Front-end crates --------------------
   recordIndex = tubeMap["Ped2"];
@@ -238,7 +237,7 @@ void LArGeo::EndcapDMConstruction::create(GeoFullPhysVol* envelope)
   // Build services
   IRDBRecordset_ptr EndcapDMTubes = rdbAccess->getRecordsetPtr("LArEndcapDMTubes",keyLAr.tag(),keyLAr.node());
   if(EndcapDMTubes->size()) {
-    GeoMaterial* matECServices = materialManager->getMaterial("LAr::LArECServices");    
+    const GeoMaterial* matECServices = materialManager->getMaterial("LAr::LArECServices");    
     for(unsigned i(0); i<EndcapDMTubes->size(); ++i) {
       GeoTube* endcapTube = new GeoTube((*EndcapDMTubes)[i]->getDouble("RMIN"),(*EndcapDMTubes)[i]->getDouble("RMAX"),(*EndcapDMTubes)[i]->getDouble("DZ"));
       GeoLogVol* endcapTubeLv = new GeoLogVol((*EndcapDMTubes)[i]->getString("TUBENAME"),endcapTube,matECServices);
diff --git a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapPresamplerConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapPresamplerConstruction.cxx
index ad74198430dfafaf615ab9f64f8838bcecc9a9ef..727960b3b202b07c0e5a823ef27db523e4adb29b 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapPresamplerConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoEndcap/src/EndcapPresamplerConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "LArGeoEndcap/EndcapPresamplerConstruction.h"
@@ -13,7 +13,6 @@
 #include "GeoModelKernel/GeoNameTag.h"  
 #include "GeoModelKernel/GeoIdentifierTag.h"  
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelKernel/GeoShapeUnion.h"
@@ -68,10 +67,10 @@ GeoFullPhysVol* EndcapPresamplerConstruction::Envelope()
     throw std::runtime_error("Error in EndcapCryostatConstruction, cannot access DetectorStore");
   }
 
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return 0;
 
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if (!LAr) {
     throw std::runtime_error("Error in EndcapCryostatConstruction, std::LiquidArgon is not found.");
   }
diff --git a/LArCalorimeter/LArGeoModel/LArGeoFcal/src/FCALConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoFcal/src/FCALConstruction.cxx
index 149d06803b08a1f3a917292ed3d7de9095dd6988..a5cea07bfc31810e6a2c200cd80a716c5660a0e3 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoFcal/src/FCALConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoFcal/src/FCALConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "LArReadoutGeometry/FCAL_ChannelMap.h"
@@ -23,7 +23,6 @@
 #include "GeoModelKernel/GeoBox.h"
 #include "GeoModelKernel/GeoTrap.h"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelUtilities/DecodeVersionKey.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelInterfaces/IGeoModelSvc.h"
@@ -120,44 +119,44 @@ GeoVFullPhysVol* LArGeo::FCALConstruction::GetEnvelope(bool bPos)
     throw std::runtime_error("Error in FCALConstruction, cannot access DetectorStore");
   }
 
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL;
   
-  GeoMaterial *Copper  = materialManager->getMaterial("std::Copper");
+  const GeoMaterial *Copper  = materialManager->getMaterial("std::Copper");
   if (!Copper) throw std::runtime_error("Error in FCALConstruction, std::Copper is not found.");
   
-  GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
+  const GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
   if (!Iron) throw std::runtime_error("Error in FCALConstruction, std::Iron is not found.");
   
-  GeoMaterial *Lead  = materialManager->getMaterial("std::Lead");
+  const GeoMaterial *Lead  = materialManager->getMaterial("std::Lead");
   if (!Lead) throw std::runtime_error("Error in FCALConstruction, std::Lead is not found.");
   
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if (!LAr) throw std::runtime_error("Error in FCALConstruction, std::LiquidArgon is not found.");
   
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) throw std::runtime_error("Error in FCALConstruction, std::Air is not found.");
   
-  GeoMaterial *Kapton  = materialManager->getMaterial("std::Kapton");
+  const GeoMaterial *Kapton  = materialManager->getMaterial("std::Kapton");
   if (!Kapton) throw std::runtime_error("Error in FCALConstruction, std::Kapton is not found.");
   
-  GeoMaterial *Glue  = materialManager->getMaterial("LAr::Glue");
+  const GeoMaterial *Glue  = materialManager->getMaterial("LAr::Glue");
   if (!Glue) throw std::runtime_error("Error in FCALConstruction, LAr::Glue is not found.");
   
-  GeoMaterial *G10  = materialManager->getMaterial("LAr::G10");
+  const GeoMaterial *G10  = materialManager->getMaterial("LAr::G10");
   if (!G10) throw std::runtime_error("Error in FCALConstruction, LAr::G10 is not found.");
   
   
-  GeoMaterial *FCal1Absorber = materialManager->getMaterial("LAr::FCal1Absorber");
+  const GeoMaterial *FCal1Absorber = materialManager->getMaterial("LAr::FCal1Absorber");
   if (!FCal1Absorber) throw std::runtime_error("Error in FCALConstruction, LAr::FCal1Absorber is not found.");
 
-  GeoMaterial *FCal23Absorber = materialManager->getMaterial("LAr::FCal23Absorber");
+  const GeoMaterial *FCal23Absorber = materialManager->getMaterial("LAr::FCal23Absorber");
   if (!FCal23Absorber) throw std::runtime_error("Error in FCALConstruction, LAr::FCal23Absorber is not found.");
 
-  GeoMaterial *FCalCableHarness = materialManager->getMaterial("LAr::FCalCableHarness");
+  const GeoMaterial *FCalCableHarness = materialManager->getMaterial("LAr::FCalCableHarness");
   if (!FCalCableHarness) throw std::runtime_error("Error in FCALConstruction, LAr::FCalCableHarness is not found.");
 
-  GeoMaterial *FCal23Slugs = materialManager->getMaterial("LAr::FCal23Slugs");
+  const GeoMaterial *FCal23Slugs = materialManager->getMaterial("LAr::FCal23Slugs");
   if (!FCal23Slugs) throw std::runtime_error("Error in FCALConstruction, LAr::FCal23Slugs is not found.");
 
 
diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/ExcluderConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/ExcluderConstruction.cxx
index 77ee1b7609ab000b60796803b4a4f8ac188e1ba2..03d858974b397f930a5ac2334ea5785fa660babf 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/ExcluderConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/ExcluderConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ExcluderConstruction
@@ -24,7 +24,6 @@
 #include "GeoModelKernel/GeoAlignableTransform.h"  
 #include "GeoModelKernel/GeoIdentifierTag.h"  
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelKernel/GeoShapeUnion.h"
@@ -75,12 +74,12 @@ GeoPhysVol* LArGeo::ExcluderConstruction::GetEnvelope()
 
   // Need to add Rohacell here!                                     <<<=============== 
 
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return 0;
 
 
   // (use Air for the moment....)                                  <<<================ 
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) {
     throw std::runtime_error("Error in ExcluderConstruction, std::Air is not found.");
   }
@@ -89,10 +88,10 @@ GeoPhysVol* LArGeo::ExcluderConstruction::GetEnvelope()
   // Rohacell foam has density: 0.11g/cm3
   std::string name;
   double density;
-  GeoElement*  C=materialManager->getElement("Carbon");
-  GeoElement*  H=materialManager->getElement("Hydrogen");
-  GeoElement*  O=materialManager->getElement("Oxygen");
-  GeoElement*  N=materialManager->getElement("Nitrogen");
+  const GeoElement*  C=materialManager->getElement("Carbon");
+  const GeoElement*  H=materialManager->getElement("Hydrogen");
+  const GeoElement*  O=materialManager->getElement("Oxygen");
+  const GeoElement*  N=materialManager->getElement("Nitrogen");
   GeoMaterial* Rohacell = new GeoMaterial(name="Rohacell", density=0.11*CLHEP::g/CLHEP::cm3);
   Rohacell->add(C,0.6465);
   Rohacell->add(H,0.07836);
diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/FrontBeamConstructionH62002.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/FrontBeamConstructionH62002.cxx
index a97657badb3c03f72b707d9606b4633f4b8e269b..e72c0ca78695f7e5ab05c44564247df97129c470 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/FrontBeamConstructionH62002.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/FrontBeamConstructionH62002.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "FrontBeamConstructionH62002.h"
@@ -24,7 +24,6 @@
 #include "GeoModelKernel/GeoIdentifierTag.h"  
 #include "GeoModelKernel/GeoSerialDenominator.h"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelKernel/GeoShapeUnion.h"
@@ -98,14 +97,14 @@ GeoVPhysVol* LArGeo::FrontBeamConstructionH62002::GetEnvelope()
   // Get the materials from the material manager:-----------------------------------------------------//
   //                                                                                                  //
 
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL;
 
 
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) throw std::runtime_error("Error in FrontBeamConstructionH62002, std::Air is not found.");
    
-  GeoMaterial *Aluminium  = materialManager->getMaterial("std::Aluminium");
+  const GeoMaterial *Aluminium  = materialManager->getMaterial("std::Aluminium");
   if (!Aluminium) throw std::runtime_error("Error in FrontBeamConstructionH62002, std::Aluminium is not found.");
 
   // Is this ok for the Scintillator?
@@ -115,10 +114,10 @@ GeoVPhysVol* LArGeo::FrontBeamConstructionH62002::GetEnvelope()
   // The old FrontBeam testbeam code uses a composition of C9 H10 (density 1.032)
   // ... because it's easiest at the moment and not all that different from the fractional
   // composition of the old tb code, take the Tile material (polysterene)...     
-  GeoMaterial *Scint  = materialManager->getMaterial("std::Polystyrene");
+  const GeoMaterial *Scint  = materialManager->getMaterial("std::Polystyrene");
   if (!Scint) throw std::runtime_error("Error in FrontBeamConstructionH62002, std::Polystyrene is not found.");
   
-  GeoMaterial *Mylar  = materialManager->getMaterial("std::Mylar");
+  const GeoMaterial *Mylar  = materialManager->getMaterial("std::Mylar");
   if (!Mylar) throw std::runtime_error("Error in FrontBeamConstructionH62002, std::Mylar is not found.");
   
   
diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/HECConstructionH62002.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/HECConstructionH62002.cxx
index 201bf4d5daa28381c5e2d6fce79511854d66f313..e4a629bcac3dcdd7d043b571af2236038a258f3b 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/HECConstructionH62002.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/HECConstructionH62002.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "HECConstructionH62002.h"
@@ -27,7 +27,6 @@
 #include "CLHEP/GenericFunctions/Sin.hh"
 #include "CLHEP/GenericFunctions/Cos.hh"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelUtilities/StoredPhysVol.h"
@@ -97,7 +96,7 @@ GeoVFullPhysVol* LArGeo::HECConstructionH62002::GetEnvelope()
   }
 
 
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detectorStore->retrieve(materialManager, std::string("MATERIALS"))) {
     return NULL; 
   } 
@@ -110,16 +109,16 @@ GeoVFullPhysVol* LArGeo::HECConstructionH62002::GetEnvelope()
   
   //const GeoMaterial *air        = materialManager->getMaterial("std::Air");
 
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if (!LAr) throw std::runtime_error("Error in HECConstruction, std::LiquidArgon is not found.");
   
-  GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
+  const GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
   if (!Iron) throw std::runtime_error("Error in HECConstruction, std::Iron is not found.");
   
-  GeoMaterial *Copper  = materialManager->getMaterial("std::Copper");
+  const GeoMaterial *Copper  = materialManager->getMaterial("std::Copper");
   if (!Copper) throw std::runtime_error("Error in HECConstruction, std::Copper is not found.");
   
-  GeoMaterial *Kapton  = materialManager->getMaterial("std::Kapton");
+  const GeoMaterial *Kapton  = materialManager->getMaterial("std::Kapton");
   if (!Kapton) throw std::runtime_error("Error in HECConstruction, std::Kapton is not found.");
   
 
diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorFactoryH62002.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorFactoryH62002.cxx
index 65097c73bb23cb8d35c3d41c2d0a0df3b7e510e8..c6810a9ad3c58cd384bc70683474f609995f140b 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorFactoryH62002.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorFactoryH62002.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "LArDetectorFactoryH62002.h"
@@ -31,7 +31,6 @@
 #include "CLHEP/GenericFunctions/Sin.hh"
 #include "CLHEP/GenericFunctions/Cos.hh"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 
 // need if we want to use EMEC from LArGeoEndcap:
 #include "LArGeoEndcap/EMECConstruction.h"
@@ -141,7 +140,7 @@ void LArGeo::LArDetectorFactoryH62002::getSimulationParameters()
 void LArGeo::LArDetectorFactoryH62002::create(GeoPhysVol *world)
 {
 
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != m_detectorStore->retrieve(materialManager, std::string("MATERIALS"))) {
     return; 
   }
diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorToolH62002.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorToolH62002.cxx
index a33a9af26d04f6fdc55276098663693dded65796..845077fd57ececf4d61464314d1ea4a43586e87a 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorToolH62002.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/LArDetectorToolH62002.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "LArDetectorToolH62002.h"
@@ -70,7 +70,7 @@ LArDetectorToolH62002::create()
   // 
   // Locate the top level experiment node 
   // 
-  DataHandle<GeoModelExperiment> theExpt; 
+  GeoModelExperiment* theExpt = nullptr;
   if (StatusCode::SUCCESS != detStore()->retrieve( theExpt, "ATLAS" )) { 
     log << MSG::ERROR 
 	<< "Could not find GeoModelExperiment ATLAS" 
diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/TableConstructionH62002.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/TableConstructionH62002.cxx
index a7b617c96b02eea356acd51813812f52712ebecf..1ee8391944d2424eb3fbe3dbef934112d347c973 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/TableConstructionH62002.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoH62002Algs/src/TableConstructionH62002.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TableConstructionH62002.h"
@@ -24,7 +24,6 @@
 #include "GeoModelKernel/GeoIdentifierTag.h"  
 #include "GeoModelKernel/GeoSerialDenominator.h"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelKernel/GeoShapeUnion.h"
@@ -96,13 +95,13 @@ GeoVPhysVol* LArGeo::TableConstructionH62002::GetEnvelope()
 
   // Get the materials from the material manager:-----------------------------------------------------//
   //                                                                                                  //  
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL;
   
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) throw std::runtime_error("Error in TableConstructionH62002, std::Air is not found.");
    
-  GeoMaterial *Aluminium  = materialManager->getMaterial("std::Aluminium");
+  const GeoMaterial *Aluminium  = materialManager->getMaterial("std::Aluminium");
   if (!Aluminium) throw std::runtime_error("Error in TableConstructionH62002, std::Aluminium is not found.");
 
   // Is this ok for the Scintillator?
@@ -112,10 +111,10 @@ GeoVPhysVol* LArGeo::TableConstructionH62002::GetEnvelope()
   // The old testbeam code uses a composition of C9 H10 (density 1.032)
   // ... because it's easiest at the moment and not all that different from the fractional
   // composition of the old tb code, take the Tile material (polysterene)...     
-  GeoMaterial *Scint  = materialManager->getMaterial("std::Polystyrene");
+  const GeoMaterial *Scint  = materialManager->getMaterial("std::Polystyrene");
   if (!Scint) throw std::runtime_error("Error in TableConstructionH62002, std::Polystyrene is not found.");
   
-  GeoMaterial *Mylar  = materialManager->getMaterial("std::Mylar");
+  const GeoMaterial *Mylar  = materialManager->getMaterial("std::Mylar");
   if (!Mylar) throw std::runtime_error("Error in TableConstructionH62002, std::Mylar is not found.");
   
   
diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.cxx
index 1b6ed12dc4eeb03849470e744815ca434eeb3a70..d5f875ce08924cfd4cfdd9cab6b58d2130c4f046 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // LArDetectorConstructionH62003
@@ -27,7 +27,6 @@
 #include "GeoModelKernel/GeoSerialTransformer.h"
 #include "GeoModelKernel/GeoXF.h"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 
@@ -107,7 +106,7 @@ GeoVPhysVol* LArGeo::LArDetectorConstructionH62003::GetEnvelope()
   if (svcLocator->service("DetectorStore", detStore, false )==StatusCode::FAILURE) {
     throw std::runtime_error("Error in LArDetectorConstructionH62003, cannot access DetectorStore");
   }
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return 0;
 
   StatusCode sc;
@@ -126,45 +125,45 @@ GeoVPhysVol* LArGeo::LArDetectorConstructionH62003::GetEnvelope()
 
   // Get the materials from the material manager:----------------------//
   //                                                                                                 
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) 
     throw std::runtime_error("Error in LArDetectorConstructionH62003, std::Air is not found.");
  
-  GeoMaterial *Lead  = materialManager->getMaterial("std::Lead");
+  const GeoMaterial *Lead  = materialManager->getMaterial("std::Lead");
   if (!Lead) 
     throw std::runtime_error("Error in LArDetectorConstructionH62003, std::Lead is not found.");
   
-  GeoMaterial *PStyrene  = materialManager->getMaterial("std::Polystyrene");
+  const GeoMaterial *PStyrene  = materialManager->getMaterial("std::Polystyrene");
   if (!PStyrene) 
     throw std::runtime_error("Error in LArDetectorConstructionH62003, std::Polystyrene is not found.");
 
-  GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
+  const GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
   if (!Iron) 
     throw std::runtime_error("Error in LArDetectorConstructionH62003, std::Iron is not found.");
 
-  GeoMaterial *Aluminum  = materialManager->getMaterial("std::Aluminium");
+  const GeoMaterial *Aluminum  = materialManager->getMaterial("std::Aluminium");
   if (!Aluminum) 
     throw std::runtime_error("Error in LArDetectorConstructionH62003, std::Aluminum is not found.");  
 
-  GeoMaterial *Concrete  = materialManager->getMaterial("std::Concrete");
+  const GeoMaterial *Concrete  = materialManager->getMaterial("std::Concrete");
   if (!Concrete) 
     throw std::runtime_error("Error in LArDetectorConstructionH62003, std::Concrete is not found.");  
 
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if (!LAr) 
     throw std::runtime_error("Error in LArDetectorConstructionH62003, std::LiquidArgon is not found.");  
 
-  GeoMaterial *Vac  = materialManager->getMaterial("std::Vacuum");
+  const GeoMaterial *Vac  = materialManager->getMaterial("std::Vacuum");
   if (!Vac) 
     throw std::runtime_error("Error in LArDetectorConstructionH62003, std::Vacuum is not found.");  
 
   // Rohacell foam has density: 0.011g/cm3
   const std::string RohacellName = "Rohacell";
   const double RoDensity = 0.011*g/cm3;
-  GeoElement*  C=materialManager->getElement("Carbon");
-  GeoElement*  H=materialManager->getElement("Hydrogen");
-  GeoElement*  O=materialManager->getElement("Oxygen");
-  GeoElement*  N=materialManager->getElement("Nitrogen");
+  const GeoElement*  C=materialManager->getElement("Carbon");
+  const GeoElement*  H=materialManager->getElement("Hydrogen");
+  const GeoElement*  O=materialManager->getElement("Oxygen");
+  const GeoElement*  N=materialManager->getElement("Nitrogen");
   GeoMaterial* Rohacell = new GeoMaterial(RohacellName, RoDensity);
   Rohacell->add(C,0.6465);
   Rohacell->add(H,0.07836);
@@ -176,8 +175,8 @@ GeoVPhysVol* LArGeo::LArDetectorConstructionH62003::GetEnvelope()
   // Stainless Steel
   const std::string SSteelName = "StainlessSteel";
   double SSDensity = 7.9*g/cm3;
-  GeoElement* Fe=materialManager->getElement("Iron");
-  GeoElement* Cr=materialManager->getElement("Chromium");
+  const GeoElement* Fe=materialManager->getElement("Iron");
+  const GeoElement* Cr=materialManager->getElement("Chromium");
   GeoMaterial* StainlessSteel = new GeoMaterial(SSteelName, SSDensity);
   StainlessSteel->add(Fe,0.90);
   StainlessSteel->add(Cr,0.10);
@@ -881,7 +880,7 @@ GeoVPhysVol* LArGeo::LArDetectorConstructionH62003::GetEnvelope()
   return m_H62003EnvelopePhysical;
 }
 
-void LArGeo::LArDetectorConstructionH62003::createAxis(GeoFullPhysVol* H62003EnvelopePhysical, GeoMaterial* mat)
+void LArGeo::LArDetectorConstructionH62003::createAxis(GeoFullPhysVol* H62003EnvelopePhysical, const GeoMaterial* mat)
 {
 	std::string baseName = "LAr::TBH62003::";
 	double axisXYHalfLength = 2.5*m;
diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.h b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.h
index 7bd132dac6b1284bb14e423407d78fc7b3b2f5e0..fcf39f0ef43ef8951808d8f26cd28575709a539a 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.h
+++ b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorConstructionH62003.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // LArDetectorConstructionH62003
@@ -31,7 +31,7 @@ namespace LArGeo {
       
     private:
       
-      void  createAxis(GeoFullPhysVol* H62003MotherPhysical, GeoMaterial* mat);
+      void  createAxis(GeoFullPhysVol* H62003MotherPhysical, const GeoMaterial* mat);
       
       GeoFullPhysVol*      m_H62003EnvelopePhysical;
       
diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorFactoryH62003.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorFactoryH62003.cxx
index 4cea9870b09042c1a73ddc62019520ebe9ce0c62..0048d6b818466242539bcf06d3fa1af050259c7d 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorFactoryH62003.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorFactoryH62003.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "LArDetectorFactoryH62003.h"
@@ -18,7 +18,6 @@
 
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelUtilities/StoredPhysVol.h"
-#include "StoreGate/DataHandle.h"
 
 #include "StoreGate/StoreGateSvc.h"
 #include "GaudiKernel/MsgStream.h"
@@ -64,11 +63,6 @@ void LArGeo::LArDetectorFactoryH62003::create( GeoPhysVol* a_container )
 
   // Get access to the material manager:
   
-  DataHandle<StoredMaterialManager> materialManager;
-  if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) {
-    throw std::runtime_error("Error in LArDetectorFactoryH62003, cannot access Material Manager");
-  }
-  
   LArDetectorConstructionH62003 BeamLineDets;
   BeamLineDets.SetFCALVisLimit(m_fcalVisLimit);
   BeamLineDets.SetAxisVisState(m_axisVisState);
diff --git a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorToolH62003.cxx b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorToolH62003.cxx
index 6edf67089a9860612b738ccd9eba36a9d98d67f0..b2f4fb4eb238d56841f77dfa533f421968306992 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorToolH62003.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoH62003Algs/src/LArDetectorToolH62003.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "LArDetectorToolH62003.h"
@@ -52,7 +52,7 @@ StatusCode LArDetectorToolH62003::create()
   log << MSG::INFO  << "LAr Geometry Options:"   << endmsg;
 
   // Locate the top level experiment node 
-  DataHandle<GeoModelExperiment> theExpt; 
+  GeoModelExperiment* theExpt = nullptr;
   if (StatusCode::SUCCESS != detStore()->retrieve( theExpt, "ATLAS" )) 
   { 
     log << MSG::ERROR << "Could not find GeoModelExperiment ATLAS" << endmsg; 
diff --git a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/BPCConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/BPCConstruction.cxx
index 6cf7cfc9adce3b9caf01ceba30cf5bc284cc1898..c9a794ea4a186eb6feb535bcccf6864878a02e51 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/BPCConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/BPCConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // This will construct a generic BPC for the H6 beamline that leads to the H1 cryostat.
@@ -25,7 +25,6 @@
 #include "GeoModelKernel/GeoIdentifierTag.h"  
 #include "GeoModelKernel/GeoSerialDenominator.h"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelKernel/GeoShapeUnion.h"
@@ -102,22 +101,22 @@ GeoVPhysVol* LArGeo::BPCConstruction::GetEnvelope()
   // Get the materials from the material manager:-----------------------------------------------------//
   //                                                                                                  //
 
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL;
 
   std::string name;
   double density;
-  GeoElement* W=materialManager->getElement("Wolfram");
+  const GeoElement* W=materialManager->getElement("Wolfram");
   GeoMaterial* Tungsten = new GeoMaterial(name="Tungsten", density=19.3*CLHEP::g/CLHEP::cm3);
   Tungsten->add(W,1.);
   Tungsten->lock();
   
   
-  GeoElement* Ar=materialManager->getElement("Argon");
-  GeoElement*  C=materialManager->getElement("Carbon");
-  GeoElement*  O=materialManager->getElement("Oxygen");
-  GeoElement*  H=materialManager->getElement("Hydrogen");
-  GeoElement*  Al=materialManager->getElement("Aluminium");
+  const GeoElement* Ar=materialManager->getElement("Argon");
+  const GeoElement*  C=materialManager->getElement("Carbon");
+  const GeoElement*  O=materialManager->getElement("Oxygen");
+  const GeoElement*  H=materialManager->getElement("Hydrogen");
+  const GeoElement*  Al=materialManager->getElement("Aluminium");
   GeoMaterial* CO2 =  new GeoMaterial(name="CO2", density=1.84E-03*CLHEP::g/CLHEP::cm3);
   CO2->add(C,0.273);
   CO2->add(O,0.727);
@@ -139,13 +138,13 @@ GeoVPhysVol* LArGeo::BPCConstruction::GetEnvelope()
   AlMylar->add(Al,0.219245);
   AlMylar->lock();
 
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) throw std::runtime_error("Error in BPCConstruction, std::Air is not found.");
    
-  GeoMaterial *Aluminium  = materialManager->getMaterial("std::Aluminium");
+  const GeoMaterial *Aluminium  = materialManager->getMaterial("std::Aluminium");
   if (!Aluminium) throw std::runtime_error("Error in BPCConstruction, std::Aluminium is not found.");
   
-  GeoMaterial *Mylar  = materialManager->getMaterial("std::Mylar");
+  const GeoMaterial *Mylar  = materialManager->getMaterial("std::Mylar");
   if (!Mylar) throw std::runtime_error("Error in BPCConstruction, std::Mylar is not found.");
   
   
diff --git a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/H6CryostatConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/H6CryostatConstruction.cxx
index 46a6779021133527a51855fc43d3048afd22903e..6ea8ebae3090e182c88b0ea0ff76f5830bfb283f 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/H6CryostatConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/H6CryostatConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // H6CryostatConstruction
@@ -23,7 +23,6 @@
 #include "GeoModelKernel/GeoAlignableTransform.h"  
 #include "GeoModelKernel/GeoIdentifierTag.h"  
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelKernel/GeoShapeUnion.h"
@@ -70,18 +69,18 @@ GeoVFullPhysVol* LArGeo::H6CryostatConstruction::GetEnvelope()
   }
 
   // Material Manager
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return 0;
 
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) {
     throw std::runtime_error("Error in H6CryostatConstruction, std::Air is not found.");
   }
-  GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
+  const GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
   if (!Iron) {
     throw std::runtime_error("Error in H6CryostatConstruction, std::Iron is not found.");
   }
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if (!LAr) {
     throw std::runtime_error("Error in H6CryostatConstruction, std::LiquidArgon is not found.");
   }
diff --git a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/MWPCConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/MWPCConstruction.cxx
index 0bcea6cfa7d9c3a4d04859d3188aaa40c3c29481..a47752d86c05b1d4e362bd5abd9ba5a699812215 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/MWPCConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/MWPCConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // This will construct a generic MWPC for the H6 beamline that leads to the H1 cryostat.
@@ -28,7 +28,6 @@
 #include "GeoModelKernel/GeoIdentifierTag.h"  
 #include "GeoModelKernel/GeoSerialDenominator.h"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelKernel/GeoShapeUnion.h"
@@ -105,20 +104,20 @@ GeoVPhysVol* LArGeo::MWPCConstruction::GetEnvelope()
   // Get the materials from the material manager:-----------------------------------------------------//
   //                                                                                                  //
 
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL;
 
   std::string name;
   double density;
-  GeoElement* W=materialManager->getElement("Wolfram");
+  const GeoElement* W=materialManager->getElement("Wolfram");
   GeoMaterial* Tungsten = new GeoMaterial(name="Tungsten", density=19.3*CLHEP::g/CLHEP::cm3);
   Tungsten->add(W,1.);
   Tungsten->lock();
   
   
-  GeoElement* Ar=materialManager->getElement("Argon");
-  GeoElement*  C=materialManager->getElement("Carbon");
-  GeoElement*  H=materialManager->getElement("Hydrogen");
+  const GeoElement* Ar=materialManager->getElement("Argon");
+  const GeoElement*  C=materialManager->getElement("Carbon");
+  const GeoElement*  H=materialManager->getElement("Hydrogen");
   GeoMaterial* Isobutane = new GeoMaterial(name="Isobutane", density=2.67*CLHEP::g/CLHEP::cm3);
   Isobutane->add(C,0.8266);
   Isobutane->add(H,0.1734);
@@ -131,17 +130,17 @@ GeoVPhysVol* LArGeo::MWPCConstruction::GetEnvelope()
 
 
 //   // Test to see whether we can get the ArIso from the database  
-//   GeoMaterial *ArIso2  = materialManager->getMaterial("LArTB::Argon70Isobutane30");
+//   const GeoMaterial *ArIso2  = materialManager->getMaterial("LArTB::Argon70Isobutane30");
 //   if (!ArIso2) (*m_msg) << MSG::INFO  << "Found no Argon70Isobutane30 in database" << endmsg;
 //   if (ArIso2)  (*m_msg) << MSG::INFO  << "Did find LArTB::Argon70Isobutane30 in database!" << endmsg;
 
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) throw std::runtime_error("Error in MWPCConstruction, std::Air is not found.");
    
-  GeoMaterial *Aluminium  = materialManager->getMaterial("std::Aluminium");
+  const GeoMaterial *Aluminium  = materialManager->getMaterial("std::Aluminium");
   if (!Aluminium) throw std::runtime_error("Error in MWPCConstruction, std::Aluminium is not found.");
   
-  GeoMaterial *Mylar  = materialManager->getMaterial("std::Mylar");
+  const GeoMaterial *Mylar  = materialManager->getMaterial("std::Mylar");
   if (!Mylar) throw std::runtime_error("Error in MWPCConstruction, std::Mylar is not found.");
   
   
diff --git a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/WallsConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/WallsConstruction.cxx
index a08a9751b34d4f74232b369f977e5590d9ee8c76..196408deb70b547e8ccc32ed97f229ab781a5eb4 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/WallsConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoH6Cryostats/src/WallsConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "LArGeoH6Cryostats/WallsConstruction.h"
@@ -23,7 +23,6 @@
 #include "GeoModelKernel/GeoIdentifierTag.h"  
 #include "GeoModelKernel/GeoSerialDenominator.h"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelKernel/GeoShapeUnion.h"
@@ -99,7 +98,7 @@ GeoVPhysVol* LArGeo::WallsConstruction::GetEnvelope()
   // Get the materials from the material manager:-----------------------------------------------------//
   //                                                                                                  //
 
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL;
 
   std::string name;
@@ -107,16 +106,16 @@ GeoVPhysVol* LArGeo::WallsConstruction::GetEnvelope()
   
 
 
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) throw std::runtime_error("Error in WallsConstruction, std::Air is not found.");
 
-  GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
+  const GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
   if (!Iron) throw std::runtime_error("Error in WallsConstruction, std::Iron is not found.");
 
-  GeoMaterial *Lead  = materialManager->getMaterial("std::Lead");
+  const GeoMaterial *Lead  = materialManager->getMaterial("std::Lead");
   if (!Lead) throw std::runtime_error("Error in WallsConstruction, std::Lead is not found.");
    
-  GeoMaterial *Aluminium  = materialManager->getMaterial("std::Aluminium");
+  const GeoMaterial *Aluminium  = materialManager->getMaterial("std::Aluminium");
   if (!Aluminium) throw std::runtime_error("Error in WallsConstruction, std::Aluminium is not found.");
 
   // Is this ok for the Scintillator?
@@ -126,10 +125,10 @@ GeoVPhysVol* LArGeo::WallsConstruction::GetEnvelope()
   // The old Walls testbeam code uses a composition of C9 H10 (density 1.032)
   // ... because it's easiest at the moment and not all that different from the fractional
   // composition of the old tb code, take the Tile material (polysterene)...     
-  GeoMaterial *Scint  = materialManager->getMaterial("std::Polystyrene");
+  const GeoMaterial *Scint  = materialManager->getMaterial("std::Polystyrene");
   if (!Scint) throw std::runtime_error("Error in WallsConstruction, std::Polystyrene is not found.");
   
-  GeoMaterial *Mylar  = materialManager->getMaterial("std::Mylar");
+  const GeoMaterial *Mylar  = materialManager->getMaterial("std::Mylar");
   if (!Mylar) throw std::runtime_error("Error in WallsConstruction, std::Mylar is not found.");
   
   
diff --git a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HEC2WheelConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HEC2WheelConstruction.cxx
index 09464e05734854efb793731fae078430b963efb3..aa539968940d9a1ca2295243934637b1a2a6f925 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HEC2WheelConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HEC2WheelConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /////////////////////////////////////////////////////////////////////
@@ -48,7 +48,6 @@
 #include "CLHEP/Units/PhysicalConstants.h"
 #include "CLHEP/GenericFunctions/Variable.hh"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelUtilities/StoredPhysVol.h"
@@ -113,7 +112,7 @@ GeoFullPhysVol* LArGeo::HEC2WheelConstruction::GetEnvelope(bool fullGeo, bool po
     throw std::runtime_error("Error in HEC2WheelConstruction, cannot access DetectorStore");
   }
  
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) {
     throw std::runtime_error("Error in HEC2WheelConstruction, cannot access Material Manager");
   }
@@ -165,7 +164,7 @@ GeoFullPhysVol* LArGeo::HEC2WheelConstruction::GetEnvelope(bool fullGeo, bool po
   double wheelGap              = shrinkCold * (*hadronicEndcap)[0]->getDouble("GAPWHL")*cm;
 
   
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if (!LAr) throw std::runtime_error("Error in HEC2WheelConstruction, std::LiquidArgon is not found.");
 
   GeoPcon*           solidHEC;     //pointer to the solid HEC
diff --git a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECClampConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECClampConstruction.cxx
index 153e25200931543ac9c08fb297056d07471d62da..cb45fec5977a8be153e2efc37b50f418f0738fcd 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECClampConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECClampConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //  HECClampConstruction.cxx 1.0.0
@@ -36,7 +36,6 @@
 #include "CLHEP/Units/PhysicalConstants.h"
 #include "CLHEP/GenericFunctions/Variable.hh"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GaudiKernel/MsgStream.h"
@@ -97,13 +96,13 @@ GeoPhysVol* LArGeo::HECClampConstruction::GetClampingBar(bool rail,bool left)
   
 
   // Get access to the material manager:
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) {
     throw std::runtime_error("Error in HECModuleConstruction(ClampBar), cannot access Material Manager");
   }  
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if (!LAr) throw std::runtime_error("Error in HECModuleConstruction(ClampBar), std::LiquidArgon is not found.");  
-  GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
+  const GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
   if (!Iron) throw std::runtime_error("Error in HECModuleConstruction(ClampBar), std::Iron is not found.");
  
 
diff --git a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECModuleConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECModuleConstruction.cxx
index 156583f2f33d5619fa16adcc90824b197a1174ae..d7164e3d4d09d0a4dcdfbee291d89217d7ce1ff9 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECModuleConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECModuleConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //  HECModuleConstruction.cxx 1.0.0
@@ -27,7 +27,6 @@
 #include "CLHEP/Units/PhysicalConstants.h"
 #include "CLHEP/GenericFunctions/Variable.hh"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GaudiKernel/MsgStream.h"
@@ -94,21 +93,21 @@ GeoFullPhysVol* LArGeo::HECModuleConstruction::GetEnvelope()
   }
 
   
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) {
     throw std::runtime_error("Error in HECModuleConstruction, cannot access Material Manager");
   }
   
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if (!LAr) throw std::runtime_error("Error in HECModuleConstruction, std::LiquidArgon is not found.");
   
-  GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
+  const GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
   if (!Iron) throw std::runtime_error("Error in HECModuleConstruction, std::Iron is not found.");
   
-  GeoMaterial *Copper  = materialManager->getMaterial("std::Copper");
+  const GeoMaterial *Copper  = materialManager->getMaterial("std::Copper");
   if (!Copper) throw std::runtime_error("Error in HECModuleConstruction, std::Copper is not found.");
   
-  GeoMaterial *Kapton  = materialManager->getMaterial("std::Kapton");
+  const GeoMaterial *Kapton  = materialManager->getMaterial("std::Kapton");
   if (!Kapton) throw std::runtime_error("Error in HECModuleConstruction, std::Kapton is not found.");
   
 
diff --git a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECWheelConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECWheelConstruction.cxx
index b7e65c6baef5fa545680dfa7c74fe4a30efa354d..5f961a8126cacd57ef2fd36411b3a33bc78ef755 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECWheelConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoHec/src/HECWheelConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //  HECWheelConstruction.cxx 1.0.0
@@ -37,7 +37,6 @@
 #include "CLHEP/Units/PhysicalConstants.h"
 #include "CLHEP/GenericFunctions/Variable.hh"
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GaudiKernel/MsgStream.h"
@@ -105,15 +104,15 @@ GeoFullPhysVol* LArGeo::HECWheelConstruction::GetEnvelope()
   }
 
   
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) {
     throw std::runtime_error("Error in HECWheelConstruction, cannot access Material Manager");
   }
   
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if (!LAr) throw std::runtime_error("Error in HECWheelConstruction, std::LiquidArgon is not found.");
   
-  GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
+  const GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
   if (!Iron) throw std::runtime_error("Error in HECWheelConstruction, std::Iron is not found.");
   
 
diff --git a/LArCalorimeter/LArGeoModel/LArGeoMiniFcal/src/MiniFcalConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoMiniFcal/src/MiniFcalConstruction.cxx
index e3ebf843ad14410502ee1c71efcd2aaceafa3d64..8b346065986e2162bfbc7445dfcf3851fdd78e2e 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoMiniFcal/src/MiniFcalConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoMiniFcal/src/MiniFcalConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // MiniFcalConstruction
@@ -29,7 +29,6 @@
 #include "RDBAccessSvc/IRDBRecordset.h"
 
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GaudiKernel/MsgStream.h"
 #include "GaudiKernel/Bootstrap.h"
 
@@ -99,26 +98,26 @@ GeoFullPhysVol* LArGeo::MiniFcalConstruction::GetEnvelope()
   const IRDBRecord* envParameters = (*recEnvelope)[0];
 
   //_________ Get materials from the Material Manager ___________________________
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   sc = detStore->retrieve(materialManager, std::string("MATERIALS"));
   if(sc!=StatusCode::SUCCESS) {
     log << MSG::ERROR << "Unable to retrieve the Stored Material Manager" << endmsg;
     return 0;
   }
   
-  GeoMaterial* Copper  = materialManager->getMaterial(envParameters->getString("MATERIAL"));
+  const GeoMaterial* Copper  = materialManager->getMaterial(envParameters->getString("MATERIAL"));
   if(!Copper) {
     log << MSG::ERROR << "Error in MiniFcalConstruction, unable to find material for the envelope" << endmsg;
     return 0;
   }
 
-  GeoMaterial* Diamond  = materialManager->getMaterial("pix::Diamond");
+  const GeoMaterial* Diamond  = materialManager->getMaterial("pix::Diamond");
   if(!Diamond) {
     log << MSG::ERROR << "Error in MiniFcalConstruction, unable to find Diamond material" << endmsg;
     return 0;
   }
 
-  GeoMaterial *Feldspar  = materialManager->getMaterial("std::Feldspar");
+  const GeoMaterial *Feldspar  = materialManager->getMaterial("std::Feldspar");
   if (!Feldspar) {
     log << MSG::ERROR << "Error in MiniFcalConstruction, unable to find material for the Ceramic Layers" << endmsg;
     return 0;
diff --git a/LArCalorimeter/LArGeoModel/LArGeoTBBarrel/src/TBBarrelCryostatConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoTBBarrel/src/TBBarrelCryostatConstruction.cxx
index e963639be55416a249a5b43147233c8b385cd296..5a169e4ee3256fd54378920f2693cc1e0e712d6e 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoTBBarrel/src/TBBarrelCryostatConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoTBBarrel/src/TBBarrelCryostatConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // TBBarrelCryostatConstruction
@@ -22,7 +22,6 @@
 #include "GeoModelKernel/GeoTransform.h"  
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
-#include "StoreGate/DataHandle.h"
 #include "StoreGate/StoreGateSvc.h"
 #include "GaudiKernel/MsgStream.h"
 #include "GaudiKernel/Bootstrap.h"
@@ -89,40 +88,40 @@ GeoFullPhysVol* LArGeo::TBBarrelCryostatConstruction::GetEnvelope()
 // Get the materials from the material manager:---------------------------------------------------
 //                                                                                                
 
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL;
 
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) {
     throw std::runtime_error("Error in TBBarrelCryostatConstruction, std::Air is not found.");
   }
 
-  GeoMaterial *Aluminium  = materialManager->getMaterial("std::Aluminium");
+  const GeoMaterial *Aluminium  = materialManager->getMaterial("std::Aluminium");
   if (!Aluminium) {
     throw std::runtime_error("Error in TBBarrelCryostatConstruction, std::Aluminium is not found.");
   }
 
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if (!LAr) {
     throw std::runtime_error("Error in TBBarrelCryostatConstruction, std::LiquidArgon is not found.");
   }
 
-  GeoMaterial* Iron = materialManager->getMaterial("std::Iron");
+  const GeoMaterial* Iron = materialManager->getMaterial("std::Iron");
   if (!Iron) {
    throw std::runtime_error("Error in TBBarrelCryostatConstruction, std::Iron is not found.");
   }
 
-  GeoElement* Hydrogen = materialManager->getElement("Hydrogen");
+  const GeoElement* Hydrogen = materialManager->getElement("Hydrogen");
   if (!Hydrogen) {
     throw std::runtime_error("Error in TBBarrelCryostatConstruction, hydrogen not found.");
   }
 
-  GeoElement* Carbon = materialManager->getElement("Carbon");
+  const GeoElement* Carbon = materialManager->getElement("Carbon");
   if (!Carbon) {
     throw std::runtime_error("Error in TBBarrelCryostatConstruction, carbon not found.");
   }
 
-  GeoElement* Oxygen = materialManager->getElement("Oxygen");
+  const GeoElement* Oxygen = materialManager->getElement("Oxygen");
   if (!Oxygen) {
     throw std::runtime_error("Error in TBBarrelCryostatConstruction, oxygen not found.");
   }
diff --git a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/CryostatConstructionTBEC.cxx b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/CryostatConstructionTBEC.cxx
index 9e162af7d10ab850970976515cecac9ba4f43953..c916c395c39102731ca7fb7b6e0e1364ad5d08d3 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/CryostatConstructionTBEC.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/CryostatConstructionTBEC.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // CryostatConstructionTBEC
@@ -23,7 +23,6 @@
 #include "GeoModelKernel/GeoAlignableTransform.h"  
 #include "GeoModelKernel/GeoIdentifierTag.h"  
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelKernel/GeoShapeUnion.h"
@@ -77,25 +76,25 @@ GeoVFullPhysVol* LArGeo::CryostatConstructionTBEC::GetEnvelope()
 
   // Get the materials from the material manager:-----------------------------------------------------//
   //                                                                                                  //
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL;
   
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) throw std::runtime_error("Error in CryostatConstructionTBEC, std::Air is not found.");
   
-  GeoMaterial *Al  = materialManager->getMaterial("std::Aluminium");
+  const GeoMaterial *Al  = materialManager->getMaterial("std::Aluminium");
   if (!Al) throw std::runtime_error("Error in CryostatConstructionTBEC, std::Aluminium is not found.");
 
-  GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
+  const GeoMaterial *LAr  = materialManager->getMaterial("std::LiquidArgon");
   if (!LAr) throw std::runtime_error("Error in CryostatConstructionTBEC, std::LiquidArgon is not found.");
   
-  GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
+  const GeoMaterial *Iron  = materialManager->getMaterial("std::Iron");
   if (!Iron) throw std::runtime_error("Error in CryostatConstructionTBEC, std::Iron is not found.");
   
-  GeoMaterial *Gten  = materialManager->getMaterial("LAr::G10");
+  const GeoMaterial *Gten  = materialManager->getMaterial("LAr::G10");
   if (!Gten) throw std::runtime_error("Error in CryostatConstructionTBEC, LAr::G10 is not found.");
   
-  GeoMaterial *Vacuum  = materialManager->getMaterial("LAr::Vacuum");
+  const GeoMaterial *Vacuum  = materialManager->getMaterial("LAr::Vacuum");
   if (!Vacuum) throw std::runtime_error("Error in CryostatConstructionTBEC, std::Vacuum is not found.");
   
   //                                                                                                 //
diff --git a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/EMECModuleConstruction.cxx b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/EMECModuleConstruction.cxx
index 37330734858a6eac907a0bc93325f70899de7cac..80c3992eb2ad9584d9a6b5de6c0b2dc4bb021c82 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/EMECModuleConstruction.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/EMECModuleConstruction.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // EMECModuleConstruction
@@ -82,7 +82,7 @@ GeoVFullPhysVol* LArGeo::EMECModuleConstruction::GetEnvelope()
   if (svcLocator->service("DetectorStore", detStore, false )==StatusCode::FAILURE) {
     throw std::runtime_error("Error in EndcapCryostatConstruction, cannot access DetectorStore");
   }
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return 0;
 
 
@@ -103,15 +103,15 @@ GeoVFullPhysVol* LArGeo::EMECModuleConstruction::GetEnvelope()
   double FracGten,Fracpb,Fracfe,Fracgl,Fraccu,Fracka;
   double aH,aO,aC,aN,aAr;
 
-  GeoElement* H=materialManager->getElement("Hydrogen");
-  GeoElement* C=materialManager->getElement("Carbon");
-  GeoElement* N=materialManager->getElement("Nitrogen");
-  GeoElement* O=materialManager->getElement("Oxygen");
-  GeoElement* Al=materialManager->getElement("Aluminium");
-  GeoElement* Ar=materialManager->getElement("Argon");
-  GeoElement* Fe=materialManager->getElement("Iron");
-  GeoElement* Cu=materialManager->getElement("Copper"); 
-  GeoElement* Pb=materialManager->getElement("Lead");
+  const GeoElement* H=materialManager->getElement("Hydrogen");
+  const GeoElement* C=materialManager->getElement("Carbon");
+  const GeoElement* N=materialManager->getElement("Nitrogen");
+  const GeoElement* O=materialManager->getElement("Oxygen");
+  const GeoElement* Al=materialManager->getElement("Aluminium");
+  const GeoElement* Ar=materialManager->getElement("Argon");
+  const GeoElement* Fe=materialManager->getElement("Iron");
+  const GeoElement* Cu=materialManager->getElement("Copper"); 
+  const GeoElement* Pb=materialManager->getElement("Lead");
 
   //LAr
 
diff --git a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorConstructionTBEC.cxx b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorConstructionTBEC.cxx
index 4a09e1c5ed8cb232a2a86d87a40f92559e167db9..f455798a7800a6c5943a8ce0d604fbde77cd7790 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorConstructionTBEC.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorConstructionTBEC.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // LArDetectorConstructionTBEC
@@ -22,7 +22,6 @@
 #include "GeoModelKernel/GeoAlignableTransform.h"  
 #include "GeoModelKernel/GeoIdentifierTag.h"  
 #include "StoreGate/StoreGateSvc.h"
-#include "StoreGate/DataHandle.h"
 #include "GeoModelInterfaces/AbsMaterialManager.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
 #include "GeoModelUtilities/StoredPhysVol.h"
@@ -149,10 +148,10 @@ GeoVPhysVol* LArGeo::LArDetectorConstructionTBEC::GetEnvelope()
   if (svcLocator->service("DetectorStore", detStore, false )==StatusCode::FAILURE) {
     throw std::runtime_error("Error in LArDetectorConstructionTBEC, cannot access DetectorStore");
   }
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return 0;
 
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) {
     throw std::runtime_error("Error in LArDetectorConstructionTBEC, std::Air is not found.");
   }
@@ -229,13 +228,13 @@ GeoFullPhysVol* LArGeo::LArDetectorConstructionTBEC::createEnvelope()
 
   // Get the materials from the material manager:-----------------------------------------------------//
   //                                                                                                  //
-  DataHandle<StoredMaterialManager> materialManager;
+  const StoredMaterialManager* materialManager = nullptr;
   if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) return NULL;
   
-  GeoMaterial *Air  = materialManager->getMaterial("std::Air");
+  const GeoMaterial *Air  = materialManager->getMaterial("std::Air");
   if (!Air) throw std::runtime_error("Error in LArDetectorConstructionTBEC, std::Air is not found.");
  
-  GeoMaterial *Lead  = materialManager->getMaterial("std::Lead");
+  const GeoMaterial *Lead  = materialManager->getMaterial("std::Lead");
   if (!Lead) throw std::runtime_error("Error in LArDetectorConstructionTBEC, std::Lead is not found.");
   
   
diff --git a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorFactoryTBEC.cxx b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorFactoryTBEC.cxx
index 4690f5a0b91fbd9ca0f3e81ec3772a7318c05e6a..8fafe7b9f39515bfbffe536dabdf72fc07c79dd1 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorFactoryTBEC.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorFactoryTBEC.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // LArDetectorFactory.cxx
@@ -18,7 +18,6 @@
 #include "CLHEP/Geometry/Transform3D.h" 
 
 #include "GeoModelInterfaces/StoredMaterialManager.h"
-#include "StoreGate/DataHandle.h"
 
 #include "StoreGate/StoreGateSvc.h"
 #include "GaudiKernel/MsgStream.h"
@@ -80,11 +79,6 @@ void LArGeo::LArDetectorFactoryTBEC::create( GeoPhysVol* a_container )
     throw std::runtime_error("Error in LArDetectorFactoryTBEC, cannot access DetectorStore");
   }
   
-  DataHandle<StoredMaterialManager> materialManager;
-  if (StatusCode::SUCCESS != detStore->retrieve(materialManager, std::string("MATERIALS"))) {
-    throw std::runtime_error("Error in LArDetectorFactoryTBEC, cannot access Material Manager");
-  }
-  
   // V.N :  Patch LAr materials
   LArMaterialManager lArMaterialManager(detStore);
   lArMaterialManager.buildMaterials();
diff --git a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorToolTBEC.cxx b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorToolTBEC.cxx
index 868730d92395664b67070ff19c852961d2c2845b..92368d3b39bbf1936c688623eb56fcf8770d479f 100755
--- a/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorToolTBEC.cxx
+++ b/LArCalorimeter/LArGeoModel/LArGeoTBEC/src/LArDetectorToolTBEC.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "LArDetectorToolTBEC.h"
@@ -48,7 +48,7 @@ StatusCode LArDetectorToolTBEC::create()
   log << MSG::INFO  << "LAr Geometry Options:"   << endmsg;
 
   // Locate the top level experiment node 
-  DataHandle<GeoModelExperiment> theExpt; 
+  GeoModelExperiment* theExpt = nullptr;
   if (StatusCode::SUCCESS != detStore()->retrieve( theExpt, "ATLAS" )) 
   { 
     log << MSG::ERROR << "Could not find GeoModelExperiment ATLAS" << endmsg; 
diff --git a/LArCalorimeter/LArMonTools/share/LArMonOutputFileName.py b/LArCalorimeter/LArMonTools/share/LArMonOutputFileName.py
index 6017f5765af81662113c1f9f53d8af1ee88c1f6e..2e4dfc659dc13eacca5b21921e2ba87368f32547 100755
--- a/LArCalorimeter/LArMonTools/share/LArMonOutputFileName.py
+++ b/LArCalorimeter/LArMonTools/share/LArMonOutputFileName.py
@@ -1,14 +1,20 @@
+
+rootHisto="RootHistos"
+if 'OutName' in dir():
+        rootHisto='RootHistos_%(stuff)s' % {"stuff" : OutName}
+
+
 if not online:
     if not runAccumulator:
         if not 'RootHistOutputFileName' in dir():
             if Type == 'Delay':
-                RootHistOutputFileName='%(dir)s/RootHistos_%(No)d_Wave_avg_%(partition)s.root' % {"dir" : OutputDir, "No" : RunNumber, "partition" : Partition}
+                RootHistOutputFileName='%(dir)s/%(rootHisto)s_%(No)d_Wave_avg_%(partition)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "partition" : Partition}
             elif Type == 'Pedestal':
-                RootHistOutputFileName='%(dir)s/RootHistos_%(No)d_%(Type)s_%(partition)s.root' % {"dir" : OutputDir, "No" : RunNumber, "Type" : Type, "partition" : Partition}
+                RootHistOutputFileName='%(dir)s/%(rootHisto)s_%(No)d_%(Type)s_%(partition)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "Type" : Type, "partition" : Partition}
             elif Type == 'Cosmic':
-                RootHistOutputFileName='%(dir)s/RootHistos_%(No)d_%(Type)s.root' % {"dir" : OutputDir, "No" : RunNumber, "Type" : Type}
+                RootHistOutputFileName='%(dir)s/%(rootHisto)s_%(No)d_%(Type)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "Type" : Type}
             else:
-                RootHistOutputFileName='%(dir)s/RootHistos_%(No)d_%(Type)s_avg_%(partition)s.root' % {"dir" : OutputDir, "No" : RunNumber, "Type" : Type, "partition" : Partition}
+                RootHistOutputFileName='%(dir)s/%(rootHisto)s_%(No)d_%(Type)s_avg_%(partition)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "Type" : Type, "partition" : Partition}
         if Type == "Pedestal":
             if not 'RootHistReferenceFileName' in dir():
                 RootHistReferenceFileName='%(dir)s/RootHistos_%(No)d_%(Type)s_%(partition)s.root' % {"dir" : OutputDir, "No" : RefRunNumber, "Type" : Type, "partition" : Partition}
@@ -21,19 +27,19 @@ if not online:
     else:
         if Type == 'Delay':
             if not 'RootHistOutputFileName' in dir():
-                RootHistOutputFileName = '%(dir)s/RootHistos_%(No)d_%Wave_trans_%(partition)s.root' % {"dir" : OutputDir, "No" : RunNumber, "Type" : Type, "partition" : Partition}
+                RootHistOutputFileName = '%(dir)s/%(rootHisto)s_%(No)d_%Wave_trans_%(partition)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "Type" : Type, "partition" : Partition}
             if not 'DelayOutputFile' in dir():
                 DelayOutputFile = '%(dir)s/RootHistos_%(No)d_%(Type)s_trans_%(partition)s.root' % {"dir" : OutputNtupleDir, "No" : RunNumber, "Type" : Type, "partition" : Partition}
         elif Type == 'Pedestal':
             if not 'RootHistOutputFileName' in dir():
-                RootHistOutputFileName='%(dir)s/RootHistos_%(No)d_%(Type)s_%(partition)s.root' % {"dir" : OutputDir, "No" : RunNumber, "Type" : Type, "partition" : Partition}
+                RootHistOutputFileName='%(dir)s/%(rootHisto)s_%(No)d_%(Type)s_%(partition)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "Type" : Type, "partition" : Partition}
             if not 'RootHistReferenceFileName' in dir():
                 RootHistReferenceFileName='%(dir)s/RootHistos_%(No)d_%(Type)s_%(partition)s.root' % {"dir" : OutputDir, "No" : RefRunNumber, "Type" : Type, "partition" : Partition}
         elif Type == 'Cosmic':
             if not 'RootHistOutputFileName' in dir():
-                RootHistOutputFileName='%(dir)s/RootHistos_%(No)d_%(Type)s.root' % {"dir" : OutputDir, "No" : RunNumber, "Type" : Type}
+                RootHistOutputFileName='%(dir)s/%(rootHisto)s_%(No)d_%(Type)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "Type" : Type}
             if not 'RootHistReferenceFileName' in dir():
                 RootHistReferenceFileName='%(dir)s/RootHistos_%(No)d_%(Type)s.root' % {"dir" : OutputDir, "No" : RefRunNumber, "Type" : Type}
         else:
             if not 'RootHistOutputFileName' in dir():
-                RootHistOutputFileName='%(dir)s/RootHistos_%(No)d_%(Type)s_trans_%(partition)s.root' % {"dir" : OutputDir, "No" : RunNumber, "Type" : Type, "partition" : Partition}
+                RootHistOutputFileName='%(dir)s/%(rootHisto)s_%(No)d_%(Type)s_trans_%(partition)s.root' % {"dir" : OutputDir, "rootHisto" : rootHisto, "No" : RunNumber, "Type" : Type, "partition" : Partition}
diff --git a/MuonSpectrometer/MuonAlignment/MuonAlignError/MuonAlignErrorTool/src/AlignmentErrorTool.cxx b/MuonSpectrometer/MuonAlignment/MuonAlignError/MuonAlignErrorTool/src/AlignmentErrorTool.cxx
index 344de640956585b2790bd4b150ba69d973237c53..5fcd423b5cc5d4cd2dd23a9277b434fd04d90d42 100644
--- a/MuonSpectrometer/MuonAlignment/MuonAlignError/MuonAlignErrorTool/src/AlignmentErrorTool.cxx
+++ b/MuonSpectrometer/MuonAlignment/MuonAlignError/MuonAlignErrorTool/src/AlignmentErrorTool.cxx
@@ -79,9 +79,8 @@ void AlignmentErrorTool::makeAlignmentDeviations (const Trk::Track& track, std::
 
   SG::ReadCondHandle<MuonAlignmentErrorData> readHandle{m_readKey};
   const MuonAlignmentErrorData* readCdo{*readHandle};
-  if(readCdo==0){
+  if(readCdo==nullptr){
     ATH_MSG_ERROR("Null pointer to the read conditions object");
-    std::cout<<"ckato Null pointer to the read conditions object"<<std::endl;
     return;
   }
   std::vector<deviationStr> devStrVec;
diff --git a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h
index c6d4a92288c42ab6d141fac40a2f7c4908209329..cd68f71f97587c78c03f99e918cce501b8532923 100644
--- a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h
+++ b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MdtMapBase.h
@@ -43,7 +43,7 @@ template<class T> class MdtMapBase
   void clear();
 
   /** get full map (used for testing) */
-  MapOfItems* getListOfElements() {return m_mapOfItems;}
+  MapOfItems* getListOfElements() const {return m_mapOfItems;}
 
  protected:
   
@@ -57,7 +57,7 @@ template<class T> class MdtMapBase
   bool addItem(uint8_t itemId, T* item);
 
   /** get function - fast, used for online->offline conversion */
-  T* getItem(uint8_t itemId);
+  T* getItem(uint8_t itemId) const;
 
  private:
 
@@ -65,21 +65,21 @@ template<class T> class MdtMapBase
   const std::string m_itemName;
   
   /** pointer to the current item */
-  T* m_currentItem;
+  //T* m_currentItem;
 
   /** map containing the items */
   MapOfItems* m_mapOfItems;
 
   /** private access function */
-  T* findItem(uint8_t itemId);  
+  T* findItem(uint8_t itemId) const;  
 
 };
 
 
 /** default constructor */
 template<class T> MdtMapBase<T>::MdtMapBase(uint8_t moduleId, const std::string itemName) :
-  m_moduleId(moduleId), m_itemName(itemName), m_currentItem(NULL)
-     
+m_moduleId(moduleId), m_itemName(itemName)//, m_currentItem(NULL)
+  
 { 
   //  m_mapOfItems = new std::map< uint8_t, T*, std::less<uint8_t> >();
   m_mapOfItems = new MapOfItems();
@@ -124,7 +124,7 @@ template<class T> void MdtMapBase<T>::clear()
     
   }
   m_mapOfItems->clear();
-  m_currentItem=NULL;
+  //m_currentItem=NULL;
 }
 
 /** Add an item to the map */
@@ -160,8 +160,8 @@ template<class T> bool MdtMapBase<T>::addItem(uint8_t itemId, T* item) {
 
 
 /** return the item for a given access key (onlineId) */
-template<class T> T* MdtMapBase<T>::getItem(uint8_t itemId) {
-
+template<class T> T* MdtMapBase<T>::getItem(uint8_t itemId) const{
+  /*
   if ( m_currentItem ) {
     if ( itemId == m_currentItem->moduleId() ) {
       return m_currentItem;
@@ -173,15 +173,16 @@ template<class T> T* MdtMapBase<T>::getItem(uint8_t itemId) {
   else {
     return findItem(itemId);
   }
-
+  */
+  return findItem(itemId);
 }
 
 
 /** find the item in the datamember map */
-template<class T> T* MdtMapBase<T>::findItem(uint8_t itemId) {
+template<class T> T* MdtMapBase<T>::findItem(uint8_t itemId) const{
 
   typename MapOfItems::const_iterator it = m_mapOfItems->find(itemId);
-
+  /*
   if (it!=m_mapOfItems->end()) {
     m_currentItem = (*it).second;
   }
@@ -189,9 +190,14 @@ template<class T> T* MdtMapBase<T>::findItem(uint8_t itemId) {
     //    *m_log << MSG::ERROR << m_itemName << " with Id: " << MSG::hex << itemId 
     //   << MSG::dec << " not found " << endmsg;
     m_currentItem=NULL;
-  }
-  
+  }  
   return m_currentItem;
+  */
+  if (it!=m_mapOfItems->end()) {
+    return (*it).second;
+  } else {    
+    return nullptr;
+  }
 }
 
 
diff --git a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h
index f2e7694f0b7d8f87a5d8b95f7dc3449264231694..b4af30a6edeb103ee17360e7ea8e7f21efa22fb5 100644
--- a/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h
+++ b/MuonSpectrometer/MuonCablings/MuonCablingData/MuonCablingData/MuonMDT_CablingMap.h
@@ -63,13 +63,16 @@ class MuonMDT_CablingMap : public MdtMapBase<MdtSubdetectorMap> {
 		    int tdcId, int channelZero);
 
   /** Get function */
-  MdtSubdetectorMap* getSubdetectorMap(uint8_t subdetectorId);
+  MdtSubdetectorMap* getSubdetectorMap(uint8_t subdetectorId) const;
 
   /** return the ROD id of a given chamber, given station, eta, phi */
-  uint32_t getROBId(int station, int eta, int phi);
+  uint32_t getROBId(int station, int eta, int phi) const;
 
   /** return the ROD id of a given chamber, given the hash id */
-  uint32_t getROBId(const IdentifierHash stationCode);
+  uint32_t getROBId(const IdentifierHash stationCode) const;
+
+  /** get the robs corresponding to a vector of hashIds, copied from Svc before the readCdo migration */
+  std::vector<uint32_t> getROBId(const std::vector<IdentifierHash>& mdtHashVector) const;
 
  /** return a vector of HashId lists for a  given list of ROD's */
   const std::vector<IdentifierHash> getChamberHashVec(const std::vector< uint32_t> &ROBId_list) const;
@@ -78,19 +81,19 @@ class MuonMDT_CablingMap : public MdtMapBase<MdtSubdetectorMap> {
   const std::vector<IdentifierHash>& getChamberHashVec(const uint32_t ROBId) const;
 
   /** return the ROD id of a given chamber */
-  std::vector<uint32_t> getAllROBId();
+  std::vector<uint32_t> getAllROBId() const;
 
   /** return the offline id given the online id */
   bool getOfflineId(uint8_t subdetectorId,uint8_t rodId,uint8_t csmId,
 		    uint8_t tdcId,uint8_t channelId,
 		    int& stationName, int& stationEta, int& stationPhi,
-		    int& multiLayer, int& layer, int& tube);
+		    int& multiLayer, int& layer, int& tube) const;
 
   /** return the online id given the offline id */
   bool getOnlineId(int stationName, int stationEta, int stationPhi,
 		   int multiLayer, int layer, int tube,
 		   uint8_t& subdetectorId, uint8_t& rodId, uint8_t& csmId,
-		   uint8_t& tdcId, uint8_t& channelId);
+		   uint8_t& tdcId, uint8_t& channelId) const;
 
  private:
 
@@ -113,7 +116,7 @@ class MuonMDT_CablingMap : public MdtMapBase<MdtSubdetectorMap> {
   ListOfROD* m_listOfROD;
 
   /** private function to compute a station code for the chamber to ROD map */
-  bool getStationCode(int station, int eta, int phi, IdentifierHash& mdtIdHash);
+  bool getStationCode(int station, int eta, int phi, IdentifierHash& mdtIdHash) const;
 
   /** Pointer to the MdtIdHelper */
   const MdtIdHelper* m_mdtIdHelper;
diff --git a/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx b/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx
index 33fcc6ded7be9bf38a292b59278cd8c8f9d6c689..a66b346cbc464c751a026f05cc1ff6f7fee51e49 100644
--- a/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx
+++ b/MuonSpectrometer/MuonCablings/MuonCablingData/src/MuonMDT_CablingMap.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonCablingData/MuonMDT_CablingMap.h"
@@ -299,7 +299,7 @@ bool MuonMDT_CablingMap::addMezzanine( int mezType, int station, int eta, int ph
 
 
 
-MdtSubdetectorMap* MuonMDT_CablingMap::getSubdetectorMap(uint8_t subdetectorId) {
+MdtSubdetectorMap* MuonMDT_CablingMap::getSubdetectorMap(uint8_t subdetectorId) const{
   return getItem(subdetectorId);
 }
 
@@ -367,7 +367,7 @@ bool MuonMDT_CablingMap::addChamberToRODMap(int station, int eta, int phi,
  *
  */
 bool MuonMDT_CablingMap::getStationCode(int station, int eta, int phi, 
-					IdentifierHash& mdtHashId)
+					IdentifierHash& mdtHashId) const
 {
   // create the station identifier
   Identifier elementId = m_mdtIdHelper->elementID(station,eta,phi);
@@ -387,7 +387,7 @@ bool MuonMDT_CablingMap::getStationCode(int station, int eta, int phi,
  * return the ROBid of a given station, identified through station, eta, phi
  *
  */
-uint32_t MuonMDT_CablingMap::getROBId(int station, int eta, int phi)
+uint32_t MuonMDT_CablingMap::getROBId(int station, int eta, int phi) const
 {
 
   int rodId = 0;
@@ -407,7 +407,8 @@ uint32_t MuonMDT_CablingMap::getROBId(int station, int eta, int phi)
 }
 
 // get the ROBid given the identifier hash
-uint32_t MuonMDT_CablingMap::getROBId(const IdentifierHash stationCode)
+
+uint32_t MuonMDT_CablingMap::getROBId(const IdentifierHash stationCode) const
 {
   int rodId = 0;
 
@@ -423,6 +424,29 @@ uint32_t MuonMDT_CablingMap::getROBId(const IdentifierHash stationCode)
   return rodId;
 }
 
+//get the robs corresponding to a vector of hashIds, copied from Svc before the readCdo migration
+
+std::vector<uint32_t> MuonMDT_CablingMap::getROBId(const std::vector<IdentifierHash>& mdtHashVector) const
+{
+  std::vector<uint32_t> robVector;
+
+  for ( unsigned int i = 0 ; i<mdtHashVector.size() ; ++i ) {
+
+    int robId = getROBId(mdtHashVector[i]);
+    if (robId==0) {
+
+      *m_log << MSG::ERROR << "ROB id not found for Hash Id: " << mdtHashVector[i] << endmsg;
+
+    } else {
+      *m_log << MSG::VERBOSE << "Found ROB id 0x" << MSG::hex << robId << MSG::dec << " for hashId " << mdtHashVector[i] << endmsg;
+    }
+    robVector.push_back(robId);
+  }
+  *m_log << MSG::VERBOSE << "Size of ROB vector is: " << robVector.size() << endmsg;
+
+  return robVector;
+}
+
 const std::vector<IdentifierHash>& MuonMDT_CablingMap::getChamberHashVec(const uint32_t ROBId) const
 {
   RODToChamberMap::const_iterator Rob_it = m_RODToChamber->find(ROBId);
@@ -457,7 +481,7 @@ const std::vector<IdentifierHash> MuonMDT_CablingMap::getChamberHashVec(const st
  * get the full list of ROBid
  *
  */
-std::vector<uint32_t> MuonMDT_CablingMap::getAllROBId() 
+std::vector<uint32_t> MuonMDT_CablingMap::getAllROBId() const
 {
   return *m_listOfROD;
 }
@@ -475,7 +499,7 @@ bool MuonMDT_CablingMap::getOfflineId(uint8_t subdetectorId,
 				      uint8_t tdcId,
 				      uint8_t channelId,
 				      int& stationName, int& stationEta, int& stationPhi,
-				      int& multiLayer, int& layer, int& tube)
+				      int& multiLayer, int& layer, int& tube) const
 {
   
   // get the subdetector
@@ -587,7 +611,7 @@ bool MuonMDT_CablingMap::getOnlineId(int stationName, int stationEta, int statio
 				     int multiLayer, int layer, int tube,
 				     uint8_t& subdetectorId, uint8_t& rodId, 
 				     uint8_t& csmId, uint8_t& tdcId, 
-				     uint8_t& channelId)
+				     uint8_t& channelId) const
 {
 
   
diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/MuonMDT_Cabling/MdtTestCabling.h b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/MuonMDT_Cabling/MdtTestCabling.h
index d2ba316b8128aff32e041fa6cd2cb8d4f61624e8..0f2accdc90c8ad6ddd070e58318719e15756135d 100644
--- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/MuonMDT_Cabling/MdtTestCabling.h
+++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/MuonMDT_Cabling/MdtTestCabling.h
@@ -16,13 +16,12 @@
  ***********************************************/
 
 #include "GaudiKernel/IChronoStatSvc.h"
-#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h"
 #include "MuonIdHelpers/MdtIdHelper.h"
 #include "AthenaBaseComps/AthAlgorithm.h"
 #include "GaudiKernel/ServiceHandle.h"
 
-// old cabling service
-//#include "MDTcabling/IMDTcablingSvc.h"
+#include "MuonCablingData/MuonMDT_CablingMap.h"
+#include "StoreGate/ReadCondHandleKey.h"
 
 
 class MdtTestCabling : public AthAlgorithm {
@@ -38,8 +37,6 @@ class MdtTestCabling : public AthAlgorithm {
 
  private:
 
-  ServiceHandle<MuonMDT_CablingSvc> m_cablingSvc;
-
   const MdtIdHelper* m_mdtIdHelper;
 
   // test initialize function
@@ -57,6 +54,8 @@ class MdtTestCabling : public AthAlgorithm {
   std::string m_chrono3;
   std::string m_chrono4;
 
+  SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"};
+
 };
 
 
diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx
index 924c6d7a1e681b9f21ebd298be755b4758abcaf8..aae40662999fab8025b1e2df610a1e8dd1de2783 100644
--- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx
+++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MdtTestCabling.cxx
@@ -4,14 +4,11 @@
 
 #include "MuonMDT_Cabling/MdtTestCabling.h"
 
-#include "MuonCablingData/MuonMDT_CablingMap.h"
-
 #include "StoreGate/StoreGateSvc.h"
 #include "StoreGate/DataHandle.h"
 
 MdtTestCabling::MdtTestCabling(const std::string& name, ISvcLocator* pSvcLocator) :
   AthAlgorithm(name,pSvcLocator),
-  m_cablingSvc("MuonMDT_CablingSvc", name),
   m_mdtIdHelper(0),
   m_chronoSvc("ChronoStatSvc", name)
 { 
@@ -23,7 +20,6 @@ MdtTestCabling::~MdtTestCabling() { }
 StatusCode MdtTestCabling::initialize()
 {
   ATH_CHECK( m_chronoSvc.retrieve() );
-  ATH_CHECK( m_cablingSvc.retrieve() );
 
   // initialize the pointer to the MdtIdHelper
   ServiceHandle<StoreGateSvc> detStore ("DetectorStore", name());
@@ -34,6 +30,8 @@ StatusCode MdtTestCabling::initialize()
   m_chrono2 = "oldcab";
   m_chrono3 = "OfflineToOnline";
 
+  ATH_CHECK( m_readKey.initialize() );
+
   return StatusCode::SUCCESS;
 }
 
@@ -64,22 +62,25 @@ StatusCode MdtTestCabling::finalize()
 bool MdtTestCabling::testMap()
 {
 
+  SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey};
+  const MuonMDT_CablingMap* readCdo{*readHandle};
+  if(readCdo==nullptr){
+    ATH_MSG_ERROR("Null pointer to the read conditions object");
+    return false;
+  }
+
   // print the list of ROBids
-  std::vector<uint32_t> robVector = m_cablingSvc->getAllROBId();
-  std::cout << "============================= List of ROBids:" << std::endl;
+  std::vector<uint32_t> robVector = readCdo->getAllROBId();
+  ATH_MSG_DEBUG( "============================= List of ROBids:" );
   for (unsigned int i=0 ; i<robVector.size() ; ++i) {
-    std::cout << std::hex << robVector[i] << std::dec << std::endl;
+    ATH_MSG_DEBUG( std::hex << robVector[i] << std::dec );
   }
-  std::cout << "=============================================" << std::endl;
+  ATH_MSG_DEBUG( "=============================================" );
 
   // loop on the hardware objects to get online identifiers
-  //  if (m_debug) {
+
   ATH_MSG_DEBUG( "in testMap()" );
-  //}
-  DataHandle<MuonMDT_CablingMap> cablingMap = m_cablingSvc->getCablingMap();
-  //if (m_debug) {
   ATH_MSG_DEBUG( "retrieved the map from the service" );
-    //}
 
   std::map<uint8_t, MdtSubdetectorMap*, std::less<uint8_t> >* listOfSubdet;
   std::map<uint8_t, MdtSubdetectorMap*, std::less<uint8_t> >::const_iterator it_sub;
@@ -93,7 +94,7 @@ bool MdtTestCabling::testMap()
   std::map<uint8_t, MdtAmtMap*, std::less<uint8_t> >* listOfAmt;
   std::map<uint8_t, MdtAmtMap*, std::less<uint8_t> >::const_iterator it_amt;
 
-  listOfSubdet = cablingMap->getListOfElements();
+  listOfSubdet = readCdo->getListOfElements();
 
   //  if (m_debug) {
   ATH_MSG_DEBUG( "Got the list of subdetectors" );
@@ -142,8 +143,7 @@ bool MdtTestCabling::testMap()
 	    int tube=0;
 
 	    m_chronoSvc->chronoStart(m_chrono1);
-
-	    bool cabling = m_cablingSvc->getOfflineId(subdetectorId,rodId,csmId,
+	    bool cabling = readCdo->getOfflineId(subdetectorId,rodId,csmId,
 						      amtId,chanId,
 						      station,eta,phi,multi,
 						      layer,tube);
@@ -168,8 +168,8 @@ bool MdtTestCabling::testMap()
 
 	      // test the back-conversion to online indeces
 	      m_chronoSvc->chronoStart(m_chrono3);
-	      cabling =  m_cablingSvc->getOnlineId(station,eta,phi,multi,layer,tube,
-						   newSubdet,newRod,newCsm,newAmt,newChan);
+	      cabling = readCdo->getOnlineId(station,eta,phi,multi,layer,tube,newSubdet,newRod,newCsm,newAmt,newChan);
+
 	      m_chronoSvc->chronoStop(m_chrono3);
 
 	      if (!cabling) {
@@ -240,10 +240,17 @@ bool MdtTestCabling::testMapTiming()
 
   bool found;
 
+  SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey};
+  const MuonMDT_CablingMap* readCdo{*readHandle};
+  if(readCdo==nullptr){
+    ATH_MSG_ERROR("Null pointer to the read conditions object");
+    return false;
+  }  
+
   //
   m_chronoSvc->chronoStart(m_chrono1);
   for (int i = 0 ; i<1000 ; i++) {
-    found = m_cablingSvc->getOfflineId(1,1,1,1,1,
+    found = readCdo->getOfflineId(1,1,1,1,1,
 				       stationName,stationEta,stationPhi,
 				       multiLayer,layer,tube);
     if (!found) {
@@ -251,12 +258,9 @@ bool MdtTestCabling::testMapTiming()
       return found;
     }
 
-    //found = m_cablingSvc->getOfflineId(1,1,1,1,1,
-    //			       stationName,stationEta,stationPhi,
-    //			       multiLayer,layer,tube);
-    found = m_cablingSvc->getOfflineId(1,1,1,1,3,
-				       stationName,stationEta,stationPhi,
-				       multiLayer,layer,tube);
+    found = readCdo->getOfflineId(1,1,1,1,3,
+				  stationName,stationEta,stationPhi,
+				  multiLayer,layer,tube);
     if (!found) {
       ATH_MSG_FATAL( " coul dnot find the test channel" );
       return false;
diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingAlg.cxx b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingAlg.cxx
index 110c4f7e80e9f4093f2e85d3ce92240b02c5fa85..4bc4baf9de843d664b5b2e654be96f5b71635815 100644
--- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingAlg.cxx
+++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingAlg.cxx
@@ -66,7 +66,7 @@ StatusCode MuonMDT_CablingAlg::execute(){
   
   SG::ReadCondHandle<CondAttrListCollection> readHandleMez{ m_readKeyMez };
   const CondAttrListCollection* readCdoMez{*readHandleMez}; 
-  if(readCdoMez==0){
+  if(readCdoMez==nullptr){
     ATH_MSG_ERROR("Null pointer to the read conditions object");
     return StatusCode::FAILURE; 
   }   
@@ -80,7 +80,7 @@ StatusCode MuonMDT_CablingAlg::execute(){
 
   SG::ReadCondHandle<CondAttrListCollection> readHandleMap{ m_readKeyMap };
   const CondAttrListCollection* readCdoMap{*readHandleMap}; 
-  if(readCdoMap==0){
+  if(readCdoMap==nullptr){
     ATH_MSG_ERROR("Null pointer to the read conditions object");
     return StatusCode::FAILURE; 
   }   
diff --git a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingSvc.cxx b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingSvc.cxx
index a61f1284396c3a43bb157baf363c42db86c7d715..f3e99a746192c90133c0ec196cec5c045c0d1db1 100644
--- a/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingSvc.cxx
+++ b/MuonSpectrometer/MuonCablings/MuonMDT_Cabling/src/MuonMDT_CablingSvc.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonMDT_Cabling/MuonMDT_CablingSvc.h"
diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/src/CscRawDataProvider.cxx b/MuonSpectrometer/MuonCnv/MuonByteStream/src/CscRawDataProvider.cxx
index 05715f309297f7f403f074d7548be4f3b9038450..03f43545e4ea61d8c618979c6e764ab407afa6e0 100644
--- a/MuonSpectrometer/MuonCnv/MuonByteStream/src/CscRawDataProvider.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonByteStream/src/CscRawDataProvider.cxx
@@ -14,7 +14,7 @@
 Muon::CscRawDataProvider::CscRawDataProvider(const std::string& name,
                                       ISvcLocator* pSvcLocator) :
   AthAlgorithm(name, pSvcLocator),
-  m_rawDataTool     ("Muon::CSC_RawDataProviderTool/CSC_RawDataProviderTool", this)
+  m_rawDataTool     ("Muon::CSC_RawDataProviderTool/CscRawDataProviderTool", this)
 {
   declareProperty ("ProviderTool", m_rawDataTool);
 }
@@ -54,4 +54,3 @@ StatusCode Muon::CscRawDataProvider::execute() {
 
   return StatusCode::SUCCESS;
 }
-
diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/src/MdtRawDataProvider.cxx b/MuonSpectrometer/MuonCnv/MuonByteStream/src/MdtRawDataProvider.cxx
index 079edc50a88f7bd15b9a1c7a23fe9eb6aa9d7a12..7a13fba74b1619bf196298f8f418ad58f94e099d 100644
--- a/MuonSpectrometer/MuonCnv/MuonByteStream/src/MdtRawDataProvider.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonByteStream/src/MdtRawDataProvider.cxx
@@ -11,7 +11,7 @@
 Muon::MdtRawDataProvider::MdtRawDataProvider(const std::string& name,
                                       ISvcLocator* pSvcLocator) :
   AthAlgorithm(name, pSvcLocator),
-  m_rawDataTool     ("Muon::MDT_RawDataProviderTool/MDT_RawDataProviderTool", this)
+  m_rawDataTool     ("Muon::MDT_RawDataProviderTool/MdtRawDataProviderTool", this)
 {
   declareProperty ("ProviderTool", m_rawDataTool);
 }
@@ -48,4 +48,3 @@ StatusCode Muon::MdtRawDataProvider::execute() {
 
   return StatusCode::SUCCESS;
 }
-
diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/src/RpcRawDataProvider.cxx b/MuonSpectrometer/MuonCnv/MuonByteStream/src/RpcRawDataProvider.cxx
index d6ed14ef777c10199bc47f57c5aa2c3ce9455535..a2112ffe36844199b16ee814e608f5a50abbc490 100644
--- a/MuonSpectrometer/MuonCnv/MuonByteStream/src/RpcRawDataProvider.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonByteStream/src/RpcRawDataProvider.cxx
@@ -11,7 +11,7 @@
 Muon::RpcRawDataProvider::RpcRawDataProvider(const std::string& name,
                                       ISvcLocator* pSvcLocator) :
   AthAlgorithm(name, pSvcLocator),
-  m_rawDataTool     ("Muon::RPC_RawDataProviderTool/RPC_RawDataProviderTool", this),
+  m_rawDataTool     ("Muon::RPC_RawDataProviderTool/RpcRawDataProviderTool", this),
   m_regionSelector  ("RegSelSvc",name) 
 {
   declareProperty ("ProviderTool", m_rawDataTool);
@@ -85,4 +85,3 @@ StatusCode Muon::RpcRawDataProvider::execute() {
 
   return StatusCode::SUCCESS;
 }
-
diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/src/TgcRawDataProvider.cxx b/MuonSpectrometer/MuonCnv/MuonByteStream/src/TgcRawDataProvider.cxx
index e8cb6d3b9b43e5f2456dad4856cc8578abba82ff..37b9087a3e03d8d8b8683d12955944f5635be907 100644
--- a/MuonSpectrometer/MuonCnv/MuonByteStream/src/TgcRawDataProvider.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonByteStream/src/TgcRawDataProvider.cxx
@@ -18,7 +18,7 @@ Muon::TgcRawDataProvider::TgcRawDataProvider(const std::string& name,
         ISvcLocator* pSvcLocator) :
         AthAlgorithm(name, pSvcLocator),
         m_robDataProvider ("ROBDataProviderSvc",name),
-        m_rawDataTool     ("Muon::TGC_RawDataProviderTool/TGC_RawDataProviderTool", this)
+        m_rawDataTool     ("Muon::TGC_RawDataProviderTool/TgcRawDataProviderTool", this)
 {
     declareProperty ("ProviderTool", m_rawDataTool);
 }
@@ -70,4 +70,3 @@ StatusCode Muon::TgcRawDataProvider::execute()
 
     return StatusCode::SUCCESS;
 }
-
diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt
index 246bb445e22a5e19345ea29ca0b464eb32b197ed..ef63407e2ca2a5619bd731b3f1c236ef3449cc95 100644
--- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt
+++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/CMakeLists.txt
@@ -28,18 +28,19 @@ atlas_depends_on_subdirs( PUBLIC
                           MuonSpectrometer/MuonCnv/MuonTGC_CnvTools
                           MuonSpectrometer/MuonDigitContainer
                           MuonSpectrometer/MuonIdHelpers
-                          MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData )
+                          MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData 
+			  MuonSpectrometer/MuonCablings/MuonCablingData )
 
 # Component(s) in the package:
 atlas_add_library( MuonByteStreamCnvTestLib
                    src/*.cxx
                    PUBLIC_HEADERS MuonByteStreamCnvTest
                    LINK_LIBRARIES AthenaBaseComps GaudiKernel MuonReadoutGeometry MuonRDO StoreGateLib SGtests RPCcablingInterfaceLib TrigT1RPChardwareLib RPChardware TrigT1RPClogicLib MuonMDT_CablingLib TGCcablingInterfaceLib MuonIdHelpersLib
-                   PRIVATE_LINK_LIBRARIES EventInfo MuonDigitContainer MuonPrepRawData )
+                   PRIVATE_LINK_LIBRARIES EventInfo MuonDigitContainer MuonPrepRawData MuonCablingData )
 
 atlas_add_component( MuonByteStreamCnvTest
                      src/components/*.cxx
-                     LINK_LIBRARIES AthenaBaseComps StoreGateLib SGtests GaudiKernel RPCcablingInterfaceLib MuonReadoutGeometry MuonRDO TrigT1RPChardwareLib RPChardware TrigT1RPClogicLib EventInfo MuonMDT_CablingLib TGCcablingInterfaceLib MuonDigitContainer MuonIdHelpersLib MuonPrepRawData MuonByteStreamCnvTestLib )
+                     LINK_LIBRARIES AthenaBaseComps StoreGateLib SGtests GaudiKernel RPCcablingInterfaceLib MuonReadoutGeometry MuonRDO TrigT1RPChardwareLib RPChardware TrigT1RPClogicLib EventInfo MuonMDT_CablingLib TGCcablingInterfaceLib MuonDigitContainer MuonIdHelpersLib MuonPrepRawData MuonByteStreamCnvTestLib MuonCablingData )
 
 # Install files from the package:
 atlas_install_python_modules( python/*.py )
diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h
index d0374bdd2aa54fff90f7a981e6817adaa7c350b9..b59e720d29adc354b7e9a76e61717cf597f7e885 100644
--- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h
+++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/MuonByteStreamCnvTest/MdtDigitToMdtRDO.h
@@ -10,7 +10,9 @@
 
 #include "MuonDigitContainer/MdtDigitContainer.h"
 #include "MuonRDO/MdtCsmContainer.h"
-#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h"
+
+#include "MuonCablingData/MuonMDT_CablingMap.h"
+#include "StoreGate/ReadCondHandleKey.h"
 
 class MdtIdHelper;
 
@@ -31,11 +33,12 @@ class MdtDigitToMdtRDO : public AthAlgorithm {
 
  protected:
 
-  ServiceHandle<MuonMDT_CablingSvc>       m_cabling;
   const MdtIdHelper*   m_mdtIdHelper;
   bool m_BMEpresent;
   SG::WriteHandleKey<MdtCsmContainer> m_csmContainerKey{this,"OutputObjectName","MDTCSM","WriteHandleKey for Output MdtCsmContainer"};
   SG::ReadHandleKey<MdtDigitContainer> m_digitContainerKey{this,"InputObjectName","MDT_DIGITS","ReadHandleKey for Input MdtDigitContainer"};
+  SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"};
+
 };
 
 #endif
diff --git a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx
index 5f6ce979da6fd800733785a143f99db58d3c7f3f..82f7b729e323de575a6f681a25f52104c60bbc28 100644
--- a/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonByteStreamCnvTest/src/MdtDigitToMdtRDO.cxx
@@ -6,8 +6,6 @@
 #include "MuonDigitContainer/MdtDigitCollection.h"
 #include "MuonDigitContainer/MdtDigit.h"
 
-#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h"
-
 #include "MuonRDO/MdtCsmIdHash.h"
 #include "MuonRDO/MdtCsmContainer.h"
 #include "MuonRDO/MdtCsm.h"
@@ -27,7 +25,6 @@ using namespace std;
 
 MdtDigitToMdtRDO::MdtDigitToMdtRDO(const std::string& name, ISvcLocator* pSvcLocator) :
   AthAlgorithm(name, pSvcLocator),
-  m_cabling("MuonMDT_CablingSvc", name),
   m_mdtIdHelper(0),
   m_BMEpresent(false)
 {
@@ -43,7 +40,7 @@ StatusCode MdtDigitToMdtRDO::initialize()
   ATH_CHECK( m_digitContainerKey.initialize() );
   ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_digitContainerKey );
   ATH_CHECK( detStore()->retrieve(m_mdtIdHelper,"MDTIDHELPER") );
-  ATH_CHECK( m_cabling.retrieve() );
+  ATH_CHECK( m_readKey.initialize() );
 
   if ( fillTagInfo().isFailure() ) {
     ATH_MSG_WARNING( "Could not fill the tagInfo for MDT cabling"  );
@@ -95,6 +92,13 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const {
 
   MdtCsmIdHash hashF;
 
+  SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey};
+  const MuonMDT_CablingMap* readCdo{*readHandle};
+  if(readCdo==0){
+    ATH_MSG_ERROR("Null pointer to the read conditions object");
+    return StatusCode::FAILURE;
+  }
+
   // Iterate on the collections
   collection_iterator it_coll = container->begin();
   for ( ; it_coll != container->end(); ++it_coll) 
@@ -114,10 +118,10 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const {
       uint8_t tdc;
       uint8_t channel;
       
-      bool cabling = m_cabling->getOnlineId(name, eta, phi, 
-					    1, 1, 1,
-					    subsystem, mrod, link, 
-					    tdc, channel);
+      bool cabling = readCdo->getOnlineId(name, eta, phi, 
+					  1, 1, 1,
+					  subsystem, mrod, link, 
+					  tdc, channel);
 
       if (!cabling) {
 	ATH_MSG_ERROR( "MDTcabling can't return an online ID for the channel : "  );
@@ -165,10 +169,10 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const {
         if ( name == 53 ) {
 	  uint8_t subsystem_2ndcsm, mrod_2ndcsm, link_2ndcsm, tdc_2ndcsm, channel_2ndcsm;
 
-	  cabling = m_cabling->getOnlineId(name, eta, phi, 1, 1, 43,
-					   subsystem_2ndcsm, mrod_2ndcsm,
-					   link_2ndcsm, tdc_2ndcsm, channel_2ndcsm);
-
+	  cabling = readCdo->getOnlineId(name, eta, phi, 1, 1, 43,
+					 subsystem_2ndcsm, mrod_2ndcsm,
+					 link_2ndcsm, tdc_2ndcsm, channel_2ndcsm);
+	  
 	  if (!cabling) {
 	    ATH_MSG_ERROR( "MDTcabling can't return an online ID for the channel : "  );
 	    ATH_MSG_ERROR( name << " "
@@ -196,10 +200,10 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const {
 	      int tube       = m_mdtIdHelper->tube(channelId);
 	            
 	      // Get the online Id of the channel
-	      cabling = m_cabling->getOnlineId(name, eta, phi, 
-					       multilayer, layer, tube,
-					       subsystem, mrod, link, 
-					       tdc, channel);
+	      cabling = readCdo->getOnlineId(name, eta, phi, 
+					     multilayer, layer, tube,
+					     subsystem, mrod, link, 
+					     tdc, channel);
 	            
 	      if (!cabling) {
 		ATH_MSG_ERROR( "MDTcabling can't return an online ID for the channel : "  );
@@ -263,17 +267,11 @@ StatusCode MdtDigitToMdtRDO::fill_MDTdata() const {
 StatusCode MdtDigitToMdtRDO::fillTagInfo() const {
 
   ServiceHandle<ITagInfoMgr> tagInfoMgr ("TagInfoMgr", name());
-  if (tagInfoMgr.retrieve().isFailure())
+  if (tagInfoMgr.retrieve().isFailure()){
     return StatusCode::FAILURE;
-  
-  std::string cablingType="";
-  if (m_cabling->usingOldCabling() ) {
-    cablingType="OldMDT_Cabling";
-  }
-  else {
-    cablingType="NewMDT_Cabling";
   }
 
+  std::string cablingType="NewMDT_Cabling";
   StatusCode sc = tagInfoMgr->addTag("MDT_CablingType",cablingType); 
   
   if(sc.isFailure()) {
diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.cxx
index 2619c9958afdc9c9da49e61d44b251c728007d87..f8d88654eb9d61286d71b0d16e56bec686e51af7 100755
--- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.cxx
@@ -23,15 +23,16 @@ using eformat::helper::SourceIdentifier;
 
 
 MDT_Hid2RESrcID::MDT_Hid2RESrcID() :
-  m_cabling(0), m_mdtIdHelper(0), m_specialROBNumber(0)
+  m_mdtIdHelper(0), m_specialROBNumber(0), m_readKey("MuonMDT_CablingMap")
 {
 
 }
 
-void MDT_Hid2RESrcID::set(MuonMDT_CablingSvc* p_cabling, const MdtIdHelper* mdtIdHelper) {
+StatusCode MDT_Hid2RESrcID::set(const MdtIdHelper* mdtIdHelper) {
   // Initialize the cabling Service
   m_mdtIdHelper = mdtIdHelper;
-  m_cabling = p_cabling;
+  ATH_CHECK( m_readKey.initialize() ); 
+  return StatusCode::SUCCESS; 
 }
 
 uint32_t MDT_Hid2RESrcID::getRodID(const Identifier& offlineId) {
@@ -63,15 +64,22 @@ uint32_t MDT_Hid2RESrcID::getRodID(const Identifier& offlineId) {
   int multilayer = m_mdtIdHelper->multilayer(offlineId);
   int tubelayer = m_mdtIdHelper->tubeLayer(offlineId);
   int tube = m_mdtIdHelper->tube(offlineId);
-    
-  online = m_cabling->getOnlineId(station_name, station_eta,
-				  station_phi, multilayer,tubelayer,
-				  tube, 
-				  SubsystemId,
-				  MrodId,
-				  LinkId,
-				  TdcId,
-				  ChannelId);
+
+  SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey};
+  const MuonMDT_CablingMap* readCdo{*readHandle};
+  if(readCdo==nullptr){
+    //ATH_MSG_ERROR("Null pointer to the read conditions object");
+    log << MSG::ERROR << "Null pointer to the read conditions object" << endmsg;
+    return 0;
+  }
+  online = readCdo->getOnlineId(station_name, station_eta,
+				station_phi, multilayer,tubelayer,
+				tube, 
+				SubsystemId,
+				MrodId,
+				LinkId,
+				TdcId,
+				ChannelId);
   
   if (!online) {
     log << MSG::DEBUG << "ROD Id of the Station " << MSG::hex << "0x" << offlineId
diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h
index f6e0103da65c2e61767ce22c7b696181c6af7b8b..f112d0d279f62cea098c97724f6426a99d67ca21 100755
--- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h
+++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_Hid2RESrcID.h
@@ -8,12 +8,14 @@
 #include "GaudiKernel/MsgStream.h"
 #include "GaudiKernel/StatusCode.h"
 
-#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h"
+#include "AthenaBaseComps/AthService.h"
+#include "StoreGate/ReadCondHandle.h"
+#include "MuonCablingData/MuonMDT_CablingMap.h"
+#include "StoreGate/ReadCondHandleKey.h"
 #include "MuonIdHelpers/MdtIdHelper.h"
 
 #include "Identifier/Identifier.h"
 
-
 #include <stdint.h> 
 #include <map>
 
@@ -36,7 +38,7 @@ public:
 
   /** intialize the cabling service
    */
-  void set(MuonMDT_CablingSvc* p_cabling, const MdtIdHelper* m_mdtIdHelper); 
+  StatusCode set(const MdtIdHelper* m_mdtIdHelper); 
 
   /** TMP method for sector 13 data */
   void setSpecialROBNumber(int specialROBNumber) {m_specialROBNumber=specialROBNumber;}
@@ -58,11 +60,12 @@ public:
 
  private: 
 
-  MuonMDT_CablingSvc* m_cabling;
   const MdtIdHelper* m_mdtIdHelper;
 
   int m_specialROBNumber;
 
+  SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey;
+
 };
 
 #endif 
diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.cxx
index ab52b42160194c73cd5b6076bd981c2c1978a926..1a7323f9061c6a0bd65511f3b53f359b25be20b5 100644
--- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.cxx
@@ -8,7 +8,6 @@
 #include "StoreGate/StoreGateSvc.h"
 #include "GaudiKernel/IJobOptionsSvc.h"
 #include "ByteStreamCnvSvcBase/IROBDataProviderSvc.h"
-#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h"
 
 
 // using namespace OFFLINE_FRAGMENTS_NAMESPACE;
@@ -21,7 +20,6 @@ Muon::MDT_RawDataProviderTool::MDT_RawDataProviderTool(const std::string& t,
   //m_lastLvl1ID(0),
   m_decoder("MdtROD_Decoder/MdtROD_Decoder", this),
   m_muonMgr(0),
-  m_mdtCabling(0),
   m_robDataProvider ("ROBDataProviderSvc",n)
 {
   declareInterface<Muon::IMuonRawDataProviderTool>(this);
@@ -43,20 +41,6 @@ StatusCode Muon::MDT_RawDataProviderTool::initialize()
     return sc;
   }
 
-  ATH_MSG_VERBOSE("Getting cabling");  
-  
-  // get MDT cablingSvc
-  StatusCode status = service("MuonMDT_CablingSvc", m_mdtCabling);
-  
-  if (status.isFailure()) {
-    ATH_MSG_FATAL("Could not get MuonMDT_CablingSvc !");
-    m_mdtCabling = 0;
-    return StatusCode::FAILURE;
-  }
-  else {
-    ATH_MSG_DEBUG(" Found the MuonMDT_CablingSvc. ");
-  }
-  
   ATH_MSG_VERBOSE("Getting m_robDataProvider");  
   
   // Get ROBDataProviderSvc
@@ -164,6 +148,7 @@ StatusCode Muon::MDT_RawDataProviderTool::initialize()
   }
 
   ATH_CHECK( m_rdoContainerKey.initialize() );
+  ATH_CHECK( m_readKey.initialize() );  
   
   ATH_MSG_INFO("initialize() successful in " << name());
   return StatusCode::SUCCESS;
@@ -177,12 +162,24 @@ StatusCode Muon::MDT_RawDataProviderTool::finalize()
 // the new one 
 StatusCode Muon::MDT_RawDataProviderTool::convert() //call decoding function using list of all detector ROBId's
 {
-  return convert(m_mdtCabling->getAllROBId());
- }
+  SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey};
+  const MuonMDT_CablingMap* readCdo{*readHandle};
+  if(readCdo==nullptr){
+    ATH_MSG_ERROR("Null pointer to the read conditions object");
+    return StatusCode::FAILURE;
+  }
+  return convert(readCdo->getAllROBId());
+}
 
 StatusCode Muon::MDT_RawDataProviderTool::convert(const std::vector<IdentifierHash>& HashVec)
 {
- return convert(m_mdtCabling->getROBId(HashVec));
+  SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey};
+  const MuonMDT_CablingMap* readCdo{*readHandle};
+  if(readCdo==nullptr){
+    ATH_MSG_ERROR("Null pointer to the read conditions object");
+    return StatusCode::FAILURE;
+  }
+  return convert(readCdo->getROBId(HashVec));
 }
 
 StatusCode Muon::MDT_RawDataProviderTool::convert(const std::vector<uint32_t>& robIds)
diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.h
index 16dd5a607cbdb7d6e23df58a41084d46cc723998..f9e62bd8dd12b5f44ff5d11288dd70a3cbd70f19 100644
--- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.h
+++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.h
@@ -14,11 +14,14 @@
 #include <vector>
 #include <set>
 #include <string>
+
+#include "MuonCablingData/MuonMDT_CablingMap.h"
+#include "StoreGate/ReadCondHandleKey.h"
+
 
 class MdtCsmContainer;
 class StoreGateSvc;
 class ActiveStoreSvc;
-class MuonMDT_CablingSvc;
 class IROBDataProviderSvc;
 
 namespace MuonGM {
@@ -66,10 +69,11 @@ class MDT_RawDataProviderTool : virtual public IMuonRawDataProviderTool, virtual
   ActiveStoreSvc*                   m_activeStore;
   unsigned int m_maxhashtoUse;
   bool m_useContainer;
-  /// MDT cabling Svc
-  MuonMDT_CablingSvc * m_mdtCabling;
   // Rob Data Provider handle 
   ServiceHandle<IROBDataProviderSvc>          m_robDataProvider;
+
+    SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"};
+
 
 };
 }
diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.cxx
index 83dfa98295a0ca00265e51817fb31f729f7e4233..2ae218a8abf5e2c02ad7659b6ccbfa6b9827ee41 100755
--- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.cxx
@@ -5,8 +5,6 @@
 #include "MdtCsmContByteStreamTool.h"
 #include "MdtROD_Encoder.h"
 
-#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h"
-
 #include "MuonRDO/MdtCsm.h"
 #include "MuonRDO/MdtCsmContainer.h"
 
@@ -24,7 +22,6 @@ Muon::MdtCsmContByteStreamTool::MdtCsmContByteStreamTool
 ( const std::string& type, const std::string& name,const IInterface* parent )
     :  
     AthAlgTool(type,name,parent),
-    m_cabling(0),
     m_hid2re(0),
     m_mdtIdHelper(0)
 {
@@ -39,11 +36,6 @@ Muon::MdtCsmContByteStreamTool::MdtCsmContByteStreamTool
   
 StatusCode Muon::MdtCsmContByteStreamTool::initialize() {
  
-  if (StatusCode::SUCCESS != service("MuonMDT_CablingSvc", m_cabling)) {
-    ATH_MSG_ERROR(" Can't get MuonMDT_CablingSvc ");
-    return StatusCode::FAILURE; 
-  }  
-  
   StoreGateSvc * detStore;
   StatusCode status = service("DetectorStore", detStore);
   if (status.isFailure()) {
@@ -63,7 +55,11 @@ StatusCode Muon::MdtCsmContByteStreamTool::initialize() {
   }
 
   m_hid2re = new MDT_Hid2RESrcID ();
-  m_hid2re->set(m_cabling, mdt_id);
+  status = m_hid2re->set(mdt_id);
+  if ( status.isFailure() ){
+    ATH_MSG_FATAL("Could not initialize MDT mapping !");
+    return StatusCode::FAILURE;
+  }
 
   m_mdtIdHelper = mdt_id;
 
@@ -81,7 +77,11 @@ StatusCode Muon::MdtCsmContByteStreamTool::convert(CONTAINER* cont, RawEventWrit
 						   MsgStream& log ) {
   
   m_fea.clear();
-  m_fea.idMap().set(m_cabling, m_mdtIdHelper);
+  StatusCode status = m_fea.idMap().set(m_mdtIdHelper);
+  if ( status.isFailure() ){
+    ATH_MSG_FATAL("Could not initialize MDT mapping !");
+    return StatusCode::FAILURE;
+  }
   
   FullEventAssembler<MDT_Hid2RESrcID>::RODDATA*  theROD ;
   
diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.h
index b92201b2857b8cff70c363b7527542ac40d9bd37..2dad648dc766b4afba4c421f0f2c24d9ae650d72 100755
--- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.h
+++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtCsmContByteStreamTool.h
@@ -18,7 +18,6 @@
 
 class MdtCsmContainer; 
 class MsgStream;
-class MuonMDT_CablingSvc;
 
 #include <string>
 
@@ -65,7 +64,6 @@ public:
 
 private: 
 
-  MuonMDT_CablingSvc* m_cabling;
   MDT_Hid2RESrcID* m_hid2re; 
 
   const MdtIdHelper* m_mdtIdHelper;
diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.cxx
index 6a3ec2d7bb53cd38a451b9c695484c784a4860bb..67880443b04dfb06de4ffc3b1dbed2e1c59760d3 100755
--- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MdtRDO_Decoder.h"
@@ -8,19 +8,13 @@ using namespace Muon;
 
 MdtRDO_Decoder::MdtRDO_Decoder(const std::string& type, const std::string& name,const IInterface* parent) :
   AthAlgTool(type,name,parent),
-  m_mdtIdHelper(0),
-  m_cablingSvc(0)
+  m_mdtIdHelper(0)
 {  
   declareInterface< Muon::IMDT_RDO_Decoder  >( this );
 }
 
 StatusCode MdtRDO_Decoder::initialize() {
- 
-  if (StatusCode::SUCCESS != service("MuonMDT_CablingSvc", m_cablingSvc)) {
-    ATH_MSG_ERROR(" Can't get MuonMDT_CablingSvc ");
-    return StatusCode::FAILURE; 
-  }  
-  
+   
   StoreGateSvc * detStore;
   StatusCode status = service("DetectorStore", detStore);
   if (status.isFailure()) {
@@ -36,7 +30,7 @@ StatusCode MdtRDO_Decoder::initialize() {
   else {
     ATH_MSG_DEBUG(" Found the MdtIdHelper. ");
   }
-
+  ATH_CHECK( m_readKey.initialize() );
 
   return StatusCode::SUCCESS;
 }
@@ -47,13 +41,3 @@ StatusCode MdtRDO_Decoder::finalize()
 }
 
 
-//void MdtRDO_Decoder::set(const MdtIdHelper * mdtIdHelper, const MDTcablingSvc* mdtCabling) 
-//{
-//  m_mdtIdHelper = mdtIdHelper;
-//  m_cablingSvc  = mdtCabling;
-//}
-
-
-
-
-
diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.h
index 583ecde58a970cec0566416e3b3240d31367f509..8c5c85053be95f69aa7b190be7c139597f53748a 100755
--- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.h
+++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRDO_Decoder.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef MUONBYTESTREAMMDTRDODECODER_H
@@ -10,7 +10,8 @@
 #include "MuonRDO/MdtAmtHit.h"
 #include "MuonDigitContainer/MdtDigit.h"
 #include "MuonIdHelpers/MdtIdHelper.h"
-#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h"
+#include "MuonCablingData/MuonMDT_CablingMap.h"
+#include "StoreGate/ReadCondHandleKey.h"
 
 #include "MuonMDT_CnvTools/IMDT_RDO_Decoder.h"
 
@@ -31,10 +32,7 @@ namespace Muon {
         const IInterface* parent ) ;
 
     virtual StatusCode initialize();
-    virtual StatusCode finalize();
-
-    
-    //   void set(const MdtIdHelper * mdtIdHelper, const MDTcablingSvc* mdtCabling);
+    virtual StatusCode finalize();    
     
     MdtDigit * getDigit(const MdtAmtHit * amtHit, uint16_t& subdetId, 
 			uint16_t& mrodId, uint16_t& csmId) const;
@@ -45,7 +43,7 @@ namespace Muon {
   private:
     
     const MdtIdHelper * m_mdtIdHelper;
-    MuonMDT_CablingSvc* m_cablingSvc;
+    SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"};
     
   };
   
@@ -67,14 +65,18 @@ inline MdtDigit* Muon::MdtRDO_Decoder::getDigit(const MdtAmtHit* amtHit, uint16_
   uint16_t fine    = amtHit->fine();
   int width   = (int) amtHit->width();
   
-  bool cab = m_cablingSvc->getOfflineId((uint8_t) subdetId, (uint8_t) mrodId, 
-					(uint8_t) csmId, (uint8_t) tdc, 
-					(uint8_t) chan,
-					stationName, stationEta, stationPhi,
-					multiLayer, tubeLayer, tube);
-  
-  
-
+  SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey};
+  const MuonMDT_CablingMap* readCdo{*readHandle};
+  if(readCdo==nullptr){
+    ATH_MSG_ERROR("Null pointer to the read conditions object");
+    return NULL;
+  }
+  bool cab = readCdo->getOfflineId((uint8_t) subdetId, (uint8_t) mrodId, 
+				   (uint8_t) csmId, (uint8_t) tdc, 
+				   (uint8_t) chan,
+				   stationName, stationEta, stationPhi,
+				   multiLayer, tubeLayer, tube);
+    
   if (!cab) return NULL;
   
   Identifier chanId = m_mdtIdHelper->channelID(stationName, stationEta, stationPhi, 
@@ -104,8 +106,15 @@ inline Identifier Muon::MdtRDO_Decoder::getOfflineData(const MdtAmtHit* amtHit,
   uint16_t coarse  = amtHit->coarse();
   uint16_t fine    = amtHit->fine();
   width   = (int) amtHit->width();
-  
-  bool cab = m_cablingSvc->getOfflineId(subdetId, mrodId, csmId, tdc, chan,
+
+  Identifier chanIdDefault;
+  SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey};
+  const MuonMDT_CablingMap* readCdo{*readHandle};
+  if(readCdo==nullptr){
+    ATH_MSG_ERROR("Null pointer to the read conditions object");
+    return chanIdDefault;
+  }
+  bool cab = readCdo->getOfflineId(subdetId, mrodId, csmId, tdc, chan,
 					stationName, stationEta, stationPhi,
 					multiLayer, tubeLayer, tube);
   
diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx
index 86a80ed5cd11fa7107e533ea9fa835370aa7def5..b6de2acedeaea486cbdf1b8b5498ab7b54fd7455 100755
--- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx
@@ -25,7 +25,7 @@ static const InterfaceID IID_IMdtROD_Decoder
 MdtROD_Decoder::MdtROD_Decoder
 ( const std::string& type, const std::string& name,const IInterface* parent )
 :  AthAlgTool(type,name,parent), 
-   m_EvtStore(0), m_hid2re(0), m_cabling(0), m_mdtIdHelper(0), m_rodReadOut(0), m_csmReadOut(0), 
+   m_EvtStore(0), m_hid2re(0), m_mdtIdHelper(0), m_rodReadOut(0), m_csmReadOut(0), 
    m_amtReadOut(0), m_hptdcReadOut(0), m_BMEpresent(false), m_BMGpresent(false), m_BMEid(-1), m_BMGid(-1)
    //   m_debug(false),
    //   m_log (msgSvc(), name) 
@@ -68,16 +68,13 @@ StatusCode MdtROD_Decoder::initialize() {
     return sc;
   }
 
-  m_hid2re=new MDT_Hid2RESrcID();
-
   // Here the mapping service has to be initialized
-
-  if (StatusCode::SUCCESS != service("MuonMDT_CablingSvc", m_cabling)) {
-    ATH_MSG_ERROR(" Can't get MuonMDT_CablingSvc ");
-    return StatusCode::FAILURE; 
-  }  
-  m_hid2re->set(m_cabling,m_mdtIdHelper);
-  
+  m_hid2re=new MDT_Hid2RESrcID();
+  sc = m_hid2re->set(m_mdtIdHelper); 
+  if ( !sc.isSuccess() ) {
+    ATH_MSG_ERROR(" Can't initialize MDT mapping");
+    return sc;
+  }
 
   // Initialize decoding classes
   m_rodReadOut = new MdtRODReadOut();
@@ -96,6 +93,8 @@ StatusCode MdtROD_Decoder::initialize() {
     ATH_MSG_INFO("Processing configuration for layouts with BMG chambers.");
     m_BMGid = m_mdtIdHelper->stationNameIndex("BMG");
   }
+
+  ATH_CHECK( m_readKey.initialize() );
   
   return StatusCode::SUCCESS;
 }
@@ -287,7 +286,13 @@ StatusCode MdtROD_Decoder::fillCollections(const OFFLINE_FRAGMENTS_NAMESPACE::RO
 
     bool cab;
 
-    cab = m_cabling->getOfflineId(subdetId, mrodId, csmId, tdc, cha,
+    SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey};
+    const MuonMDT_CablingMap* readCdo{*readHandle};
+    if(readCdo==nullptr){
+      ATH_MSG_ERROR("Null pointer to the read conditions object");
+      return StatusCode::FAILURE;
+    }
+    cab = readCdo->getOfflineId(subdetId, mrodId, csmId, tdc, cha,
 				  StationName, StationEta, StationPhi,
 				  MultiLayer, TubeLayer, Tube);
 
diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.h
index 23e78745c4254cdb3a2a5dd43cbf12d83de7b3d4..0eb69231efeac4c66414776d231913d8ccd586df 100755
--- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.h
+++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.h
@@ -16,7 +16,8 @@
 #include "MuonIdHelpers/MdtIdHelper.h"
 
 #include "MDT_Hid2RESrcID.h"
-#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h"
+#include "MuonCablingData/MuonMDT_CablingMap.h"
+#include "StoreGate/ReadCondHandleKey.h"
 
 #include <stdint.h>
 #include <map>
@@ -81,7 +82,7 @@ private:
 
         StoreGateSvc *m_EvtStore;
         MDT_Hid2RESrcID* m_hid2re;
-        MuonMDT_CablingSvc* m_cabling;
+	SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"};
 
         const MdtIdHelper* m_mdtIdHelper;
 
@@ -101,6 +102,7 @@ private:
         
 	//        bool    m_debug; //!< If true, output debugging information
         //MsgStream       m_log;
+	
 }; 
 
 /*
diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRdoToPrepDataTool.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRdoToPrepDataTool.cxx
index 695bafcc870771380db9fe7c219834737b3d393e..08e0993f4336913a2fad84469bb53d63aec03d65 100644
--- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRdoToPrepDataTool.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRdoToPrepDataTool.cxx
@@ -164,7 +164,7 @@ StatusCode Muon::MdtRdoToPrepDataTool::decode( const std::vector<uint32_t>& robI
 {    
   SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey};
   const MuonMDT_CablingMap* readCdo{*readHandle};
-  if(readCdo==0){
+  if(readCdo==nullptr){
     ATH_MSG_ERROR("Null pointer to the read conditions object");
     return StatusCode::FAILURE;
   }
diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/MuonAlignmentErrorDbAlg.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/MuonAlignmentErrorDbAlg.cxx
index 4c76add8d4e7da8be8792127b412db185228a0cd..cad8d2fe9e77d9858697f1f347e88cc0876a336f 100644
--- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/MuonAlignmentErrorDbAlg.cxx
+++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/src/MuonAlignmentErrorDbAlg.cxx
@@ -45,7 +45,7 @@ StatusCode MuonAlignmentErrorDbAlg::execute(){
   const CondAttrListCollection* readCdo{*readHandle}; 
   //const CondAttrListCollection* atrc(0);
   //readCdo = *readHandle;
-  if(readCdo==0){
+  if(readCdo==nullptr){
     ATH_MSG_ERROR("Null pointer to the read conditions object");
     return StatusCode::FAILURE; 
   } 
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecExample/share/MuonRec_myTopOptions.py b/MuonSpectrometer/MuonReconstruction/MuonRecExample/share/MuonRec_myTopOptions.py
index c436c80e7fa2238556cd9f1b4ce11f12016b399e..ce15d0f0ccc4fc70b9caa6cbb4e661c146876988 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecExample/share/MuonRec_myTopOptions.py
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecExample/share/MuonRec_myTopOptions.py
@@ -24,9 +24,9 @@ from MuonRecExample.MuonRecUtils import assertCastorStager,hasJobPropertyBeenSet
 #--------------------------------------------------------------------------------
 # Input
 #--------------------------------------------------------------------------------
-athenaCommonFlags.FilesInput = [
-"root://eosatlas//eos/atlas/atlasgroupdisk/det-muon/dq2/rucio/user/zhidong/14/a2/user.zhidong.12100112.EXT0._000001.RDO.pool.root"
-]
+if not 'InputRdoFile' in dir():
+    InputRdoFile="root://eosatlas//eos/atlas/atlasgroupdisk/det-muon/dq2/rucio/user/zhidong/14/a2/user.zhidong.12100112.EXT0._000001.RDO.pool.root"
+athenaCommonFlags.FilesInput = [InputRdoFile]
 
 if not hasJobPropertyBeenSet(athenaCommonFlags.FilesInput):
     athenaCommonFlags.FilesInput = MuonRecUtils.FileList.readDirectory("root://castoratlas//castor/cern.ch/atlas/atlascerngroupdisk/det-muon/ReferenceDatasets/Digitization/Zmumu_15616/")
diff --git a/PhysicsAnalysis/AnalysisCommon/ThinningUtils/CMakeLists.txt b/PhysicsAnalysis/AnalysisCommon/ThinningUtils/CMakeLists.txt
index 289ca2486b153dc0ac4b32eccf5be370a87481ff..8660502db86dd841eab1ac420fe6fa18feae746b 100644
--- a/PhysicsAnalysis/AnalysisCommon/ThinningUtils/CMakeLists.txt
+++ b/PhysicsAnalysis/AnalysisCommon/ThinningUtils/CMakeLists.txt
@@ -21,6 +21,7 @@ atlas_depends_on_subdirs(
    Control/AthLinks
    Control/AthenaBaseComps
    Control/AthenaKernel
+   Control/StoreGate
    Event/EventInfo
    Event/xAOD/xAODBase
    Event/xAOD/xAODCaloEvent
@@ -32,6 +33,7 @@ atlas_depends_on_subdirs(
    Event/xAOD/xAODTracking
    Event/xAOD/xAODTruth
    GaudiKernel
+   InnerDetector/InDetDetDescr/InDetReadoutGeometry
    PhysicsAnalysis/CommonTools/ExpressionEvaluation
    PhysicsAnalysis/DerivationFramework/DerivationFrameworkInterfaces
    Tracking/TrkTools/TrkToolInterfaces	
@@ -41,9 +43,9 @@ atlas_depends_on_subdirs(
 # Component(s) in the package:
 atlas_add_component(ThinningUtils
    src/*.h src/*.cxx src/components/*.cxx
-   LINK_LIBRARIES AthLinks AthenaBaseComps AthenaKernel EventInfo xAODBase
+   LINK_LIBRARIES AthLinks AthenaBaseComps AthenaKernel StoreGateLib SGtests EventInfo xAODBase
    xAODCaloEvent xAODEgamma xAODJet xAODMuon xAODParticleEvent xAODTau
-   xAODTracking xAODTruth GaudiKernel ExpressionEvaluationLib TrkToolInterfaces MCTruthClassifierLib ${extra_libs})
+   xAODTracking xAODTruth GaudiKernel InDetReadoutGeometry ExpressionEvaluationLib TrkToolInterfaces MCTruthClassifierLib ${extra_libs})
 
 # Install files from the package:
 atlas_install_python_modules( python/*.py )
diff --git a/PhysicsAnalysis/AnalysisCommon/ThinningUtils/src/ThinTrkTrackAlg.h b/PhysicsAnalysis/AnalysisCommon/ThinningUtils/src/ThinTrkTrackAlg.h
index 68e6bb28d27328913b73b5a461bc03f2c17e1fa3..38a8b47309ae893d2da1536fa8c54af0ed207abd 100644
--- a/PhysicsAnalysis/AnalysisCommon/ThinningUtils/src/ThinTrkTrackAlg.h
+++ b/PhysicsAnalysis/AnalysisCommon/ThinningUtils/src/ThinTrkTrackAlg.h
@@ -18,6 +18,9 @@
 #include "GaudiKernel/ServiceHandle.h"
 #include "AthenaBaseComps/AthAlgorithm.h"
 
+#include "InDetReadoutGeometry/SiDetectorElementCollection.h"
+#include "StoreGate/ReadCondHandleKey.h"
+
 class IThinningSvc;
 
 
@@ -46,6 +49,9 @@ public:
   
   /// Pointer to IThinningSvc
   ServiceHandle<IThinningSvc> m_thinningSvc;
+
+  // For P->T converters of ID tracks with SCT
+  SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"};
   
   /// Should the thinning run?
   bool m_doElectrons;
diff --git a/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrackBeamlineParametersAssociationTool.cxx b/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrackBeamlineParametersAssociationTool.cxx
index 08c889a7b07f780af93ca47bf1e527bd98b3add6..b687b91343efbec2c46e74b31ee56a68c34fe0da 100644
--- a/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrackBeamlineParametersAssociationTool.cxx
+++ b/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrackBeamlineParametersAssociationTool.cxx
@@ -58,7 +58,10 @@ StatusCode TrackBeamlineParametersAssociationTool::initialize()
 const Trk::TrackParameters*
 TrackBeamlineParametersAssociationTool::get (const Trk::Track& p)
 {
-  return m_trackToVertexTool->trackAtBeamline (p);
+  const InDet::BeamSpotData* bsd = m_trackToVertexTool->GetBeamSpotData (Gaudi::Hive::currentContext());
+  std::unique_ptr<Trk::StraightLineSurface> bl =
+    m_trackToVertexTool->GetBeamLine (bsd);
+  return m_trackToVertexTool->trackAtBeamline (p, bl.get());
 }
 
 
@@ -84,7 +87,10 @@ TrackBeamlineParametersAssociationTool::get (const Rec::TrackParticle& p)
 const Trk::TrackParameters*
 TrackBeamlineParametersAssociationTool::get (const Trk::TrackParameters& p)
 {
-  return m_trackToVertexTool->trackAtBeamline (p);
+  const InDet::BeamSpotData* bsd = m_trackToVertexTool->GetBeamSpotData (Gaudi::Hive::currentContext());
+  std::unique_ptr<Trk::StraightLineSurface> bl =
+    m_trackToVertexTool->GetBeamLine (bsd);
+  return m_trackToVertexTool->trackAtBeamline (p, bl.get());
 }
 
 
diff --git a/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrkTrackParametersAtBLFillerTool.cxx b/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrkTrackParametersAtBLFillerTool.cxx
index d2462efb61db23bc34fe2f9658c4f5333bffee10..266c60d86707d6156b836d7a395fa929aba8a145 100644
--- a/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrkTrackParametersAtBLFillerTool.cxx
+++ b/PhysicsAnalysis/D3PDMaker/InDetD3PDMaker/src/TrkTrackParametersAtBLFillerTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrkTrackParametersAtBLFillerTool.h"
@@ -80,7 +80,10 @@ StatusCode TrkTrackParametersAtBLFillerTool::fill (const Trk::Track& track)
   if(m_levelOfDetails > 0) {
 
     // call the TrackToVertex Tool
-    const Trk::TrackParameters* ataline =  m_trackToVertexTool->trackAtBeamline(track);
+    const InDet::BeamSpotData* bsd = m_trackToVertexTool->GetBeamSpotData (Gaudi::Hive::currentContext());
+    std::unique_ptr<Trk::StraightLineSurface> bl =
+      m_trackToVertexTool->GetBeamLine (bsd);
+    const Trk::TrackParameters* ataline =  m_trackToVertexTool->trackAtBeamline (track, bl.get());
 
     if(!ataline) {
 #if 0
diff --git a/Projects/AnalysisBase/externals.txt b/Projects/AnalysisBase/externals.txt
index 6606bd9192bbd906647112a70f6a9b4c0c11e57b..e3db318f82cf21bfd90e86989aa562202a6c2ef3 100644
--- a/Projects/AnalysisBase/externals.txt
+++ b/Projects/AnalysisBase/externals.txt
@@ -6,4 +6,4 @@
 # forbidden.
 
 # The version of atlas/atlasexternals to use:
-AnalysisBaseExternalsVersion = 2.0.14
+AnalysisBaseExternalsVersion = 2.0.15
diff --git a/Projects/AnalysisTop/externals.txt b/Projects/AnalysisTop/externals.txt
index 03ba6df37fbc626928a74fa4b03b7aaff21b19fe..7c485ccfa2a0fb14784ed93e0ddf62bd11a7afa4 100644
--- a/Projects/AnalysisTop/externals.txt
+++ b/Projects/AnalysisTop/externals.txt
@@ -1,4 +1,4 @@
 # Versions of the various externals to build before starting the build of
 # this project, when doing a full stack nightly build.
 
-AnalysisBaseExternalsVersion = 2.0.14
+AnalysisBaseExternalsVersion = 2.0.15
diff --git a/Projects/AthDataQuality/externals.txt b/Projects/AthDataQuality/externals.txt
index dde172ddd330a9f93421309cff07bd019dca37b0..86af462a8ee5d9667bffc6b02ebe938fb0a769c6 100644
--- a/Projects/AthDataQuality/externals.txt
+++ b/Projects/AthDataQuality/externals.txt
@@ -5,4 +5,4 @@
 # an "origin/" prefix before it. For tags however this is explicitly
 # forbidden.
 
-AtlasExternalsVersion = 2.0.14
+AtlasExternalsVersion = 2.0.15
diff --git a/Projects/AthSimulation/externals.txt b/Projects/AthSimulation/externals.txt
index a2d52f47dd2b933ca0f4e37113f1d26640bab0f9..8327969a4ffe943a4f96c93c919bb788bf8f8261 100644
--- a/Projects/AthSimulation/externals.txt
+++ b/Projects/AthSimulation/externals.txt
@@ -6,7 +6,7 @@
 # forbidden.
 
 # The version of atlas/atlasexternals to use:
-AthSimulationExternalsVersion = 2.0.14
+AthSimulationExternalsVersion = 2.0.15
 
 # The version of atlas/Gaudi to use:
 GaudiVersion = v30r3.010
diff --git a/Projects/AthSimulation/package_filters.txt b/Projects/AthSimulation/package_filters.txt
index b3b5eaae3184ce761caf1fca986186cd693fa52d..246aa476f5a79d22b69eb0b56df4c92b40965888 100644
--- a/Projects/AthSimulation/package_filters.txt
+++ b/Projects/AthSimulation/package_filters.txt
@@ -160,6 +160,7 @@
 + Generators/HepMCWeightSvc
 + Generators/McEventSelector
 + Generators/TruthUtils
++ InnerDetector/InDetConditions/BeamSpotConditionsData
 + InnerDetector/InDetConditions/InDetBeamSpotService
 + InnerDetector/InDetConditions/InDetCondFolders
 + InnerDetector/InDetConditions/InDetCondServices
@@ -289,7 +290,6 @@
 + Simulation/ISF/ISF_Geant4/ISF_Geant4CommonServices
 + Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools
 + Simulation/ISF/ISF_Geant4/ISF_Geant4Event
-+ Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces
 + Simulation/ISF/ISF_Geant4/ISF_Geant4Services
 + Simulation/ISF/ISF_Geant4/ISF_Geant4Tools
 + Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces
diff --git a/Projects/Athena/externals.txt b/Projects/Athena/externals.txt
index 5ee8843dbcbabc3328b25060b2a068577f3d3f16..dd47da7d7be6b5231e2d795430cde6c81b250409 100644
--- a/Projects/Athena/externals.txt
+++ b/Projects/Athena/externals.txt
@@ -6,7 +6,7 @@
 # forbidden.
 
 # The version of atlas/atlasexternals to use:
-AthenaExternalsVersion = 2.0.14
+AthenaExternalsVersion = 2.0.15
 
 # The version of atlas/Gaudi to use: 
 GaudiVersion = v30r3.010
diff --git a/Projects/Athena/package_filters.txt b/Projects/Athena/package_filters.txt
index 7a215be62a2e3a813965b328554f68c25a70289d..29113e4a08ae33f9604ccf7409092c6adec01f17 100644
--- a/Projects/Athena/package_filters.txt
+++ b/Projects/Athena/package_filters.txt
@@ -13,10 +13,7 @@
 #+ HLT/Trigger/TrigTransforms/TrigTransform
 #- HLT/.*
 #- Trigger/TrigValidation/TrigP1Test
-- HLT/HLTTestApps
 - HLT/HLToks
-- Trigger/ALP
-- Event/DFStreamEventSelector
 
 # Offload service has build problems
 - Offloading/.*
@@ -65,3 +62,6 @@
 # Huge D3PD librarys not really useful any more
 - PhysicsAnalysis/D3PDMaker/InDetD3PDMaker
 - PhysicsAnalysis/D3PDMaker/CaloD3PDMaker
+
+# Don't build PerfMonVTune which has external Intel tool dependency
+- Control/PerformanceMonitoring/PerfMonVTune
diff --git a/Reconstruction/Jet/JetCalibTools/Root/JMSCorrection.cxx b/Reconstruction/Jet/JetCalibTools/Root/JMSCorrection.cxx
index 0bd908f0ca65c8eda831205c161083d92768cb07..5ec72f9664b5e8ce4d95c5983cdb1cb75f313737 100644
--- a/Reconstruction/Jet/JetCalibTools/Root/JMSCorrection.cxx
+++ b/Reconstruction/Jet/JetCalibTools/Root/JMSCorrection.cxx
@@ -587,8 +587,6 @@ StatusCode JMSCorrection::calibrateImpl(xAOD::Jet& jet, JetEventInfo&) const {
   xAOD::JetFourMom_t calibP4 = jet.jetP4();
 
   // For combination
-  float mass_calo;   // saving calibrated calo mass
-  double pT_calo; // saving pT corrected by calo mass calib
   float mass_ta;     // saving calibrated trk-assisted mass
 
   float mass_corr = jetStartP4.mass();
diff --git a/Reconstruction/Jet/JetRec/python/JetRecCalibrationFinder.py b/Reconstruction/Jet/JetRec/python/JetRecCalibrationFinder.py
index a1edf9dfff2677b513e6aa2e9a4506eefd988cb9..17b1bfbb902d09e95f4ae72c2378681229501367 100644
--- a/Reconstruction/Jet/JetRec/python/JetRecCalibrationFinder.py
+++ b/Reconstruction/Jet/JetRec/python/JetRecCalibrationFinder.py
@@ -54,7 +54,7 @@ class JetRecCalibrationFinder:
     "pflow"           : "JES_MC15cRecommendation_PFlow_Aug2016_rel21.config"
   }
 
-  def find(self, alg, rad, inpin, seq, configkeyin, evsprefix):
+  def find(self, alg, rad, inpin, seq, configkeyin, evsprefix, calibareatag="00-04-77"):
     from JetCalibTools.JetCalibToolsConf import JetCalibrationTool
     from JetRec.JetRecStandardToolManager import jtm
     inp = inpin
@@ -117,7 +117,8 @@ class JetRecCalibrationFinder:
       evskey = evsprefix + evssuf
       jetlog.info( myname + "  Event shape key: " + evskey )
       # ...create the tool.
-      jtm += JetCalibrationTool(tname, JetCollection=jetdefn, ConfigFile=configfile, CalibSequence=fullseq, RhoKey=evskey)
+      jtm += JetCalibrationTool(tname, JetCollection=jetdefn, ConfigFile=configfile, CalibSequence=fullseq, RhoKey=evskey,
+                                CalibArea=calibareatag)
 
     return jtm.tools[tname]
 
diff --git a/Reconstruction/MuonIdentification/MuonCombinedRecExample/share/MuonCombinedRec_myTopOptions.py b/Reconstruction/MuonIdentification/MuonCombinedRecExample/share/MuonCombinedRec_myTopOptions.py
index 4a3cd606c4c927e4f992590e0f69bbff17c39692..127c0386c320c70219320d682519d7f80a7e5a5a 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedRecExample/share/MuonCombinedRec_myTopOptions.py
+++ b/Reconstruction/MuonIdentification/MuonCombinedRecExample/share/MuonCombinedRec_myTopOptions.py
@@ -309,8 +309,8 @@ athenaCommonFlags.SkipEvents = 0
 # Output setup
 #--------------------------------------------------------------------------------
 #recFlags.doTruth=False
-rec.doWriteESD = False
-rec.doWriteAOD = False
+rec.doWriteESD = True
+rec.doWriteAOD = True
 
 
 ##### no more flags after this line #####
diff --git a/Reconstruction/RecoTools/ITrackToVertex/ITrackToVertex/ITrackToVertex.h b/Reconstruction/RecoTools/ITrackToVertex/ITrackToVertex/ITrackToVertex.h
index ddebe80de75bd799e26d6e938e17238bb6b28ebd..15c890bc05acc6127fbb6676c8b745d84094d79a 100755
--- a/Reconstruction/RecoTools/ITrackToVertex/ITrackToVertex/ITrackToVertex.h
+++ b/Reconstruction/RecoTools/ITrackToVertex/ITrackToVertex/ITrackToVertex.h
@@ -22,6 +22,11 @@ namespace Rec {
  
 namespace Trk {
  class Track;
+ class StraightLineSurface;
+}
+
+namespace InDet{
+ class BeamSpotData;
 }
 
 namespace Reco {
@@ -47,6 +52,11 @@ namespace Reco {
 
        /** AlgTool interface methods */
        static const InterfaceID& interfaceID() { return IID_ITrackToVertex; };
+
+      /** Use this for MT Coding */
+       virtual std::unique_ptr<Trk::StraightLineSurface> GetBeamLine(const InDet::BeamSpotData*) const = 0; //In C++17 make this [[nodiscard]]
+
+       virtual const InDet::BeamSpotData* GetBeamSpotData(const EventContext &ctx) const = 0; //In C++17 make this [[nodiscard]]
       
        /** Interface method for use with TrackParticle and given vertex position - AOD */
        virtual const Trk::Perigee* perigeeAtVertex(const Rec::TrackParticle& tp, const Amg::Vector3D& gp) const = 0;
@@ -64,28 +74,28 @@ namespace Reco {
        virtual const Trk::Perigee* perigeeAtVertex(const Trk::Track& trk, const Amg::Vector3D& gp) const = 0;
 
        /** Interface method for use with TrackParticle and the beamspot from the BeamSpotSvc - AOD*/
-       virtual const Trk::Perigee* perigeeAtBeamspot(const Rec::TrackParticle& tp) const = 0;
+       virtual const Trk::Perigee* perigeeAtBeamspot(const Rec::TrackParticle& tp, const InDet::BeamSpotData*) const = 0;
                                                           
        /** Interface method for use with TrackParticle and the beamspot from the BeamSpotSvc - xAOD*/
-       virtual const Trk::Perigee* perigeeAtBeamspot(const xAOD::TrackParticle& tp) const = 0;
+       virtual const Trk::Perigee* perigeeAtBeamspot(const xAOD::TrackParticle& tp, const InDet::BeamSpotData*) const = 0;
           
        /** Interface method for use with Track and the beamspot from the BeamSpotSvc - ESD */
-       virtual const Trk::Perigee* perigeeAtBeamspot(const Trk::Track& trk) const = 0;   
+       virtual const Trk::Perigee* perigeeAtBeamspot(const Trk::Track& trk, const InDet::BeamSpotData*) const = 0;
 
        /** Interface method for use with Track and the beamline from the BeamSpotSvc - ESD */
-       virtual const Trk::Perigee* perigeeAtBeamline(const Trk::Track& trk) const = 0;   
+       virtual const Trk::Perigee* perigeeAtBeamline(const Trk::Track& trk, const InDet::BeamSpotData*) const = 0;
                                                    
        /** Interface method for use with TrackParticle and the beamline from the BeamSpotSvc - AOD*/
        virtual const Trk::TrackParameters* trackAtBeamline(const Rec::TrackParticle& tp) const = 0;
           
        /** Interface method for use with TrackParticle and the beamline from the BeamSpotSvc - xAOD*/
-       virtual const Trk::TrackParameters* trackAtBeamline(const xAOD::TrackParticle& tp) const = 0;
+       virtual const Trk::TrackParameters* trackAtBeamline(const xAOD::TrackParticle& tp, const InDet::BeamSpotData*) const = 0;
                  
        /** Interface method for use with Track and the beamline from the BeamSpotSvc - ESD */
-       virtual const Trk::TrackParameters* trackAtBeamline(const Trk::Track& trk) const = 0;                                                     
+       virtual const Trk::TrackParameters* trackAtBeamline(const Trk::Track& trk, const Trk::StraightLineSurface*) const = 0;
 
        /** Interface method for use with Track and the beamline from the BeamSpotSvc - TrackParameters  */
-       virtual const Trk::TrackParameters* trackAtBeamline(const Trk::TrackParameters& tpars) const = 0;
+       virtual const Trk::TrackParameters* trackAtBeamline(const Trk::TrackParameters& tpars, const Trk::StraightLineSurface* ) const = 0;
   };
 
 } 
diff --git a/Reconstruction/RecoTools/TrackToVertex/CMakeLists.txt b/Reconstruction/RecoTools/TrackToVertex/CMakeLists.txt
index 8331d53dff72f5f4e4bfa5d8600f51c8cc1c7faa..8dea0f4278dd6220f8447e26d03f9da9e73b47d8 100644
--- a/Reconstruction/RecoTools/TrackToVertex/CMakeLists.txt
+++ b/Reconstruction/RecoTools/TrackToVertex/CMakeLists.txt
@@ -13,6 +13,7 @@ atlas_depends_on_subdirs( PUBLIC
                           GaudiKernel
                           Reconstruction/RecoTools/ITrackToVertex
                           Tracking/TrkEvent/TrkNeutralParameters
+                          InnerDetector/InDetConditions/BeamSpotConditionsData
                           PRIVATE
                           Control/StoreGate
                           InnerDetector/InDetConditions/InDetBeamSpotService
diff --git a/Reconstruction/RecoTools/TrackToVertex/TrackToVertex/TrackToVertex.h b/Reconstruction/RecoTools/TrackToVertex/TrackToVertex/TrackToVertex.h
index 17f765046e230ac66d1f463a6fa8f40339bcd546..53a2313c005c3e7c01c7317223cebb248644c8e1 100755
--- a/Reconstruction/RecoTools/TrackToVertex/TrackToVertex/TrackToVertex.h
+++ b/Reconstruction/RecoTools/TrackToVertex/TrackToVertex/TrackToVertex.h
@@ -13,15 +13,11 @@
 // Gaudi
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ToolHandle.h"
-#include "GaudiKernel/ServiceHandle.h"
 // Trk
 #include "ITrackToVertex/ITrackToVertex.h"
-#include "GaudiKernel/IIncidentListener.h"
 #include "TrkParameters/TrackParameters.h"
 #include "GeoPrimitives/GeoPrimitives.h"
-
-class IBeamCondSvc;
-class IIncidentSvc;
+#include "BeamSpotConditionsData/BeamSpotData.h"
 
 namespace Rec {
   class TrackParticle;
@@ -32,7 +28,7 @@ namespace Trk {
   class IExtrapolator;
   class StraightLineSurface;
 }
-    
+
   /** @class TrackToVertex
     
      Standard Tool to extrapolate Track/TrackParticleBase to Vertex
@@ -44,8 +40,8 @@ namespace Trk {
     
 namespace Reco {
                         
-  class TrackToVertex : virtual public ITrackToVertex, 
-        public AthAlgTool, virtual public IIncidentListener 
+  class TrackToVertex : virtual public ITrackToVertex,
+        public AthAlgTool
   {
     public:
            
@@ -56,60 +52,61 @@ namespace Reco {
       virtual ~TrackToVertex();
        
       /** AlgTool initailize method.*/
-      StatusCode initialize();
+      virtual StatusCode initialize() override;
       /** AlgTool finalize method */
-      StatusCode finalize();
+      virtual StatusCode finalize()   override;
                   
-      /** handle for incident service */
-      void handle(const Incident& inc) ;
+      /** Use this for MT Coding */
+      virtual std::unique_ptr<Trk::StraightLineSurface> GetBeamLine(const InDet::BeamSpotData*) const override; //In C++17 make this [[nodiscard]]
+
+      virtual const InDet::BeamSpotData* GetBeamSpotData(const EventContext &ctx) const override; //In C++17 make this [[nodiscard]]
 
       /** Interface method for use with TrackParticle and given vertex position - AOD */
-      const Trk::Perigee* perigeeAtVertex(const Rec::TrackParticle& tp, const Amg::Vector3D& gp) const;
+      virtual const Trk::Perigee* perigeeAtVertex(const Rec::TrackParticle& tp, const Amg::Vector3D& gp) const override;
 
       /** Interface method for use with xAOD::Trackparticle and given vertex position - xAOD */
-      const Trk::Perigee* perigeeAtVertex(const xAOD::TrackParticle& tp, const Amg::Vector3D& gp) const;
+      virtual const Trk::Perigee* perigeeAtVertex(const xAOD::TrackParticle& tp, const Amg::Vector3D& gp) const override;
             
       /** Interface method for use with TrackParticle and default primary vertex from TrackParticle  - AOD */
-      const Trk::Perigee* perigeeAtVertex(const Rec::TrackParticle& tp) const;
+      virtual const Trk::Perigee* perigeeAtVertex(const Rec::TrackParticle& tp) const override;
           
       /** Interface method for use with TrackParticle and default primary vertex from TrackParticle  - xAOD */
-      const Trk::Perigee* perigeeAtVertex(const xAOD::TrackParticle& tp) const;          
+      virtual const Trk::Perigee* perigeeAtVertex(const xAOD::TrackParticle& tp) const override;          
           
       /** Interface method for use with Track and given vertex position - ESD */
-      const Trk::Perigee* perigeeAtVertex(const Trk::Track& trk, const Amg::Vector3D& gp) const;
+      virtual const Trk::Perigee* perigeeAtVertex(const Trk::Track& trk, const Amg::Vector3D& gp) const override;
                                              
       /** Interface method for use with TrackParticle and the beamspot from the BeamSpotSvc - AOD*/
-      const Trk::Perigee* perigeeAtBeamspot(const Rec::TrackParticle& tp) const;
+      virtual const Trk::Perigee* perigeeAtBeamspot(const Rec::TrackParticle& tp, const InDet::BeamSpotData*) const override;
       
       /** Interface method for use with TrackParticle and the beamspot from the BeamSpotSvc - xAOD*/
-      const Trk::Perigee* perigeeAtBeamspot(const xAOD::TrackParticle& tp) const;
+      virtual const Trk::Perigee* perigeeAtBeamspot(const xAOD::TrackParticle& tp, const InDet::BeamSpotData*) const override;
           
       /** Interface method for use with Track and the beamspot from the BeamSpotSvc - ESD */
-      const Trk::Perigee* perigeeAtBeamspot(const Trk::Track& trk) const;   
+      virtual const Trk::Perigee* perigeeAtBeamspot(const Trk::Track& trk, const InDet::BeamSpotData*) const override;   
 
       /** Interface method for use with Track and the beamline from the BeamSpotSvc - ESD */
-      const Trk::Perigee* perigeeAtBeamline(const Trk::Track& trk) const;   
+      virtual const Trk::Perigee* perigeeAtBeamline(const Trk::Track& trk, const InDet::BeamSpotData*) const override;   
       
       /** Interface method for use with TrackParticle and the beamline from the BeamSpotSvc - AOD*/
-      const Trk::TrackParameters* trackAtBeamline(const Rec::TrackParticle& tp) const;
+      virtual const Trk::TrackParameters* trackAtBeamline(const Rec::TrackParticle& tp) const override;
       
       /** Interface method for use with TrackParticle and the beamline from the BeamSpotSvc - xAOD*/
-      const Trk::TrackParameters* trackAtBeamline(const xAOD::TrackParticle& tp) const;
+      virtual const Trk::TrackParameters* trackAtBeamline(const xAOD::TrackParticle& tp, const InDet::BeamSpotData*) const override;
           
       /** Interface method for use with Track and the beamline from the BeamSpotSvc - ESD */
-      const Trk::TrackParameters* trackAtBeamline(const Trk::Track& trk) const;      
+      virtual const Trk::TrackParameters* trackAtBeamline(const Trk::Track& trk, const Trk::StraightLineSurface* beamline) const override;
       
       /** Interface method for use with Track and the beamline from the BeamSpotSvc - TrackParameters  */
-      const Trk::TrackParameters* trackAtBeamline(const Trk::TrackParameters& tpars) const;      
-                                             
+      virtual const Trk::TrackParameters* trackAtBeamline(const Trk::TrackParameters& tpars, const Trk::StraightLineSurface* beamline) const override;
+
+
    private:
      ToolHandle< Trk::IExtrapolator > m_extrapolator;            //!< ToolHandle for Extrapolator
-     ServiceHandle<IBeamCondSvc>      m_beamConditionsService;   //!< SurfaceHandle for conditions services
-     ServiceHandle<IIncidentSvc>      m_incidentSvc;            //!< IncidentSvc to catch begin of event and end of envent
-     
-     Trk::StraightLineSurface*        m_beamLine;
-     
-     static Amg::Vector3D             s_origin;                  //!< static origin             
+
+     SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
+     bool m_ForceBeamSpotZero = false;
+     const static Amg::Vector3D       s_origin;                  //!< static origin
   };
 
 } // end of namespace
diff --git a/Reconstruction/RecoTools/TrackToVertex/src/TrackToVertex.cxx b/Reconstruction/RecoTools/TrackToVertex/src/TrackToVertex.cxx
index 7808b24a4c7eabc16693b0e0b1594f699d80f946..5b677b886ea54045c559f8546094cfe95b61a96f 100755
--- a/Reconstruction/RecoTools/TrackToVertex/src/TrackToVertex.cxx
+++ b/Reconstruction/RecoTools/TrackToVertex/src/TrackToVertex.cxx
@@ -20,33 +20,24 @@
 #include "TrkTrack/Track.h"
 #include "VxVertex/VxCandidate.h"
 #include "VxVertex/RecVertex.h"
-// Beam condition services
-#include "InDetBeamSpotService/IBeamCondSvc.h"
-// CLHEP
-//#include "CLHEP/Units/SystemOfUnits.h"
 
 
-
-Amg::Vector3D Reco::TrackToVertex::s_origin(0.,0.,0.);
+const Amg::Vector3D Reco::TrackToVertex::s_origin(0.,0.,0.);
 
 // constructor
 Reco::TrackToVertex::TrackToVertex(const std::string& t, const std::string& n, const IInterface* p) :
   AthAlgTool(t,n,p),
-  m_extrapolator("Trk::Extrapolator/AtlasExtrapolator"),
-  m_beamConditionsService("BeamCondSvc", n),
-  m_incidentSvc("IncidentSvc", n),
-  m_beamLine(0)
+  m_extrapolator("Trk::Extrapolator/AtlasExtrapolator")
 {
    declareInterface<ITrackToVertex>(this);
    // the extrapolatr and the BeamCondSvc 
    declareProperty("Extrapolator", m_extrapolator);
-   declareProperty("BeamConditionsSvc", m_beamConditionsService);      
+   declareProperty("ForceBeamSpotZero", m_ForceBeamSpotZero);
 }
 
 // destructor
 Reco::TrackToVertex::~TrackToVertex()
 {
-    delete m_beamLine;
 }
 
 
@@ -61,43 +52,34 @@ StatusCode Reco::TrackToVertex::initialize()
       ATH_MSG_WARNING( "Failed to retrieve tool " << m_extrapolator << " - extrapolations will not be performed." );
     } else 
       ATH_MSG_INFO( "Retrieved tool " << m_extrapolator);
-
-    if ( m_beamConditionsService.retrieve().isFailure() )
-      ATH_MSG_WARNING( "Failed to retrieve service " << m_beamConditionsService << " - extrapolations will be performed to (0,0,0)." );
-     else 
-       ATH_MSG_INFO( "Retrieved service  " << m_beamConditionsService);
-
-
-  if (m_incidentSvc.retrieve().isFailure()){
-      ATH_MSG_WARNING("Can not retrieve " << m_incidentSvc << ". Exiting.");
-      return StatusCode::FAILURE;
-  }
-    // register to the incident service: BeginEvent needed for memory cleanup
-    m_incidentSvc->addListener( this, IncidentType::BeginEvent);
-
-    ATH_MSG_INFO( name() << " initialize() successful");
+    if(!m_ForceBeamSpotZero){
+      ATH_CHECK(m_beamSpotKey.initialize());
+    }else{
+//      m_beamSpotKey = "";
+    }
+    ATH_MSG_DEBUG( name() << " initialize() successful");
     return StatusCode::SUCCESS;
 }
 
+const InDet::BeamSpotData* Reco::TrackToVertex::GetBeamSpotData(const EventContext &ctx) const {
+   SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey, ctx };
+   return beamSpotHandle.isValid() ? beamSpotHandle.retrieve() : nullptr;
+}
+
 // incident listener waiting for BeginEvent
-void Reco::TrackToVertex::handle(const Incident& inc) {
-    
-     if ( inc.type() == IncidentType::BeginEvent){
-         ATH_MSG_VERBOSE("'BeginEvent' incident caught. Refreshing Cache.");
-         delete m_beamLine; m_beamLine = 0;
-         // get the transform
-	 Amg::Transform3D* beamTransform = new Amg::Transform3D(Amg::AngleAxis3D(m_beamConditionsService->beamTilt(0),Amg::Vector3D(0.,1.,0.)));
-	 (*beamTransform) *= Amg::AngleAxis3D(m_beamConditionsService->beamTilt(1),Amg::Vector3D(1.,0.,0.));
-	 beamTransform->pretranslate(m_beamConditionsService->beamPos());
-         // create the new beam line
-         m_beamLine = new Trk::StraightLineSurface(beamTransform);
-     }     
+std::unique_ptr<Trk::StraightLineSurface> Reco::TrackToVertex::GetBeamLine(const InDet::BeamSpotData* beamSpotHandle) const {
+    // get the transform
+    Amg::Transform3D* beamTransform = new Amg::Transform3D(Amg::AngleAxis3D(beamSpotHandle->beamTilt(0),Amg::Vector3D(0.,1.,0.)));
+    (*beamTransform) *= Amg::AngleAxis3D(beamSpotHandle->beamTilt(1),Amg::Vector3D(1.,0.,0.));
+    beamTransform->pretranslate(beamSpotHandle->beamPos());
+    // create the new beam line
+    return std::make_unique< Trk::StraightLineSurface >(beamTransform);
 }
 
 // finalize
 StatusCode Reco::TrackToVertex::finalize()
 {
-    ATH_MSG_INFO( name() << " finalize() successful");
+    ATH_MSG_DEBUG( name() << " finalize() successful");
     return StatusCode::SUCCESS;
 }
 
@@ -180,43 +162,34 @@ const Trk::Perigee* Reco::TrackToVertex::perigeeAtVertex(const Trk::Track& track
 }
 
 
-const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamspot(const Rec::TrackParticle& tp) const
+const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamspot(const Rec::TrackParticle& tp, const InDet::BeamSpotData* beamspot) const
 {  
-  Amg::Vector3D beamspot(s_origin);   
-  if (!m_beamConditionsService.empty()) 
-     beamspot = Amg::Vector3D(m_beamConditionsService->beamVtx().position());
-  return perigeeAtVertex(tp,beamspot);
+  return perigeeAtVertex(tp, beamspot ? beamspot->beamVtx().position() : s_origin);
 }
 
 
-const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamspot(const xAOD::TrackParticle& tp) const
+const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamspot(const xAOD::TrackParticle& tp, const InDet::BeamSpotData* beamspot) const
 {  
-  Amg::Vector3D beamspot(s_origin);   
-  if (!m_beamConditionsService.empty()) 
-     beamspot = Amg::Vector3D(m_beamConditionsService->beamVtx().position());
-  return perigeeAtVertex(tp,beamspot);
+  return perigeeAtVertex(tp, beamspot ? beamspot->beamVtx().position() : s_origin);
 }
 
 
-const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamspot(const Trk::Track& track) const
+const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamspot(const Trk::Track& track, const InDet::BeamSpotData* beamspot) const
 {
-  Amg::Vector3D beamspot(s_origin);   
-  if (!m_beamConditionsService.empty()) 
-     beamspot = Amg::Vector3D(m_beamConditionsService->beamVtx().position());
-  return perigeeAtVertex(track,beamspot);
+  return perigeeAtVertex(track, beamspot ? beamspot->beamVtx().position() : s_origin);
 }
 
 
-const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamline(const Trk::Track& track) const
+const Trk::Perigee* Reco::TrackToVertex::perigeeAtBeamline(const Trk::Track& track, const InDet::BeamSpotData* beamspotptr) const
 {
   
   Amg::Vector3D beamspot(s_origin); 
   float tiltx = 0.0;
   float tilty = 0.0;
-  if (!m_beamConditionsService.empty()) {
-    beamspot = Amg::Vector3D(m_beamConditionsService->beamVtx().position());
-    tiltx =  m_beamConditionsService->beamTilt(0);
-    tilty =  m_beamConditionsService->beamTilt(1);
+  if (beamspotptr) {
+    beamspot = Amg::Vector3D(beamspotptr->beamVtx().position());
+    tiltx =  beamspotptr->beamTilt(0);
+    tilty =  beamspotptr->beamTilt(1);
   }
   Amg::Transform3D * amgTransf = new Amg::Transform3D();
   Amg::Translation3D amgtranslation(beamspot);
@@ -263,16 +236,17 @@ const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const Rec::Trac
   //return m_extrapolator->extrapolate(tp, *m_beamLine);
 }
  
-const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const xAOD::TrackParticle& tp) const
+const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const xAOD::TrackParticle& tp,
+                const InDet::BeamSpotData* beamspotptr) const
 {
  
   Amg::Vector3D beamspot(s_origin); 
   float tiltx = 0.0;
   float tilty = 0.0;
-  if (!m_beamConditionsService.empty()) {
-    beamspot = Amg::Vector3D(m_beamConditionsService->beamVtx().position());
-    tiltx =  m_beamConditionsService->beamTilt(0);
-    tilty =  m_beamConditionsService->beamTilt(1);
+  if (beamspotptr) {
+    beamspot = Amg::Vector3D(beamspotptr->beamVtx().position());
+    tiltx =  beamspotptr->beamTilt(0);
+    tilty =  beamspotptr->beamTilt(1);
   }
   Amg::Transform3D * amgTransf = new Amg::Transform3D();
   Amg::Translation3D amgtranslation(beamspot);
@@ -297,15 +271,17 @@ const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const xAOD::Tra
   return vertexPerigee;
 
 }
-          
-const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const Trk::Track& trk) const
+
+const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const Trk::Track& trk,
+                                const Trk::StraightLineSurface* beamline) const
 {
-  return m_extrapolator->extrapolate(trk, *m_beamLine);
+  return m_extrapolator->extrapolate(trk, *beamline);
 }
 
-const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const Trk::TrackParameters& tpars) const
+const Trk::TrackParameters* Reco::TrackToVertex::trackAtBeamline(const Trk::TrackParameters& tpars,
+                                const Trk::StraightLineSurface* beamline) const
 {
-  return m_extrapolator->extrapolate(tpars,*m_beamLine);
+  return m_extrapolator->extrapolate(tpars, *beamline);
 }
 
 
diff --git a/Reconstruction/eflowRec/eflowRec/PFMomentCalculatorTool.h b/Reconstruction/eflowRec/eflowRec/PFMomentCalculatorTool.h
index b80589e4319aa775959886797c8bf63d1e4e2eea..c1a7974bb1d8d2c7c8549d1f259552aecb024302 100644
--- a/Reconstruction/eflowRec/eflowRec/PFMomentCalculatorTool.h
+++ b/Reconstruction/eflowRec/eflowRec/PFMomentCalculatorTool.h
@@ -37,9 +37,15 @@ class PFMomentCalculatorTool : public extends<AthAlgTool, IPFBaseTool> {
   /** Tool to calculate cluster moments */
   ToolHandle<CaloClusterCollectionProcessor> m_clusterMomentsMaker{this,"CaloClusterMomentsMaker","CaloClusterMomentsMaker","Tool to calculate cluster moments"};
 
+  /** Tool to calculate calibration hit truth cluster moments */
+  ToolHandle<CaloClusterCollectionProcessor> m_clusterCalibHitMomentsMaker2{this,"CaloCalibClusterMomentsMaker2","CaloCalibClusterMomentsMaker2","Tool to calculate calibration hit cluster moments"};
+
   /** Toggle whether we are in LC mode - false by default */
   Gaudi::Property<bool> m_LCMode{this,"LCMode",false,"Toggle whether we are in LC mode - false by default"};
 
+  /** Toggle usage of calibration hit truth - false by default */
+  Gaudi::Property<bool> m_useCalibHitTruth{this,"UseCalibHitTruth",false,"Toggle usage of calibration hit truth - false by default"};\
+
 };
 
 #endif
diff --git a/Reconstruction/eflowRec/eflowRec/PFONeutralCreatorAlgorithm.h b/Reconstruction/eflowRec/eflowRec/PFONeutralCreatorAlgorithm.h
index d9b96de5c322a64e5f8f6501fb502c578f8db652..c242cafb43e00ed6f1ba72b16e7822d358fcb369 100644
--- a/Reconstruction/eflowRec/eflowRec/PFONeutralCreatorAlgorithm.h
+++ b/Reconstruction/eflowRec/eflowRec/PFONeutralCreatorAlgorithm.h
@@ -38,6 +38,9 @@ private:
   /** Bool to toggle which jetetmiss configuration we are in - EM cluster input or LC cluster input */
   Gaudi::Property<bool> m_LCMode{this,"LCMode",false,"Bool to toggle which jetetmiss configuration we are in - EM cluster input or LC cluster input"};
 
+  /** Toggle usage of calibration hit truth - false by default */
+  Gaudi::Property<bool> m_useCalibHitTruth{this,"UseCalibHitTruth",false,"Toggle usage of calibration hit truth - false by default"};
+
   /** ReadHandleKey for eflowCaloObjectContainer */
   SG::ReadHandleKey<eflowCaloObjectContainer> m_eflowCaloObjectContainerReadHandleKey{this,"eflowCaloObjectContainerName","eflowCaloObjects","ReadHandleKey for eflowCaloObjectContainer"};
   
diff --git a/Reconstruction/eflowRec/python/eflowRecFlags.py b/Reconstruction/eflowRec/python/eflowRecFlags.py
index 02b2f603d80f61237341f0f6f895e58c5137c465..3ba8ad0477cb64eda176c830a9ede7b1edf6b1b5 100644
--- a/Reconstruction/eflowRec/python/eflowRecFlags.py
+++ b/Reconstruction/eflowRec/python/eflowRecFlags.py
@@ -106,6 +106,13 @@ class useAODReductionClusterMomentList(JobProperty):
     statusOn = True
     allowedTypes = ['bool']
     StoredValue = True
+
+class useCalibHitTruth(JobProperty):
+    """ Flag to toggle use of calibration hit truth, which is off by default because most Monte Carlo samples do not contain the calibration hit truth information
+    """
+    statusOn = True
+    allowedTypes = ['bool']
+    StoredValue = False
     
 # Defines the container for the eflowRec flags
 
@@ -117,7 +124,7 @@ class eflowRecFlags(JobPropertyContainer):
 # add the flags container to the top container 
 jobproperties.add_Container(eflowRecFlags)
 
-eflowJobProperties = [eflowAlgType,CalType,useLocalHadWeightsOOCC,useOverLapShowerCells,useSplitShowers,useEEtaFirstInt,recoverIsolatedTracks,UseElectronHadronID,runTauMode, useLeptons,storeLeptonCells, useLCInput, useUpdated2015ChargedShowerSubtraction,useAODReductionClusterMomentList]
+eflowJobProperties = [eflowAlgType,CalType,useLocalHadWeightsOOCC,useOverLapShowerCells,useSplitShowers,useEEtaFirstInt,recoverIsolatedTracks,UseElectronHadronID,runTauMode, useLeptons,storeLeptonCells, useLCInput, useUpdated2015ChargedShowerSubtraction,useAODReductionClusterMomentList,useCalibHitTruth]
 
 for i in eflowJobProperties :
     jobproperties.eflowRecFlags.add_JobProperty(i)
diff --git a/Reconstruction/eflowRec/share/PFlowMTConfig.py b/Reconstruction/eflowRec/share/PFlowMTConfig.py
index d66a7a19d599e328a984d3ec084fb465ba6ef962..3df674de3d76a4e195fda9e110fe7e9d3cf390b0 100644
--- a/Reconstruction/eflowRec/share/PFlowMTConfig.py
+++ b/Reconstruction/eflowRec/share/PFlowMTConfig.py
@@ -149,6 +149,44 @@ PFClusterMomentsMaker.MomentsNames = [
 
 PFMomentCalculatorTool.CaloClusterMomentsMaker = PFClusterMomentsMaker
 
+
+from eflowRec.eflowRecFlags import jobproperties
+
+if jobproperties.eflowRecFlags.useCalibHitTruth:
+
+   PFMomentCalculatorTool.UseCalibHitTruth=True
+
+   from CaloCalibHitRec.CaloCalibHitRecConf import CaloCalibClusterMomentsMaker2
+   PFCalibClusterMomentsMaker = CaloCalibClusterMomentsMaker2("PFCalibClusterMomentsMaker")
+   PFCalibClusterMomentsMaker.MomentsNames = ["ENG_CALIB_TOT"
+                                              ,"ENG_CALIB_OUT_L"
+                                              ,"ENG_CALIB_EMB0"
+                                              ,"ENG_CALIB_EME0"
+                                              ,"ENG_CALIB_TILEG3"
+                                              ,"ENG_CALIB_DEAD_TOT"
+                                              ,"ENG_CALIB_DEAD_EMB0"
+                                              ,"ENG_CALIB_DEAD_TILE0"
+                                              ,"ENG_CALIB_DEAD_TILEG3"
+                                              ,"ENG_CALIB_DEAD_EME0"
+                                              ,"ENG_CALIB_DEAD_HEC0"
+                                              ,"ENG_CALIB_DEAD_FCAL"
+                                              ,"ENG_CALIB_DEAD_LEAKAGE"
+                                              ,"ENG_CALIB_DEAD_UNCLASS"
+                                              ,"ENG_CALIB_FRAC_EM"
+                                              ,"ENG_CALIB_FRAC_HAD"
+                                              ,"ENG_CALIB_FRAC_REST"]
+
+   PFCalibClusterMomentsMaker.CalibrationHitContainerNames = ["LArCalibrationHitInactive"
+                                                              ,"LArCalibrationHitActive"
+                                                              ,"TileCalibHitActiveCell"
+                                                              ,"TileCalibHitInactiveCell"]
+   PFCalibClusterMomentsMaker.DMCalibrationHitContainerNames = ["LArCalibrationHitDeadMaterial"
+                                                                ,"TileCalibHitDeadMaterial"]
+
+   PFMomentCalculatorTool.CaloCalibClusterMomentsMaker2=PFCalibClusterMomentsMaker
+
+   
+                                           
 from eflowRec.eflowRecConf import PFClusterCollectionTool
 PFClusterCollectionTool_default = PFClusterCollectionTool("PFClusterCollectionTool")
 
@@ -191,5 +229,7 @@ topSequence += PFOChargedCreatorAlgorithm
 
 from eflowRec.eflowRecConf import PFONeutralCreatorAlgorithm
 PFONeutralCreatorAlgorithm =  PFONeutralCreatorAlgorithm("PFONeutralCreatorAlgorithm")
-
+if jobproperties.eflowRecFlags.useCalibHitTruth:
+   PFONeutralCreatorAlgorithm.UseCalibHitTruth=True
+   
 topSequence += PFONeutralCreatorAlgorithm
diff --git a/Reconstruction/eflowRec/src/PFMomentCalculatorTool.cxx b/Reconstruction/eflowRec/src/PFMomentCalculatorTool.cxx
index bf26621b8df6e75a125cb7353dde585a64f8e77f..9858d14ccb9d437eaf0ac92348df67157aad3f54 100644
--- a/Reconstruction/eflowRec/src/PFMomentCalculatorTool.cxx
+++ b/Reconstruction/eflowRec/src/PFMomentCalculatorTool.cxx
@@ -23,6 +23,15 @@ StatusCode PFMomentCalculatorTool::initialize(){
     ATH_MSG_WARNING("Cannot find CaloClusterMomentsMaker Tool");
     return StatusCode::SUCCESS;
   }
+ 
+  /* Retrieve the cluster calib hit moments maker */
+  if (m_useCalibHitTruth){
+    if ( m_clusterCalibHitMomentsMaker2.retrieve().isFailure() ) {
+      ATH_MSG_WARNING("Cannot find CaloCalibClusterMomentsMaker2 Tool");
+      return StatusCode::SUCCESS;
+    }
+  }
+ 
   return StatusCode::SUCCESS;
 }
 
@@ -40,6 +49,11 @@ void PFMomentCalculatorTool::execute(const eflowCaloObjectContainer& theEflowCal
   /* Remake the cluster moments */
   if (m_clusterMomentsMaker->execute(tempClusterContainer.get()).isFailure()) ATH_MSG_WARNING("Could not execute ClusterMomentsMaker");
 
+  if (m_useCalibHitTruth){
+    if (m_clusterCalibHitMomentsMaker2->execute(tempClusterContainer.get()).isFailure()) ATH_MSG_WARNING("Could not execute CaloCalibClusterMomentsMaker2");
+  }
+
+  
 }
 
 StatusCode PFMomentCalculatorTool::finalize(){ return StatusCode::SUCCESS; }
diff --git a/Reconstruction/eflowRec/src/PFONeutralCreatorAlgorithm.cxx b/Reconstruction/eflowRec/src/PFONeutralCreatorAlgorithm.cxx
index f23cb5836960a8580273c9200f8e15b2ab1a005d..453c1103ed7ccf0d3d671a64971878289037b858 100644
--- a/Reconstruction/eflowRec/src/PFONeutralCreatorAlgorithm.cxx
+++ b/Reconstruction/eflowRec/src/PFONeutralCreatorAlgorithm.cxx
@@ -120,6 +120,12 @@ void PFONeutralCreatorAlgorithm::createNeutralPFO(const eflowCaloObject& energyF
       this->addMoment(xAOD::CaloCluster::ISOLATION,xAOD::PFODetails::PFOAttributes::eflowRec_ISOLATION,*cluster, *thisPFO);
       this->addMoment(xAOD::CaloCluster::SECOND_LAMBDA,xAOD::PFODetails::PFOAttributes::eflowRec_SECOND_LAMBDA,*cluster, *thisPFO);
       this->addMoment(xAOD::CaloCluster::EM_PROBABILITY,xAOD::PFODetails::PFOAttributes::eflowRec_EM_PROBABILITY,*cluster, *thisPFO);
+      if (m_useCalibHitTruth){
+	this->addMoment(xAOD::CaloCluster::ENG_CALIB_TOT,xAOD::PFODetails::PFOAttributes::eflowRec_ENG_CALIB_TOT,*cluster, *thisPFO);
+	this->addMoment(xAOD::CaloCluster::ENG_CALIB_FRAC_EM,xAOD::PFODetails::PFOAttributes::eflowRec_ENG_CALIB_FRAC_EM,*cluster, *thisPFO);
+	this->addMoment(xAOD::CaloCluster::ENG_CALIB_FRAC_HAD,xAOD::PFODetails::PFOAttributes::eflowRec_ENG_CALIB_FRAC_HAD,*cluster, *thisPFO);
+	this->addMoment(xAOD::CaloCluster::ENG_CALIB_FRAC_REST,xAOD::PFODetails::PFOAttributes::eflowRec_ENG_CALIB_FRAC_REST,*cluster, *thisPFO);
+      }
     }
 
     //First set all the layer energies
diff --git a/Reconstruction/egamma/egammaAlgs/CMakeLists.txt b/Reconstruction/egamma/egammaAlgs/CMakeLists.txt
index a108c12c8435bcdc6cd9b60f74ba1601145c3c69..461310d1c5d40d28a53e199feb912ed6b963df42 100644
--- a/Reconstruction/egamma/egammaAlgs/CMakeLists.txt
+++ b/Reconstruction/egamma/egammaAlgs/CMakeLists.txt
@@ -21,6 +21,7 @@ atlas_depends_on_subdirs( PRIVATE
                           Control/StoreGate
                           Event/FourMomUtils
                           Event/xAOD/xAODTracking
+                          InnerDetector/InDetDetDescr/InDetReadoutGeometry
                           InnerDetector/InDetRecTools/InDetConversionFinderTools
                           InnerDetector/InDetRecTools/InDetRecToolInterfaces
                           PhysicsAnalysis/Interfaces/EgammaAnalysisInterfaces
@@ -42,7 +43,7 @@ atlas_add_component( egammaAlgs
                      src/components/*.cxx
                      INCLUDE_DIRS 
 		     LINK_LIBRARIES AthenaBaseComps EventKernel xAODCaloEvent xAODEgamma xAODTruth GaudiKernel 
-		     MCTruthClassifierLib CaloGeoHelpers CaloUtilsLib AthenaKernel  StoreGateLib xAODTracking 
+		     MCTruthClassifierLib CaloGeoHelpers CaloUtilsLib AthenaKernel  StoreGateLib xAODTracking InDetReadoutGeometry
 		     EgammaAnalysisInterfacesLib egammaRecEvent egammaUtils  TrkToolInterfaces InDetRecToolInterfaces 
 		     FourMomUtils RecoToolInterfaces TrkTrack TrkPseudoMeasurementOnTrack InDetConversionFinderToolsLib TrkCaloExtension)            
 	     
diff --git a/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.cxx b/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.cxx
index 4477e902a4fa2d5c5a00d010359eda644d9b96bc..8a9856773bb6cd0e393b0667999c2d44369fc99a 100644
--- a/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.cxx
+++ b/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.cxx
@@ -104,27 +104,30 @@ StatusCode egammaSelectedTrackCopy::execute()
   ATH_MSG_DEBUG ("Track Particle  container  size: "  <<trackTES->size() );
 
   //Local counters
+  auto allClusters = m_AllClusters.buffer();
+  auto selectedClusters = m_SelectedClusters.buffer();
+  auto allTracks= m_AllTracks.buffer();
   auto selectedTracks = m_SelectedTracks.buffer()  ;
   auto allSiTracks = m_AllSiTracks.buffer();  
   auto selectedSiTracks = m_SelectedSiTracks.buffer();  
-  auto allTRTTracks =  m_AllTRTTracks.buffer()  ;
+  auto allTRTTracks =  m_AllTRTTracks.buffer();
   auto selectedTRTTracks = m_SelectedTRTTracks.buffer(); 
 
   // // lets first check which clusters to seed on;
   std::vector<const xAOD::CaloCluster *> passingClusters;
   for(const xAOD::CaloCluster* cluster : *clusterTES ){
+    ++allClusters;   
     if (m_egammaCaloClusterSelector->passSelection(cluster)) {
       passingClusters.push_back(cluster);
+       ++selectedClusters;
     }
   }
 
-  m_AllClusters+=clusterTES->size();
-  m_SelectedClusters+=passingClusters.size();
-  m_AllTracks+=trackTES->size();
-  //Extrapolation Cache
+ //Extrapolation Cache
   IEMExtrapolationTools::Cache cache{};
   for(const xAOD::TrackParticle* track : *trackTES){
     ATH_MSG_DEBUG ("Check Track with Eta "<< track->eta()<< " Phi " << track->phi()<<" Pt " <<track->pt());
+    ++allTracks;
     bool isTRT=false;
     int nhits(0);
     uint8_t dummy(0); 
diff --git a/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.h b/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.h
index a423c205f8a9d1decaa428934b5fe72ce0834b5d..74312d5d3d8a0ae102c31fee360960c0022a7679 100644
--- a/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.h
+++ b/Reconstruction/egamma/egammaAlgs/src/egammaSelectedTrackCopy.h
@@ -28,6 +28,8 @@
 #include "egammaInterfaces/IegammaCaloClusterSelector.h"
 #include "GaudiKernel/Counters.h"
 
+#include "InDetReadoutGeometry/SiDetectorElementCollection.h"
+#include "StoreGate/ReadCondHandleKey.h"
 
 class CaloCluster;
 
@@ -99,6 +101,9 @@ private:
       "egammaCaloClusterSelector", "egammaCaloClusterSelector",
       "Tool that makes the cluster selection"};
 
+  // For P->T converters of ID tracks with SCT
+  SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"};
+
   /* counters. For now use mutable atomic
    * the methods will increment a local variable
    * inside the loops.
diff --git a/Reconstruction/iPat/iPatTrackFinder/CMakeLists.txt b/Reconstruction/iPat/iPatTrackFinder/CMakeLists.txt
index 0f9cdf4b76b82e1c71468b63a6db736bde1e3b4e..93c1417b49cd1661effce64b26dabcd46f814010 100644
--- a/Reconstruction/iPat/iPatTrackFinder/CMakeLists.txt
+++ b/Reconstruction/iPat/iPatTrackFinder/CMakeLists.txt
@@ -15,6 +15,7 @@ atlas_depends_on_subdirs( PUBLIC
                           Reconstruction/iPat/iPatInterfaces
                           Reconstruction/iPat/iPatTrack
                           Event/EventContainers
+                          InnerDetector/InDetConditions/BeamSpotConditionsData
                           PRIVATE
                           InnerDetector/InDetConditions/InDetBeamSpotService
                           InnerDetector/InDetDetDescr/InDetReadoutGeometry
diff --git a/Reconstruction/iPat/iPatTrackFinder/iPatTrackFinder/TrackFinder.h b/Reconstruction/iPat/iPatTrackFinder/iPatTrackFinder/TrackFinder.h
index a20006ad62f9102205cd1f461536a071e4d40cf0..e99002c659bbbddd52048031ca6b761a048ce1af 100755
--- a/Reconstruction/iPat/iPatTrackFinder/iPatTrackFinder/TrackFinder.h
+++ b/Reconstruction/iPat/iPatTrackFinder/iPatTrackFinder/TrackFinder.h
@@ -18,12 +18,11 @@
 #include "GaudiKernel/ToolHandle.h"
 #include "iPatInterfaces/ITrackFinder.h"
 #include "iPatTrack/TrackList.h"
-
+#include "BeamSpotConditionsData/BeamSpotData.h"
 //<<<<<< CLASS DECLARATIONS                                             >>>>>>
 
 namespace Trk	{ class RecVertex; }
 class IAssignedHits;
-class IBeamCondSvc;
 class ICombinationMaker;
 class ICandidateBuilder;
 class IFinderConfiguration;
@@ -69,7 +68,7 @@ private:
 
     // helpers, managers, tools
     ToolHandle<IAssignedHits>		m_assignedHits;
-    ServiceHandle<IBeamCondSvc>		m_beamCondSvc;
+    SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
     ToolHandle<ICandidateBuilder>	m_candidateBuilder;
     ToolHandle<ICombinationMaker>	m_combination;
     ToolHandle<IFinderConfiguration>	m_finderTolerances;
diff --git a/Reconstruction/iPat/iPatTrackFinder/src/TrackFinder.cxx b/Reconstruction/iPat/iPatTrackFinder/src/TrackFinder.cxx
index fca513edd5273cba36e70306b3628e09d0701f00..c39b0af48c4cd36278d173d9834301b6502cce8a 100755
--- a/Reconstruction/iPat/iPatTrackFinder/src/TrackFinder.cxx
+++ b/Reconstruction/iPat/iPatTrackFinder/src/TrackFinder.cxx
@@ -16,7 +16,6 @@
 #include <iostream>
 #include <utility>
 #include "GaudiKernel/SystemOfUnits.h"
-#include "InDetBeamSpotService/IBeamCondSvc.h"
 #include "TrkSpacePoint/SpacePoint.h"
 #include "VxVertex/RecVertex.h"
 #include "iPatInterfaces/IAssignedHits.h"
@@ -40,7 +39,6 @@ TrackFinder::TrackFinder(const std::string&	type,
 			 const IInterface*	parent)
     :   AthAlgTool		(type, name, parent),
 	m_assignedHits		("AssignedHits/AssignedHits"),
-	m_beamCondSvc		("BeamCondSvc", name),
 	m_candidateBuilder	("CandidateBuilder/CandidateBuilder"),
 	m_combination		("CombinationMaker/CombinationMaker"),
 	m_finderTolerances	("FinderTolerances/FinderTolerances"),
@@ -79,16 +77,7 @@ TrackFinder::initialize()
 {
     ATH_MSG_INFO( "TrackFinder::initialize()" );
 
-    // check BeamCondSvc service available
-    if (m_beamCondSvc.retrieve().isFailure())
-    {
-	ATH_MSG_FATAL( "Failed to retrieve service " << m_beamCondSvc );
-        return StatusCode::FAILURE;
-    }
-    else
-    {
-	ATH_MSG_INFO( "Retrieved service " << m_beamCondSvc );
-    }
+    ATH_CHECK(m_beamSpotKey.initialize());
 
     // get the Tools
     if (m_assignedHits.retrieve().isFailure())
@@ -664,7 +653,8 @@ TrackFinder::vertexRegionDefinition (void)
 {
     // get beam position from conditions db
     delete m_vertex;
-    Amg::Vector3D beamPosition	= m_beamCondSvc->beamPos();
+    SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
+    Amg::Vector3D beamPosition	= beamSpotHandle->beamPos();
 
     // vertex for transverse vertex constraint
     // assume flat distribution for error (only x and y components will be used)
@@ -678,6 +668,6 @@ TrackFinder::vertexRegionDefinition (void)
     m_vertex		= new Trk::RecVertex(beamPosition,covariance);
     
 //     std::cout << " beam vertex " << beamPosition << std::endl;
-//     	      << "  beamSigma " << m_beamCondSvc->beamSigma(2) << std::endl;
+//     	      << "  beamSigma " << beamSpotHandle->beamSigma(2) << std::endl;
 
 }
diff --git a/Reconstruction/tauRec/python/TauRecBuilder.py b/Reconstruction/tauRec/python/TauRecBuilder.py
index 12fea6749b3cadf42fae37a6b2d65d4285f3bf73..e1440476500d0397fa0a64d3d5e70567e1e8f129 100644
--- a/Reconstruction/tauRec/python/TauRecBuilder.py
+++ b/Reconstruction/tauRec/python/TauRecBuilder.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 ################################################################################
 ##
@@ -86,7 +86,8 @@ class TauRecCoreBuilder ( TauRecConfigured ) :
             tools.append(taualgs.getTauAxis())
             tools.append(taualgs.getTauTrackFinder(removeDuplicateTracks=(not doMVATrackClassification) ))
             if doMVATrackClassification : tools.append(taualgs.getTauTrackClassifier())
-            tools.append(taualgs.getEnergyCalibrationLC(correctEnergy=True, correctAxis=False, postfix='_onlyEnergy'))
+            if jobproperties.Beam.beamType()!="cosmics":
+                tools.append(taualgs.getEnergyCalibrationLC(correctEnergy=True, correctAxis=False, postfix='_onlyEnergy'))
             tools.append(taualgs.getCellVariables())
             tools.append(taualgs.getElectronVetoVars())
             #
@@ -271,7 +272,8 @@ class TauRecVariablesProcessor ( TauRecConfigured ) :
             
             #these tools need pantau info
             tools.append(taualgs.getCombinedP4FromRecoTaus())
-            tools.append(taualgs.getMvaTESVariableDecorator())
+            if jobproperties.Beam.beamType()!="cosmics":
+                tools.append(taualgs.getMvaTESVariableDecorator())
             tools.append(taualgs.getMvaTESEvaluator())
 
             if tauFlags.doRunTauDiscriminant():
diff --git a/Reconstruction/tauRec/python/TauRecConfigured.py b/Reconstruction/tauRec/python/TauRecConfigured.py
index a7ff6031ac7443f4db45763c7b0ae43666bd3585..8747fd7fb314fd619b3b37d46a0acf8d6e7b14a9 100644
--- a/Reconstruction/tauRec/python/TauRecConfigured.py
+++ b/Reconstruction/tauRec/python/TauRecConfigured.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 ################################################################################
 ##
@@ -14,6 +14,7 @@
 ################################################################################
 
 from RecExConfig.Configured import Configured
+from AthenaCommon.BeamFlags import jobproperties
 from AthenaCommon.SystemOfUnits import *
 
 ################################################################################
@@ -58,35 +59,27 @@ class TauRecConfigured ( Configured ) :
 
         topSequence = AlgSequence()
 
-        from AthenaCommon.AlgScheduler import AlgScheduler
-        AlgScheduler.ShowDataDependencies(True)
-        AlgScheduler.ShowControlFlow(True)
-        
-        from SGComps.SGCompsConf import SGInputLoader
-        topSequence += SGInputLoader()
-        topSequence.SGInputLoader.Load = [ ('xAOD::JetContainer','AntiKt4LCTopoJets'), ('xAOD::VertexContainer', 'PrimaryVertices'),
-                                           ('xAOD::TrackParticleContainer','InDetTrackParticles'), ('CaloCellContainer','AllCalo') ]
-
-        # Can I move this to different script?
-        from AthenaCommon.AppMgr import ToolSvc
-        from JetRec.JetRecConf import JetAlgorithm
-        jetTrackAlg = JetAlgorithm("JetTrackAlg_forTaus")
-        from JetRecTools.JetRecToolsConf import TrackVertexAssociationTool
-        TauTVATool = TrackVertexAssociationTool(TrackParticleContainer = "InDetTrackParticles",
-                                                TrackVertexAssociation="JetTrackVtxAssoc_forTaus",
-                                                VertexContainer= "PrimaryVertices",
-                                                MaxTransverseDistance = 2.5 *mm,
-                                                #MaxLongitudinalDistance = 2 *mm,
-                                                MaxZ0SinTheta = 3.0 *mm,
-                                                #OutputLevel=2
-                                                )
-        ToolSvc += TauTVATool
-        jetTrackAlg.Tools = [ TauTVATool ]
-        topSequence += jetTrackAlg
-
-        # import tauRec.TauAlgorithmsHolder as taualgs
-        # add tauJVF tool to topSequence
-        # taualgs.setupTauJVFTool
+        if jobproperties.Beam.beamType()!="cosmics":
+            # Can I move this to different script?
+            from AthenaCommon.AppMgr import ToolSvc
+            from JetRec.JetRecConf import JetAlgorithm
+            jetTrackAlg = JetAlgorithm("JetTrackAlg_forTaus")
+            from JetRecTools.JetRecToolsConf import TrackVertexAssociationTool
+            TauTVATool = TrackVertexAssociationTool(TrackParticleContainer = "InDetTrackParticles",
+                                                    TrackVertexAssociation="JetTrackVtxAssoc_forTaus",
+                                                    VertexContainer= "PrimaryVertices",
+                                                    MaxTransverseDistance = 2.5 *mm,
+                                                    #MaxLongitudinalDistance = 2 *mm,
+                                                    MaxZ0SinTheta = 3.0 *mm,
+                                                    #OutputLevel=2
+                                                    )
+            ToolSvc += TauTVATool
+            jetTrackAlg.Tools = [ TauTVATool ]
+            topSequence += jetTrackAlg
+
+            # import tauRec.TauAlgorithmsHolder as taualgs
+            # add tauJVF tool to topSequence
+            # taualgs.setupTauJVFTool
 
         topSequence += self.TauProcessorAlgHandle()
 
@@ -100,12 +93,6 @@ class TauRecConfigured ( Configured ) :
         from AthenaCommon.AlgSequence import AlgSequence
         topSequence = AlgSequence()
 
-        from SGComps.SGCompsConf import SGInputLoader
-        # not needed? There by default now?
-        topSequence += SGInputLoader(OutputLevel=INFO)
-        topSequence.SGInputLoader.Load = [ ('xAOD::JetContainer','AntiKt4LCTopoJets'), ('xAOD::VertexContainer', 'PrimaryVertices'),
-                                           ('xAOD::TrackParticleContainer','InDetTrackParticles'), ('CaloCellContainer','AllCalo') ]
-
         topSequence += self.TauProcessorAlgHandle()
 
 
diff --git a/Reconstruction/tauRec/python/TauRecRunner.py b/Reconstruction/tauRec/python/TauRecRunner.py
index df657803cc2fecf7ae9f2a0c22f535eb4b273352..844d292919d09bf73d53d49fac38372b0b02b507 100644
--- a/Reconstruction/tauRec/python/TauRecRunner.py
+++ b/Reconstruction/tauRec/python/TauRecRunner.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 ################################################################################
 ##
@@ -101,8 +101,9 @@ class TauRecRunner ( TauRecRunConfigured ) :
  
             # these tools need pantau info
             tools.append(taualgs.getCombinedP4FromRecoTaus())
-            tools.append(taualgs.getMvaTESVariableDecorator())
-            tools.append(taualgs.getMvaTESEvaluator())
+            if jobproperties.Beam.beamType()!="cosmics":
+                tools.append(taualgs.getMvaTESVariableDecorator())
+                tools.append(taualgs.getMvaTESEvaluator())
 
             if tauFlags.doRunTauDiscriminant():
                 tools.append(taualgs.getTauIDVarCalculator())
diff --git a/Simulation/ISF/ISF_Config/python/FlagSetters.py b/Simulation/ISF/ISF_Config/python/FlagSetters.py
index 105d1495807917fe1e247e2fd9d0a93b20ff18e6..5273430f51f7ef9fc11c98829d7c853adc88ad31 100644
--- a/Simulation/ISF/ISF_Config/python/FlagSetters.py
+++ b/Simulation/ISF/ISF_Config/python/FlagSetters.py
@@ -50,12 +50,18 @@ def configureFlagsFullG4():
     ISF_Flags.HITSMergingRequired = False
     return
 
+def configureFlagsFullG4MT():
+    return configureFlagsFullG4()
+
 def configureFlagsFullG4_LongLived():
     configureFlagsFullG4()
     from G4AtlasApps.SimFlags import simFlags
     simFlags.SimulationFlavour = "FullG4_LongLived"
     return
 
+def configureFlagsFullG4MT_LongLived():
+    return configureFlagsFullG4_LongLived()
+
 def configureFlagsFullG4_IDOnly():
     configureFlagsFullG4()
     from G4AtlasApps.SimFlags import simFlags
@@ -74,6 +80,9 @@ def configureFlagsPassBackG4():
     simFlags.SimulationFlavour = "PassBackG4"
     return
 
+def configureFlagsPassBackG4MT():
+    return configureFlagsPassBackG4()
+
 def configureFlagsCosmicsG4():
     configureFlagsFullG4()
     return
@@ -113,6 +122,9 @@ def configureFlagsATLFASTII():
     ISF_Flags.UsingGeant4 = True
     return
 
+def configureFlagsATLFASTIIMT():
+    return configureFlagsATLFASTII()
+
 def configureFlagsATLFASTII_PileUp():
     from G4AtlasApps.SimFlags import simFlags
     simFlags.SimulationFlavour = "ATLFASTII_PileUp"
@@ -135,6 +147,9 @@ def configureFlagsATLFASTIIF():
     TrkDetFlags.TRT_BuildStrawLayers=True
     return
 
+def configureFlagsATLFASTIIFMT():
+    return configureFlagsATLFASTIIF()
+
 def configureFlagsFatras_newExtrapolation():
     configureFlagsATLFASTIIF()
     from G4AtlasApps.SimFlags import simFlags
diff --git a/Simulation/ISF/ISF_Config/python/ISF_ConfigConfigDb.py b/Simulation/ISF/ISF_Config/python/ISF_ConfigConfigDb.py
index 7a9f891bb2c0119b0fc8470ec13f3cee0469da2c..9e8f8cad9ac5678feaf21dcf310efd2bbe706a34 100644
--- a/Simulation/ISF/ISF_Config/python/ISF_ConfigConfigDb.py
+++ b/Simulation/ISF/ISF_Config/python/ISF_ConfigConfigDb.py
@@ -22,7 +22,9 @@ addAlgorithm("ISF_Config.ISF_MainConfig.getInput_MultiParticleTest",    "ISF_Inp
 addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_GenericSimulator",    "ISF_Kernel_GenericSimulator")
 #addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_FromJobProperties",   "ISF_Kernel_FromJobProperties")
 addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_FullG4",              "ISF_Kernel_FullG4")
+addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_FullG4MT",            "ISF_Kernel_FullG4MT")
 addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_FullG4_LongLived",    "ISF_Kernel_FullG4_LongLived")
+addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_FullG4MT_LongLived",  "ISF_Kernel_FullG4MT_LongLived")
 addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_FullG4_IDOnly",       "ISF_Kernel_FullG4_IDOnly")
 addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_FullG4_IDCalo",       "ISF_Kernel_FullG4_IDCalo")
 addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_StoppingG4",          "ISF_Kernel_StoppingG4")
@@ -31,9 +33,12 @@ addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_MC12G4_longLived",    "ISF_Ker
 addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_MC12G4_IDOnly",       "ISF_Kernel_MC12G4_IDOnly")# Legacy only
 addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_MC12G4_IDCalo",       "ISF_Kernel_MC12G4_IDCalo")# Legacy only
 addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_PassBackG4",          "ISF_Kernel_PassBackG4")
+addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_PassBackG4MT",        "ISF_Kernel_PassBackG4MT")
 addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_CosmicsG4",           "ISF_Kernel_CosmicsG4")
 addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_ATLFASTII",           "ISF_Kernel_ATLFASTII")
+addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_ATLFASTIIMT",         "ISF_Kernel_ATLFASTIIMT")
 addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_ATLFASTIIF",          "ISF_Kernel_ATLFASTIIF")
+addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_ATLFASTIIFMT",        "ISF_Kernel_ATLFASTIIFMT")
 addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_ATLFASTIIF_PileUp",   "ISF_Kernel_ATLFASTIIF_PileUp")
 addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_ATLFASTII_PileUp",   "ISF_Kernel_ATLFASTII_PileUp")
 addAlgorithm("ISF_Config.ISF_MainConfig.getKernel_G4HS_FastPileup",     "ISF_Kernel_G4HS_FastPileup")
diff --git a/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py b/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py
index 39d2df6681bb1815fc18abd81e6b52feb79fcd47..eea1b5ba1c7f0e42d3d680ed25f0b9cf11df82f9 100644
--- a/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py
+++ b/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py
@@ -200,10 +200,36 @@ def getKernel_GenericSimulator(name="ISF_Kernel_GenericSimulator", **kwargs):
     topSequence += SimKernel
     return SimKernel
 
+############## Simulator: GenericSimulatorMT ###############
+def getKernel_GenericSimulatorMT(name="ISF_Kernel_GenericSimulatorMT", **kwargs):
+    kwargs.setdefault("InputEvgenCollection", "BeamTruthEvent" )
+    kwargs.setdefault("OutputTruthCollection", "TruthEvent" )
+    kwargs.setdefault("ParticleKillerTool", "ISF_ParticleKillerTool" )
+    kwargs.setdefault("GeoIDSvc", "ISF_GeoIDSvc" )
+    kwargs.setdefault("InputConverter", "ISF_InputConverter")
+    kwargs.setdefault("OutputLevel", 1)
+    #from G4AtlasApps.SimFlags import simFlags
+    #kwargs.setdefault("TruthRecordService", simFlags.TruthStrategy.TruthServiceName())
+    #kwargs.setdefault("MemoryMonitoringTool", "ISF_MemoryMonitor")
+    #kwargs.setdefault("DoCPUMonitoring", ISF_Flags.DoTimeMonitoring())
+    #kwargs.setdefault("DoMemoryMonitoring", ISF_Flags.DoMemoryMonitoring())
+
+    from ISF_Algorithms.ISF_AlgorithmsConf import ISF__SimKernelMT
+    SimKernelMT = ISF__SimKernelMT(name, **kwargs)
+    ##FIXME shouldn't really be doing this here
+    from AthenaCommon.AlgSequence import AlgSequence
+    topSequence = AlgSequence()
+    topSequence += SimKernelMT
+    return SimKernelMT
+
 ############## Simulator: GenericSimulatorNoG4 ###############
 def getKernel_GenericSimulatorNoG4(name="ISF_Kernel_GenericSimulatorNoG4", **kwargs):
     return getKernel_GenericSimulator(name, **kwargs)
 
+############## Simulator: GenericSimulatorNoG4MT ###############
+def getKernel_GenericSimulatorNoG4MT(name="ISF_Kernel_GenericSimulatorNoG4MT", **kwargs):
+    return getKernel_GenericSimulatorMT(name, **kwargs)
+
 ############## Simulator: MultiSimTest ###############
 def getKernel_MultiSimTest(name="ISF_Kernel_MultiSimTest", **kwargs):
     kwargs.setdefault("BeamPipeSimulationSelectors" , [ 'ISF_DefaultGeant4Selector' ]         )
@@ -229,10 +255,25 @@ def getKernel_GenericG4Only(name="ISF_Kernel_GenericG4Only", **kwargs):
     kwargs.setdefault("CavernSimulationSelectors"   , [ 'ISF_DefaultParticleKillerSelector' ] )
     return getKernel_GenericSimulator(name, **kwargs)
 
+############## Simulator: GenericG4OnlyMT ###############
+def getKernel_GenericG4OnlyMT(name="ISF_Kernel_GenericG4OnlyMT", **kwargs):
+    kwargs.setdefault("BeamPipeSimulationSelectors" , [ 'ISF_FullGeant4Selector' ] )
+    kwargs.setdefault("IDSimulationSelectors"       , [ 'ISF_FullGeant4Selector' ] )
+    kwargs.setdefault("CaloSimulationSelectors"     , [ 'ISF_FullGeant4Selector' ] )
+    kwargs.setdefault("MSSimulationSelectors"       , [ 'ISF_FullGeant4Selector' ] )
+    kwargs.setdefault("CavernSimulationSelectors"   , [ 'ISF_DefaultParticleKillerSelector' ] )
+    return getKernel_GenericSimulatorMT(name, **kwargs)
+
 ############## Simulator: FullG4 ###############
 def getKernel_FullG4(name="ISF_Kernel_FullG4", **kwargs):
     return getKernel_GenericG4Only(name, **kwargs)
 
+############## Simulator: FullG4MT ###############
+def getKernel_FullG4MT(name="ISF_Kernel_FullG4MT", **kwargs):
+    kwargs.setdefault("SimulationTools", ["ISF_ParticleKillerTool",
+                                          "ISF_FullGeant4Tool"])
+    return getKernel_GenericG4OnlyMT(name, **kwargs)
+
 ############## Simulator: FullG4_longLived ###############
 def getKernel_FullG4_LongLived(name="ISF_Kernel_FullG4_LongLived", **kwargs):
     kwargs.setdefault("BeamPipeSimulationSelectors" , [ 'ISF_DefaultLongLivedGeant4Selector' ] )
@@ -243,6 +284,13 @@ def getKernel_FullG4_LongLived(name="ISF_Kernel_FullG4_LongLived", **kwargs):
     kwargs.setdefault("InputConverter"              ,   'ISF_LongLivedInputConverter'          )
     return getKernel_GenericG4Only(name, **kwargs)
 
+############## Simulator: FullG4MT_longLived ###############
+def getKernel_FullG4MT_LongLived(name="ISF_Kernel_FullG4MT_LongLived", **kwargs):
+    kwargs.setdefault("SimulationTools", ["ISF_ParticleKillerTool",
+                                          "ISF_LongLivedGeant4Tool"])
+    kwargs.setdefault("InputConverter", 'ISF_LongLivedInputConverter')
+    return getKernel_GenericG4OnlyMT(name, **kwargs)
+
 ############## Simulator: FullG4_IDOnly ###############
 def getKernel_FullG4_IDOnly(name="ISF_Kernel_FullG4_IDOnly", **kwargs):
     kwargs.setdefault("CaloSimulationSelectors"     , [ 'ISF_DefaultParticleKillerSelector' ] )
@@ -264,6 +312,12 @@ def getKernel_PassBackG4(name="ISF_Kernel_PassBackG4", **kwargs):
     kwargs.setdefault("CavernSimulationSelectors"   , [ 'ISF_DefaultParticleKillerSelector' ] )
     return getKernel_GenericSimulator(name, **kwargs)
 
+############## Simulator: PassBackG4MT ###############
+def getKernel_PassBackG4MT(name="ISF_Kernel_PassBackG4MT", **kwargs):
+    kwargs.setdefault("SimulationTools", ["ISF_ParticleKillerTool",
+                                          "ISF_PassBackGeant4Tool"])
+    return getKernel_GenericSimulator(name, **kwargs)
+
 ############## Simulator: CosmicsG4 ###############
 def getKernel_CosmicsG4(name="ISF_Kernel_CosmicsG4", **kwargs):
     kwargs.setdefault("CavernSimulationSelectors"   , [ 'ISF_FullGeant4Selector' ] )
@@ -326,6 +380,16 @@ def getKernel_ATLFASTII(name="ISF_Kernel_ATLFASTII", **kwargs):
     simFlags.SimulationFlavour = "AtlfastII" # TODO: can we rename this to "ATLFASTII" ?
     return getKernel_GenericSimulator(name, **kwargs)
 
+############## Simulator: ATLFASTIIMT ###############
+def getKernel_ATLFASTIIMT(name="ISF_Kernel_ATLFASTIIMT", **kwargs):
+    kwargs.setdefault("SimulationTools", ["ISF_FastParticleKillerTool",
+                                          "ISF_LegacyAFIIFastCaloTool",
+                                          "ISF_AFIIGeant4Tool"])
+    # set the simFlags accordingly (TODO: is this even needed?)
+    from G4AtlasApps.SimFlags import simFlags
+    simFlags.SimulationFlavour = "ATLFASTII"
+    return getKernel_GenericSimulatorMT(name, **kwargs)
+
 ############## Simulator: ATLFASTIIF ###############
 def getKernel_ATLFASTIIF(name="ISF_Kernel_ATLFASTIIF", **kwargs):
     kwargs.setdefault("BeamPipeSimulationSelectors" , [ 'ISF_DefaultParticleKillerSelector' ]       )
@@ -340,6 +404,16 @@ def getKernel_ATLFASTIIF(name="ISF_Kernel_ATLFASTIIF", **kwargs):
     simFlags.SimulationFlavour = "ATLFASTIIF"
     return getKernel_GenericSimulatorNoG4(name, **kwargs)
 
+############## Simulator: ATLFASTIIFMT ###############
+def getKernel_ATLFASTIIFMT(name="ISF_Kernel_ATLFASTIIFMT", **kwargs):
+    kwargs.setdefault("SimulationTools", ["ISF_FastParticleKillerTool",
+                                          "ISF_FastCaloTool",
+                                          "ISF_FatrasTool"])
+    # set the simFlags accordingly (TODO: is this even needed?)
+    from G4AtlasApps.SimFlags import simFlags
+    simFlags.SimulationFlavour = "ATLFASTIIF"
+    return getKernel_GenericSimulatorNoG4MT(name, **kwargs)
+
 ############## Simulator: Fatras_newExtrapolation ###############
 def getKernel_Fatras_newExtrapolation(name="ISF_Kernel_Fatras_newExtrapolation", **kwargs):
     kwargs.setdefault("BeamPipeSimulationSelectors" , [ 'ISF_DefaultFatrasNewExtrapolationSelector' ] )
diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.cxx b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.cxx
index 233075164edbee901a891c35d7e3d762afd7f922..aa7b6ac32ff88a66c3231000673df429b95cb6ab 100644
--- a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.cxx
+++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
@@ -25,8 +25,10 @@ ISF::SimKernelMT::SimKernelMT( const std::string& name, ISvcLocator* pSvcLocator
     m_inputEvgenKey(),
     m_outputTruthKey(),
     m_inputConverter("", name),
-    m_simSelectors(),
-    m_particleKillerSimulationSvc("", name)
+    m_simulationTools(), // FIXME make private
+    m_particleKillerTool(""), // FIXME make private
+    m_geoIDSvc("", name),
+    m_simSelectors() //FIXME make private
 {
     declareProperty("InputEvgenCollection",
                     m_inputEvgenKey,
@@ -39,15 +41,20 @@ ISF::SimKernelMT::SimKernelMT( const std::string& name, ISvcLocator* pSvcLocator
                     "Input McEventCollection->ISFParticleContainer conversion service.");
 
     // routing tools
-    declareProperty("ForwardBeamPipeSimulationSelectors", m_simSelectors[AtlasDetDescr::fAtlasForward] );
-    declareProperty("InDetSimulationSelectors", m_simSelectors[AtlasDetDescr::fAtlasID] );
+    declareProperty("BeamPipeSimulationSelectors", m_simSelectors[AtlasDetDescr::fAtlasForward] );
+    declareProperty("IDSimulationSelectors", m_simSelectors[AtlasDetDescr::fAtlasID] );
     declareProperty("CaloSimulationSelectors", m_simSelectors[AtlasDetDescr::fAtlasCalo] );
     declareProperty("MSSimulationSelectors", m_simSelectors[AtlasDetDescr::fAtlasMS] );
     declareProperty("CavernSimulationSelectors", m_simSelectors[AtlasDetDescr::fAtlasCavern] );
 
-    declareProperty("ParticleKillerSimulationSvc",
-                    m_particleKillerSimulationSvc,
-                    "Simulation Service to use when particle is not selected by any SimulationSelector in the routing chain.");
+    declareProperty("SimulationTools", m_simulationTools );
+
+    declareProperty("ParticleKillerTool",
+                    m_particleKillerTool,
+                    "Simulation Tool to use when particle is not selected by any SimulationSelector in the routing chain.");
+    declareProperty("GeoIDSvc",
+                    m_geoIDSvc,
+                    "Since InputConverter doesn't set Geo ID yet, do it here");
 }
 
 
@@ -57,6 +64,32 @@ ISF::SimKernelMT::~SimKernelMT() {
 
 StatusCode ISF::SimKernelMT::initialize() {
 
+  ATH_CHECK( m_simulationTools.retrieve() );
+  for (auto& curSimTool: m_simulationTools) {
+    if ( curSimTool ) {
+      const auto flavor = curSimTool->simFlavor();
+      auto itr = m_simToolMap.find(flavor);
+      if (itr != m_simToolMap.end() )
+        {
+          ATH_MSG_FATAL("Two ISimulatorTool instances (" << itr->second->name() << "," << curSimTool->name() << ") with the same flavor in this job!\n Check your configuration!");
+          return StatusCode::FAILURE;
+        }
+      // New flavour add it to the map.
+      m_simToolMap[flavor] = &*curSimTool;
+    }
+  }
+  ATH_CHECK( m_particleKillerTool.retrieve() );
+  const ISF::SimulationFlavor pkFlavor = m_particleKillerTool->simFlavor();
+  if ( m_simToolMap.find(pkFlavor) == m_simToolMap.end() )
+    {
+      m_simToolMap[pkFlavor] = &*m_particleKillerTool;
+    }
+  else
+    {
+      ATH_MSG_WARNING("Two ISimulatorTool instances (" << m_simToolMap.find(ISF::ParticleKiller)->second->name() << "," << m_particleKillerTool->name() << ") with the same flavor in this job!\n Check your configuration!");
+    }
+
+  ATH_MSG_INFO("The following Simulators will be used in this job: \t" << m_simulationTools << "\n" << m_particleKillerTool);
   // retrieve simulation selectors (i.e. the "routing chain")
   for ( auto& selectorsToolHandleArray: m_simSelectors ) {
     ATH_CHECK( selectorsToolHandleArray.retrieve() );
@@ -65,22 +98,47 @@ StatusCode ISF::SimKernelMT::initialize() {
   // info screen output
   ATH_MSG_INFO("The following routing chains are defined:");
   for ( short geoID=AtlasDetDescr::fFirstAtlasRegion; geoID<AtlasDetDescr::fNumAtlasRegions ; ++geoID) {
+    auto& localSelectors = m_simSelectors[geoID];
     ATH_MSG_INFO( AtlasDetDescr::AtlasRegionHelper::getName(geoID)
-                  << " (GeoID=" << geoID << "): \t" << m_simSelectors[geoID]);
+                  << " (GeoID=" << geoID << "): \t" << localSelectors);
+    for (auto& selector: localSelectors)
+      {
+        const auto flavor = selector->simFlavor();
+        auto itr = m_simToolMap.find(flavor);
+        if (itr == m_simToolMap.end() )
+          {
+            ATH_MSG_WARNING("Map from SimulationFlavor to SimulatorTool:");
+            for(auto& entry: m_simToolMap)
+              {
+                ATH_MSG_WARNING("SimulationFlavor: " << entry.first << ", SimulatorTool Name: "<< entry.second->name());
+              }
+            ATH_MSG_FATAL("No SimulationTool with flavor " << flavor << " expected by " << selector->name() << " found in this job!\n Check your configuration!");
+            return StatusCode::FAILURE;
+          }
+      }
   }
 
   ATH_CHECK( m_inputEvgenKey.initialize() );
   ATH_CHECK( m_outputTruthKey.initialize() );
 
-  ATH_CHECK( m_particleKillerSimulationSvc.retrieve() );
   ATH_CHECK( m_inputConverter.retrieve() );
 
+  ATH_CHECK( m_geoIDSvc.retrieve() );
+
   return StatusCode::SUCCESS;
 }
 
 
 StatusCode ISF::SimKernelMT::execute() {
 
+  // Release the event from all simulators (TODO: make the tools do this)
+  for (auto& curSimTool: m_simulationTools) {
+    if ( curSimTool ) {
+      ATH_CHECK(curSimTool->setupEvent());
+      ATH_MSG_DEBUG( "Event setup done for " << curSimTool->name() );
+    }
+  }
+
   SG::ReadHandle<McEventCollection> inputEvgen(m_inputEvgenKey);
   if (!inputEvgen.isValid()) {
     ATH_MSG_FATAL("Unable to read input GenEvent collection '" << inputEvgen.key() << "'");
@@ -95,19 +153,62 @@ StatusCode ISF::SimKernelMT::execute() {
   ISFParticleContainer simParticles; // particles for ISF simulation
   bool isPileup = false;
   ATH_CHECK( m_inputConverter->convert(*outputTruth, simParticles, isPileup) );
-  // loop until there are no more particles to simulate
-  while ( simParticles.size() ) {
-    ISFParticle* curParticle = simParticles.back();
-    simParticles.pop_back();
-    auto& simSvc = identifySimulator(*curParticle);
-
-    ATH_CHECK( simSvc.simulate( std::move(*curParticle) ).isSuccess() );
-    // TODO: this is work in progress and newSecondaries should actually be
-    // returned by the simulate() call above
-    ISFParticleContainer newSecondaries;
 
-    simParticles.splice( end(simParticles), std::move(newSecondaries) );
+  // loop until there are no more particles to simulate
+  while (simParticles.size() ) {
+    ISF::ConstISFParticleVector particles{};
+    ISimulatorTool* lastSimulator{};
+    while ( simParticles.size() ) {
+      auto particlePtr =  simParticles.front();
+      ISFParticle& curParticle(*particlePtr);
+      simParticles.pop_front();
+
+      // Get the geo ID for the particle (should happen in inputConverter really)
+      /*AtlasDetDescr::AtlasRegion geoID =*/ m_geoIDSvc->identifyAndRegNextGeoID(curParticle);
+
+      auto& simTool = identifySimulator(curParticle);
+      if (&simTool==lastSimulator){ particles.push_back(particlePtr); }
+      else {
+        if (not particles.empty()) {
+          ISFParticleContainer newSecondaries;
+          //ATH_CHECK( simTool.simulate( std::move(curParticle), newSecondaries ) );
+          ATH_CHECK( simTool.simulateVector( particles, newSecondaries ) );
+          // add any returned ISFParticles to the list of particles to be simulated
+          simParticles.splice( end(simParticles), std::move(newSecondaries) );
+          // delete simulated particles
+          for (auto usedParticle: particles) {
+            ISF::ISFParticle *curPart = const_cast<ISF::ISFParticle*>(usedParticle); //FIXME const_cast badness
+            delete curPart;
+          }
+          particles.clear();
+        }
+        particles.push_back(particlePtr);
+        lastSimulator=&simTool;
+      }
+    }
+    //clean-up unsimulated particles
+    if (not particles.empty()) {
+      ISFParticleContainer newSecondaries;
+      if(!lastSimulator) { ATH_MSG_FATAL("Particles with no assigned simulator. Bail!"); return StatusCode::FAILURE; }
+      ATH_CHECK( lastSimulator->simulateVector( particles, newSecondaries ) );
+      // add any returned ISFParticles to the list of particles to be simulated
+      simParticles.splice( end(simParticles), std::move(newSecondaries) );
+      // delete simulated particles
+      for (auto usedParticle: particles) {
+        ISF::ISFParticle *curPart = const_cast<ISF::ISFParticle*>(usedParticle); //FIXME const_cast badness
+        delete curPart;
+      }
+      particles.clear();
+    }
   }
+  // Release the event from all simulators (TODO: make the tools do this)
+  for (auto& curSimTool: m_simulationTools) {
+    if ( curSimTool ) {
+      ATH_CHECK(curSimTool->releaseEvent());
+      ATH_MSG_DEBUG( "releaseEvent() completed for " << curSimTool->name() );
+    }
+  }
+
   return StatusCode::SUCCESS;
 }
 
@@ -118,17 +219,18 @@ StatusCode ISF::SimKernelMT::finalize() {
 
 
 /// Returns the simulator to use for the given particle
-ISF::ISimulationSvc& ISF::SimKernelMT::identifySimulator(const ISF::ISFParticle& particle) {
+ISF::ISimulatorTool& ISF::SimKernelMT::identifySimulator(const ISF::ISFParticle& particle) const {
   AtlasDetDescr::AtlasRegion geoID = particle.nextGeoID();
+
   auto& localSelectors = m_simSelectors[geoID];
   for (auto& selector: localSelectors) {
     bool selected = selector->selfSelect(particle);
     if (selected) {
-      return **selector->simulator();
+      return *m_simToolMap.at(selector->simFlavor());
     }
   }
 
   ATH_MSG_WARNING("No simulator found for particle (" << particle << ")."
-      << " Will send it to " << m_particleKillerSimulationSvc);
-  return *m_particleKillerSimulationSvc;
+                  << " Will send it to " << m_particleKillerTool->name());
+  return *m_particleKillerTool;
 }
diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.h b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.h
index 9c05947186ac1472992342251edd197bdbd63b66..371391711844858421b11a614569da6390121d97 100644
--- a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.h
+++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimKernelMT.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
@@ -13,8 +13,10 @@
 
 // Interfaces to ISF Tools and Services
 #include "ISF_Interfaces/IInputConverter.h"
-#include "ISF_Interfaces/ISimulationSvc.h"
+#include "ISF_Interfaces/ISimulatorTool.h"
+#include "ISF_Interfaces/IGeoIDSvc.h"
 #include "ISF_Interfaces/ISimulationSelector.h"
+#include "ISF_Interfaces/SimulationFlavor.h"
 
 // DetectorDescription
 #include "AtlasDetDescr/AtlasRegion.h"
@@ -30,7 +32,7 @@
 
 // STL includes
 #include <array>
-
+#include <map>
 
 // forward declarations
 namespace ISFTesting {
@@ -74,7 +76,7 @@ public:
 
 private:
   /// Returns the simulator to use for the given particle
-  ISimulationSvc& identifySimulator(const ISF::ISFParticle& particle);
+  ISimulatorTool& identifySimulator(const ISF::ISFParticle& particle) const;
 
   /// Input Generator Truth collection
   SG::ReadHandleKey<McEventCollection> m_inputEvgenKey;
@@ -84,11 +86,20 @@ private:
   /// Input converter service (from Generator->ISF particle types)
   ServiceHandle<IInputConverter> m_inputConverter;
 
+  /// Simulation Tools
+  ToolHandleArray<ISimulatorTool> m_simulationTools;
+
+  /// When no appropriate simulator can be found for a given particle, the particle is sent to this "particle killer":
+  ToolHandle<ISimulatorTool> m_particleKillerTool;
+
+  ServiceHandle<IGeoIDSvc>  m_geoIDSvc;
+
   /// The simulation selectors defining the "routing chain"
   std::array<ToolHandleArray<ISimulationSelector>, AtlasDetDescr::fNumAtlasRegions> m_simSelectors;
 
-  /// When no appropriate simulator can be found for a given particle, the particle is sent to this "particle killer":
-  ServiceHandle<ISimulationSvc> m_particleKillerSimulationSvc;
+  /// Map of the simulation flavours used in this job to the corresponding Simulation Services
+  std::map<ISF::SimulationFlavor, ISimulatorTool*> m_simToolMap;
+
 };
 
 } // namespace ISF
diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx b/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx
index 460e6ca72ae39d477c57c20760df934a54f6d340..94333ecf1a81107e032f99af5bb1c8e8a4fbf130 100644
--- a/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx
+++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
@@ -36,57 +36,57 @@
 
 namespace ISFTesting {
 
-// Globally used services and tools
-//
-const std::string particleKillerSimulationSvcName = "ISF::ParticleKillerSimSvc/ParticleKillerSimSvc";
-const std::string fullInputConverter = "ISF::InputConverter/InputConverter";
+  // Globally used services and tools
+  //
+  const std::string particleKillerSimulatorToolName = "ISF::ParticleKillerSimTool/ISF__ParticleKillerSimTool";
+  const std::string fullInputConverter = "ISF::InputConverter/InputConverter";
 
-// Athena Service to mock an InputConverter
-//
-const std::string mockInputConverterName = "ISFTesting::MockInputConverter/MyTestInputConverter";
+  // Athena Service to mock an InputConverter
+  //
+  const std::string mockInputConverterName = "ISFTesting::MockInputConverter/MyTestInputConverter";
 
-class MockInputConverter : public extends<AthService, ISF::IInputConverter> {
+  class MockInputConverter : public extends<AthService, ISF::IInputConverter> {
 
-public:
-  MockInputConverter(const std::string& name, ISvcLocator* svc)
-    : base_class(name,svc)
-  {  };
-  virtual ~MockInputConverter() { };
+  public:
+    MockInputConverter(const std::string& name, ISvcLocator* svc)
+      : base_class(name,svc)
+    {  };
+    virtual ~MockInputConverter() { };
 
-  MOCK_METHOD0(finalize, StatusCode());
-  MOCK_CONST_METHOD3(convert, StatusCode(const McEventCollection&,
-                                         ISF::ISFParticleContainer&,
-                                         bool));
-  MOCK_CONST_METHOD3(convertHepMCToG4Event, StatusCode(McEventCollection&,
-                                                       G4Event*&,
-                                                       bool));
-  MOCK_CONST_METHOD2(ISF_to_G4Event, G4Event*(const std::vector<const ISF::ISFParticle*>&,
-                                              HepMC::GenEvent*));
+    MOCK_METHOD0(finalize, StatusCode());
+    MOCK_CONST_METHOD3(convert, StatusCode(const McEventCollection&,
+                                           ISF::ISFParticleContainer&,
+                                           bool));
+    MOCK_CONST_METHOD3(convertHepMCToG4Event, StatusCode(McEventCollection&,
+                                                         G4Event*&,
+                                                         bool));
+    MOCK_CONST_METHOD2(ISF_to_G4Event, G4Event*(const std::vector<const ISF::ISFParticle*>&,
+                                                HepMC::GenEvent*));
 
-}; // MockInputConverter class
+  }; // MockInputConverter class
 
-DECLARE_COMPONENT( MockInputConverter )
+  DECLARE_COMPONENT( MockInputConverter )
 
 
-// Athena Service to mock an SimulationService
-//
-const std::string mockSimulationSvcName = "ISFTesting::MockSimulationSvc/MyTestSimulationSvc";
+  // Athena Service to mock a GeoIDSvc
+  //
+  const std::string mockGeoIDSvcName = "ISFTesting::MockGeoIDSvc/MyMockGeoIDSvc";
 
-class MockSimulationSvc : public ISF::BaseSimulationSvc {
+  class MockGeoIDSvc : public extends<AthService, ISF::IGeoIDSvc> {
 
-public:
-  MockSimulationSvc(const std::string& name, ISvcLocator* svc)
-    : ISF::BaseSimulationSvc(name, svc)
-  { };
-  virtual ~MockSimulationSvc() { };
+  public:
+    MockGeoIDSvc(const std::string& name, ISvcLocator* svc)
+      : base_class(name,svc)
+    {  };
+    MOCK_METHOD0(initialize, StatusCode());
+    MOCK_METHOD0(finalize, StatusCode());
 
-  MOCK_METHOD0(finalize, StatusCode());
-  MOCK_METHOD1(simulate, StatusCode(const ISF::ISFParticle&));
-  MOCK_METHOD0(setupEvent, StatusCode());
-  MOCK_METHOD0(releaseEvent, StatusCode());
-}; // MockSimulationSvc class
+    MOCK_CONST_METHOD2(inside, ISF::InsideType(const Amg::Vector3D &, AtlasDetDescr::AtlasRegion));
+    MOCK_CONST_METHOD1(identifyGeoID, AtlasDetDescr::AtlasRegion(const Amg::Vector3D &));
+    MOCK_CONST_METHOD2(identifyNextGeoID, AtlasDetDescr::AtlasRegion(const Amg::Vector3D &, const Amg::Vector3D &));
+  };
 
-DECLARE_COMPONENT( MockSimulationSvc )
+  DECLARE_COMPONENT( MockGeoIDSvc ) // MockGeoIDSvc class
 
 
 // Athena Tool to mock a SimulationSelector
@@ -97,8 +97,7 @@ class MockSimulationSelector : public extends<AthAlgTool, ISF::ISimulationSelect
 
 public:
   MockSimulationSelector(const std::string& type, const std::string& name, const IInterface* svclocator)
-    : base_class(type, name, svclocator),
-      m_simulator(mockSimulationSvcName, name)
+    : base_class(type, name, svclocator)
   {
   };
   virtual ~MockSimulationSelector() { };
@@ -108,27 +107,57 @@ public:
 
   // dummy methods implementing in pure virtual interface methods (to make class non-abstract)
   StatusCode initialize() {
-    ATH_CHECK( m_simulator.retrieve() );
-    return StatusCode::SUCCESS;
-  };
-  ServiceHandle<ISF::ISimulationSvc>* simulator() { return &m_simulator; };
+    ATH_MSG_INFO ("initializing MockSimulationSelector: " << name());
+    return StatusCode::SUCCESS; };
+  ServiceHandle<ISF::ISimulationSvc>* simulator() { return nullptr; };
   bool isDynamic() { return false; };
-  ISF::SimSvcID simSvcID() { return m_simulator->simSvcID(); };
-  ISF::SimulationFlavor simFlavor() { return ISF::UndefinedSim; };
+  ISF::SimSvcID simSvcID() { return 0; };
+  virtual ISF::SimulationFlavor simFlavor() override { return ISF::Fatras; }
   void initializeSelector() { };
   void beginEvent() { };
   void endEvent() { };
   void update(const ISF::ISFParticle& ) { };
   bool selfSelect(const ISF::ISFParticle& particle) { return passSelectorCuts(particle); };
 
-private:
-  ServiceHandle<ISF::ISimulationSvc> m_simulator;  //!< simulation service assigned to a single advisor
-
 }; // MockSimulationSelector class
 
 DECLARE_COMPONENT( MockSimulationSelector )
 
 
+// Athena Tool to mock a SimulatorTool
+//
+const std::string mockSimulatorToolName = "ISFTesting::MockSimulatorTool/MyTestSimulatorTool";
+
+class MockSimulatorTool : public extends<AthAlgTool, ISF::ISimulatorTool> {
+
+public:
+  MockSimulatorTool(const std::string& type, const std::string& name, const IInterface* svclocator)
+    : base_class(type, name, svclocator)
+  {
+  };
+  virtual ~MockSimulatorTool() { };
+
+  MOCK_METHOD0(finalize, StatusCode());
+  MOCK_METHOD0(setupEvent, StatusCode());
+  MOCK_METHOD2(simulate, StatusCode(const ISF::ISFParticle&, ISF::ISFParticleContainer&));
+  MOCK_METHOD2(simulateVector, StatusCode(const ISF::ConstISFParticleVector&, ISF::ISFParticleContainer&));
+  MOCK_METHOD0(releaseEvent, StatusCode());
+  MOCK_CONST_METHOD1(bid, int(const ISF::ISFParticle&));
+
+  // dummy methods implementing in pure virtual interface methods (to make class non-abstract)
+  virtual StatusCode initialize() override {
+    ATH_MSG_INFO ("initializing MockSimulatorTool: " << name());
+    return StatusCode::SUCCESS;
+  };
+  virtual StatusCode setupEventST() override { return StatusCode::FAILURE; };
+  virtual StatusCode releaseEventST() override { return StatusCode::FAILURE; };
+  virtual ISF::SimulationFlavor simFlavor() const override { return ISF::Fatras; };
+
+}; // MockSimulatorTool
+
+DECLARE_COMPONENT( MockSimulatorTool )
+
+
 // Gaudi Test fixture that provides a clean Gaudi environment for
 // each individual test case
 class GaudiFixture {
@@ -187,462 +216,494 @@ protected:
 };
 
 
-// Test fixture specifically for SimKernelMT AthAlgorithm
-class SimKernelMT_test: public ::testing::Test, public GaudiFixture {
+  // Test fixture specifically for SimKernelMT AthAlgorithm
+  class SimKernelMT_test: public ::testing::Test, public GaudiFixture {
 
-protected:
-  virtual void SetUp() override {
-    // the tested AthAlgorithm
-    m_alg = new ISF::SimKernelMT{"SimKernelMT", m_svcLoc};
-    EXPECT_TRUE( m_alg->setProperty("ParticleKillerSimulationSvc", particleKillerSimulationSvcName).isSuccess() );
+  protected:
+    virtual void SetUp() override {
+      // the tested AthAlgorithm
+      m_alg = new ISF::SimKernelMT{"SimKernelMT", m_svcLoc};
+      EXPECT_TRUE( m_alg->setProperty("ParticleKillerTool", particleKillerSimulatorToolName).isSuccess() );
+      EXPECT_TRUE( m_alg->setProperty("GeoIDSvc", mockGeoIDSvcName).isSuccess() );
 
-    // retrieve mocked Athena components
-    m_mockInputConverter = retrieveService<MockInputConverter>(mockInputConverterName);
-    m_mockSimulationSvc = retrieveService<MockSimulationSvc>(mockSimulationSvcName);
-    m_mockSimulationSelector = retrieveTool<MockSimulationSelector>(mockSimulationSelectorName);
-  }
+      // retrieve mocked Athena components
+      m_mockGeoIDSvc = retrieveService<MockGeoIDSvc>(mockGeoIDSvcName);
+      m_mockInputConverter = retrieveService<MockInputConverter>(mockInputConverterName);
+      m_mockSimulatorTool = retrieveTool<MockSimulatorTool>(mockSimulatorToolName);
+      m_mockSimulationSelector = retrieveTool<MockSimulationSelector>(mockSimulationSelectorName);
+    }
 
-  virtual void TearDown() override {
-    // let the Gaudi ServiceManager finalize all services
-    ASSERT_TRUE( m_svcMgr->finalize().isSuccess() );
+    virtual void TearDown() override {
+      // let the Gaudi ServiceManager finalize all services
+      ASSERT_TRUE( m_svcMgr->finalize().isSuccess() );
 
-    // release tested AthAlgorithm
-    delete m_alg;
-    // release various service instances
-    delete m_mockInputConverter;
-    delete m_mockSimulationSvc;
-  }
+      // release tested AthAlgorithm
+      delete m_alg;
+      // release various service instances
+      delete m_mockGeoIDSvc;
+      delete m_mockInputConverter;
+    }
 
-  template<typename T>
-  T* retrieveService(const std::string& name) {
-    T* service = nullptr;
-    SmartIF<IService>& serviceSmartPointer = m_svcLoc->service(name);
-    service = dynamic_cast<T*>(serviceSmartPointer.get());
-    EXPECT_NE(nullptr, service);
-    if(!service) {
-      return nullptr;
+    template<typename T>
+    T* retrieveService(const std::string& name) {
+      T* service = nullptr;
+      SmartIF<IService>& serviceSmartPointer = m_svcLoc->service(name);
+      service = dynamic_cast<T*>(serviceSmartPointer.get());
+      EXPECT_NE(nullptr, service);
+      if(!service) {
+        return nullptr;
+      }
+      EXPECT_TRUE( service->setProperties().isSuccess() );
+      EXPECT_TRUE( service->configure().isSuccess() );
+      EXPECT_TRUE( m_svcMgr->addService(service).isSuccess() );
+      // assert that finalize() gets called once per test case
+      EXPECT_CALL( *service, finalize() )
+        .Times(1)
+        .WillOnce(::testing::Return(StatusCode::SUCCESS));
+
+      return service;
     }
-    EXPECT_TRUE( service->setProperties().isSuccess() );
-    EXPECT_TRUE( service->configure().isSuccess() );
-    EXPECT_TRUE( m_svcMgr->addService(service).isSuccess() );
-    // assert that finalize() gets called once per test case
-    EXPECT_CALL( *service, finalize() )
-      .Times(1)
-      .WillOnce(::testing::Return(StatusCode::SUCCESS));
 
-    return service;
-  }
+    template<typename T>
+    T* retrieveTool(const std::string& name) {
+      IAlgTool* toolInterface = nullptr;
+      EXPECT_TRUE( m_toolSvc->retrieveTool(name, toolInterface).isSuccess() );
+      EXPECT_NE(nullptr, toolInterface);
+
+      T* tool = dynamic_cast<T*>(toolInterface);
+      EXPECT_NE(nullptr, tool);
+      if(!tool) {
+        return nullptr;
+      }
+
+      EXPECT_TRUE( tool->setProperties().isSuccess() );
+      EXPECT_TRUE( tool->configure().isSuccess() );
 
-  template<typename T>
-  T* retrieveTool(const std::string& name) {
-    IAlgTool* toolInterface = nullptr;
-    EXPECT_TRUE( m_toolSvc->retrieveTool(name, toolInterface).isSuccess() );
-    EXPECT_NE(nullptr, toolInterface);
+      // assert that finalize() gets called once per test case
+      EXPECT_CALL( *tool, finalize() )
+        .Times(1)
+        .WillOnce(::testing::Return(StatusCode::SUCCESS));
 
-    T* tool = dynamic_cast<T*>(toolInterface);
-    EXPECT_NE(nullptr, tool);
-    if(!tool) {
-      return nullptr;
+      return tool;
     }
 
-    EXPECT_TRUE( tool->setProperties().isSuccess() );
-    EXPECT_TRUE( tool->configure().isSuccess() );
+    void setEmptyInputOutputCollections() {
+      auto inputEvgen = std::make_unique<McEventCollection>();
+      SG::WriteHandle<McEventCollection> inputEvgenHandle{"emptyTestInputEvgenCollection"};
+      inputEvgenHandle.record( std::move(inputEvgen) );
 
-    // assert that finalize() gets called once per test case
-    EXPECT_CALL( *tool, finalize() )
-      .Times(1)
-      .WillOnce(::testing::Return(StatusCode::SUCCESS));
+      EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "emptyTestInputEvgenCollection").isSuccess() );
+      EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() );
+      EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
+    }
 
-    return tool;
-  }
+    // wrappers for private methods
+    // NB: This works because CollectionMerger_test is a friend of the tested
+    //     CollectionMerger class
+    //
+    template<typename ...Args>
+    ISF::ISimulatorTool& identifySimulator(Args&... args) {
+      return m_alg->identifySimulator(std::forward<Args>(args)...);
+    }
 
-  void setEmptyInputOutputCollections() {
-    auto inputEvgen = std::make_unique<McEventCollection>();
-    SG::WriteHandle<McEventCollection> inputEvgenHandle{"emptyTestInputEvgenCollection"};
-    inputEvgenHandle.record( std::move(inputEvgen) );
+    // the tested AthAlgorithm
+    ISF::SimKernelMT* m_alg;
 
-    EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "emptyTestInputEvgenCollection").isSuccess() );
-    EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() );
-    EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
-  }
+    // mocked Athena components
+    ISFTesting::MockGeoIDSvc* m_mockGeoIDSvc = nullptr;
+    ISFTesting::MockInputConverter* m_mockInputConverter = nullptr;
+    ISFTesting::MockSimulatorTool* m_mockSimulatorTool = nullptr;
+    ISFTesting::MockSimulationSelector* m_mockSimulationSelector = nullptr;
 
-  // wrappers for private methods
-  // NB: This works because CollectionMerger_test is a friend of the tested
-  //     CollectionMerger class
-  //
-  template<typename ...Args>
-  ISF::ISimulationSvc& identifySimulator(Args&... args) {
-    return m_alg->identifySimulator(std::forward<Args>(args)...);
-  }
+  };  // SimKernelMT_test fixture
 
-  // the tested AthAlgorithm
-  ISF::SimKernelMT* m_alg;
 
-  // mocked Athena components
-  ISFTesting::MockInputConverter* m_mockInputConverter = nullptr;
-  ISFTesting::MockSimulationSvc* m_mockSimulationSvc = nullptr;
-  ISFTesting::MockSimulationSelector* m_mockSimulationSelector = nullptr;
+  // checks if the two given HepMC::GenEvent instances are equal.
+  // returns true if they are equal, false otherwise
+  bool GenEventsEq(const HepMC::GenEvent& a, const HepMC::GenEvent& b) {
+    HepMC::GenEvent::vertex_const_iterator aVertexIterator = a.vertices_begin();
+    HepMC::GenEvent::vertex_const_iterator bVertexIterator = b.vertices_begin();
+    const auto& aVertexIteratorEnd = a.vertices_end();
+    const auto& bVertexIteratorEnd = b.vertices_end();
 
-};  // SimKernelMT_test fixture
+    bool eventsAreEqual = true;
 
+    do {
+      bool endReached = (aVertexIterator == aVertexIteratorEnd) ||
+        (bVertexIterator == bVertexIteratorEnd);
+      if (endReached) {
+        break;
+      }
 
-// checks if the two given HepMC::GenEvent instances are equal.
-// returns true if they are equal, false otherwise
-bool GenEventsEq(const HepMC::GenEvent& a, const HepMC::GenEvent& b) {
-  HepMC::GenEvent::vertex_const_iterator aVertexIterator = a.vertices_begin();
-  HepMC::GenEvent::vertex_const_iterator bVertexIterator = b.vertices_begin();
-  const auto& aVertexIteratorEnd = a.vertices_end();
-  const auto& bVertexIteratorEnd = b.vertices_end();
+      eventsAreEqual = **aVertexIterator == **bVertexIterator;
 
-  bool eventsAreEqual = true;
+      ++aVertexIterator;
+      ++bVertexIterator;
+    } while(eventsAreEqual);
 
-  do {
-    bool endReached = (aVertexIterator == aVertexIteratorEnd) ||
-                      (bVertexIterator == bVertexIteratorEnd);
-    if (endReached) {
-      break;
-    }
+    return eventsAreEqual;
+  }
 
-    eventsAreEqual = **aVertexIterator == **bVertexIterator;
 
-    ++aVertexIterator;
-    ++bVertexIterator;
-  } while(eventsAreEqual);
+  // matcher to check if the given McEventCollection contains one HepMC::GenEvent that's
+  // equal to the given expectedGenEvent
+  MATCHER_P(ContainsOneGenEventEq, expectedGenEvent, "is equal to expected HepMC::GenEvent") {
+    const auto& actualMcEventCollection = arg;
 
-  return eventsAreEqual;
-}
+    size_t expectedCollectionSize = 1;
+    auto actualCollectionSize = actualMcEventCollection.size();
+    if (expectedCollectionSize!=actualCollectionSize) {
+      return false;
+    }
 
+    size_t firstEventNum = 0;
+    const auto* actualGenEvent = actualMcEventCollection[firstEventNum];
+    return GenEventsEq(expectedGenEvent, *actualGenEvent);
+  }
 
-// matcher to check if the given McEventCollection contains one HepMC::GenEvent that's
-// equal to the given expectedGenEvent
-MATCHER_P(ContainsOneGenEventEq, expectedGenEvent, "is equal to expected HepMC::GenEvent") {
-  const auto& actualMcEventCollection = arg;
 
-  size_t expectedCollectionSize = 1;
-  auto actualCollectionSize = actualMcEventCollection.size();
-  if (expectedCollectionSize!=actualCollectionSize) {
-    return false;
+  TEST_F(SimKernelMT_test, unsetInputOutputCollections_expectInitializeFailure) {
+    ASSERT_TRUE( m_alg->initialize().isFailure() );
   }
 
-  size_t firstEventNum = 0;
-  const auto* actualGenEvent = actualMcEventCollection[firstEventNum];
-  return GenEventsEq(expectedGenEvent, *actualGenEvent);
-}
 
+  TEST_F(SimKernelMT_test, unsetInputCollection_expectInitializeFailure) {
+    EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
 
-TEST_F(SimKernelMT_test, unsetInputOutputCollections_expectInitializeFailure) {
-  ASSERT_TRUE( m_alg->initialize().isFailure() );
-}
+    ASSERT_TRUE( m_alg->initialize().isFailure() );
+  }
 
 
-TEST_F(SimKernelMT_test, unsetInputCollection_expectInitializeFailure) {
-  EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
+  TEST_F(SimKernelMT_test, unsetOutputCollection_expectInitializeFailure) {
+    EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
 
-  ASSERT_TRUE( m_alg->initialize().isFailure() );
-}
+    ASSERT_TRUE( m_alg->initialize().isFailure() );
+  }
 
 
-TEST_F(SimKernelMT_test, unsetOutputCollection_expectInitializeFailure) {
-  EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
+  TEST_F(SimKernelMT_test, unsetInputConverter_expectInitializeFailure) {
+    EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() );
 
-  ASSERT_TRUE( m_alg->initialize().isFailure() );
-}
+    ASSERT_TRUE( m_alg->initialize().isFailure() );
+  }
 
 
-TEST_F(SimKernelMT_test, unsetInputConverter_expectInitializeFailure) {
-  EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() );
+  TEST_F(SimKernelMT_test, allPropertiesSet_expectInitializeSuccess) {
+    EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "SomeRandomInputCollectionKey").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "SomeRandomOutputCollectionKey").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
 
-  ASSERT_TRUE( m_alg->initialize().isFailure() );
-}
+    ASSERT_TRUE( m_alg->initialize().isSuccess() );
+  }
 
 
-TEST_F(SimKernelMT_test, allPropertiesSet_expectInitializeSuccess) {
-  EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "SomeRandomInputCollectionKey").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "SomeRandomOutputCollectionKey").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
+  TEST_F(SimKernelMT_test, nonexistingInputOutputCollections_expectFailure) {
+    EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "DoesntExistInputCollection").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "DoesntExistOutputCollection").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
 
-  ASSERT_TRUE( m_alg->initialize().isSuccess() );
-}
+    ASSERT_TRUE( m_alg->initialize().isSuccess() );
+    ASSERT_TRUE( m_alg->execute().isFailure() );
+  }
 
 
-TEST_F(SimKernelMT_test, nonexistingInputOutputCollections_expectFailure) {
-  EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "DoesntExistInputCollection").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "DoesntExistOutputCollection").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
+  TEST_F(SimKernelMT_test, nonexistingOutputCollection_expectCreationOfOutputCollection) {
+    EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
 
-  ASSERT_TRUE( m_alg->initialize().isSuccess() );
-  ASSERT_TRUE( m_alg->execute().isFailure() );
-}
+    auto inputEvgen = std::make_unique<McEventCollection>();
+    SG::WriteHandle<McEventCollection> testInputEvgenHandle{"testInputEvgenCollection"};
+    testInputEvgenHandle.record( std::move(inputEvgen) );
 
+    ASSERT_TRUE( m_alg->initialize().isSuccess() );
+    ASSERT_TRUE( m_alg->execute().isSuccess() );
+    SG::ReadHandle<McEventCollection> testOutputTruthHandle("testOutputTruthCollection");
+    ASSERT_TRUE( testOutputTruthHandle.isValid() );
+  }
 
-TEST_F(SimKernelMT_test, nonexistingOutputCollection_expectCreationOfOutputCollection) {
-  EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
 
-  auto inputEvgen = std::make_unique<McEventCollection>();
-  SG::WriteHandle<McEventCollection> testInputEvgenHandle{"testInputEvgenCollection"};
-  testInputEvgenHandle.record( std::move(inputEvgen) );
+  TEST_F(SimKernelMT_test, emptyInputCollection_expectSuccess) {
+    auto inputEvgen = std::make_unique<McEventCollection>();
+    auto* genEvent = new HepMC::GenEvent{};
 
-  ASSERT_TRUE( m_alg->initialize().isSuccess() );
-  ASSERT_TRUE( m_alg->execute().isSuccess() );
-  SG::ReadHandle<McEventCollection> testOutputTruthHandle("testOutputTruthCollection");
-  ASSERT_TRUE( testOutputTruthHandle.isValid() );
-}
+    inputEvgen->push_back(genEvent);
+    SG::WriteHandle<McEventCollection> inputEvgenHandle{"testInputEvgenCollection"};
+    inputEvgenHandle.record( std::move(inputEvgen) );
 
+    EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
+    EXPECT_TRUE( m_alg->initialize().isSuccess() );
 
-TEST_F(SimKernelMT_test, emptyInputCollection_expectSuccess) {
-  auto inputEvgen = std::make_unique<McEventCollection>();
-  auto* genEvent = new HepMC::GenEvent{};
+    ASSERT_TRUE( m_alg->execute().isSuccess() );
+  }
 
-  inputEvgen->push_back(genEvent);
-  SG::WriteHandle<McEventCollection> inputEvgenHandle{"testInputEvgenCollection"};
-  inputEvgenHandle.record( std::move(inputEvgen) );
 
-  EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
-  EXPECT_TRUE( m_alg->initialize().isSuccess() );
+  TEST_F(SimKernelMT_test, filledInputCollection_expectFullConversion) {
+    auto* genEvent = new HepMC::GenEvent{};
+    HepMC::GenParticle* genPart = new HepMC::GenParticle{};
+    HepMC::FourVector mom{12.3, 45.6, 78.9, 0.12};
+    HepMC::GenParticle* genPart2 = new HepMC::GenParticle{mom,
+                                                          11,  // pdg id (e-)
+                                                          1  // status
+    };
+    auto* genVertex = new HepMC::GenVertex{};
+    genVertex->add_particle_out(genPart);
+    genVertex->add_particle_out(genPart2);
+    genEvent->add_vertex(genVertex);
 
-  ASSERT_TRUE( m_alg->execute().isSuccess() );
-}
+    auto inputEvgen = std::make_unique<McEventCollection>();
+    inputEvgen->push_back(genEvent);
+    SG::WriteHandle<McEventCollection> inputEvgenHandle{"testInputEvgenCollection"};
+    inputEvgenHandle.record( std::move(inputEvgen) );
 
+    EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
+    EXPECT_TRUE( m_alg->initialize().isSuccess() );
 
-TEST_F(SimKernelMT_test, filledInputCollection_expectFullConversion) {
-  auto* genEvent = new HepMC::GenEvent{};
-  HepMC::GenParticle* genPart = new HepMC::GenParticle{};
-  HepMC::FourVector mom{12.3, 45.6, 78.9, 0.12};
-  HepMC::GenParticle* genPart2 = new HepMC::GenParticle{mom,
-                                                        11,  // pdg id (e-)
-                                                        1  // status
-                                                        };
-  auto* genVertex = new HepMC::GenVertex{};
-  genVertex->add_particle_out(genPart);
-  genVertex->add_particle_out(genPart2);
-  genEvent->add_vertex(genVertex);
-
-  auto inputEvgen = std::make_unique<McEventCollection>();
-  inputEvgen->push_back(genEvent);
-  SG::WriteHandle<McEventCollection> inputEvgenHandle{"testInputEvgenCollection"};
-  inputEvgenHandle.record( std::move(inputEvgen) );
-
-  EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("InputConverter", mockInputConverterName).isSuccess() );
-  EXPECT_TRUE( m_alg->initialize().isSuccess() );
-
-  ASSERT_NE( m_mockInputConverter, nullptr );
-  EXPECT_CALL( *m_mockInputConverter, convert(ContainsOneGenEventEq(*genEvent),
-                                              ::testing::_,
-                                              ::testing::_) )
+    ASSERT_NE( m_mockInputConverter, nullptr );
+    EXPECT_CALL( *m_mockInputConverter, convert(ContainsOneGenEventEq(*genEvent),
+                                                ::testing::_,
+                                                ::testing::_) )
       .WillOnce(::testing::Return(StatusCode::SUCCESS));
 
-  ASSERT_TRUE( m_alg->execute().isSuccess() );
-}
+    ASSERT_TRUE( m_alg->execute().isSuccess() );
+  }
 
 
-TEST_F(SimKernelMT_test, emptyInputEvgenCollection_expectInitializeSuccess) {
-  this->setEmptyInputOutputCollections();
-  EXPECT_TRUE( m_alg->initialize().isSuccess() );
+  TEST_F(SimKernelMT_test, emptyInputEvgenCollection_expectInitializeSuccess) {
+    this->setEmptyInputOutputCollections();
+    EXPECT_TRUE( m_alg->initialize().isSuccess() );
 
-  ASSERT_TRUE( m_alg->execute().isSuccess() );
-}
+    ASSERT_TRUE( m_alg->execute().isSuccess() );
+  }
 
 
-TEST_F(SimKernelMT_test, emptySimulationSelectors_expectInitializeSuccess) {
-  EXPECT_TRUE( m_alg->setProperty("ForwardBeamPipeSimulationSelectors", "[]").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("InDetSimulationSelectors", "[]").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("CaloSimulationSelectors", "[]").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("MSSimulationSelectors", "[]").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("CavernSimulationSelectors", "[]").isSuccess() );
-  this->setEmptyInputOutputCollections();
+  TEST_F(SimKernelMT_test, specifyASimulationTool_expectInitializeSuccess) {
+    EXPECT_TRUE( m_alg->setProperty("SimulationTools", "['"+mockSimulatorToolName+"']").isSuccess() );
+    this->setEmptyInputOutputCollections();
+    EXPECT_TRUE( m_alg->initialize().isSuccess() );
 
-  ASSERT_TRUE( m_alg->initialize().isSuccess() );
-}
+    ASSERT_TRUE( m_alg->execute().isSuccess() );
+  }
 
 
-TEST_F(SimKernelMT_test, filledSimulationSelectors_expectInitializeSuccess) {
-  EXPECT_TRUE( m_alg->setProperty("ForwardBeamPipeSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); //mockSimulationSelectorName);
-  EXPECT_TRUE( m_alg->setProperty("InDetSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("CaloSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("MSSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("CavernSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
-  this->setEmptyInputOutputCollections();
+  TEST_F(SimKernelMT_test, emptySimulationSelectors_expectInitializeSuccess) {
+    EXPECT_TRUE( m_alg->setProperty("BeamPipeSimulationSelectors", "[]").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("IDSimulationSelectors", "[]").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("CaloSimulationSelectors", "[]").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("MSSimulationSelectors", "[]").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("CavernSimulationSelectors", "[]").isSuccess() );
+    this->setEmptyInputOutputCollections();
 
-  ASSERT_TRUE( m_alg->initialize().isSuccess() );
-}
+    ASSERT_TRUE( m_alg->initialize().isSuccess() );
+  }
 
 
-TEST_F(SimKernelMT_test, identifySimulator_particleInsideInnerDetectorAndInnerDetectorSimulationSelectorAcceptingParticle_expectInnerDetectorSimulatorReturned) {
-  EXPECT_TRUE( m_alg->setProperty("InDetSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
-  this->setEmptyInputOutputCollections();
-  EXPECT_TRUE( m_alg->initialize().isSuccess() );
-
-  Amg::Vector3D position(0., 1., 0.);  // close to the origin
-  Amg::Vector3D momentum(1., 2., 3.);
-  ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasID, ISF::fUndefinedSimID);
-  const ISF::ISFParticle particle(position,
-                                  momentum,
-                                  123.*Gaudi::Units::GeV,  // mass
-                                  -1.,  // charge
-                                  11,  // PDG code
-                                  0.2*Gaudi::Units::second,  // time
-                                  particleOrigin,
-                                  123  // BCID
-                                  );
-
-  ASSERT_NE( m_mockSimulationSelector, nullptr );
-  EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(particle) )
-    .WillOnce(::testing::Return(true));
-
-  const auto* actualSimulationSvcPtr = &this->identifySimulator(particle);
-
-  const auto* expectedSimulationSvcPtr = m_mockSimulationSvc;
-  ASSERT_EQ(expectedSimulationSvcPtr, actualSimulationSvcPtr);
-}
+  TEST_F(SimKernelMT_test, filledSimulationSelectors_expectInitializeFailure) {
+    EXPECT_TRUE( m_alg->setProperty("BeamPipeSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); //mockSimulationSelectorName);
+    EXPECT_TRUE( m_alg->setProperty("IDSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("CaloSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("MSSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("CavernSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
+    this->setEmptyInputOutputCollections();
 
+    ASSERT_TRUE( m_alg->initialize().isFailure() );
+  }
 
-TEST_F(SimKernelMT_test, identifySimulator_particleInsideInnerDetectorAndInnerDetectorSimulationSelectorNotAcceptingParticle_expectParticleKillerSimulatorReturned) {
-  EXPECT_TRUE( m_alg->setProperty("InDetSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
-  this->setEmptyInputOutputCollections();
-  EXPECT_TRUE( m_alg->initialize().isSuccess() );
-
-  Amg::Vector3D position(0., 1., 0.);  // close to the origin
-  Amg::Vector3D momentum(1., 2., 3.);
-  ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasID, ISF::fUndefinedSimID);
-  const ISF::ISFParticle particle(position,
-                                  momentum,
-                                  123.*Gaudi::Units::GeV,  // mass
-                                  -1.,  // charge
-                                  11,  // PDG code
-                                  0.2*Gaudi::Units::second,  // time
-                                  particleOrigin,
-                                  123  // BCID
-                                  );
-
-  ASSERT_NE( m_mockSimulationSelector, nullptr );
-  EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(particle) )
-    .WillOnce(::testing::Return(false));
-
-  const auto* actualSimulationSvcPtr = &this->identifySimulator(particle);
-  const std::string parentName = m_alg->name();
-  ServiceHandle<ISF::ISimulationSvc> particleKillerSimulationSvc(particleKillerSimulationSvcName, parentName);
-  const ISF::ISimulationSvc* expectedSimulationSvcPtr = &*particleKillerSimulationSvc;
-
-  ASSERT_EQ(expectedSimulationSvcPtr, actualSimulationSvcPtr);
-}
 
+  TEST_F(SimKernelMT_test, filledSimulationSelectors_expectInitializeSuccess) {
+    EXPECT_TRUE( m_alg->setProperty("ParticleKillerTool", mockSimulatorToolName).isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("BeamPipeSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() ); //mockSimulationSelectorName);
+    EXPECT_TRUE( m_alg->setProperty("IDSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("CaloSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("MSSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("CavernSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
+    this->setEmptyInputOutputCollections();
 
-TEST_F(SimKernelMT_test, identifySimulator_particleInsideCaloAndOnlyInnerDetectorSimulationSelectorPresent_expectSimulationSelectorNotCalledAndParticleKillerSimulatorReturned) {
-  EXPECT_TRUE( m_alg->setProperty("InDetSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
-  this->setEmptyInputOutputCollections();
-  EXPECT_TRUE( m_alg->initialize().isSuccess() );
-
-  Amg::Vector3D position(0., 1., 0.);  // close to the origin
-  Amg::Vector3D momentum(1., 2., 3.);
-  ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasCalo, ISF::fUndefinedSimID);
-  const ISF::ISFParticle particle(position,
-                                  momentum,
-                                  123.*Gaudi::Units::GeV,  // mass
-                                  -1.,  // charge
-                                  11,  // PDG code
-                                  0.2*Gaudi::Units::second,  // time
-                                  particleOrigin,
-                                  123  // BCID
-                                  );
-
-  ASSERT_NE( m_mockSimulationSelector, nullptr );
-  EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(::testing::_) )
-    .Times(0);
-
-  const auto* actualSimulationSvcPtr = &this->identifySimulator(particle);
-  const std::string parentName = m_alg->name();
-  ServiceHandle<ISF::ISimulationSvc> particleKillerSimulationSvc(particleKillerSimulationSvcName, parentName);
-  const ISF::ISimulationSvc* expectedSimulationSvcPtr = &*particleKillerSimulationSvc;
-
-  ASSERT_EQ(expectedSimulationSvcPtr, actualSimulationSvcPtr);
-}
+    ASSERT_TRUE( m_alg->initialize().isSuccess() );
+  }
 
 
-TEST_F(SimKernelMT_test, identifySimulator_particleInsideCaloAndCaloSimulationSelectorSelectingParticle_expectSimulatorReturned) {
-  EXPECT_TRUE( m_alg->setProperty("CaloSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
-  this->setEmptyInputOutputCollections();
-  EXPECT_TRUE( m_alg->initialize().isSuccess() );
-
-  Amg::Vector3D position(0., 1., 0.);  // close to the origin
-  Amg::Vector3D momentum(1., 2., 3.);
-  ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasCalo, ISF::fUndefinedSimID);
-  const ISF::ISFParticle particle(position,
-                                  momentum,
-                                  123.*Gaudi::Units::GeV,  // mass
-                                  -1.,  // charge
-                                  11,  // PDG code
-                                  0.2*Gaudi::Units::second,  // time
-                                  particleOrigin,
-                                  123  // BCID
-                                  );
-
-  ASSERT_NE( m_mockSimulationSelector, nullptr );
-  EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(particle) )
-    .WillOnce(::testing::Return(true));
-
-  const auto* actualSimulationSvcPtr = &this->identifySimulator(particle);
-  const ISF::ISimulationSvc* expectedSimulationSvcPtr = m_mockSimulationSvc;
-
-  ASSERT_EQ(expectedSimulationSvcPtr, actualSimulationSvcPtr);
-}
+  TEST_F(SimKernelMT_test, identifySimulator_particleInsideInnerDetectorAndInnerDetectorSimulationSelectorAcceptingParticle_expectInnerDetectorSimulatorReturned) {
+    EXPECT_TRUE( m_alg->setProperty("SimulationTools", "['"+mockSimulatorToolName+"']").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("IDSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
+    this->setEmptyInputOutputCollections();
+    EXPECT_TRUE( m_alg->initialize().isSuccess() );
+
+    Amg::Vector3D position(0., 1., 0.);  // close to the origin
+    Amg::Vector3D momentum(1., 2., 3.);
+    ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasID, ISF::fUndefinedSimID);
+    const ISF::ISFParticle particle(position,
+                                    momentum,
+                                    123.*Gaudi::Units::GeV,  // mass
+                                    -1.,  // charge
+                                    11,  // PDG code
+                                    0.2*Gaudi::Units::second,  // time
+                                    particleOrigin,
+                                    123  // BCID
+                                    );
+
+    ASSERT_NE( m_mockSimulationSelector, nullptr );
+    EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(particle) )
+      .WillOnce(::testing::Return(true));
+
+    const auto* actualSimulatorToolPtr = &this->identifySimulator(particle);
+
+    const auto* expectedSimulatorToolPtr = m_mockSimulatorTool;
+    ASSERT_EQ(expectedSimulatorToolPtr, actualSimulatorToolPtr);
+  }
 
 
-TEST_F(SimKernelMT_test, filledInputCollectionAndEmptySimulationSelectors_expectConvertedParticleSentToParticleKiller) {
-  auto* genEvent = new HepMC::GenEvent{};
-  HepMC::FourVector mom{12.3, 45.6, 78.9, 1234.5};
-  HepMC::GenParticle* genPart = new HepMC::GenParticle{mom,
-                                                       11,  // pdg id (e-)
-                                                       1  // status
-                                                       };
-  HepMC::FourVector pos{9., 8., 7., 678.9};
-  auto* genVertex = new HepMC::GenVertex{pos};
-  genVertex->add_particle_out(genPart);
-  genEvent->add_vertex(genVertex);
-
-  auto inputEvgen = std::make_unique<McEventCollection>();
-  inputEvgen->push_back(genEvent);
-  SG::WriteHandle<McEventCollection> inputEvgenHandle{"testInputEvgenCollection"};
-  inputEvgenHandle.record( std::move(inputEvgen) );
-
-  EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("ParticleKillerSimulationSvc", mockSimulationSvcName).isSuccess() );
-  EXPECT_TRUE( m_alg->setProperty("InputConverter", fullInputConverter).isSuccess() );
-  EXPECT_TRUE( m_alg->initialize().isSuccess() );
-
-  Amg::Vector3D position(9., 8., 7.);
-  Amg::Vector3D momentum(12.3, 45.6, 78.9);
-  ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fUndefinedAtlasRegion, ISF::fEventGeneratorSimID);
-  ISF::TruthBinding* truthBinding = new ISF::TruthBinding(genPart);
-
-  ISF::ISFParticle convertedParticle(position,
-                                     momentum,
-                                     0.510999*Gaudi::Units::MeV,  // e- mass
-                                     -1.,  // charge
-                                     11,  // e- PDG code
-                                     678.9/Gaudi::Units::c_light*Gaudi::Units::ns,  // time
-                                     particleOrigin,
-                                     0,  // BCID
-                                     10001,  // barcode
+  TEST_F(SimKernelMT_test, identifySimulator_particleInsideInnerDetectorAndInnerDetectorSimulationSelectorNotAcceptingParticle_expectParticleKillerSimulatorReturned) {
+    EXPECT_TRUE( m_alg->setProperty("SimulationTools", "['"+mockSimulatorToolName+"']").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("IDSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
+    this->setEmptyInputOutputCollections();
+    EXPECT_TRUE( m_alg->initialize().isSuccess() );
+
+    Amg::Vector3D position(0., 1., 0.);  // close to the origin
+    Amg::Vector3D momentum(1., 2., 3.);
+    ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasID, ISF::fUndefinedSimID);
+    const ISF::ISFParticle particle(position,
+                                    momentum,
+                                    123.*Gaudi::Units::GeV,  // mass
+                                    -1.,  // charge
+                                    11,  // PDG code
+                                    0.2*Gaudi::Units::second,  // time
+                                    particleOrigin,
+                                    123  // BCID
+                                    );
+
+    ASSERT_NE( m_mockSimulationSelector, nullptr );
+    EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(particle) )
+      .WillOnce(::testing::Return(false));
+
+    const auto* actualSimulatorToolPtr = &this->identifySimulator(particle);
+    ToolHandle<ISF::ISimulatorTool> particleKillerSimulatorTool(particleKillerSimulatorToolName);
+    const ISF::ISimulatorTool* expectedSimulatorToolPtr = &*particleKillerSimulatorTool;
+
+    ASSERT_EQ(expectedSimulatorToolPtr, actualSimulatorToolPtr);
+  }
+
+
+  TEST_F(SimKernelMT_test, identifySimulator_particleInsideCaloAndOnlyInnerDetectorSimulationSelectorPresent_expectSimulationSelectorNotCalledAndParticleKillerSimulatorReturned) {
+    EXPECT_TRUE( m_alg->setProperty("SimulationTools", "['"+mockSimulatorToolName+"']").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("IDSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
+    this->setEmptyInputOutputCollections();
+    EXPECT_TRUE( m_alg->initialize().isSuccess() );
+
+    Amg::Vector3D position(0., 1., 0.);  // close to the origin
+    Amg::Vector3D momentum(1., 2., 3.);
+    ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasCalo, ISF::fUndefinedSimID);
+    const ISF::ISFParticle particle(position,
+                                    momentum,
+                                    123.*Gaudi::Units::GeV,  // mass
+                                    -1.,  // charge
+                                    11,  // PDG code
+                                    0.2*Gaudi::Units::second,  // time
+                                    particleOrigin,
+                                    123  // BCID
+                                    );
+
+    ASSERT_NE( m_mockSimulationSelector, nullptr );
+    EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(::testing::_) )
+      .Times(0);
+
+    const auto* actualSimulatorToolPtr = &this->identifySimulator(particle);
+    ToolHandle<ISF::ISimulatorTool> particleKillerSimulatorTool(particleKillerSimulatorToolName);
+    const ISF::ISimulatorTool* expectedSimulatorToolPtr = &*particleKillerSimulatorTool;
+
+    ASSERT_EQ(expectedSimulatorToolPtr, actualSimulatorToolPtr);
+  }
+
+
+  TEST_F(SimKernelMT_test, identifySimulator_particleInsideCaloAndCaloSimulationSelectorSelectingParticle_expectSimulatorReturned) {
+    EXPECT_TRUE( m_alg->setProperty("SimulationTools", "['"+mockSimulatorToolName+"']").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("CaloSimulationSelectors", "['"+mockSimulationSelectorName+"']").isSuccess() );
+    this->setEmptyInputOutputCollections();
+    EXPECT_TRUE( m_alg->initialize().isSuccess() );
+
+    Amg::Vector3D position(0., 1., 0.);  // close to the origin
+    Amg::Vector3D momentum(1., 2., 3.);
+    ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fAtlasCalo, ISF::fUndefinedSimID);
+    const ISF::ISFParticle particle(position,
+                                    momentum,
+                                    123.*Gaudi::Units::GeV,  // mass
+                                    -1.,  // charge
+                                    11,  // PDG code
+                                    0.2*Gaudi::Units::second,  // time
+                                    particleOrigin,
+                                    123  // BCID
+                                    );
+
+    ASSERT_NE( m_mockSimulationSelector, nullptr );
+    EXPECT_CALL( *m_mockSimulationSelector, passSelectorCuts(particle) )
+      .WillOnce(::testing::Return(true));
+
+    const auto* actualSimulatorToolPtr = &this->identifySimulator(particle);
+    const auto* expectedSimulatorToolPtr = m_mockSimulatorTool;
+
+    ASSERT_EQ(expectedSimulatorToolPtr, actualSimulatorToolPtr);
+  }
+
+
+  TEST_F(SimKernelMT_test, filledInputCollectionAndEmptySimulationTools_expectConvertedParticleSentToParticleKiller) {
+    auto* genEvent = new HepMC::GenEvent{};
+    HepMC::FourVector mom{12.3, 45.6, 78.9, 1234.5};
+    HepMC::GenParticle* genPart = new HepMC::GenParticle{mom,
+                                                         11,  // pdg id (e-)
+                                                         1  // status
+    };
+    HepMC::FourVector pos{9., 8., 7., 678.9};
+    auto* genVertex = new HepMC::GenVertex{pos};
+    genVertex->add_particle_out(genPart);
+    genEvent->add_vertex(genVertex);
+
+    auto inputEvgen = std::make_unique<McEventCollection>();
+    inputEvgen->push_back(genEvent);
+    SG::WriteHandle<McEventCollection> inputEvgenHandle{"testInputEvgenCollection"};
+    inputEvgenHandle.record( std::move(inputEvgen) );
+
+    EXPECT_TRUE( m_alg->setProperty("InputEvgenCollection", "testInputEvgenCollection").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("OutputTruthCollection", "testOutputTruthCollection").isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("ParticleKillerTool", mockSimulatorToolName).isSuccess() );
+    EXPECT_TRUE( m_alg->setProperty("InputConverter", fullInputConverter).isSuccess() );
+    EXPECT_TRUE( m_alg->initialize().isSuccess() );
+
+    Amg::Vector3D position(9., 8., 7.);
+    Amg::Vector3D momentum(12.3, 45.6, 78.9);
+    ISF::DetRegionSvcIDPair particleOrigin(AtlasDetDescr::fUndefinedAtlasRegion, ISF::fEventGeneratorSimID);
+    ISF::TruthBinding* truthBinding = new ISF::TruthBinding(genPart);
+
+    ISF::ISFParticle convertedParticle(position,
+                                       momentum,
+                                       0.510999*Gaudi::Units::MeV,  // e- mass
+                                       -1.,  // charge
+                                       11,  // e- PDG code
+                                       678.9/Gaudi::Units::c_light*Gaudi::Units::ns,  // time
+                                       particleOrigin,
+                                       0,  // BCID
+                                       10001,  // barcode
                                      truthBinding
-                                     );
+                                       );
+
+    ASSERT_NE( m_mockSimulatorTool, nullptr );
+    EXPECT_CALL( *m_mockSimulatorTool, simulateVector(::testing::_,::testing::_) )
+      .Times(1)
+      .WillOnce(::testing::Return(StatusCode::SUCCESS));
 
-  ASSERT_NE( m_mockSimulationSvc, nullptr );
-  EXPECT_CALL( *m_mockSimulationSvc, simulate(convertedParticle) )
-    .Times(1)
-    .WillOnce(::testing::Return(StatusCode::SUCCESS));
+    ASSERT_NE( m_mockGeoIDSvc, nullptr );
+    EXPECT_CALL( *m_mockGeoIDSvc, identifyNextGeoID(::testing::_,::testing::_) )
+      .Times(1)
+      .WillOnce(::testing::Return(AtlasDetDescr::fAtlasID));
 
-  ASSERT_TRUE( m_alg->execute().isSuccess() );
-}
+    ASSERT_TRUE( m_alg->execute().isSuccess() );
+  }
 
 
 } // namespace ISFTesting
diff --git a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/BaseSimulationSvc.h b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/BaseSimulationSvc.h
index d37e3b59941362c6911647bb3e73177e6f27c2be..7a11a6e5b5b949244d5e1c8e88baa6685e17da49 100644
--- a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/BaseSimulationSvc.h
+++ b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/BaseSimulationSvc.h
@@ -1,11 +1,7 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// BaseSimulationSvc.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
 #ifndef ISF_BASESIMULATIONSVC_H
 #define ISF_BASESIMULATIONSVC_H 1
 
@@ -47,12 +43,7 @@ namespace ISF {
     BaseSimulationSvc( const std::string& name, ISvcLocator* pSvcLocator):
       base_class(name,pSvcLocator),
       m_evtStore( "StoreGateSvc/StoreGateSvc",  name ),
-      m_detStore( "StoreGateSvc/DetectorStore", name ),
-      m_simDescr(),
-      m_screenOutputPrefix("isf >> "),
-      m_chronoSvcName("ChronoStatSvc"),
-      m_chrono(0),
-      m_particleBroker(0)
+      m_detStore( "StoreGateSvc/DetectorStore", name )
     {
       // to be set to a unique descriptor
       declareProperty( "Identifier",
@@ -219,19 +210,19 @@ namespace ISF {
 
   protected:
     /** The simulator service descriptor */
-    std::string       m_simDescr;
+    std::string       m_simDescr{""};
 
     /** Screen output refinement - can be changed by declareProperty() */
-    std::string       m_screenOutputPrefix;
+    std::string       m_screenOutputPrefix{"isf >> "};
 
     /** Name of the timing service - can be set by declareProperty()*/
-    std::string       m_chronoSvcName;
+    std::string       m_chronoSvcName{"ChronoStatSvc"};
 
     /** The timing service for general usage */
-    IChronoStatSvc*   m_chrono;
+    IChronoStatSvc*   m_chrono{};
 
     /** The particle service used to push particles into the simulation */
-    IParticleBroker*  m_particleBroker;
+    IParticleBroker*  m_particleBroker{};
 
   };
 
diff --git a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/BaseSimulatorTool.h b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/BaseSimulatorTool.h
new file mode 100644
index 0000000000000000000000000000000000000000..dec2ba66ae0195d6342e1dc8968caf94efbd306c
--- /dev/null
+++ b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/BaseSimulatorTool.h
@@ -0,0 +1,127 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef ISF_INTERFACES_BASESIMULATORTOOL_H
+#define ISF_INTERFACES_BASESIMULATORTOOL_H 1
+
+// STL includes
+#include <string>
+
+// Gaudi
+#include "GaudiKernel/ServiceHandle.h"
+#include "GaudiKernel/ToolHandle.h"
+#include "GaudiKernel/IChronoStatSvc.h"
+
+// Athena
+#include "AthenaKernel/IOVSvcDefs.h"
+#include "AthenaBaseComps/AthAlgTool.h"
+
+// DetectorDescription
+#include "AtlasDetDescr/AtlasRegion.h"
+#include "AtlasDetDescr/AtlasRegionHelper.h"
+
+// ISF includes
+#include "ISF_Interfaces/ISimulatorTool.h"
+#include "ISF_Event/ISFParticle.h"
+#include "ISF_Event/SimSvcID.h"
+
+namespace ISF {
+
+  /** @class BaseSimulatorTool
+
+      Concrete base class for all simulator Tools
+
+  */
+  class BaseSimulatorTool : public extends<AthAlgTool, ISimulatorTool> {
+  public:
+
+    //** Constructor with parameters */
+    BaseSimulatorTool(const std::string& type, const std::string& name,  const IInterface* parent)
+      : base_class(type, name, parent)
+    {
+      // Service handling
+      declareProperty("ChronoStatService",    m_chronoSvcName     );
+    }
+
+    /** Destructor */
+    virtual ~BaseSimulatorTool() {}
+
+    /** Gaudi sysInitialize() methods */
+    virtual StatusCode sysInitialize() override
+    {
+      ATH_CHECK( AthAlgTool::sysInitialize() );
+      ATH_CHECK( serviceLocator()->service(m_chronoSvcName, m_chrono ) );
+      return StatusCode::SUCCESS;
+    }
+
+    /** */
+    virtual StatusCode initialize() override
+    {
+      return StatusCode::SUCCESS;
+    }
+
+    /** Setup Event chain - in case of a begin-of event action is needed */
+    virtual StatusCode setupEvent() override
+    { return StatusCode::FAILURE; }
+
+    /** Setup Event chain - in case of a begin-of event action is needed (called by ISimulationSvc) */
+    virtual StatusCode setupEventST() override
+    { return StatusCode::FAILURE; }
+
+    /** */
+    virtual StatusCode simulate( const ISFParticle& , ISFParticleContainer& ) override
+    { return StatusCode::FAILURE; }
+
+    /** Simulation call for vectors of particles */
+    virtual StatusCode simulateVector(const ConstISFParticleVector& particles, ISFParticleContainer& secondaries) override
+    {
+      // this implementation is a wrapper in case the simulator does
+      // implement particle-vector input
+
+      // simulate each particle individually
+      for (auto* cisp : particles) {
+        ATH_MSG_VERBOSE( "Starting simulation of particle: " << (*cisp) );
+        ATH_CHECK(this->simulate(*cisp, secondaries));
+      }
+      return StatusCode::SUCCESS;
+
+    }
+
+    /** Release Event chain - in case of an end-of event action is needed */
+    virtual StatusCode releaseEvent() override
+    { return StatusCode::FAILURE; }
+
+    /** Release Event chain - in case of an end-of event action is needed (called by ISimulationSvc) */
+    virtual StatusCode releaseEventST() override
+    { return StatusCode::FAILURE; }
+
+    /** wrapper call to start chrono with given tag */
+    const ChronoEntity* chronoStart(const IChronoSvc::ChronoTag& tag ) {
+      if (m_chrono) return m_chrono->chronoStart( tag);
+      return nullptr;
+    }
+
+    /** wrapper call to stop chrono with given tag */
+    const ChronoEntity* chronoStop(const IChronoSvc::ChronoTag& tag ) {
+      if (m_chrono) return m_chrono->chronoStop( tag);
+      return nullptr;
+    }
+
+  private:
+    /** Default constructor */
+    BaseSimulatorTool();
+
+  protected:
+    /** Name of the timing service - can be set by declareProperty()*/
+    std::string       m_chronoSvcName{"ChronoStatSvc"};
+
+    /** The timing service for general usage */
+    IChronoStatSvc*   m_chrono{};
+
+  };
+
+}
+
+
+#endif //> !ISF_INTERFACES_BASESIMULATORTOOL_H
diff --git a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/ISimulationSvc.h b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/ISimulationSvc.h
index 3b0853ef4970d7ce7665f1beb134290bf436ec78..132c7602117ba0e64529435e8464efdd704b60d9 100644
--- a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/ISimulationSvc.h
+++ b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/ISimulationSvc.h
@@ -1,10 +1,7 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// ISimulationSvc.h, (c) ATLAS Detector software
-/////////////////////////////////////////////////////////////////// 
 #ifndef ISF_INTERFACES_ISIMULATIONSVC_H
 #define ISF_INTERFACES_ISIMULATIONSVC_H 1
 
@@ -26,53 +23,53 @@ namespace ISF {
   class IParticleBroker;
 
   /** @ class ISimulationSvc
-  
+
       Main interface of either geometrical of flavor simulation service.
-      The SimulationSvc does not take ownership of the StackParticle. 
+      The SimulationSvc does not take ownership of the StackParticle.
       The IStackSvc and ITruthSvc handles are provided by the kernel to force one unique configuration.
-      
+
       @ author Andreas.Salzburger -at- cern.ch, Michael.Duehrssen -at- cern.ch , Elmar.Ritsch -at- cern.ch
-     */
-  class ISimulationSvc : virtual public IInterface { 
-
-      /////////////////////////////////////////////////////////////////// 
-      // Public methods: 
-      /////////////////////////////////////////////////////////////////// 
-    public: 
-      ISimulationSvc() : m_ssvcID( ISF::fUndefinedSimID) { };
-
-      /// Creates the InterfaceID and interfaceID() method
-      DeclareInterfaceID(ISimulationSvc, 1, 0);
-      
-      /** Inform the SimulationSvc about the ParticleBroker */
-      virtual StatusCode setParticleBroker( IParticleBroker *broker) = 0;
-
-      /** Simulation call for vectors of particles*/
-      virtual StatusCode simulateVector(const ConstISFParticleVector &particles) = 0;
-
-      /** Simulation call for individual particles*/
-      virtual StatusCode simulate(const ISFParticle& isp) = 0;
-
-      /** Return the simulation service descriptor */
-      virtual std::string& simSvcDescriptor() = 0;
-
-      /** Setup Event chain - in case of a begin-of event action is needed, 
-          to be called by simulation kernel */
-      virtual StatusCode setupEvent() = 0;                             
-                                 
-      /** Release Event chain - in case of an end-of event action is needed,
-          to be called by simulation kernel  */
-      virtual StatusCode releaseEvent() = 0;                             
-    
-      /** Assign a simulation service ID */
-      inline void assignSimSvcID(SimSvcID id);
-
-      /** Return the simulation service ID */
-      inline SimSvcID simSvcID();
-
-    private:
-      SimSvcID        m_ssvcID;
-  }; 
+  */
+  class ISimulationSvc : virtual public IInterface {
+
+    ///////////////////////////////////////////////////////////////////
+    // Public methods:
+    ///////////////////////////////////////////////////////////////////
+  public:
+    ISimulationSvc() { };
+
+    /// Creates the InterfaceID and interfaceID() method
+    DeclareInterfaceID(ISimulationSvc, 1, 0);
+
+    /** Inform the SimulationSvc about the ParticleBroker */
+    virtual StatusCode setParticleBroker( IParticleBroker *broker) = 0;
+
+    /** Simulation call for vectors of particles*/
+    virtual StatusCode simulateVector(const ConstISFParticleVector &particles) = 0;
+
+    /** Simulation call for individual particles*/
+    virtual StatusCode simulate(const ISFParticle& isp) = 0;
+
+    /** Return the simulation service descriptor */
+    virtual std::string& simSvcDescriptor() = 0;
+
+    /** Setup Event chain - in case of a begin-of event action is needed,
+        to be called by simulation kernel */
+    virtual StatusCode setupEvent() = 0;
+
+    /** Release Event chain - in case of an end-of event action is needed,
+        to be called by simulation kernel  */
+    virtual StatusCode releaseEvent() = 0;
+
+    /** Assign a simulation service ID */
+    inline void assignSimSvcID(SimSvcID id);
+
+    /** Return the simulation service ID */
+    inline SimSvcID simSvcID();
+
+  private:
+    SimSvcID        m_ssvcID{ISF::fUndefinedSimID};
+  };
 
   /** inline methods */
   inline void ISimulationSvc::assignSimSvcID(SimSvcID id) { m_ssvcID = id; }
@@ -81,4 +78,3 @@ namespace ISF {
 }
 
 #endif //> !ISF_INTERFACES_ISIMULATIONSVC_H
-
diff --git a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/ISimulatorTool.h b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/ISimulatorTool.h
new file mode 100644
index 0000000000000000000000000000000000000000..8d6c4280cda2ec0c695ff013290b6c88c37f5617
--- /dev/null
+++ b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/ISimulatorTool.h
@@ -0,0 +1,54 @@
+// -*- c++ -*-
+
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef ISF_ISIMULATORTOOL_H
+#define ISF_ISIMULATORTOOL_H
+
+// Gaudi
+#include "GaudiKernel/IAlgTool.h"
+
+// ISF
+#include "ISF_Interfaces/SimulationFlavor.h"
+
+#include "ISF_Event/ISFParticle.h"
+#include "ISF_Event/ISFParticleContainer.h"
+#include "ISF_Event/ISFParticleVector.h"
+
+namespace ISF {
+
+class ISimulatorTool : virtual public IAlgTool {
+public:
+  DeclareInterfaceID(ISimulatorTool, 1, 0);
+
+  /** Simulation call for individual particles*/
+  virtual StatusCode simulate(const ISFParticle& isp, ISFParticleContainer& secondaries ) = 0;
+
+  /** Simulation call for vectors of particles*/
+  virtual StatusCode simulateVector(const ConstISFParticleVector &particles, ISFParticleContainer& secondaries) = 0;
+
+  /** Create data containers for an event */
+  virtual StatusCode setupEvent() = 0;
+
+  /** Create data containers for an event (called by ISimulationSvc) */
+  virtual StatusCode setupEventST() = 0;
+
+  /** Finalise data containers for an event */
+  virtual StatusCode releaseEvent() = 0;
+
+  /** Finalise data containers for an event (called by ISimulationSvc) */
+  virtual StatusCode releaseEventST() = 0;
+
+  /** return the simulation flavor */
+  virtual ISF::SimulationFlavor simFlavor() const = 0;
+
+  /** Migration path, allowing simulatortool to act as a particle broker, does not need to be implemented **/
+  virtual void push( ISF::ISFParticle*, const ISF::ISFParticle* ) { return; };
+
+};
+
+}
+
+#endif
diff --git a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/SimulationFlavor.h b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/SimulationFlavor.h
index ca63b9275bd0e5e9f3de6f1974e825848fbc1267..ea1f6e939fcd88e9ccdadf72aa59e51b680e77ff 100644
--- a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/SimulationFlavor.h
+++ b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/SimulationFlavor.h
@@ -18,11 +18,17 @@ namespace ISF {
   /** enum to make the code more readable */
   enum SimulationDefinitions {
     UndefinedSim = 0,
-    FatrasSim = 1,
-    Geant4Sim = 2,
-    FastCaloSim = 3
+    ParticleKiller = 1,
+    Fatras = 2,
+    Geant4 = 3,
+    FastCaloSim = 4,
+    FastCaloSimV2 = 5,
+    Parametric = 6,
+    FatrasPileup = 7,
+    FastCaloSimPileup = 8,
+    NFlavors = 9
   };
 
 }
 
-#endif 
+#endif
diff --git a/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfig.py b/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfig.py
index 36f87a3673e758de958415b9208c759485ae1299..b34858f748a8a849693d527fe63784488a80c3bd 100644
--- a/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfig.py
+++ b/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 """
 Tools configurations for ISF
@@ -62,9 +62,9 @@ def getAFIIGeoIDSvc(name="ISF_AFIIGeoIDSvc", **kwargs):
 
 def getParticleKillerSvc(name="ISF_ParticleKillerSvc", **kwargs):
     kwargs.setdefault('Identifier',           "ParticleKiller")
+    kwargs.setdefault('SimulatorTool',        "ISF_ParticleKillerTool")
     return CfgMgr.ISF__ParticleKillerSimSvc(name, **kwargs)
 
-
 def getGenParticleFilters():
     genParticleFilterList = []
     genParticleFilterList = ['ISF_ParticleFinalStateFilter'] # not used for Quasi-stable particle simulation
diff --git a/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.cxx b/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.cxx
index 7f78101df053be5c853fe80d547972f23779763a..269a95f885d98ecea9291aff888cbb9eeaf0c041 100644
--- a/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.cxx
+++ b/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.cxx
@@ -1,11 +1,7 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// ParticleKillerSimSvc.cxx, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
 // class header include
 #include "ParticleKillerSimSvc.h"
 
@@ -24,40 +20,16 @@ ISF::ParticleKillerSimSvc::~ParticleKillerSimSvc()
 /** framework methods */
 StatusCode ISF::ParticleKillerSimSvc::initialize()
 {
-  ATH_MSG_INFO ( m_screenOutputPrefix << "initialize() ...");
-  return StatusCode::SUCCESS;
-}
-
-/** framework methods */
-StatusCode ISF::ParticleKillerSimSvc::finalize()
-{
-  ATH_MSG_INFO ( m_screenOutputPrefix << "finalize() ...");
-  return StatusCode::SUCCESS;
-}
-
-StatusCode ISF::ParticleKillerSimSvc::setupEvent()
-{
-  ATH_MSG_DEBUG ( m_screenOutputPrefix << "setup Event");
-  return StatusCode::SUCCESS;
-}
-
-StatusCode ISF::ParticleKillerSimSvc::releaseEvent()
-{
-  ATH_MSG_DEBUG ( m_screenOutputPrefix << "release Event");
+  ATH_CHECK (m_simulatorTool.retrieve());
   return StatusCode::SUCCESS;
 }
 
 /** Simulation Call */
 StatusCode ISF::ParticleKillerSimSvc::simulate(const ISF::ISFParticle& particle)
 {
-
-  // give a screen output that you entered ParticleKillerSimSvc
-  ATH_MSG_VERBOSE( m_screenOutputPrefix << "Particle '" << particle
-                   << "' received for simulation." );
-  ATH_MSG_VERBOSE( m_screenOutputPrefix << "Killing this particle, since this"
-                   << "is the soul purpose of this 'simulation engine'." );
-
-  // particle 'simulation' done
-  // (memory management, ie delete, of the ISFParticle is done inside the ISFKernel)
+  ATH_MSG_VERBOSE( m_screenOutputPrefix << " simulate" );
+  ISFParticleContainer secondaries;
+  ATH_CHECK(m_simulatorTool->simulate( particle,  secondaries));
+  ATH_MSG_VERBOSE( "Returned "<< secondaries.size() << " secondaries.");
   return StatusCode::SUCCESS;
 }
diff --git a/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.h b/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.h
index 5900edb24fdfb307a4d1c27d52285636b58b50ee..2c62b3a7b2cdbb7da6fba64bb4579b96c6c6954a 100644
--- a/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.h
+++ b/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleKillerSimSvc.h
@@ -1,11 +1,7 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// ParticleKillerSimSvc.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
 #ifndef ISF_PARTICLEKILLERSIMSVC_H
 #define ISF_PARTICLEKILLERSIMSVC_H 1
 
@@ -14,41 +10,38 @@
 
 // ISF includes
 #include "ISF_Interfaces/BaseSimulationSvc.h"
+#include "ISF_Interfaces/ISimulatorTool.h"
+#include "ISF_Event/ISFParticleContainer.h"
 
 namespace ISF {
 
   /** @class ParticleKillerSimSvc
-      
+
       This ISF SimulationService does literally nothing with the particles
       handed over in the simulate(...) call. Thus those particles will be
       removed from further simulation in ISF.
-  
+
       @author Elmar.Ritsch -at- cern.ch
-     */
-  class ParticleKillerSimSvc : public ISF::BaseSimulationSvc { 
-
-    public: 
-      //** Constructor with parameters */
-      ParticleKillerSimSvc( const std::string& name, ISvcLocator* pSvcLocator );
-      
-      /** Destructor */
-      virtual ~ParticleKillerSimSvc(); 
-      
-      /** Athena algorithm's interface methods */
-      StatusCode  initialize();
-      StatusCode  finalize();
-
-      /** Simulation Call  */
-      StatusCode simulate(const ISF::ISFParticle& isp);
-                                                                 
-      /** Setup Event chain - in case of a begin-of event action is needed */
-      StatusCode setupEvent();
-
-      /** Release Event chain - in case of an end-of event action is needed */
-      StatusCode releaseEvent();
-
-    private:     
-  }; 
+  */
+  class ParticleKillerSimSvc : public ISF::BaseSimulationSvc {
+
+  public:
+    //** Constructor with parameters */
+    ParticleKillerSimSvc( const std::string& name, ISvcLocator* pSvcLocator );
+
+    /** Destructor */
+    virtual ~ParticleKillerSimSvc();
+
+    /** Athena algorithm's interface methods */
+    virtual StatusCode  initialize() override;
+
+    /** Simulation Call  */
+    virtual StatusCode simulate(const ISF::ISFParticle& isp) override;
+
+  private:
+    PublicToolHandle<ISF::ISimulatorTool> m_simulatorTool{this, "SimulatorTool", "ISF__ParticleKillerSimTool", ""};
+
+  };
 }
 
 
diff --git a/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfig.py b/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfig.py
index e0395f06a0cce7dc611cbc7138b939b33e1a28d0..3df793f628dbb01bd84a316729e3b213c8150163 100644
--- a/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfig.py
+++ b/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 """
 Tools configurations for ISF
@@ -137,3 +137,5 @@ def getParticleOrderingTool(name="ISF_ParticleOrderingTool", **kwargs):
     kwargs.setdefault('OrderCavern'      , 1           )
     return CfgMgr.ISF__GenericParticleOrderingTool(name, **kwargs)
 
+def getParticleKillerTool(name="ISF_ParticleKillerTool", **kwargs):
+    return CfgMgr.ISF__ParticleKillerSimTool(name, **kwargs)
diff --git a/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigDb.py b/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigDb.py
index ac3356a729647a4cf9e2d5a59585b48859c71fa4..1963ca7ce1b5763e020d707ac91cfaefdfb141bf 100644
--- a/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigDb.py
+++ b/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigDb.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 """
 Configuration database for ISF_Tools
@@ -29,3 +29,5 @@ addTool("ISF_Tools.ISF_ToolsConfig.getMC18EntryLayerFilter"                 , "I
 addTool("ISF_Tools.ISF_ToolsConfig.getMC18LLPEntryLayerFilter"              , "ISF_MC18LLPEntryLayerFilter"         )
 addTool("ISF_Tools.ISF_ToolsConfig.getValidationEntryLayerFilter"           , "ISF_ValidationEntryLayerFilter"      )
 addTool("ISF_Tools.ISF_ToolsConfig.getStoppedParticleFilter"                , "ISF_StoppedParticleFilter"           )
+
+addTool("ISF_Tools.ISF_ToolsConfig.getParticleKillerTool"                   , "ISF_ParticleKillerTool"              )
diff --git a/Simulation/ISF/ISF_Core/ISF_Tools/src/ParticleKillerSimTool.cxx b/Simulation/ISF/ISF_Core/ISF_Tools/src/ParticleKillerSimTool.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..b75d9522d9abbf9570c15b2ab5fa09a4b347d548
--- /dev/null
+++ b/Simulation/ISF/ISF_Core/ISF_Tools/src/ParticleKillerSimTool.cxx
@@ -0,0 +1,37 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "./ParticleKillerSimTool.h"
+
+ISF::ParticleKillerSimTool::ParticleKillerSimTool(const std::string& type, const std::string& name,  const IInterface* parent)
+  : BaseSimulatorTool(type, name, parent)
+{
+}
+
+ISF::ParticleKillerSimTool::~ParticleKillerSimTool() {
+
+}
+
+StatusCode ISF::ParticleKillerSimTool::initialize() {
+  return StatusCode::SUCCESS;
+}
+
+StatusCode ISF::ParticleKillerSimTool::simulate( const ISFParticle& isp, ISFParticleContainer& ) {
+
+  // give a screen output that you entered ParticleKillerSimSvc
+  ATH_MSG_VERBOSE( "Particle '" << isp << "' received for simulation." );
+  ATH_MSG_VERBOSE( "Killing this particle, since this"
+                   << "is the soul purpose of this 'simulation engine'." );
+
+  // particle 'simulation' done
+  // (memory management, ie delete, of the ISFParticle is done inside the ISFKernel)
+  return StatusCode::SUCCESS;
+}
+
+StatusCode ISF::ParticleKillerSimTool::simulateVector(const ConstISFParticleVector& particles, ISFParticleContainer& secondaries) {
+  for (auto isp : particles) {
+    ATH_CHECK(simulate(*isp, secondaries));
+  }
+  return StatusCode::SUCCESS;
+}
diff --git a/Simulation/ISF/ISF_Core/ISF_Tools/src/ParticleKillerSimTool.h b/Simulation/ISF/ISF_Core/ISF_Tools/src/ParticleKillerSimTool.h
new file mode 100644
index 0000000000000000000000000000000000000000..79f8a6d3fca83c352a0039a03000b6b8212064c8
--- /dev/null
+++ b/Simulation/ISF/ISF_Core/ISF_Tools/src/ParticleKillerSimTool.h
@@ -0,0 +1,44 @@
+// -*- c++ -*-
+
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef ISF_PARTICLEKILLERSIMTOOL_h
+#define ISF_PARTICLEKILLERSIMTOOL_h
+
+//Gaudi
+#include "GaudiKernel/ServiceHandle.h"
+#include "GaudiKernel/ToolHandle.h"  // for ToolHandleArray
+
+//Athena
+#include "AthenaBaseComps/AthAlgTool.h"
+
+// ISF
+#include "ISF_Interfaces/BaseSimulatorTool.h"
+
+namespace ISF {
+
+class ParticleKillerSimTool : public BaseSimulatorTool  {
+public:
+  ParticleKillerSimTool( const std::string& type, const std::string& name,  const IInterface* parent);
+
+  ~ParticleKillerSimTool();
+
+  virtual StatusCode initialize() override;
+
+  virtual StatusCode simulate( const ISFParticle& isp, ISFParticleContainer& ) override;
+
+  /** */
+  virtual StatusCode simulateVector(const ConstISFParticleVector& particles, ISFParticleContainer& ) override;
+
+  virtual StatusCode setupEvent() override { return StatusCode::SUCCESS; };
+
+  virtual StatusCode releaseEvent() override { return StatusCode::SUCCESS; };
+
+  virtual ISF::SimulationFlavor simFlavor() const override { return ISF::ParticleKiller; };
+};
+
+}
+
+#endif
diff --git a/Simulation/ISF/ISF_Core/ISF_Tools/src/components/ISF_Tools_entries.cxx b/Simulation/ISF/ISF_Core/ISF_Tools/src/components/ISF_Tools_entries.cxx
index 1bccb0e4c783b07b538c072f41a523aa515ea39e..1301c6983a45cd7c12d7dba6ed095d377afbdddd 100644
--- a/Simulation/ISF/ISF_Core/ISF_Tools/src/components/ISF_Tools_entries.cxx
+++ b/Simulation/ISF/ISF_Core/ISF_Tools/src/components/ISF_Tools_entries.cxx
@@ -5,6 +5,7 @@
 #include "../KinematicParticleFilter.h"
 #include "../CosmicEventFilterTool.h"
 #include "../GenericParticleOrderingTool.h"
+#include "../ParticleKillerSimTool.h"
 
 DECLARE_COMPONENT( ISF::ParticleHelper )
 DECLARE_COMPONENT( ISF::MemoryMonitoringTool )
@@ -13,4 +14,4 @@ DECLARE_COMPONENT( ISF::EntryLayerFilter )
 DECLARE_COMPONENT( ISF::KinematicParticleFilter )
 DECLARE_COMPONENT( ISF::CosmicEventFilterTool )
 DECLARE_COMPONENT( ISF::GenericParticleOrderingTool )
-
+DECLARE_COMPONENT( ISF::ParticleKillerSimTool )
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt
index e7f07e8b2031834ffc586aea72f45650f54f29d0..413eb3383422bbaeafe95b134acf7b5becd48424 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt
@@ -61,6 +61,7 @@ atlas_add_root_dictionary( ISF_FastCaloSimEvent _dictSource
                            ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationHitChain.h
                            ISF_FastCaloSimEvent/TFCSCenterPositionCalculation.h
                            ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrization.h
+                           ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrizationFCal.h
                            ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationHitNumberFromE.h
                            ISF_FastCaloSimEvent/TFCSHitCellMapping.h
                            ISF_FastCaloSimEvent/TFCSHitCellMappingFCal.h
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/LinkDef.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/LinkDef.h
index 4979ed94f1f9b1e0a1a189dbdd7b737ca2d236e7..ffce63d8d40aac7be68aa41367d975c00201c813 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/LinkDef.h
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/LinkDef.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "ISF_FastCaloSimEvent/DoubleArray.h"
@@ -41,6 +41,7 @@
 #include "ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationHitChain.h"
 #include "ISF_FastCaloSimEvent/TFCSCenterPositionCalculation.h"
 #include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrization.h"
+#include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrizationFCal.h"
 #include "ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationHitNumberFromE.h"
 #include "ISF_FastCaloSimEvent/TFCSHitCellMapping.h"
 #include "ISF_FastCaloSimEvent/TFCSHitCellMappingFCal.h"
@@ -148,6 +149,7 @@
 #pragma link C++ class TFCSLateralShapeParametrizationHitChain+;
 #pragma link C++ class TFCSCenterPositionCalculation+;
 #pragma link C++ class TFCSHistoLateralShapeParametrization+;
+#pragma link C++ class TFCSHistoLateralShapeParametrizationFCal+;
 #pragma link C++ class TFCSLateralShapeParametrizationHitNumberFromE+;
 #pragma link C++ class TFCSHitCellMapping+;
 #pragma link C++ class TFCSHitCellMappingFCal+;
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrization.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrization.h
index 6066bad3d8f24b58b8ec4a9609d8d9fe69bb1d5c..1f6f406bef02dafcd73a74633f24b04d704c7d53 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrization.h
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrization.h
@@ -45,11 +45,13 @@ public:
   const TFCS2DFunctionHistogram& histogram() const {return m_hist;};
   
   void Print(Option_t *option = "") const override;
-private:
+protected:
   /// Histogram to be used for the shape simulation
   TFCS2DFunctionHistogram m_hist;
   float m_nhits;
 
+private:
+
   ClassDefOverride(TFCSHistoLateralShapeParametrization,1)  //TFCSHistoLateralShapeParametrization
 };
 
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrizationFCal.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrizationFCal.h
new file mode 100644
index 0000000000000000000000000000000000000000..46e934939c9b51d535779854824223658f1abd0f
--- /dev/null
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrizationFCal.h
@@ -0,0 +1,29 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef TFCSHistoLateralShapeParametrizationFCal_h
+#define TFCSHistoLateralShapeParametrizationFCal_h
+
+#include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrization.h"
+#include "ISF_FastCaloSimEvent/TFCS2DFunctionHistogram.h"
+
+class TH2;
+
+class TFCSHistoLateralShapeParametrizationFCal:public TFCSHistoLateralShapeParametrization {
+public:
+  TFCSHistoLateralShapeParametrizationFCal(const char* name=nullptr, const char* title=nullptr);
+  ~TFCSHistoLateralShapeParametrizationFCal();
+
+  virtual FCSReturnCode simulate_hit(Hit& hit,TFCSSimulationState& simulstate,const TFCSTruthState* truth, const TFCSExtrapolationState* extrapol) override;
+  
+private:
+ 
+  ClassDefOverride(TFCSHistoLateralShapeParametrizationFCal,1)  //TFCSHistoLateralShapeParametrizationFCal
+};
+
+#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
+#pragma link C++ class TFCSHistoLateralShapeParametrizationFCal+;
+#endif
+
+#endif
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSHistoLateralShapeParametrization.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSHistoLateralShapeParametrization.cxx
index 733d4067ef616c2863bc4b168775e697b5072eb5..4a5db9df5f08b96acbe38fbe26ae80a0576f596a 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSHistoLateralShapeParametrization.cxx
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSHistoLateralShapeParametrization.cxx
@@ -93,10 +93,9 @@ FCSReturnCode TFCSHistoLateralShapeParametrization::simulate_hit(Hit &hit, TFCSS
   const float delta_eta = delta_eta_mm / eta_jakobi / dist000;
   const float delta_phi = delta_phi_mm / center_r;
 
-  hit.eta() = center_eta + delta_eta;
-  hit.phi() = center_phi + delta_phi;
+  hit.setEtaPhiZE(center_eta + delta_eta,center_phi + delta_phi,center_z, hit.E());
 
-  ATH_MSG_DEBUG("HIT: E="<<hit.E()<<" cs="<<cs<<" eta="<<hit.eta()<<" phi="<<hit.phi()<<" r="<<r<<" alpha="<<alpha);
+  ATH_MSG_DEBUG("HIT: E="<<hit.E()<<" cs="<<cs<<" eta="<<hit.eta()<<" phi="<<hit.phi()<< " z="<<hit.z()<<" r="<<r<<" alpha="<<alpha);
 
   return FCSSuccess;
 }
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSHistoLateralShapeParametrizationFCal.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSHistoLateralShapeParametrizationFCal.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..430377069720f24e18a2df59e446d5fbe1e25ae0
--- /dev/null
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSHistoLateralShapeParametrizationFCal.cxx
@@ -0,0 +1,76 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "CLHEP/Random/RandFlat.h"
+#include "CLHEP/Random/RandPoisson.h"
+
+#include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrizationFCal.h"
+#include "ISF_FastCaloSimEvent/TFCSSimulationState.h"
+#include "ISF_FastCaloSimEvent/TFCSExtrapolationState.h"
+
+#include "TMath.h"
+
+
+//=============================================
+//======= TFCSHistoLateralShapeParametrizationFCal =========
+//=============================================
+
+TFCSHistoLateralShapeParametrizationFCal::TFCSHistoLateralShapeParametrizationFCal(const char* name, const char* title) :
+  TFCSHistoLateralShapeParametrization(name,title)
+{
+}
+
+TFCSHistoLateralShapeParametrizationFCal::~TFCSHistoLateralShapeParametrizationFCal()
+{
+}
+
+FCSReturnCode TFCSHistoLateralShapeParametrizationFCal::simulate_hit(Hit &hit, TFCSSimulationState &simulstate, const TFCSTruthState* /*truth*/, const TFCSExtrapolationState* extrapol)
+{
+  if (!simulstate.randomEngine()) {
+    return FCSFatal;
+  }
+
+  const int cs=calosample();
+  const double center_phi=0.5*( extrapol->phi(cs, CaloSubPos::SUBPOS_ENT) + extrapol->phi(cs, CaloSubPos::SUBPOS_EXT) );
+  const double center_r=0.5*( extrapol->r(cs, CaloSubPos::SUBPOS_ENT) + extrapol->r(cs, CaloSubPos::SUBPOS_EXT) );
+  const double center_z=0.5*( extrapol->z(cs, CaloSubPos::SUBPOS_ENT) + extrapol->z(cs, CaloSubPos::SUBPOS_EXT) );
+  
+  const double center_x=center_r*cos(center_phi);
+  const double center_y=center_r*sin(center_phi);
+
+  float alpha, r, rnd1, rnd2;
+  rnd1 = CLHEP::RandFlat::shoot(simulstate.randomEngine());
+  rnd2 = CLHEP::RandFlat::shoot(simulstate.randomEngine());
+  if(is_phi_symmetric()) {
+    if(rnd2>=0.5) { //Fill negative phi half of shape
+      rnd2-=0.5;
+      rnd2*=2;
+      m_hist.rnd_to_fct(alpha,r,rnd1,rnd2);
+      alpha=-alpha;
+    } else { //Fill positive phi half of shape
+      rnd2*=2;
+      m_hist.rnd_to_fct(alpha,r,rnd1,rnd2);
+    }
+  } else {
+    m_hist.rnd_to_fct(alpha,r,rnd1,rnd2);
+  }
+  if(TMath::IsNaN(alpha) || TMath::IsNaN(r)) {
+    ATH_MSG_ERROR("  Histogram: "<<m_hist.get_HistoBordersx().size()-1<<"*"<<m_hist.get_HistoBordersy().size()-1<<" bins, #hits="<<m_nhits<<" alpha="<<alpha<<" r="<<r<<" rnd1="<<rnd1<<" rnd2="<<rnd2);
+    alpha=0;
+    r=0.001;
+
+    ATH_MSG_ERROR("  This error could probably be retried");
+    return FCSFatal;
+  }
+  
+  const float delta_x = r * cos(alpha);
+  const float delta_y = r * sin(alpha);
+
+  hit.setXYZE(center_x+delta_x,center_y+delta_y,center_z,hit.E());
+
+  ATH_MSG_DEBUG("HIT: E="<<hit.E()<<" cs="<<cs<<" x="<<hit.x()<<" y="<<hit.y()<<" z="<<hit.z()<<" r=" << r <<" alpha="<<alpha);
+
+  return FCSSuccess;
+}
+
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/AdditionalConfig.py b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/AdditionalConfig.py
index cc621513659e95ea391297437b62df6c67262da9..2973f8d11c68ccdd76bfe1318269446fa2a4bebe 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/AdditionalConfig.py
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/AdditionalConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 """
 Tools configurations for ISF_FastCaloSimServices
@@ -871,3 +871,36 @@ def getFastHitConvAlg(name="ISF_FastHitConvAlg", **kwargs):
     #  kwargs.setdefault("doPileup", False)
     from FastCaloSimHit.FastCaloSimHitConf import FastHitConv
     return FastHitConv(name, **kwargs )
+
+def getFastCaloToolBase(name="ISF_FastCaloToolBase", **kwargs):
+    from ISF_FastCaloSimServices.ISF_FastCaloSimJobProperties import ISF_FastCaloSimFlags
+    kwargs.setdefault("BatchProcessMcTruth"              , False                                             )
+    kwargs.setdefault("SimulateUndefinedBarcodeParticles", False                                             )
+    kwargs.setdefault("CaloCellsOutputName"              , ISF_FastCaloSimFlags.CaloCellsName()              )
+    kwargs.setdefault("PunchThroughTool"                 , 'ISF_PunchThroughTool'             )
+    kwargs.setdefault("DoPunchThroughSimulation"         , False                                             )
+    kwargs.setdefault("CaloCellMakerTools_setup"         , [ 'ISF_EmptyCellBuilderTool' ] )
+    kwargs.setdefault("CaloCellMakerTools_simulate"      , [ 'ISF_FastShowerCellBuilderTool' ])
+    kwargs.setdefault("CaloCellMakerTools_release"       , [ #'ISF_AddNoiseCellBuilderTool',
+                                                             'ISF_CaloCellContainerFinalizerTool',
+                                                             'ISF_FastHitConvertTool' ])
+    kwargs.setdefault("Extrapolator"                     , 'ISF_NITimedExtrapolator')
+    # register the FastCaloSim random number streams
+    from G4AtlasApps.SimFlags import simFlags
+    if not simFlags.RandomSeedList.checkForExistingSeed(ISF_FastCaloSimFlags.RandomStreamName()):
+        simFlags.RandomSeedList.addSeed( ISF_FastCaloSimFlags.RandomStreamName(), 98346412, 12461240 )
+    return CfgMgr.ISF__FastCaloTool(name, **kwargs)
+
+def getFastCaloTool(name="ISF_FastCaloTool", **kwargs):
+    return getFastCaloToolBase(name, **kwargs)
+
+def getFastCaloPileupTool(name="ISF_FastCaloPileupTool", **kwargs):
+    from ISF_FastCaloSimServices.ISF_FastCaloSimJobProperties import ISF_FastCaloSimFlags
+    kwargs.setdefault("CaloCellsOutputName"              , ISF_FastCaloSimFlags.CaloCellsName()+'PileUp'     )
+    kwargs.setdefault("CaloCellMakerTools_simulate"      , [ 'ISF_PileupFastShowerCellBuilderTool' ])
+    return getFastCaloToolBase(name, **kwargs)
+
+def getLegacyAFIIFastCaloTool(name="ISF_LegacyAFIIFastCaloTool", **kwargs):
+    kwargs.setdefault("BatchProcessMcTruth" , True )
+    kwargs.setdefault("CaloCellMakerTools_simulate"      , [ 'ISF_LegacyFastShowerCellBuilderTool' ] )
+    return getFastCaloToolBase(name, **kwargs)
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfig.py b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfig.py
index 318ddd1676508e974ffe14e92e2b2af65ea20f22..62e8ded1c78c5c89f75afc1488d2f5b525f78a43 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfig.py
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfig.py
@@ -10,61 +10,18 @@ from AthenaCommon import CfgMgr
 from FastChainPileup.FastChain_jobProperties import FastChain_Flags
 #### FastCaloSimSvc
 def getFastCaloSimSvc(name="ISF_FastCaloSimSvc", **kwargs):
-    from ISF_FastCaloSimServices.ISF_FastCaloSimJobProperties import ISF_FastCaloSimFlags
-    kwargs.setdefault("BatchProcessMcTruth"              , False                                             )
-    kwargs.setdefault("SimulateUndefinedBarcodeParticles", False                                             )
-    kwargs.setdefault("Identifier"                       , 'FastCaloSim'                                     )
-    kwargs.setdefault("CaloCellsOutputName"              , ISF_FastCaloSimFlags.CaloCellsName()              )
-    kwargs.setdefault("PunchThroughTool"                 , 'ISF_PunchThroughTool'             )
-    kwargs.setdefault("DoPunchThroughSimulation"         , False                                             )
-    kwargs.setdefault("CaloCellMakerTools_setup"         , [ 'ISF_EmptyCellBuilderTool' ] )
-    kwargs.setdefault("CaloCellMakerTools_simulate"      , [ 'ISF_FastShowerCellBuilderTool' ])
-    kwargs.setdefault("CaloCellMakerTools_release"       , [ #'ISF_AddNoiseCellBuilderTool',
-                                                             'ISF_CaloCellContainerFinalizerTool',
-                                                             'ISF_FastHitConvertTool' ])
-    kwargs.setdefault("Extrapolator"                     , 'ISF_NITimedExtrapolator')
-    # register the FastCaloSim random number streams
-    from G4AtlasApps.SimFlags import simFlags
-    if not simFlags.RandomSeedList.checkForExistingSeed(ISF_FastCaloSimFlags.RandomStreamName()):
-        simFlags.RandomSeedList.addSeed( ISF_FastCaloSimFlags.RandomStreamName(), 98346412, 12461240 )
+    kwargs.setdefault("SimulatorTool",  'ISF_FastCaloTool')
+    kwargs.setdefault("Identifier",     'FastCaloSim')
     return CfgMgr.ISF__FastCaloSimSvc(name, **kwargs )
 
-def getFastCaloSimPileupOTSvc(name="ISF_FastCaloSimPileupOTSvc", **kwargs):
-    from ISF_FastCaloSimServices.ISF_FastCaloSimJobProperties import ISF_FastCaloSimFlags
-    kwargs.setdefault("BatchProcessMcTruth"              , False                                             )
-    kwargs.setdefault("SimulateUndefinedBarcodeParticles", False                                             )
-    kwargs.setdefault("Identifier"                       , 'FastCaloSim'                                     )
-    kwargs.setdefault("CaloCellsOutputName"              , ISF_FastCaloSimFlags.CaloCellsName()+'PileUp'     )
-    kwargs.setdefault("PunchThroughTool"                 , 'ISF_PunchThroughTool'             )
-    kwargs.setdefault("DoPunchThroughSimulation"         , False                                             )
-    #kwargs.setdefault("PUWeights"                        , FastChain_Flags.FastChainPUWeights()  )
-    kwargs.setdefault("PUWeights_lar_bapre"              , FastChain_Flags.FastChainPUWeights_lar_bapre()  )
-    kwargs.setdefault("PUWeights_lar_hec"                , FastChain_Flags.FastChainPUWeights_lar_hec()  )
-    kwargs.setdefault("PUWeights_lar_em"                 , FastChain_Flags.FastChainPUWeights_lar_em()  )
-    kwargs.setdefault("PUWeights_tile"                   , FastChain_Flags.FastChainPUWeights_tile()  )
-    kwargs.setdefault("CaloCellMakerTools_setup"         , [ 'ISF_EmptyCellBuilderTool' ] )
-    kwargs.setdefault("CaloCellMakerTools_simulate"      , [ 'ISF_FastShowerCellBuilderTool' ])
-    kwargs.setdefault("CaloCellMakerTools_release"       , [ #'ISF_AddNoiseCellBuilderTool',
-                                                             'ISF_CaloCellContainerFinalizerTool',
-                                                             'ISF_FastHitConvertTool' ])
-    kwargs.setdefault("Extrapolator"                     , 'ISF_NITimedExtrapolator')
-    # register the FastCaloSim random number streams
-    from G4AtlasApps.SimFlags import simFlags
-    if not simFlags.RandomSeedList.checkForExistingSeed(ISF_FastCaloSimFlags.RandomStreamName()):
-        simFlags.RandomSeedList.addSeed( ISF_FastCaloSimFlags.RandomStreamName(), 98346412, 12461240 )
-    return CfgMgr.ISF__FastCaloSimSvcPU(name, **kwargs )
-
 #### Pileup FastCaloSim
 def getFastCaloSimPileupSvc(name="ISF_FastCaloSimPileupSvc", **kwargs):
-    from ISF_FastCaloSimServices.ISF_FastCaloSimJobProperties import ISF_FastCaloSimFlags
-    kwargs.setdefault("CaloCellsOutputName"              , ISF_FastCaloSimFlags.CaloCellsName()+'PileUp'     )
-    kwargs.setdefault("CaloCellMakerTools_simulate"      , [ 'ISF_PileupFastShowerCellBuilderTool' ])
+    kwargs.setdefault("SimulatorTool",  'ISF_FastCaloPileupTool')
     return getFastCaloSimSvc(name, **kwargs)
 
 #### Legacy FastCaloSim
 def getLegacyAFIIFastCaloSimSvc(name="ISF_LegacyAFIIFastCaloSimSvc", **kwargs):
-    kwargs.setdefault("BatchProcessMcTruth" , True )
-    kwargs.setdefault("CaloCellMakerTools_simulate"      , [ 'ISF_LegacyFastShowerCellBuilderTool' ] )
+    kwargs.setdefault("SimulatorTool",  'ISF_LegacyAFIIFastCaloTool')
     return getFastCaloSimSvc(name, **kwargs)
 
 def getFastHitConvAlgFastCaloSimSvc(name="ISF_FastHitConvAlgFastCaloSimSvc",**kwargs):
@@ -84,6 +41,31 @@ def getFastHitConvAlgLegacyAFIIFastCaloSimSvc(name="ISF_FastHitConvAlgLegacyAFII
     kwargs.setdefault("BatchProcessMcTruth" , True )
     return getFastHitConvAlgFastCaloSimSvc(name, **kwargs)
 
+def getFastCaloSimPileupOTSvc(name="ISF_FastCaloSimPileupOTSvc", **kwargs):
+    from ISF_FastCaloSimServices.ISF_FastCaloSimJobProperties import ISF_FastCaloSimFlags
+    kwargs.setdefault("BatchProcessMcTruth"              , False                                             )
+    kwargs.setdefault("SimulateUndefinedBarcodeParticles", False                                             )
+    kwargs.setdefault("Identifier"                       , 'FastCaloSim'                                     )
+    kwargs.setdefault("CaloCellsOutputName"              , ISF_FastCaloSimFlags.CaloCellsName()+'PileUp'     )
+    kwargs.setdefault("PunchThroughTool"                 , 'ISF_PunchThroughTool'             )
+    kwargs.setdefault("DoPunchThroughSimulation"         , False                                             )
+    #kwargs.setdefault("PUWeights"                        , FastChain_Flags.FastChainPUWeights()  )
+    kwargs.setdefault("PUWeights_lar_bapre"              , FastChain_Flags.FastChainPUWeights_lar_bapre()  )
+    kwargs.setdefault("PUWeights_lar_hec"                , FastChain_Flags.FastChainPUWeights_lar_hec()  )
+    kwargs.setdefault("PUWeights_lar_em"                 , FastChain_Flags.FastChainPUWeights_lar_em()  )
+    kwargs.setdefault("PUWeights_tile"                   , FastChain_Flags.FastChainPUWeights_tile()  )
+    kwargs.setdefault("CaloCellMakerTools_setup"         , [ 'ISF_EmptyCellBuilderTool' ] )
+    kwargs.setdefault("CaloCellMakerTools_simulate"      , [ 'ISF_FastShowerCellBuilderTool' ])
+    kwargs.setdefault("CaloCellMakerTools_release"       , [ #'ISF_AddNoiseCellBuilderTool',
+                                                             'ISF_CaloCellContainerFinalizerTool',
+                                                             'ISF_FastHitConvertTool' ])
+    kwargs.setdefault("Extrapolator"                     , 'ISF_NITimedExtrapolator')
+    # register the FastCaloSim random number streams
+    from G4AtlasApps.SimFlags import simFlags
+    if not simFlags.RandomSeedList.checkForExistingSeed(ISF_FastCaloSimFlags.RandomStreamName()):
+        simFlags.RandomSeedList.addSeed( ISF_FastCaloSimFlags.RandomStreamName(), 98346412, 12461240 )
+    return CfgMgr.ISF__FastCaloSimSvcPU(name, **kwargs )
+
 #### FastCaloSimV2
 def getFastCaloSimSvcV2(name="ISF_FastCaloSimSvcV2", **kwargs):
     from ISF_FastCaloSimServices.ISF_FastCaloSimJobProperties import ISF_FastCaloSimFlags
@@ -100,8 +82,8 @@ def getFastCaloSimSvcV2(name="ISF_FastCaloSimSvcV2", **kwargs):
     from G4AtlasApps.SimFlags import simFlags
     if not simFlags.RandomSeedList.checkForExistingSeed(ISF_FastCaloSimFlags.RandomStreamName()):
         simFlags.RandomSeedList.addSeed( ISF_FastCaloSimFlags.RandomStreamName(), 98346412, 12461240 )
-    
+
     kwargs.setdefault("RandomStream"                     , ISF_FastCaloSimFlags.RandomStreamName())
     kwargs.setdefault("RandomSvc"                        , simFlags.RandomSvc.get_Value() )
-        
+
     return CfgMgr.ISF__FastCaloSimSvcV2(name, **kwargs )
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigDb.py b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigDb.py
index 34fe225868eb439f68d73e7a17faf317240beeba..70399972113df390d81008c4d14ec2ab168977c7 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigDb.py
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigDb.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 """
 Configuration database for ISF_FastCaloSimServices
@@ -20,6 +20,11 @@ addTool("ISF_FastCaloSimServices.AdditionalConfig.getCaloNoiseTool",
 addTool("ISF_FastCaloSimServices.AdditionalConfig.getAddNoiseCellBuilderTool",         "ISF_AddNoiseCellBuilderTool")
 addTool("ISF_FastCaloSimServices.AdditionalConfig.getCaloCellContainerFinalizerTool",  "ISF_CaloCellContainerFinalizerTool")
 addTool("ISF_FastCaloSimServices.AdditionalConfig.getFastHitConvertTool",              "ISF_FastHitConvertTool")
+
+addTool("ISF_FastCaloSimServices.AdditionalConfig.getFastCaloTool",                    "ISF_FastCaloTool")
+addTool("ISF_FastCaloSimServices.AdditionalConfig.getFastCaloPileupTool",              "ISF_FastCaloPileupTool")
+addTool("ISF_FastCaloSimServices.AdditionalConfig.getLegacyAFIIFastCaloTool",          "ISF_LegacyAFIIFastCaloTool")
+
 addAlgorithm("ISF_FastCaloSimServices.AdditionalConfig.getFastHitConvAlg",             "ISF_FastHitConvAlg")
 
 addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getNativeFastCaloSimSvc",                       "ISF_NativeFastCaloSimSvc")
@@ -27,7 +32,6 @@ addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getFastCaloSim
 addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getFastCaloSimPileupSvc",                       "ISF_FastCaloSimPileupSvc")
 addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getFastCaloSimPileupOTSvc",                     "ISF_FastCaloSimPileupOTSvc")
 addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getFastHitConvAlgFastCaloSimSvc",               "ISF_FastHitConvFastCaloSimSvc")
-addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getFastCaloSimSvcBase",                         "ISF_FastCaloSimSvcBase")
 addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getLegacyAFIIFastCaloSimSvc",                   "ISF_LegacyAFIIFastCaloSimSvc")
 addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getFastHitConvAlgLegacyAFIIFastCaloSimSvc",     "ISF_FastHitConvAlgLegacyAFIIFastCaloSimSvc")
 addService("ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig.getFastCaloSimSvcV2",                           "ISF_FastCaloSimSvcV2")
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.cxx
index 2ae2cbcc483a4eef0c2510c2c5f25f9b6dcaed5a..a6a4af6f39c1fe22f945c0dac6beb2ecc555c461 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.cxx
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.cxx
@@ -4,431 +4,46 @@
 
 // class header include
 #include "FastCaloSimSvc.h"
-
-// StoreGate
-#include "StoreGate/StoreGateSvc.h"
 #include "ISF_Interfaces/IParticleBroker.h"
 
-// ISF includes
-#include "ISF_Event/ISFParticle.h"
-#include "ISF_Event/ISFParticleContainer.h"
-
-// HepMC include needed for FastCaloSim
-#include "HepMC/GenParticle.h"
-#include "HepMC/GenVertex.h"
-#include "HepMC/SimpleVector.h"
-#include "CLHEP/Units/SystemOfUnits.h"
-// McEventCollection
-#include "GeneratorObjects/McEventCollection.h"
-// Calo Cell includes
-#include "CaloEvent/CaloCell.h"
-#include "CaloEvent/CaloCellContainer.h"
-#include "NavFourMom/INavigable4MomentumCollection.h"
-// Barcode
-#include "BarcodeEvent/Barcode.h"
-// use FastShowerCellBuilderTool for actual simulation
-//#include "FastSimulationEvent/GenParticleEnergyDepositMap.h"
-#include "FastCaloSim/FastShowerCellBuilderTool.h"
-// PunchThrough Tool
-#include "ISF_FastCaloSimInterfaces/IPunchThroughTool.h"
-
 /** Constructor **/
 ISF::FastCaloSimSvc::FastCaloSimSvc(const std::string& name,ISvcLocator* svc) :
-  BaseSimulationSvc(name, svc),
-  m_extrapolator(),
-  m_ownPolicy(static_cast<int>(SG::VIEW_ELEMENTS)),
-  m_batchProcessMcTruth(false),
-  m_simulateUndefinedBCs(false),
-  m_caloCellsOutputName("AllCalo"),
-  m_caloCellHack(false),
-  m_doPunchThrough(false),
-  m_caloCellMakerTools_setup(),
-  m_caloCellMakerTools_simulate(),
-  m_caloCellMakerTools_release(),
-  m_punchThroughTool(""),
-  m_theContainer(0)
+  BaseSimulationSvc(name, svc)
 {
-  // where to go 
-  declareProperty("OwnPolicy",                         m_ownPolicy) ;
-  declareProperty("CaloCellMakerTools_setup"   ,       m_caloCellMakerTools_setup) ;
-  declareProperty("CaloCellMakerTools_simulate",       m_caloCellMakerTools_simulate) ;
-  declareProperty("CaloCellMakerTools_release" ,       m_caloCellMakerTools_release) ;
-  declareProperty("PunchThroughTool",                  m_punchThroughTool);
-  declareProperty("CaloCellsOutputName",               m_caloCellsOutputName) ;
-  declareProperty("CaloCellHack",                      m_caloCellHack) ;
-  declareProperty("DoPunchThroughSimulation", 	       m_doPunchThrough) ;
-  declareProperty("Extrapolator",                      m_extrapolator );
-  declareProperty("SimulateUndefinedBarcodeParticles",
-                  m_simulateUndefinedBCs,
-                  "Whether or not to simulate paritcles with undefined barcode" );
-  declareProperty("BatchProcessMcTruth",
-                  m_batchProcessMcTruth=false,
-                  "Run the FastShowerCellBuilders on the McTruth at the end of the event" );
 }
 
-ISF::FastCaloSimSvc::~FastCaloSimSvc() 
+ISF::FastCaloSimSvc::~FastCaloSimSvc()
 {}
 
 /** framework methods */
 StatusCode ISF::FastCaloSimSvc::initialize()
 {
-   ATH_MSG_INFO ( m_screenOutputPrefix << "Initializing ...");
-
-   // access tools and store them
-   if ( retrieveTools<ICaloCellMakerTool>(m_caloCellMakerTools_setup).isFailure() ) 
-        return StatusCode::FAILURE;
-   if ( retrieveTools<ICaloCellMakerTool>(m_caloCellMakerTools_simulate).isFailure() ) 
-        return StatusCode::FAILURE;
-   if ( retrieveTools<ICaloCellMakerTool>(m_caloCellMakerTools_release).isFailure() ) 
-        return StatusCode::FAILURE;
-
-   if (m_doPunchThrough && m_punchThroughTool.retrieve().isFailure() ) 
-   {
-     ATH_MSG_ERROR (m_punchThroughTool.propertyName() << ": Failed to retrieve tool " << m_punchThroughTool.type());
-     return StatusCode::FAILURE;
-   } 
-
-   // Get TimedExtrapolator 
-   if (!m_extrapolator.empty() && m_extrapolator.retrieve().isFailure())
-     return StatusCode::FAILURE;
- 
-   ATH_MSG_DEBUG( m_screenOutputPrefix << " Output CaloCellContainer Name " << m_caloCellsOutputName );
-   if (m_ownPolicy==SG::OWN_ELEMENTS){
-       ATH_MSG_INFO( m_screenOutputPrefix << "...will OWN its cells." );
-     }
-     else
-     {
-       ATH_MSG_INFO( m_screenOutputPrefix << "...will VIEW its cells." );
-     }
+  ATH_MSG_INFO ( m_screenOutputPrefix << "Initializing ...");
 
-   if (m_caloCellHack){
-     ATH_MSG_WARNING( m_screenOutputPrefix << " CaloCellContainer: " << m_caloCellsOutputName << "will be read in and modified !. To be used with care. " );
-   }
+  ATH_CHECK ( m_simulatorTool.retrieve() );
 
-   return StatusCode::SUCCESS;
-}
-
-/** framework methods */
-StatusCode ISF::FastCaloSimSvc::finalize()
-{
-    ATH_MSG_INFO ( m_screenOutputPrefix << "Finalizing ...");
-    return StatusCode::SUCCESS;
+  return StatusCode::SUCCESS;
 }
 
 StatusCode ISF::FastCaloSimSvc::setupEvent()
-{ 
-  ATH_MSG_DEBUG ( m_screenOutputPrefix << "setup Event");
-  
-  if (!m_caloCellHack) {
-    
-    m_theContainer = new CaloCellContainer(static_cast<SG::OwnershipPolicy>(m_ownPolicy));
-
-    StatusCode sc=StatusCode::SUCCESS;
-    sc=evtStore()->record(m_theContainer,m_caloCellsOutputName);
-     
-    if (sc.isFailure())  {
-      ATH_MSG_FATAL( m_screenOutputPrefix << "cannot record CaloCellContainer " << m_caloCellsOutputName );
-      return StatusCode::FAILURE;
-    }
-
-    // also symLink as INavigable4MomentumCollection!
-    INavigable4MomentumCollection* theNav4Coll = 0;
-    sc = evtStore()->symLink(m_theContainer,theNav4Coll);
-
-    if (sc.isFailure()) {
-      ATH_MSG_WARNING( m_screenOutputPrefix << "Error symlinking CaloCellContainer to INavigable4MomentumCollection " );
-      return StatusCode::FAILURE;
-    }
-  }
-  else {
-    // take CaloCellContainer from input and cast away constness
-    const CaloCellContainer * theConstContainer ;
-    
-    StatusCode sc=StatusCode::SUCCESS;
-    sc=evtStore()->retrieve(theConstContainer,m_caloCellsOutputName);
-    if (sc.isFailure() || theConstContainer==0)
-    {
-      ATH_MSG_FATAL( m_screenOutputPrefix << "Could not retrieve CaloCellContainer " << m_caloCellsOutputName );
-      return StatusCode::FAILURE;
-    }
-    m_theContainer = const_cast<CaloCellContainer *> (theConstContainer);
-  }
-
-  // loop on setup tools
-  ToolHandleArray<ICaloCellMakerTool>::iterator itrTool=m_caloCellMakerTools_setup.begin();
-  ToolHandleArray<ICaloCellMakerTool>::iterator endTool=m_caloCellMakerTools_setup.end();
-  for (;itrTool!=endTool;++itrTool){
-    ATH_MSG_DEBUG( m_screenOutputPrefix << "Calling tool " << itrTool->name() );   
-    std::string chronoName=this->name()+"_"+ itrTool->name();
-    
-    if (m_chrono) m_chrono -> chronoStart( chronoName);
-    StatusCode sc = (*itrTool)->process(m_theContainer);
-    if (m_chrono) {
-      m_chrono -> chronoStop( chronoName );
-      ATH_MSG_DEBUG( m_screenOutputPrefix << "Chrono stop : delta " << m_chrono->chronoDelta (chronoName,IChronoStatSvc::USER ) * CLHEP::microsecond / CLHEP::second << " second " );
-    }
-
-    if (sc.isFailure()) {
-      ATH_MSG_ERROR( m_screenOutputPrefix << "Error executing tool " << itrTool->name() );
-    } 
-  }
-
-  // loop on simulate tools
-  itrTool=m_caloCellMakerTools_simulate.begin();
-  endTool=m_caloCellMakerTools_simulate.end();
-  for (;itrTool!=endTool;++itrTool) {
-    FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*(*itrTool)));
-    if(fcs) {
-      if(fcs->setupEvent().isFailure()) {
-        ATH_MSG_ERROR( m_screenOutputPrefix << "Error executing tool " << itrTool->name() << " in setupEvent");
-        return StatusCode::FAILURE;
-      }  
-    }
-  }
-
-  return StatusCode::SUCCESS;
+{
+  return m_simulatorTool->setupEventST();
 }
 
 StatusCode ISF::FastCaloSimSvc::releaseEvent()
-{ 
-  ATH_MSG_DEBUG ( m_screenOutputPrefix << "release Event");
-
-  // the return value
-  StatusCode sc = StatusCode::SUCCESS;
-
-  // (1.) batch processing of all particles from McTruth
-  //       (for MC12 parametrization)
-  //
-  if ( m_batchProcessMcTruth) {
-    // -> run the FastShowerCellBuilder tools
-    //        (in Python they should be configured to pick up the modified truth collection)
-    ToolHandleArray<ICaloCellMakerTool>::iterator itrTool=m_caloCellMakerTools_simulate.begin();
-    ToolHandleArray<ICaloCellMakerTool>::iterator endTool=m_caloCellMakerTools_simulate.end();
-    for (;itrTool!=endTool;++itrTool) {
-      FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*(*itrTool)));
-      if(!fcs) {
-        ATH_MSG_WARNING( m_screenOutputPrefix << "tool " << itrTool->name()<< "is not a FastShowerCellBuilderTool" );   
-        continue;
-      }
-      
-      ATH_MSG_VERBOSE( m_screenOutputPrefix << "Calling tool " << itrTool->name() );   
-
-      if( fcs->process(m_theContainer).isFailure()) {
-        ATH_MSG_WARNING( m_screenOutputPrefix << "batch simulation of FastCaloSim particles failed" );   
-        sc = StatusCode::FAILURE;
-      }
-    }
-  } // <-- end of batch particle processing
-
-  // (2.) finalize simulation tools in a loop
-  //
-  ToolHandleArray<ICaloCellMakerTool>::iterator itrTool=m_caloCellMakerTools_simulate.begin();
-  ToolHandleArray<ICaloCellMakerTool>::iterator endTool=m_caloCellMakerTools_simulate.end();
-  for (;itrTool!=endTool;++itrTool) {
-    FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*(*itrTool)));
-    if(fcs) {
-      if(fcs->releaseEvent().isFailure()) {
-        ATH_MSG_ERROR( m_screenOutputPrefix << "Error executing tool " << itrTool->name() << " in releaseEvent");
-        return StatusCode::FAILURE;
-      }
-    }
-  }
-  
-  // (3.) run release tools in a loop
-  //
-  itrTool=m_caloCellMakerTools_release.begin();
-  endTool=m_caloCellMakerTools_release.end();
-  for (;itrTool!=endTool;++itrTool){
-    ATH_MSG_DEBUG( m_screenOutputPrefix << "Calling tool " << itrTool->name() );   
-    std::string chronoName=this->name()+"_"+ itrTool->name();
-    
-    if (m_chrono) m_chrono -> chronoStart( chronoName);
-    sc = (*itrTool)->process(m_theContainer);
-    if (m_chrono) {
-      m_chrono -> chronoStop( chronoName );
-      ATH_MSG_DEBUG( m_screenOutputPrefix << "Chrono stop : delta " << m_chrono->chronoDelta (chronoName,IChronoStatSvc::USER ) * CLHEP::microsecond / CLHEP::second << " second " );
-    }
-
-    if (sc.isFailure()) {
-      ATH_MSG_ERROR( m_screenOutputPrefix << "Error executing tool " << itrTool->name() );
-    }
-  }
-
-  return StatusCode::SUCCESS; 
+{
+  return m_simulatorTool->releaseEventST();
 }
 
-
 /** Simulation Call */
 StatusCode ISF::FastCaloSimSvc::simulate(const ISF::ISFParticle& isfp)
 {
-  // read the particle's barcode
-  Barcode::ParticleBarcode bc = isfp.barcode();
-//lets do punch-through here
-//----------------------------------------------------------
-
-  // punch-through simulation
-
-  if (m_doPunchThrough) {
-    // call punch-through simulation
-    const ISF::ISFParticleContainer* isfpVec = m_punchThroughTool->computePunchThroughParticles(isfp);
-
-    // add punch-through particles to the ISF particle broker
-    if (isfpVec) {
-      ISF::ISFParticleContainer::const_iterator partIt    = isfpVec->begin();
-      ISF::ISFParticleContainer::const_iterator partItEnd = isfpVec->end();
-      for ( ; partIt!=partItEnd; ++partIt) {
-        m_particleBroker->push( *partIt, &isfp);
-      }
+  ISF::ISFParticleContainer secondaries;
+  ATH_CHECK(m_simulatorTool->simulate(isfp, secondaries));
+  if (not secondaries.empty()) {
+    for (auto particle : secondaries) {
+      m_particleBroker->push( particle, &isfp);
     }
   }
-
-  // (a.) batch process mode, ignore the incoming particle for now
-  if ( m_batchProcessMcTruth) {
-    ATH_MSG_DEBUG("particle is ignored now, will run Calo simulation using ID McTruth at the end of the event");
-    return StatusCode::SUCCESS;
-  }
-  // (b.) throw away particles with undefined Barcode if m_simulateUndefinedBCs==False
-  else if ( (!m_simulateUndefinedBCs) && (bc == Barcode::fUndefinedBarcode)) {
-    ATH_MSG_DEBUG("particle has undefined barcode, will not simulate it");
-    return StatusCode::SUCCESS;
-  }
-  // (c.) individual particle processing
-  ATH_MSG_DEBUG("particle is simulated individually");
-  return processOneParticle( isfp);
-}
-
-
-StatusCode ISF::FastCaloSimSvc::processOneParticle( const ISF::ISFParticle& isfp) {
-  ATH_MSG_VERBOSE ( m_screenOutputPrefix << "Simulating pdgid = "<< isfp.pdgCode());
-
-  ToolHandleArray<ICaloCellMakerTool>::iterator itrTool=m_caloCellMakerTools_simulate.begin();
-  ToolHandleArray<ICaloCellMakerTool>::iterator endTool=m_caloCellMakerTools_simulate.end();
-
-  std::vector<Trk::HitInfo>* hitVector= caloHits(isfp);
-
-  if (!hitVector || !hitVector->size()) {
-    ATH_MSG_WARNING ( "ISF_FastCaloSim: no hits in calo");
-    return StatusCode::FAILURE;
-  }
-
-  // loop on tools
-  for (;itrTool!=endTool;++itrTool) {
-    FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*(*itrTool)));
-    if(!fcs) {
-      ATH_MSG_WARNING( m_screenOutputPrefix << "tool " << itrTool->name()<< "is not a FastShowerCellBuilderTool" );   
-      continue;
-    }
-    
-    ATH_MSG_VERBOSE( m_screenOutputPrefix << "Calling tool " << itrTool->name() );   
-    std::string chronoName=this->name()+"_"+ itrTool->name();
-    
-    if (m_chrono) m_chrono->chronoStart( chronoName);
-
-    //sc = (*itrTool)->process(m_theContainer);
-    if(fcs->process_particle(m_theContainer,hitVector,
-			     isfp.momentum(),isfp.mass(),isfp.pdgCode(),isfp.barcode()).isFailure()) {
-      ATH_MSG_WARNING( m_screenOutputPrefix << "simulation of particle pdgid=" << isfp.pdgCode()<< " failed" );   
-      return StatusCode::FAILURE;
-    }
-
-    if (m_chrono) m_chrono->chronoStop( chronoName );
-    //ATH_MSG_DEBUG( m_screenOutputPrefix << "Chrono stop : delta " << m_chrono->chronoDelta (chronoName,IChronoStatSvc::USER ) * CLHEP::microsecond / CLHEP::second << " second " );
-  } //end of for-loop
-
-  if(hitVector) {
-    for(std::vector<Trk::HitInfo>::iterator it = hitVector->begin();it < hitVector->end();++it)  {
-      if((*it).trackParms) {
-        delete (*it).trackParms;
-        (*it).trackParms=0;
-      }  
-    }
-    delete hitVector;
-  }  
-
-  //  ATH_MSG_VERBOSE ( m_screenOutputPrefix << "kill the particle in the end");
   return StatusCode::SUCCESS;
 }
-
-
-std::vector<Trk::HitInfo>* ISF::FastCaloSimSvc::caloHits(const ISF::ISFParticle& isp) const
-{
-  // Start calo extrapolation
-  ATH_MSG_VERBOSE ("[ fastCaloSim transport ] processing particle "<<isp.pdgCode() );
-
-  std::vector<Trk::HitInfo>*     hitVector =  new std::vector<Trk::HitInfo>;   
-
-  int  absPdg         = abs(isp.pdgCode());
-  bool charged        = isp.charge()*isp.charge() > 0 ;
-
-  // particle Hypothesis for the extrapolation
-
-  Trk::ParticleHypothesis pHypothesis = m_pdgToParticleHypothesis.convert(isp.pdgCode(),isp.charge());
-
-  // geantinos not handled by PdgToParticleHypothesis - fix there
-  if ( absPdg == 999 ) pHypothesis = Trk::geantino;
-
-  // choose the extrapolator
-  //const Trk::ITimedExtrapolator* processor = &(*m_extrapolator); 
-
-  // input parameters : curvilinear parameters
-  Trk::CurvilinearParameters inputPar(isp.position(),isp.momentum(),isp.charge());
-
-  // stable vs. unstable check : ADAPT for FASTCALOSIM 
-  //double freepath = ( !m_particleDecayHelper.empty()) ? m_particleDecayHelper->freePath(isp) : - 1.; 
-  double freepath = -1.;
-  ATH_MSG_VERBOSE( "[ fatras transport ] Particle free path : " << freepath);
-  // path limit -> time limit  ( TODO : extract life-time directly from decay helper )
-  double tDec = freepath > 0. ? freepath : -1.;
-  int decayProc = 0;
-
-  /* stable particles only for the moment
-  // beta calculated here for further use in validation
-  double mass = m_particleMasses.mass[pHypothesis];
-  double mom = isp.momentum().mag();
-  double beta = mom/sqrt(mom*mom+mass*mass); 
-
-  if ( tDec>0.) {
-    tDec = tDec/beta/CLHEP::c_light + isp.timeStamp();
-    decayProc = 201;                
-  }
-  */
-
-  Trk::TimeLimit timeLim(tDec,isp.timeStamp(),decayProc);
-  
-  // prompt decay
-  //if ( freepath>0. && freepath<0.01 ) {
-  //  if (!m_particleDecayHelper.empty()) {
-  //    ATH_MSG_VERBOSE( "[ fatras transport ] Decay is triggered for input particle.");
-  //    m_particleDecayHelper->decay(isp);
-  //  }
-  //  return 0;
-  //}
-
-  // presample interactions - ADAPT FOR FASTCALOSIM ( non-interacting )
-  Trk::PathLimit pathLim(-1.,0);
-  //if (absPdg!=999 && pHypothesis<99) pathLim = m_samplingTool->sampleProcess(mom,isp.charge(),pHypothesis);
-     
-  Trk::GeometrySignature nextGeoID = static_cast<Trk::GeometrySignature>(isp.nextGeoID());
-
-  // save Calo entry hit (fallback info)
-  hitVector->push_back(Trk::HitInfo(inputPar.clone(),isp.timeStamp(),nextGeoID,0.));  
-    
-  const Trk::TrackParameters* eParameters = 0;
-
-  if ( !charged ) {
-
-    eParameters = m_extrapolator->transportNeutralsWithPathLimit(inputPar,pathLim,timeLim,Trk::alongMomentum,pHypothesis,hitVector,nextGeoID);  
- 
-  } else {
-          
-    eParameters = m_extrapolator->extrapolateWithPathLimit(inputPar,pathLim,timeLim,Trk::alongMomentum,pHypothesis,hitVector,nextGeoID);
-
-  }
-  // save Calo exit hit (fallback info)
-  if (eParameters) hitVector->push_back(Trk::HitInfo(eParameters,timeLim.time,nextGeoID,0.));  
-
-  ATH_MSG_VERBOSE( "[ fastCaloSim transport ] number of intersections "<< hitVector->size());
-
-  return hitVector;
-
-}
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.h
index 2ec65d4361d94979acbdfb4e39192b6809e1f9dc..a8c4303e595f3d32f3d81b9bf261cfbee0e70d4d 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.h
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloSimSvc.h
@@ -7,106 +7,50 @@
 
 // STL includes
 #include <string>
-#include <set>
+// #include <set>
 
-// FrameWork includes
+// Gaudi
 #include "GaudiKernel/ServiceHandle.h"
 #include "GaudiKernel/ToolHandle.h"
-#include "GaudiKernel/IChronoStatSvc.h"
-#include "CaloInterface/ICaloCellMakerTool.h"
-#include "AthenaBaseComps/AthService.h"
 
 // ISF includes
 #include "ISF_Interfaces/BaseSimulationSvc.h"
-
-// Tracking includes
-#include "TrkExInterfaces/ITimedExtrapolator.h"
-#include "TrkEventPrimitives/PdgToParticleHypothesis.h"
-
-// forward declarations
-class ITrackingGeometrySvc;
-class CaloCellContainer;
-
-namespace HepMC {
-    class GenEvent;
-}
-
-namespace Trk {
-    class TrackingVolume;
-    class TrackingGeometry;
-}
+#include "ISF_Interfaces/ISimulatorTool.h"
 
 namespace ISF {
 
-  class ISFParticle;
-  class ITruthSvc;
-  class IPunchThroughTool;
-
   /** @class FastCaloSimSvc
-  
-      @author Michael.Duehrssen -at- cern.ch
-     */
-  class FastCaloSimSvc : public BaseSimulationSvc { 
-    public: 
-      
-      //** Constructor with parameters */
-      FastCaloSimSvc( const std::string& name, ISvcLocator* pSvcLocator );
-      
-      /** Destructor */
-      virtual ~FastCaloSimSvc(); 
-      
-      /** Athena algorithm's interface methods */
-      StatusCode  initialize();
-      StatusCode  finalize();
-
-      /** Simulation Call */
-      StatusCode simulate(const ISFParticle& isp);
-                                                                 
-      /** Setup Event chain - in case of a begin-of event action is needed */
-      StatusCode setupEvent();
-
-      /** Release Event chain - in case of an end-of event action is needed */
-      StatusCode releaseEvent();
-
 
-    private:     
-      /** Default constructor */
-      FastCaloSimSvc();
-
-      /** process the given particle */
-      StatusCode processOneParticle( const ISF::ISFParticle &isfp);
-
-      /** extrapolation through Calo */
-      std::vector<Trk::HitInfo>* caloHits(const ISF::ISFParticle &isfp) const;
+      @author Michael.Duehrssen -at- cern.ch
+  */
+  class FastCaloSimSvc : public BaseSimulationSvc {
+  public:
 
-      /** The Extrapolator setup */
-      ToolHandle<Trk::ITimedExtrapolator>      m_extrapolator;          
+    //** Constructor with parameters */
+    FastCaloSimSvc( const std::string& name, ISvcLocator* pSvcLocator );
 
-      /** whether CellContainer to be created will own (default) its cells or not */
-      int m_ownPolicy;
+    /** Destructor */
+    virtual ~FastCaloSimSvc();
 
-      // particle processing mode
-      bool                                m_batchProcessMcTruth;       //!< process particles from McTruth at end of event
+    /** Athena algorithm's interface methods */
+    virtual StatusCode  initialize() override;
 
-      bool                                m_simulateUndefinedBCs;      //!< do/don't simulate undefined barcode particles
+    /** Simulation Call */
+    virtual StatusCode simulate(const ISFParticle& isp) override;
 
-      std::string  m_caloCellsOutputName;
+    /** Setup Event chain - in case of a begin-of event action is needed */
+    virtual StatusCode setupEvent() override;
 
-      // authorise input to be the same as output (to be done with care)
-      bool m_caloCellHack ;
-      //check if punch through simulation is used
-      bool m_doPunchThrough;
+     /** Release Event chain - in case of an end-of event action is needed */
+    virtual StatusCode releaseEvent() override;
 
-      Trk::PdgToParticleHypothesis        m_pdgToParticleHypothesis;
+  private:
+    /** Default constructor */
+    FastCaloSimSvc();
 
-      // list of tools to be used
-      ToolHandleArray<ICaloCellMakerTool> m_caloCellMakerTools_setup ;
-      ToolHandleArray<ICaloCellMakerTool> m_caloCellMakerTools_simulate ;
-      ToolHandleArray<ICaloCellMakerTool> m_caloCellMakerTools_release ;
-      ToolHandle< IPunchThroughTool >     m_punchThroughTool;
-      CaloCellContainer * 		  m_theContainer;
+    PublicToolHandle<ISimulatorTool> m_simulatorTool{this, "SimulatorTool", "", ""};
 
-  }; 
+  };
 }
 
 #endif //> !ISF_FASTCALOSIMSVC_H
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloTool.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloTool.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..5e5750d5d57490728decd422bbd0bb51d0d667be
--- /dev/null
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloTool.cxx
@@ -0,0 +1,453 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "GaudiKernel/IChronoStatSvc.h"
+
+#include "FastCaloTool.h"
+
+// HepMC include needed for FastCaloSim
+#include "HepMC/GenParticle.h"
+#include "HepMC/GenVertex.h"
+#include "HepMC/SimpleVector.h"
+#include "CLHEP/Units/SystemOfUnits.h"
+
+// ISF includes
+#include "ISF_Event/ISFParticle.h"
+#include "ISF_Event/ISFParticleContainer.h"
+
+// McEventCollection
+#include "GeneratorObjects/McEventCollection.h"
+
+// Calo Cell includes
+#include "CaloEvent/CaloCell.h"
+#include "CaloEvent/CaloCellContainer.h"
+#include "NavFourMom/INavigable4MomentumCollection.h"
+
+// Barcode
+#include "BarcodeEvent/Barcode.h"
+// use FastShowerCellBuilderTool for actual simulation
+//#include "FastSimulationEvent/GenParticleEnergyDepositMap.h"
+#include "FastCaloSim/FastShowerCellBuilderTool.h"
+
+ISF::FastCaloTool::FastCaloTool(const std::string& type, const std::string& name,  const IInterface* parent)
+  : BaseSimulatorTool(type, name, parent)
+  , m_ownPolicy(static_cast<int>(SG::VIEW_ELEMENTS))
+  // , m_caloCellMakerTools_setup()
+  // , m_caloCellMakerTools_simulate()
+  // , m_caloCellMakerTools_release()
+{
+  declareProperty("OwnPolicy",                         m_ownPolicy) ;
+  declareProperty("CaloCellsOutputName",               m_caloCellsOutputName) ;
+  declareProperty("CaloCellHack",                      m_caloCellHack) ;
+  declareProperty("DoPunchThroughSimulation",          m_doPunchThrough) ;
+  declareProperty("SimulateUndefinedBarcodeParticles",
+                  m_simulateUndefinedBCs,
+                  "Whether or not to simulate paritcles with undefined barcode" );
+  declareProperty("BatchProcessMcTruth",
+                  m_batchProcessMcTruth=false,
+                  "Run the FastShowerCellBuilders on the McTruth at the end of the event" );
+}
+
+ISF::FastCaloTool::~FastCaloTool() {
+
+}
+
+StatusCode ISF::FastCaloTool::initialize() {
+
+  ATH_CHECK( BaseSimulatorTool::initialize() );
+
+  ATH_CHECK( commonInitialize() );
+
+  // Output data handle
+  ATH_CHECK( m_caloCellKey.initialize() );
+
+  return StatusCode::SUCCESS;
+}
+
+/** framework methods */
+StatusCode ISF::FastCaloTool::commonInitialize()
+{
+  // access tools and store them
+  ATH_CHECK (m_caloCellMakerTools_setup.retrieve());
+  ATH_CHECK (m_caloCellMakerTools_simulate.retrieve());
+  ATH_CHECK (m_caloCellMakerTools_release.retrieve());
+
+  if (m_doPunchThrough) {
+    ATH_CHECK(m_punchThroughTool.retrieve());
+  }
+  else {
+    m_punchThroughTool.disable();
+  }
+
+  // Get TimedExtrapolator
+  if (!m_extrapolator.empty()) {
+    ATH_CHECK(m_extrapolator.retrieve());
+  }
+
+  ATH_MSG_DEBUG( " Output CaloCellContainer Name " << m_caloCellsOutputName );
+  if (m_ownPolicy==SG::OWN_ELEMENTS) {
+    ATH_MSG_INFO( "...will OWN its cells." );
+  }
+  else {
+    ATH_MSG_INFO( "...will VIEW its cells." );
+  }
+
+  if (m_caloCellHack) {
+    ATH_MSG_WARNING( " CaloCellContainer: " << m_caloCellsOutputName << "will be read in and modified !. To be used with care. " );
+  }
+
+  return StatusCode::SUCCESS;
+}
+
+StatusCode ISF::FastCaloTool::setupEventST()
+{
+  ATH_MSG_DEBUG ( "setupEvent");
+
+  if (!m_caloCellHack) {
+
+    m_theContainer = new CaloCellContainer(static_cast<SG::OwnershipPolicy>(m_ownPolicy));
+
+    StatusCode sc=StatusCode::SUCCESS;
+    sc=evtStore()->record(m_theContainer,m_caloCellsOutputName);
+
+    if (sc.isFailure())  {
+      ATH_MSG_FATAL( "cannot record CaloCellContainer " << m_caloCellsOutputName );
+      return StatusCode::FAILURE;
+    }
+
+    // also symLink as INavigable4MomentumCollection!
+    INavigable4MomentumCollection* theNav4Coll = 0;
+    sc = evtStore()->symLink(m_theContainer,theNav4Coll);
+
+    if (sc.isFailure()) {
+      ATH_MSG_WARNING( "Error symlinking CaloCellContainer to INavigable4MomentumCollection " );
+      return StatusCode::FAILURE;
+    }
+  }
+  else {
+    // take CaloCellContainer from input and cast away constness
+    const CaloCellContainer * theConstContainer ;
+
+    StatusCode sc=StatusCode::SUCCESS;
+    sc=evtStore()->retrieve(theConstContainer,m_caloCellsOutputName);
+    if (sc.isFailure() || theConstContainer==0)
+      {
+        ATH_MSG_FATAL( "Could not retrieve CaloCellContainer " << m_caloCellsOutputName );
+        return StatusCode::FAILURE;
+      }
+    m_theContainer = const_cast<CaloCellContainer *> (theConstContainer);
+  }
+
+  return this->commonSetup();
+}
+
+StatusCode ISF::FastCaloTool::setupEvent()
+{
+  ATH_MSG_DEBUG ( "setupEvent");
+
+  if (!m_caloCellHack) {
+    m_theContainer = new CaloCellContainer(static_cast<SG::OwnershipPolicy>(m_ownPolicy));
+  }
+  else {
+    // take CaloCellContainer from input and cast away constness
+    const CaloCellContainer * theConstContainer ;
+    ATH_CHECK(evtStore()->retrieve(theConstContainer,m_caloCellsOutputName));
+    if (!theConstContainer) {
+      ATH_MSG_FATAL( "Could not retrieve CaloCellContainer " << m_caloCellsOutputName );
+      return StatusCode::FAILURE;
+    }
+    m_theContainer = const_cast<CaloCellContainer *> (theConstContainer);
+  }
+
+  return this->commonSetup();
+}
+
+StatusCode ISF::FastCaloTool::commonSetup()
+{
+  // loop on setup tools
+  for ( auto tool : m_caloCellMakerTools_setup) {
+    ATH_MSG_DEBUG( "Calling tool " << tool->name() );
+    std::string chronoName=this->name()+"_"+ tool->name();
+
+    if (m_chrono) m_chrono -> chronoStart( chronoName);
+    StatusCode sc = tool->process(m_theContainer);
+    if (m_chrono) {
+      m_chrono -> chronoStop( chronoName );
+      ATH_MSG_DEBUG( "Chrono stop : delta " << m_chrono->chronoDelta (chronoName,IChronoStatSvc::USER ) * CLHEP::microsecond / CLHEP::second << " second " );
+    }
+
+    if (sc.isFailure()) {
+      ATH_MSG_ERROR( "Error executing tool " << tool->name() );
+    }
+  }
+
+  // loop on simulate tools
+  for ( auto tool : m_caloCellMakerTools_simulate) {
+    FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*tool));
+    if(fcs) {
+      if(fcs->setupEvent().isFailure()) {
+        ATH_MSG_ERROR( "Error executing tool " << tool->name() << " in setupEvent");
+        return StatusCode::FAILURE;
+      }
+    }
+  }
+
+  return StatusCode::SUCCESS;
+}
+
+StatusCode ISF::FastCaloTool::simulate(const ISFParticle& isp, ISFParticleContainer& secondaries)
+{
+
+  ATH_MSG_VERBOSE( "FastCaloTool " << name() << " simulate()" );
+
+  // read the particle's barcode
+  Barcode::ParticleBarcode bc = isp.barcode();
+  //lets do punch-through here
+  //----------------------------------------------------------
+
+  // punch-through simulation
+
+  if (m_doPunchThrough) {
+    // call punch-through simulation
+    const ISF::ISFParticleContainer* isfpVec = m_punchThroughTool->computePunchThroughParticles(isp);
+
+    // return punch-through particles as secondaries
+    if (isfpVec) {
+      /*ISF::ISFParticleContainer::const_iterator partIt    = isfpVec->begin();
+        ISF::ISFParticleContainer::const_iterator partItEnd = isfpVec->end();
+
+        for ( ; partIt!=partItEnd; ++partIt) {
+        secondaries.push_back( *partIt );
+        }*/
+      secondaries = *isfpVec;
+    }
+  }
+
+  // (a.) batch process mode, ignore the incoming particle for now
+  if ( m_batchProcessMcTruth) {
+    ATH_MSG_DEBUG("particle is ignored now, will run Calo simulation using ID McTruth at the end of the event");
+    return StatusCode::SUCCESS;
+  }
+  // (b.) throw away particles with undefined Barcode if m_simulateUndefinedBCs==False
+  else if ( (!m_simulateUndefinedBCs) && (bc == Barcode::fUndefinedBarcode)) {
+    ATH_MSG_DEBUG("particle has undefined barcode, will not simulate it");
+    return StatusCode::SUCCESS;
+  }
+  // (c.) individual particle processing
+  ATH_MSG_DEBUG("particle is simulated individually");
+  return processOneParticle( isp);
+}
+
+
+StatusCode ISF::FastCaloTool::processOneParticle( const ISF::ISFParticle& isfp) {
+  ATH_MSG_VERBOSE ( "Simulating pdgid = "<< isfp.pdgCode());
+
+  std::vector<Trk::HitInfo>* hitVector= caloHits(isfp);
+
+  if (!hitVector || !hitVector->size()) {
+    ATH_MSG_WARNING ( "ISF_FastCaloSim: no hits in calo");
+    return StatusCode::FAILURE;
+  }
+
+  // loop on tools
+  for ( auto tool : m_caloCellMakerTools_simulate) {
+    FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*tool));
+    if(!fcs) {
+      ATH_MSG_WARNING( "tool " << tool->name()<< "is not a FastShowerCellBuilderTool" );
+      continue;
+    }
+
+    ATH_MSG_VERBOSE( "Calling tool " << tool->name() );
+    std::string chronoName=this->name()+"_"+ tool->name();
+
+    if (m_chrono) m_chrono->chronoStart( chronoName);
+
+    //sc = tool->process(m_theContainer);
+    if(fcs->process_particle(m_theContainer,hitVector,
+                             isfp.momentum(),isfp.mass(),isfp.pdgCode(),isfp.barcode()).isFailure()) {
+      ATH_MSG_WARNING( "simulation of particle pdgid=" << isfp.pdgCode()<< " failed" );
+      return StatusCode::FAILURE;
+    }
+
+    if (m_chrono) m_chrono->chronoStop( chronoName );
+    //ATH_MSG_DEBUG( "Chrono stop : delta " << m_chrono->chronoDelta (chronoName,IChronoStatSvc::USER ) * CLHEP::microsecond / CLHEP::second << " second " );
+  } //end of for-loop
+
+  if(hitVector) {
+    for(std::vector<Trk::HitInfo>::iterator it = hitVector->begin();it < hitVector->end();++it)  {
+      if((*it).trackParms) {
+        delete (*it).trackParms;
+        (*it).trackParms=0;
+      }
+    }
+    delete hitVector;
+  }
+
+  //  ATH_MSG_VERBOSE ( "kill the particle in the end");
+  return StatusCode::SUCCESS;
+}
+
+
+std::vector<Trk::HitInfo>* ISF::FastCaloTool::caloHits(const ISF::ISFParticle& isp) const
+{
+  // Start calo extrapolation
+  ATH_MSG_VERBOSE ("[ fastCaloSim transport ] processing particle "<<isp.pdgCode() );
+
+  std::vector<Trk::HitInfo>*     hitVector =  new std::vector<Trk::HitInfo>;
+
+  int  absPdg         = abs(isp.pdgCode());
+  bool charged        = isp.charge()*isp.charge() > 0 ;
+
+  // particle Hypothesis for the extrapolation
+
+  Trk::ParticleHypothesis pHypothesis = m_pdgToParticleHypothesis.convert(isp.pdgCode(),isp.charge());
+
+  // geantinos not handled by PdgToParticleHypothesis - fix there
+  if ( absPdg == 999 ) pHypothesis = Trk::geantino;
+
+  // choose the extrapolator
+  //const Trk::ITimedExtrapolator* processor = &(*m_extrapolator);
+
+  // input parameters : curvilinear parameters
+  Trk::CurvilinearParameters inputPar(isp.position(),isp.momentum(),isp.charge());
+
+  // stable vs. unstable check : ADAPT for FASTCALOSIM
+  //double freepath = ( !m_particleDecayHelper.empty()) ? m_particleDecayHelper->freePath(isp) : - 1.;
+  double freepath = -1.;
+  ATH_MSG_VERBOSE( "[ fatras transport ] Particle free path : " << freepath);
+  // path limit -> time limit  ( TODO : extract life-time directly from decay helper )
+  double tDec = freepath > 0. ? freepath : -1.;
+  int decayProc = 0;
+
+  /* stable particles only for the moment
+  // beta calculated here for further use in validation
+  double mass = m_particleMasses.mass[pHypothesis];
+  double mom = isp.momentum().mag();
+  double beta = mom/sqrt(mom*mom+mass*mass);
+
+  if ( tDec>0.) {
+  tDec = tDec/beta/CLHEP::c_light + isp.timeStamp();
+  decayProc = 201;
+  }
+  */
+
+  Trk::TimeLimit timeLim(tDec,isp.timeStamp(),decayProc);
+
+  // prompt decay
+  //if ( freepath>0. && freepath<0.01 ) {
+  //  if (!m_particleDecayHelper.empty()) {
+  //    ATH_MSG_VERBOSE( "[ fatras transport ] Decay is triggered for input particle.");
+  //    m_particleDecayHelper->decay(isp);
+  //  }
+  //  return 0;
+  //}
+
+  // presample interactions - ADAPT FOR FASTCALOSIM ( non-interacting )
+  Trk::PathLimit pathLim(-1.,0);
+  //if (absPdg!=999 && pHypothesis<99) pathLim = m_samplingTool->sampleProcess(mom,isp.charge(),pHypothesis);
+
+  Trk::GeometrySignature nextGeoID = static_cast<Trk::GeometrySignature>(isp.nextGeoID());
+
+  // save Calo entry hit (fallback info)
+  hitVector->push_back(Trk::HitInfo(inputPar.clone(),isp.timeStamp(),nextGeoID,0.));
+
+  const Trk::TrackParameters* eParameters = 0;
+
+  if ( !charged ) {
+
+    eParameters = m_extrapolator->transportNeutralsWithPathLimit(inputPar,pathLim,timeLim,Trk::alongMomentum,pHypothesis,hitVector,nextGeoID);
+
+  } else {
+
+    eParameters = m_extrapolator->extrapolateWithPathLimit(inputPar,pathLim,timeLim,Trk::alongMomentum,pHypothesis,hitVector,nextGeoID);
+
+  }
+  // save Calo exit hit (fallback info)
+  if (eParameters) hitVector->push_back(Trk::HitInfo(eParameters,timeLim.time,nextGeoID,0.));
+
+  ATH_MSG_VERBOSE( "[ fastCaloSim transport ] number of intersections "<< hitVector->size());
+
+  return hitVector;
+
+}
+
+
+StatusCode ISF::FastCaloTool::releaseEvent() {
+
+  ATH_MSG_VERBOSE( "FastCaloTool " << name() << " releaseEvent() " );
+
+  // Run the version of releaseEvent that returns the output collection
+  // Run the normal method
+  ATH_CHECK(this->releaseEventST());
+  if ( m_theContainer ) {
+
+    // Record with WriteHandle
+    SG::WriteHandle< CaloCellContainer > caloCellHandle( m_caloCellKey, Gaudi::Hive::currentContext() );
+    ATH_CHECK( caloCellHandle.record( std::make_unique< CaloCellContainer >( *m_theContainer ) ) );
+    return StatusCode::SUCCESS;
+  }
+  return StatusCode::FAILURE;
+}
+
+StatusCode ISF::FastCaloTool::releaseEventST()
+{
+  ATH_MSG_DEBUG ( "release Event");
+
+  // the return value
+  StatusCode sc = StatusCode::SUCCESS;
+
+  // (1.) batch processing of all particles from McTruth
+  //       (for MC12 parametrization)
+  //
+  if ( m_batchProcessMcTruth) {
+    // -> run the FastShowerCellBuilder tools
+    //        (in Python they should be configured to pick up the modified truth collection)
+    for ( auto tool : m_caloCellMakerTools_simulate) {
+      FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*tool));
+      if(!fcs) {
+        ATH_MSG_WARNING( "tool " << tool->name()<< "is not a FastShowerCellBuilderTool" );
+        continue;
+      }
+
+      ATH_MSG_VERBOSE( "Calling tool " << tool->name() );
+
+      if( fcs->process(m_theContainer).isFailure()) {
+        ATH_MSG_WARNING( "batch simulation of FastCaloSim particles failed" );
+        sc = StatusCode::FAILURE;
+      }
+    }
+  } // <-- end of batch particle processing
+
+  // (2.) finalize simulation tools in a loop
+  //
+  for ( auto tool : m_caloCellMakerTools_simulate) {
+    FastShowerCellBuilderTool* fcs=dynamic_cast< FastShowerCellBuilderTool* >(&(*tool));
+    if(fcs) {
+      if(fcs->releaseEvent().isFailure()) {
+        ATH_MSG_ERROR( "Error executing tool " << tool->name() << " in releaseEvent");
+        return StatusCode::FAILURE;
+      }
+    }
+  }
+
+  // (3.) run release tools in a loop
+  //
+  for ( auto tool : m_caloCellMakerTools_release) {
+    ATH_MSG_DEBUG( "Calling tool " << tool->name() );
+    std::string chronoName=this->name()+"_"+ tool->name();
+
+    if (m_chrono) m_chrono -> chronoStart( chronoName);
+    sc = tool->process(m_theContainer);
+    if (m_chrono) {
+      m_chrono -> chronoStop( chronoName );
+      ATH_MSG_DEBUG( "Chrono stop : delta " << m_chrono->chronoDelta (chronoName,IChronoStatSvc::USER ) * CLHEP::microsecond / CLHEP::second << " second " );
+    }
+
+    if (sc.isFailure()) {
+      ATH_MSG_ERROR( "Error executing tool " << tool->name() );
+    }
+  }
+
+  return StatusCode::SUCCESS;
+}
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloTool.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloTool.h
new file mode 100644
index 0000000000000000000000000000000000000000..6856b4b58cf8afbff4487a95635c8043960b7a02
--- /dev/null
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/FastCaloTool.h
@@ -0,0 +1,112 @@
+// -*- c++ -*-
+
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef ISF_FASTCALOTOOL_h
+#define ISF_FASTCALOTOOL_h
+
+// STL includes
+#include <string>
+
+//Gaudi
+#include "GaudiKernel/ServiceHandle.h"
+#include "GaudiKernel/ToolHandle.h"
+
+//Athena
+#include "AthenaBaseComps/AthAlgTool.h"
+
+// DetectorDescription
+#include "AtlasDetDescr/AtlasRegion.h"
+
+//ISF
+#include "ISF_Interfaces/BaseSimulatorTool.h"
+#include "ISF_Event/ISFParticleContainer.h"
+#include "ISF_FastCaloSimInterfaces/IPunchThroughTool.h"
+
+// Tracking includes
+#include "TrkExInterfaces/ITimedExtrapolator.h"
+#include "TrkEventPrimitives/PdgToParticleHypothesis.h"
+
+// forward declarations
+class ITrackingGeometrySvc;
+class CaloCellContainer;
+
+namespace Trk {
+  class TrackingVolume;
+  class TrackingGeometry;
+}
+
+
+//Calo
+#include "CaloInterface/ICaloCellMakerTool.h"
+#include "CaloEvent/CaloCellContainer.h"
+
+namespace ISF {
+
+class FastCaloTool : public BaseSimulatorTool  {
+public:
+  FastCaloTool( const std::string& type, const std::string& name,  const IInterface* parent);
+
+  ~FastCaloTool();
+
+  StatusCode initialize() override;
+
+  virtual StatusCode simulate( const ISFParticle& isp, ISFParticleContainer& );
+
+  virtual StatusCode setupEventST() override;
+
+  virtual StatusCode setupEvent() override;
+
+  virtual StatusCode releaseEventST() override;
+
+  virtual StatusCode releaseEvent() override;
+
+  virtual SimulationFlavor simFlavor() const override { return ISF::FastCaloSim; };
+private:
+    StatusCode commonInitialize(); // TEMP
+
+    /** Called by setupEvent() and setupEventMT() */
+    StatusCode commonSetup();
+
+    /** process the given particle */
+    StatusCode processOneParticle( const ISF::ISFParticle &isfp);
+
+    /** extrapolation through Calo */
+    std::vector<Trk::HitInfo>* caloHits(const ISF::ISFParticle &isfp) const;
+
+    /** The Extrapolator setup */
+    PublicToolHandle<Trk::ITimedExtrapolator>      m_extrapolator{this, "Extrapolator", "", ""};
+
+    /** whether CellContainer to be created will own (default) its cells or not */
+    int m_ownPolicy;
+
+    // particle processing mode
+    bool                                m_batchProcessMcTruth{false};       //!< process particles from McTruth at end of event
+
+    bool                                m_simulateUndefinedBCs{false};      //!< do/don't simulate undefined barcode particles
+
+    std::string  m_caloCellsOutputName{"AllCalo"};
+
+    // authorise input to be the same as output (to be done with care)
+    bool m_caloCellHack{false};
+    //check if punch through simulation is used
+    bool m_doPunchThrough{false};
+
+    Trk::PdgToParticleHypothesis        m_pdgToParticleHypothesis;
+
+    // list of tools to be used
+    PublicToolHandleArray<ICaloCellMakerTool> m_caloCellMakerTools_setup{this, "CaloCellMakerTools_setup", {}, ""};
+    PublicToolHandleArray<ICaloCellMakerTool> m_caloCellMakerTools_simulate{this, "CaloCellMakerTools_simulate", {}, ""};
+    PublicToolHandleArray<ICaloCellMakerTool> m_caloCellMakerTools_release{this, "CaloCellMakerTools_release", {}, ""};
+    PublicToolHandle< IPunchThroughTool > m_punchThroughTool{this, "PunchThroughTool", "", ""};
+    CaloCellContainer *                 m_theContainer{};
+
+  SG::WriteHandleKey< CaloCellContainer > m_caloCellKey{ this, "CaloCells", "DefaultCaloCellContainer", "The name of the output CaloCellContainer" };
+
+};
+
+}
+
+#endif
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/components/ISF_FastCaloSimServices_entries.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/components/ISF_FastCaloSimServices_entries.cxx
index 75ed07a1c06ae05dc5476a7b4d4ff7d2c468b21b..703317432b741717eb2d0908a04fba7c6f401cc5 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/components/ISF_FastCaloSimServices_entries.cxx
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/src/components/ISF_FastCaloSimServices_entries.cxx
@@ -1,8 +1,9 @@
 #include "../FastCaloSimSvc.h"
 #include "../FastCaloSimSvcV2.h"
 #include "../FastCaloSimSvcPU.h"
+#include "../FastCaloTool.h"
 
 DECLARE_COMPONENT( ISF::FastCaloSimSvc )
 DECLARE_COMPONENT( ISF::FastCaloSimSvcV2 )
 DECLARE_COMPONENT( ISF::FastCaloSimSvcPU )
-
+DECLARE_COMPONENT( ISF::FastCaloTool )
diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfig.py b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfig.py
index 70446d182adeababf3fca4de48439bf1d72dab7e..72c6577ec31bb1b88032912efc75f68936e3cba0 100644
--- a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfig.py
+++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfig.py
@@ -5,6 +5,7 @@ Tools configurations for ISF for ISF_FatrasServicesConfig
 KG Tan, 04/12/2012
 """
 
+from AthenaCommon import CfgMgr
 from AthenaCommon.CfgGetter import getPrivateTool,getPrivateToolClone,getPublicTool,getPublicToolClone,\
         getService,getServiceClone,getAlgorithm,getAlgorithmClone
 
@@ -704,50 +705,84 @@ def getFatrasSimEngine(name="ISF_FatrasSimEngine", **kwargs):
     from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__TransportEngine
     return iFatras__TransportEngine(name, **kwargs )
 
+
+def getFatrasPileupSimTool(name="ISF_FatrasPileupSimTool", **kwargs):
+    kwargs.setdefault("SimHitCreatorID" , getPublicTool('ISF_FatrasPileupSimHitCreatorID'))
+    return getFatrasSimTool(name, **kwargs)
+
+
+## FatrasSimulationSvc Configurations
 def getFatrasSimServiceID(name="ISF_FatrasSimSvc", **kwargs):
     kwargs.setdefault("Identifier"      , "Fatras")
+    kwargs.setdefault("SimulatorTool"  , "ISF_FatrasSimulatorToolST")
+    from ISF_FatrasServices.ISF_FatrasServicesConf import iFatras__FatrasSimSvc
+    return iFatras__FatrasSimSvc(name, **kwargs )
+
+
+def getFatrasNewExtrapolationSimServiceID(name="ISF_FatrasNewExtrapolationSimSvc", **kwargs):
+    kwargs.setdefault("SimulatorTool"  , "ISF_FatrasNewExtrapolationSimulatorToolST")
+    return getFatrasSimServiceID(name, **kwargs )
+
+
+def getFatrasGeoIDFixSimServiceID(name="ISF_FatrasGeoIDFixSimSvc", **kwargs):
+    kwargs.setdefault("EnableGeoIDOverride"      , True  )
+    kwargs.setdefault("GeoIDOverrideZ"           , 3150. )
+    kwargs.setdefault("GeoIDOverride"            , 3     ) # ISF::fAtlasCalo
+    return getFatrasSimServiceID(name, **kwargs )
+
+
+def getFatrasPileupSimServiceID(name="ISF_FatrasPileupSimSvc", **kwargs):
+    kwargs.setdefault("SimulatorTool"  , "ISF_FatrasPileupSimulatorToolST")
+    return getFatrasSimServiceID(name, **kwargs)
+
+
+## FatrasSimulatorTool Configurations
+def getFatrasSimulatorToolST(name="ISF_FatrasSimulatorToolST", **kwargs):
     kwargs.setdefault("IDSimulationTool"  , getPublicTool('ISF_FatrasSimTool'))
     kwargs.setdefault("SimulationTool"  , getPublicTool('ISF_FatrasSimTool'))
-
     # set the output level
     kwargs.setdefault("OutputLevel"         , ISF_FatrasFlags.OutputLevelGeneral())
-
     # register Fatras random number stream if not already registered
     from G4AtlasApps.SimFlags import SimFlags,simFlags
     if not simFlags.RandomSeedList.checkForExistingSeed( "FatrasRnd" ):
       simFlags.RandomSeedList.addSeed( "FatrasRnd", 81234740, 23474923 )
+    return CfgMgr.ISF__FatrasSimTool(name, **kwargs)
 
-    from ISF_FatrasServices.ISF_FatrasServicesConf import iFatras__FatrasSimSvc
-    return iFatras__FatrasSimSvc(name, **kwargs )
 
-def getFatrasNewExtrapolationSimServiceID(name="ISF_FatrasNewExtrapolationSimSvc", **kwargs):
-    kwargs.setdefault("Identifier"        , "Fatras")
+def getFatrasSimulatorTool(name="ISF_FatrasSimulatorTool", **kwargs):
+    kwargs.setdefault("IDSimulationSelectors"       , [ 'ISF_DefaultFatrasSelector' ] )
+    kwargs.setdefault("CaloSimulationSelectors"     , [ 'ISF_MuonFatrasSelector' ]    )
+    kwargs.setdefault("MSSimulationSelectors"       , [ 'ISF_DefaultFatrasSelector' ] )
+    return getFatrasSimulatorToolST(name, **kwargs)
+
+
+def getFatrasNewExtrapolationSimulatorToolST(name="ISF_FatrasNewExtrapolationSimulatorToolST", **kwargs):
     kwargs.setdefault("IDSimulationTool"  , getPublicTool('ISF_FatrasSimEngine'))
-    kwargs.setdefault("SimulationTool"    , getPublicTool('ISF_FatrasSimTool'))
     kwargs.setdefault("UseSimulationTool" , True)
+    return getFatrasSimulatorToolST(name, **kwargs)
 
-    # set the output level
-    kwargs.setdefault("OutputLevel"       , ISF_FatrasFlags.OutputLevelGeneral())
-        
-    # register Fatras random number stream if not already registered
-    from G4AtlasApps.SimFlags import SimFlags,simFlags
-    if not simFlags.RandomSeedList.checkForExistingSeed( "FatrasRnd" ):
-      simFlags.RandomSeedList.addSeed( "FatrasRnd", 81234740, 23474923 )
 
-    from ISF_FatrasServices.ISF_FatrasServicesConf import iFatras__FatrasSimSvc
-    return iFatras__FatrasSimSvc(name, **kwargs )
+def getFatrasNewExtrapolationSimulatorTool(name="ISF_FatrasSNewExtrapolationimulatorTool", **kwargs):
+    kwargs.setdefault("IDSimulationSelectors"       , [ 'ISF_DefaultFatrasSelector' ] )
+    kwargs.setdefault("CaloSimulationSelectors"     , [ 'ISF_MuonFatrasSelector' ]    )
+    kwargs.setdefault("MSSimulationSelectors"       , [ 'ISF_DefaultFatrasSelector' ] )
+    return getFatrasNewExtrapolationSimulatorToolST(name, **kwargs)
 
-def getFatrasGeoIDFixSimServiceID(name="ISF_FatrasGeoIDFixSimSvc", **kwargs):
-    kwargs.setdefault("EnableGeoIDOverride"      , True  )
-    kwargs.setdefault("GeoIDOverrideZ"           , 3150. )
-    kwargs.setdefault("GeoIDOverride"            , 3     ) # ISF::fAtlasCalo
-    return getFatrasSimServiceID(name, **kwargs )
 
-def getFatrasPileupSimTool(name="ISF_FatrasPileupSimTool", **kwargs):
-    kwargs.setdefault("SimHitCreatorID" , getPublicTool('ISF_FatrasPileupSimHitCreatorID'))
-    return getFatrasSimTool(name, **kwargs)
-
-def getFatrasPileupSimServiceID(name="ISF_FatrasPileupSimSvc", **kwargs):
+def getFatrasPileupSimulatorToolST(name="ISF_FatrasPileupSimulatorToolST", **kwargs):
     kwargs.setdefault("IDSimulationTool", getPublicTool('ISF_FatrasPileupSimTool'))
     kwargs.setdefault("SimulationTool"  , getPublicTool('ISF_FatrasSimTool'))
-    return getFatrasSimServiceID(name, **kwargs)
+    return getFatrasSimulatorToolST(name, **kwargs)
+
+
+def getFatrasPileupSimulatorTool(name="ISF_FatrasPileupSimulatorTool", **kwargs):
+    kwargs.setdefault("IDSimulationSelectors"       , [ 'ISF_DefaultFatrasSelector' ] )
+    kwargs.setdefault("CaloSimulationSelectors"     , [ 'ISF_MuonFatrasSelector' ]    )
+    kwargs.setdefault("MSSimulationSelectors"       , [ 'ISF_DefaultFatrasSelector' ] )
+    return getFatrasPileupSimulatorToolST(name, **kwargs)
+
+
+#def getFatrasPileupSimulatorTool_noHits(name="ISF_FatrasPileupTool_noHits", **kwargs):
+#    kwargs.setdefault("SimService", "ISF_FatrasPileupSimSvc_noHits" )
+#    return CfgMgr.ISF__FatrasSimTool(name, **kwargs)
+
diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfigDb.py b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfigDb.py
index 326a1c602509a5397ce28d7a485cd66948686bbc..5cbb63294b86e1f07ea62867bd8fde906ea14413 100644
--- a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfigDb.py
+++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfigDb.py
@@ -65,3 +65,11 @@ addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupHitCreatorPi
 addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupHitCreatorSCT",               "ISF_FatrasPileupHitCreatorSCT")
 addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupHitCreatorTRT",               "ISF_FatrasPileupHitCreatorTRT")
 addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupSimHitCreatorID",             "ISF_FatrasPileupSimHitCreatorID")
+
+addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasSimulatorToolST"                  , "ISF_FatrasSimulatorToolST"                    )
+addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasSimulatorTool"                    , "ISF_FatrasSimulatorTool"                    )
+addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasNewExtrapolationSimulatorToolST"  , "ISF_FatrasNewExtrapolationSimulatorToolST"    )
+addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasNewExtrapolationSimulatorTool"    , "ISF_FatrasNewExtrapolationSimulatorTool"    )
+addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupSimulatorToolST"            , "ISF_FatrasPileupSimulatorToolST"                )
+addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupSimulatorTool"              , "ISF_FatrasPileupSimulatorTool"                )
+#addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupSimulatorTool_noHits"       , "ISF_FatrasPileupSimulatorTool_noHits"         )
diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.cxx b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.cxx
index 319a19550669baba5e7371531e5a7491e4d1f6a3..b47a6ff1a9cb9400679d7fbc3d683d6a381c3f3a 100644
--- a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.cxx
+++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.cxx
@@ -4,93 +4,51 @@
 
 // class header include
 #include "FatrasSimSvc.h"
-
-// Remaining ISF include
 #include "ISF_Interfaces/IParticleBroker.h"
-#include "ISF_Interfaces/ITruthSvc.h"
-#include "ISF_Interfaces/IParticleFilter.h"
-#include "ISF_Event/ISFParticle.h"
-#include "ISF_Interfaces/IParticleProcessor.h"
 
 /** Constructor **/
 iFatras::FatrasSimSvc::FatrasSimSvc(const std::string& name, ISvcLocator* svc) :
-  BaseSimulationSvc(name, svc),
-  m_IDsimulationTool(""),
-  m_useExtrapolator(true), // Used to run with the old extrapolator setup
-  m_simulationTool(""),
-  m_particleFilter("")
+  BaseSimulationSvc(name, svc)
 {
-  // retrieve the simulation tool and the transport tool
-  declareProperty("IDSimulationTool",   m_IDsimulationTool);
-  declareProperty("UseSimulationTool",  m_useExtrapolator);
-  declareProperty("SimulationTool",     m_simulationTool);
-  declareProperty("ParticleFilter",     m_particleFilter); 
 }
 
-iFatras::FatrasSimSvc::~FatrasSimSvc() 
+iFatras::FatrasSimSvc::~FatrasSimSvc()
 {}
 
 /** framework methods */
 StatusCode iFatras::FatrasSimSvc::initialize()
 {
-   ATH_MSG_INFO ( m_screenOutputPrefix << "Initializing ...");
-   // retrieve simulation tool
-   if ( retrieveTool<ISF::IParticleProcessor>(m_IDsimulationTool).isFailure() ) 
-     return StatusCode::FAILURE;
-   // retrieve simulation tool
-   if ( m_useExtrapolator ) {
-     if ( retrieveTool<ISF::IParticleProcessor>(m_simulationTool).isFailure() ) 
-       return StatusCode::FAILURE;
-   } else ATH_MSG_INFO ( m_screenOutputPrefix << "Using only Extrapolation Engine Tools...");       
-   // retrieve particle filter
-   if ( !m_particleFilter.empty() && retrieveTool<ISF::IParticleFilter>(m_particleFilter).isFailure())
-       return StatusCode::FAILURE;
-
-   return StatusCode::SUCCESS;
+  ATH_CHECK (m_simulatorTool.retrieve());
+  return StatusCode::SUCCESS;
 }
 
 /** framework methods */
 StatusCode iFatras::FatrasSimSvc::finalize()
 {
-    ATH_MSG_INFO ( m_screenOutputPrefix << "Finalizing ...");
-    return StatusCode::SUCCESS;
+  return StatusCode::SUCCESS;
 }
 
 StatusCode iFatras::FatrasSimSvc::setupEvent()
-{ 
-  ATH_MSG_DEBUG ( m_screenOutputPrefix << "setup Event");
-  return StatusCode::SUCCESS;
-}  
+{
+  return m_simulatorTool->setupEventST(); // empty method
+}
 
-StatusCode iFatras::FatrasSimSvc::releaseEvent() 
-{ 
-  ATH_MSG_DEBUG ( m_screenOutputPrefix << "release Event");  
-  return StatusCode::SUCCESS; 
+StatusCode iFatras::FatrasSimSvc::releaseEvent()
+{
+  return m_simulatorTool->releaseEventST(); // empty method
 }
 
 /** Simulation Call */
-StatusCode iFatras::FatrasSimSvc::simulate(const ISF::ISFParticle& isp)
+StatusCode iFatras::FatrasSimSvc::simulate(const ISF::ISFParticle& isfp)
 {
-
-  // give a screen output that you entered FatrasSimSvc
-  ATH_MSG_VERBOSE( m_screenOutputPrefix << "Particle " << isp << " received for simulation." );
-
-  // now decide what to do with the particle
-  if (!m_particleFilter.empty() && !m_particleFilter->passFilter(isp)){
-      ATH_MSG_VERBOSE( m_screenOutputPrefix << "ISFParticle " << isp << " does not pass selection. Ignore.");
-      return StatusCode::SUCCESS;
-  }
-  /** Process Particle from particle broker */
-  ISF::ISFParticle* newIsp = (isp.nextGeoID()==AtlasDetDescr::fAtlasID || isp.nextGeoID()==AtlasDetDescr::fAtlasForward) ? m_IDsimulationTool->process(isp) : m_simulationTool->process(isp);
-  ATH_MSG_VERBOSE( m_screenOutputPrefix << "Simulation created : " << ( newIsp ? "" : "no") << " new particle");
-
-  if (newIsp) {
-    // new particle into the stack
-    m_particleBroker->push(newIsp, &isp);
+  ISF::ISFParticleContainer secondaries;
+  ATH_CHECK(m_simulatorTool->simulate(isfp, secondaries));
+  if (not secondaries.empty()) {
+    for (auto particle : secondaries) {
+      m_particleBroker->push( particle, &isfp);
+    }
   }
 
   // Fatras call done
   return StatusCode::SUCCESS;
 }
-
-
diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.h b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.h
index c53e33fe61f02c43554341f578b4fa99fd3ab014..65dd73f77d28cb38adad0076ef30bdba6f24f586 100644
--- a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.h
+++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimSvc.h
@@ -11,63 +11,45 @@
 // FrameWork includes
 #include "GaudiKernel/ServiceHandle.h"
 #include "GaudiKernel/ToolHandle.h"
-#include "AthenaBaseComps/AthService.h"
 
 // ISF includes
 #include "ISF_Interfaces/BaseSimulationSvc.h"
-
-// DetectorDescription
-#include "AtlasDetDescr/AtlasRegion.h"
-
-// Tracking includes
-#include "TrkTrack/TrackCollection.h"
-
-namespace ISF {
-    class IParticleFilter;
-    class IParticleProcessor;
-    class ISFParticle;
-    class ITruthSvc;
-}
+#include "ISF_Interfaces/ISimulatorTool.h"
 
 namespace iFatras {
 
   /** @class FatrasSimSvc
-  
+
       @author Andreas.Salzburger -at- cern.ch
      */
-  class FatrasSimSvc : public ISF::BaseSimulationSvc { 
+  class FatrasSimSvc : public ISF::BaseSimulationSvc {
 
-    public: 
+    public:
       //** Constructor with parameters */
       FatrasSimSvc( const std::string& name, ISvcLocator* pSvcLocator );
-      
+
       /** Destructor */
-      virtual ~FatrasSimSvc(); 
-      
+      virtual ~FatrasSimSvc();
+
       /** Athena algorithm's interface methods */
-      StatusCode  initialize();
-      StatusCode  finalize();
+      virtual StatusCode initialize() override;
+      virtual StatusCode  finalize() override;
 
       /** Simulation Call  */
-      StatusCode simulate(const ISF::ISFParticle& isp);
-                                                                 
+      virtual StatusCode simulate(const ISF::ISFParticle& isp) override;
+
       /** Setup Event chain - in case of a begin-of event action is needed */
-      StatusCode setupEvent();
+      virtual StatusCode setupEvent() override;
 
       /** Release Event chain - in case of an end-of event action is needed */
-      StatusCode releaseEvent();
+      virtual StatusCode releaseEvent() override;
 
-    private:     
+    private:
       /** Default constructor */
       FatrasSimSvc();
 
-      /** Track Creation & transport */
-      ToolHandle<ISF::IParticleProcessor>  m_IDsimulationTool;   //!< Pointer to the transport AlgTool
-      bool                                 m_useExtrapolator;  //!< Boolean used to run with the old extrapolator setup
-      ToolHandle<ISF::IParticleProcessor>  m_simulationTool;   //!< Pointer to the transport AlgTool
-      ToolHandle<ISF::IParticleFilter>     m_particleFilter;   //!< the particle filter concerning kinematic cuts, etc.
-
-  }; 
+      PublicToolHandle<ISF::ISimulatorTool> m_simulatorTool{this, "SimulatorTool", "", ""};
+  };
 }
 
 
diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimTool.cxx b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimTool.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..d9a2390fcf71b22c560d0dd3470b40a205241378
--- /dev/null
+++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimTool.cxx
@@ -0,0 +1,68 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "./FatrasSimTool.h"
+
+ISF::FatrasSimTool::FatrasSimTool(const std::string& type, const std::string& name,  const IInterface* parent)
+  : BaseSimulatorTool(type, name, parent)
+{
+  declareProperty("UseSimulationTool",  m_useExtrapolator);
+}
+
+ISF::FatrasSimTool::~FatrasSimTool() {
+
+}
+
+StatusCode ISF::FatrasSimTool::initialize() {
+
+  ATH_CHECK( BaseSimulatorTool::initialize() );
+
+  // retrieve simulation tool
+  ATH_CHECK( m_IDsimulationTool.retrieve() );
+
+  // retrieve simulation tool
+  if ( m_useExtrapolator ) {
+    ATH_CHECK( m_simulationTool.retrieve() );
+  }
+  else {
+    m_simulationTool.disable();
+    ATH_MSG_INFO ( "Using only Extrapolation Engine Tools...");
+  }
+
+  // retrieve particle filter
+  if ( !m_particleFilter.empty() ) {
+    ATH_CHECK( m_particleFilter.retrieve() );
+  }
+  return StatusCode::SUCCESS;
+}
+
+StatusCode ISF::FatrasSimTool::simulate( const ISFParticle& isp, ISFParticleContainer& secondaries) {
+
+  // give a screen output that you entered FatrasSimSvc
+  ATH_MSG_VERBOSE( "Particle " << isp << " received for simulation." );
+
+  // now decide what to do with the particle
+  if (!m_particleFilter.empty() && !m_particleFilter->passFilter(isp)){
+      ATH_MSG_VERBOSE( "ISFParticle " << isp << " does not pass selection. Ignore.");
+      return StatusCode::SUCCESS;
+  }
+  /** Process Particle from particle broker */
+  ISF::ISFParticle* newIsp = (isp.nextGeoID()==AtlasDetDescr::fAtlasID || isp.nextGeoID()==AtlasDetDescr::fAtlasForward) ? m_IDsimulationTool->process(isp) : m_simulationTool->process(isp);
+  ATH_MSG_VERBOSE( "Simulation created : " << ( newIsp ? "" : "no") << " new particle");
+
+  if (newIsp) {
+    // new particle into the stack
+    secondaries.push_back(newIsp);
+  }
+
+  // Fatras call done
+  return StatusCode::SUCCESS;
+}
+
+// Act as particle broker for secondaries
+void ISF::FatrasSimTool::push( ISF::ISFParticle * /*particle*/, const ISF::ISFParticle * /*parent*/ )
+{
+  ATH_MSG_VERBOSE( "Caught secondary particle push() from Fatras" );
+  return;
+}
diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimTool.h b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimTool.h
new file mode 100644
index 0000000000000000000000000000000000000000..287c45125eb4a45d39c8c6ca13b21f3b7f129f5c
--- /dev/null
+++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/FatrasSimTool.h
@@ -0,0 +1,55 @@
+// -*- c++ -*-
+
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef ISF_FATRASSIMTOOL_h
+#define ISF_FATRASSIMTOOL_h
+
+//Gaudi
+#include "GaudiKernel/ServiceHandle.h"
+#include "GaudiKernel/ToolHandle.h"  // for ToolHandleArray
+
+// ISF
+#include "ISF_Interfaces/BaseSimulatorTool.h"
+#include "ISF_Interfaces/IParticleFilter.h"
+#include "ISF_Interfaces/IParticleProcessor.h"
+
+namespace ISF {
+
+  class FatrasSimTool : public BaseSimulatorTool  {
+  public:
+    FatrasSimTool( const std::string& type, const std::string& name,  const IInterface* parent);
+
+    ~FatrasSimTool();
+
+    virtual StatusCode initialize() override;
+
+    virtual StatusCode simulate( const ISFParticle& isp, ISFParticleContainer& ) override;
+
+    virtual StatusCode setupEvent() override { return StatusCode::SUCCESS; };
+
+    virtual StatusCode setupEventST() override { return setupEvent(); };
+
+    virtual StatusCode releaseEvent() override { return StatusCode::SUCCESS; };
+
+    virtual StatusCode releaseEventST() override { return releaseEvent(); };
+
+    virtual ISF:: SimulationFlavor simFlavor() const override { return ISF::Fatras; };
+
+    virtual void push( ISF::ISFParticle *particle, const ISF::ISFParticle *parent ) override;
+
+  private:
+
+    /** Track Creation & transport */
+    PublicToolHandle<ISF::IParticleProcessor>  m_IDsimulationTool{this, "IDSimulationTool", "", ""};   //!< Pointer to the transport AlgTool
+    bool                                 m_useExtrapolator{true};  //!< Boolean used to run with the old extrapolator setup
+    PublicToolHandle<ISF::IParticleProcessor>  m_simulationTool{this, "SimulationTool", "", ""};   //!< Pointer to the transport AlgTool
+    PublicToolHandle<ISF::IParticleFilter>     m_particleFilter{this, "ParticleFilter", "", ""};   //!< the particle filter concerning kinematic cuts, etc.
+
+  };
+
+}
+
+#endif
diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/components/ISF_FatrasServices_entries.cxx b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/components/ISF_FatrasServices_entries.cxx
index b7fba9de56c774ad6259a8f2cbce818b967842bf..070de08a974aac3b90843944e38c670c9b7ae50f 100644
--- a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/components/ISF_FatrasServices_entries.cxx
+++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/src/components/ISF_FatrasServices_entries.cxx
@@ -1,4 +1,6 @@
 #include "../FatrasSimSvc.h"
+#include "../FatrasSimTool.h"
 
 DECLARE_COMPONENT( iFatras::FatrasSimSvc )
+DECLARE_COMPONENT( ISF::FatrasSimTool )
 
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces/CMakeLists.txt b/Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces/CMakeLists.txt
deleted file mode 100644
index 73de2129c20f958e6b78bff0fda073756e98207f..0000000000000000000000000000000000000000
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces/CMakeLists.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-################################################################################
-# Package: ISF_Geant4Interfaces
-################################################################################
-
-# Declare the package name:
-atlas_subdir( ISF_Geant4Interfaces )
-
-# Declare the package's dependencies:
-atlas_depends_on_subdirs( PUBLIC
-                          GaudiKernel )
-
-# Install files from the package:
-atlas_install_headers( ISF_Geant4Interfaces )
-
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces/ISF_Geant4Interfaces/ITransportTool.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces/ISF_Geant4Interfaces/ITransportTool.h
deleted file mode 100644
index cd65f31db1542fa09f02a10ec9a86a8fe584cfcc..0000000000000000000000000000000000000000
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces/ISF_Geant4Interfaces/ITransportTool.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// ITransportTool.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#ifndef ISF_GEANT4INTERFACES_ITRANSPORTTOOL_H
-#define ISF_GEANT4INTERFACES_ITRANSPORTTOOL_H
-
-// Gaudi
-#include "GaudiKernel/IAlgTool.h"
-
-namespace Trk{
-  class Track;
-}
-  
-namespace ISF {
-  class ISFParticle;    
-}
-
-namespace iGeant4 {
-  
-  /** 
-   @class ITransportTool
-
-   universal transport tool 
-
-   - return of new ISFParticle on the next detector boundary
-   - return 0 indicates that the particle did not reach the associated detector boundary
-       
-   @author Robert Harrington
-   @author Andreas Schaelicke
-   
-   */
-      
-  class ITransportTool : virtual public IAlgTool {
-     public:
-     
-       /** Virtual destructor */
-       virtual ~ITransportTool(){}
-
-       /// Creates the InterfaceID and interfaceID() method
-       DeclareInterfaceID(ITransportTool, 1, 0);
-
-       /** Processes ISF particle */
-       virtual StatusCode process(const ISF::ISFParticle& isp) = 0;
-
-       /** Processes vector of ISF particles */
-       virtual StatusCode processVector(const std::vector<const ISF::ISFParticle*>& ispVector) = 0;
-  };
-
-} // end of namespace
-
-#endif 
-
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/CMakeLists.txt b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/CMakeLists.txt
index 1e6f60b8eabed114649eaee89ac5dce8157f18bd..c15a46b47f007667491d9b2f87cb497641491310 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/CMakeLists.txt
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/CMakeLists.txt
@@ -13,8 +13,7 @@ atlas_depends_on_subdirs( PUBLIC
                           Control/StoreGate
                           Simulation/G4Atlas/G4AtlasInterfaces
                           Simulation/ISF/ISF_Core/ISF_Event
-                          Simulation/ISF/ISF_Core/ISF_Interfaces
-                          Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces )
+                          Simulation/ISF/ISF_Core/ISF_Interfaces )
 
 # External dependencies:
 find_package( CLHEP )
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfig.py b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfig.py
index 129bdd5ba2448b8dfea3b92205abb8e1087e1970..24da430154f51240f5c980a823956a6253d51bba 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfig.py
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfig.py
@@ -1,16 +1,13 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 """
 Tools configurations for ISF
 KG Tan, 17/06/2012
 """
 
-from AthenaCommon.CfgGetter import getPrivateTool,getPrivateToolClone,getPublicTool,getPublicToolClone,\
-        getService,getServiceClone,getAlgorithm,getAlgorithmClone
-
+from AthenaCommon import CfgMgr
 from AthenaCommon.Constants import *  # FATAL,ERROR etc.
 from AthenaCommon.SystemOfUnits import *
-from AthenaCommon.DetFlags import DetFlags
 
 from ISF_Config.ISF_jobProperties import ISF_Flags # IMPORTANT: Flags must be set before tools are retrieved
 
@@ -39,27 +36,25 @@ def getIGeant4(**kwargs):
     return i
 
 def getGeant4SimSvc(name="ISF_Geant4SimSvc", **kwargs):
-    from ISF_Config.ISF_jobProperties import ISF_Flags
-    kwargs.setdefault('FullGeant4'            , False                        )
-    kwargs.setdefault('SimulationTool'        , 'ISFG4TransportTool'         )
+    kwargs.setdefault('SimulatorTool'        , 'ISF_Geant4Tool'         )
     kwargs.setdefault('Identifier'            , "Geant4"                     )
-    kwargs.setdefault('PrintTimingInfo'       , ISF_Flags.DoTimeMonitoring() )
+    kwargs.setdefault('FullGeant4'            , False                        )
     return getIGeant4(**kwargs).getSimSvc()
 
-def getFullGeant4SimSvc(name="ISF_Geant4SimSvc", **kwargs):
+def getFullGeant4SimSvc(name="ISF_FullGeant4SimSvc", **kwargs):
+    kwargs.setdefault('SimulatorTool'        , 'ISF_FullGeant4Tool'         )
     kwargs.setdefault('FullGeant4'            , True                         )
-    kwargs.setdefault('SimulationTool'        , 'FullG4TransportTool'        )
     return getGeant4SimSvc(name, **kwargs)
 
 def getLongLivedGeant4SimSvc(name="ISF_LongLivedGeant4SimSvc", **kwargs):
-    kwargs.setdefault('SimulationTool'       , 'QuasiStableG4TransportTool')
+    kwargs.setdefault('SimulatorTool'       , 'ISF_LongLivedGeant4Tool')
     return getFullGeant4SimSvc(name, **kwargs)
 
 def getPassBackGeant4SimSvc(name="ISF_PassBackGeant4SimSvc", **kwargs):
     kwargs.setdefault('FullGeant4'            , False                        )
-    kwargs.setdefault('SimulationTool'        , 'PassBackG4TransportTool'    )
+    kwargs.setdefault('SimulatorTool'        , 'ISF_PassBackGeant4Tool'    )
     return getGeant4SimSvc(name, **kwargs)
 
 def getAFIIGeant4SimSvc(name="ISF_AFIIGeant4SimSvc", **kwargs):
-    kwargs.setdefault('SimulationTool'       , 'AFII_G4TransportTool')
+    kwargs.setdefault('SimulatorTool'       , 'ISF_AFIIGeant4Tool')
     return getPassBackGeant4SimSvc(name, **kwargs)
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfigDb.py b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfigDb.py
index 4e87590a35aeabc90d4c6ac08707560e818dfd4c..6c0b7c5e68bd2775b542bebaa4d52b3b2cc0e763 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfigDb.py
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/python/ISF_Geant4ServicesConfigDb.py
@@ -1,8 +1,8 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 from AthenaCommon.CfgGetter import addService
 addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getGeant4SimSvc",          "ISF_Geant4SimSvc")
 addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getFullGeant4SimSvc",      "ISF_FullGeant4SimSvc")
 addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getPassBackGeant4SimSvc",  "ISF_PassBackGeant4SimSvc")
-addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getAFIIGeant4SimSvc",        "ISF_AFIIGeant4SimSvc")
-addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getLongLivedGeant4SimSvc",   "ISF_LongLivedGeant4SimSvc")
+addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getAFIIGeant4SimSvc",      "ISF_AFIIGeant4SimSvc")
+addService("ISF_Geant4Services.ISF_Geant4ServicesConfig.getLongLivedGeant4SimSvc", "ISF_LongLivedGeant4SimSvc")
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.cxx b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.cxx
index 3a5de9df7722e66b2782470bb33876a090f49c85..2718c5a84e1d1222f94e3e5374ab0c79ebd52042 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.cxx
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.cxx
@@ -1,46 +1,14 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// TransportSimSvc.cxx, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
 // class header
 #include "Geant4SimSvc.h"
 
-// StoreGate
-#include "StoreGate/StoreGateSvc.h"
-// Remaining ISF include
-#include "ISF_Interfaces/ITruthSvc.h"
-#include "ISF_Event/ISFParticle.h"
-
-#include "G4AtlasInterfaces/IDetectorGeometrySvc.h"
-#include "ISF_Geant4Interfaces/ITransportTool.h"
-
-// Geant4 classes
-#include "G4Timer.hh"
-#include "G4SDManager.hh"
-
-
 /** Constructor **/
 iGeant4::Geant4SimSvc::Geant4SimSvc(const std::string& name,ISvcLocator* svc) :
-  BaseSimulationSvc(name, svc),
-  m_detGeoSvc("DetectorGeometrySvc", name),
-  m_simulationTool("ISFG4TransportTool"),
-  m_configTool(""),
-  m_doTiming(true),
-  m_accumulatedEventTime(0.),
-  m_accumulatedEventTimeSq(0.),
-  m_nrOfEntries(0),
-  m_runTimer(0),
-  m_eventTimer(0)
+  BaseSimulationSvc(name, svc)
 {
-  declareProperty("SimulationTool" ,      m_simulationTool );
-  declareProperty("DetectorGeometrySvc",  m_detGeoSvc      );
-  declareProperty("G4ConfigTool"   ,      m_configTool     );
-
-  declareProperty("PrintTimingInfo",      m_doTiming       );
 }
 
 iGeant4::Geant4SimSvc::~Geant4SimSvc()
@@ -49,151 +17,39 @@ iGeant4::Geant4SimSvc::~Geant4SimSvc()
 /** framework methods */
 StatusCode iGeant4::Geant4SimSvc::initialize()
 {
-  ATH_MSG_INFO ( m_screenOutputPrefix << "Initializing ...");
-
-  // create G4Timers if enabled
-  if (m_doTiming) {
-    m_runTimer   = new G4Timer();
-    m_eventTimer = new G4Timer();
-    m_runTimer->Start();
-  }
-
-  // retrieve simulation tool
-  if ( retrieveTool<iGeant4::ITransportTool>(m_simulationTool).isFailure() ) {
-    ATH_MSG_FATAL(  m_screenOutputPrefix << " Cannot retrieve simulation tool! Abort." );
-    return StatusCode::FAILURE;
-  }
-
-  ATH_MSG_INFO ( m_screenOutputPrefix << m_simulationTool->name() );
-
-  if (m_detGeoSvc.retrieve().isFailure()) {
-    ATH_MSG_FATAL("Could not retrieve DetectorGeometrySvc.");
-    return StatusCode::FAILURE;
-  }
-
-  // retrieve (and run) the Geant4 Python Config tool
-  if ( !m_configTool.empty() && m_configTool.retrieve().isFailure() ){
-    ATH_MSG_FATAL(  m_screenOutputPrefix << " Cannot retrieve Geant4 Python Config Tool! Abort." );
-    return StatusCode::FAILURE;
-  }
-
-  ATH_CHECK(m_senDetTool.retrieve());
-  ATH_CHECK(m_fastSimTool.retrieve());
-
+  ATH_CHECK (m_simulatorTool.retrieve());
   return StatusCode::SUCCESS;
 }
 
 /** framework methods */
 StatusCode iGeant4::Geant4SimSvc::finalize()
 {
-  ATH_MSG_INFO ( m_screenOutputPrefix << "Finalizing ..." );
-
-  if (m_doTiming) {
-    m_runTimer->Stop();
-    float runTime=m_runTimer->GetUserElapsed()+m_runTimer->GetSystemElapsed();
-    float avgTimePerEvent=(m_nrOfEntries>1) ? m_accumulatedEventTime/(m_nrOfEntries-1.) : runTime;
-    float sigma=( m_nrOfEntries>2) ? std::sqrt((m_accumulatedEventTimeSq/float(m_nrOfEntries-1)-
-                                                avgTimePerEvent*avgTimePerEvent)/float(m_nrOfEntries-2)) : 0;
-    ATH_MSG_INFO("*****************************************"<<endmsg<<
-                 "**                                     **"<<endmsg<<
-                 "    End of run - time spent is "<<std::setprecision(4) <<
-                 runTime<<endmsg<<
-                 "    Average time per event was "<<std::setprecision(4) <<
-                 avgTimePerEvent <<" +- "<< std::setprecision(4) << sigma<<endmsg<<
-                 "**                                     **"<<endmsg<<
-                 "*****************************************");
-  }
-
   return StatusCode::SUCCESS;
 }
 
 StatusCode iGeant4::Geant4SimSvc::setupEvent()
 {
-  ATH_MSG_DEBUG ( m_screenOutputPrefix << "setup Event" );
-
-  ATH_CHECK(m_senDetTool->BeginOfAthenaEvent());
-
-  m_nrOfEntries++;
-  if (m_doTiming) m_eventTimer->Start();
-
-  // make sure SD collections are properly initialized in every Athena event
-  G4SDManager::GetSDMpointer()->PrepareNewEvent();
-
-  return StatusCode::SUCCESS;
+  return m_simulatorTool->setupEventST();
 }
 
 StatusCode iGeant4::Geant4SimSvc::releaseEvent()
 {
-  ATH_MSG_DEBUG ( m_screenOutputPrefix << "release Event" );
-  /** @todo : strip hits of the tracks ... */
-
-  /* todo: ELLI: the following is copied in from the PyG4AtlasAlg:
-     -> this somehow needs to be moved into C++
-     and put into releaseEvent() ( or setupEvent() ?)
-
-     from ISF_Geant4Example import AtlasG4Eng
-     from ISF_Geant4Example.ISF_SimFlags import simFlags
-     if self.doFirstEventG4SeedsCheck :
-     if simFlags.SeedsG4.statusOn:
-     rnd = AtlasG4Eng.G4Eng.menu_G4RandomNrMenu()
-     rnd.set_Seed(simFlags.SeedsG4.get_Value())
-     self.doFirstEventG4SeedsCheck = False
-     if self.RndG4Menu.SaveStatus:
-     self.RndG4Menu.Menu.saveStatus('G4Seeds.txt')
-  */
-
-  // print per-event timing info if enabled
-  if (m_doTiming) {
-    m_eventTimer->Stop();
-
-    double eventTime=m_eventTimer->GetUserElapsed()+m_eventTimer->GetSystemElapsed();
-    if (m_nrOfEntries>1) {
-      m_accumulatedEventTime  +=eventTime;
-      m_accumulatedEventTimeSq+=eventTime*eventTime;
-    }
-
-    float avgTimePerEvent=(m_nrOfEntries>1) ? m_accumulatedEventTime/(m_nrOfEntries-1.) : eventTime;
-    float sigma=(m_nrOfEntries>2) ? std::sqrt((m_accumulatedEventTimeSq/float(m_nrOfEntries-1)-
-                                               avgTimePerEvent*avgTimePerEvent)/float(m_nrOfEntries-2)) : 0.;
-
-    ATH_MSG_INFO("\t Event nr. "<<m_nrOfEntries<<" took " << std::setprecision(4) <<
-                 eventTime << " s. New average " << std::setprecision(4) <<
-                 avgTimePerEvent<<" +- "<<std::setprecision(4) << sigma);
-  }
-
-  ATH_CHECK(m_senDetTool->EndOfAthenaEvent());
-  ATH_CHECK(m_fastSimTool->EndOfAthenaEvent());
-
-  return StatusCode::SUCCESS;
+  return m_simulatorTool->releaseEventST();
 }
 
 /** Simulation Call */
 StatusCode iGeant4::Geant4SimSvc::simulate(const ISF::ISFParticle& isp)
 {
-  // give a screen output that you entered Geant4SimSvc
-  ATH_MSG_VERBOSE( m_screenOutputPrefix << "Particle " << isp << " received for simulation." );
-
-  /** Process ParticleState from particle stack */
-  StatusCode success = m_simulationTool->process(isp);
-  ATH_MSG_VERBOSE( m_screenOutputPrefix << "Simulation done" );
-
-  // Geant4 call done
-  return success;
+  ISF::ISFParticleContainer secondaries; // filled, but not used
+  ATH_CHECK(m_simulatorTool->simulate(isp, secondaries));
+  return StatusCode::SUCCESS;
 }
 
 /** Simulation Call */
 StatusCode iGeant4::Geant4SimSvc::simulateVector(const ISF::ConstISFParticleVector& particles)
 {
-  // give a screen output that you entered Geant4SimSvc
-  ATH_MSG_VERBOSE( m_screenOutputPrefix << "Vector of particles received for simulation." );
-
-
-  /** Process ParticleState from particle stack */
-  StatusCode success = m_simulationTool->processVector(particles);
-  ATH_MSG_VERBOSE( m_screenOutputPrefix << "Simulation done for vector of particles" );
-
-
-  // Geant4 call done
-  return success;
+  ISF::ISFParticleContainer secondaries; // filled, but not used
+  ATH_CHECK (m_simulatorTool->simulateVector(particles,secondaries));
+  return StatusCode::SUCCESS;
 }
 
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.h
index c8627a0c46e6d9ded06110a79887fcb5e63bce59..9943f0bf6acddf59714b112ba4bd26f6ae6e4295 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.h
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/Geant4SimSvc.h
@@ -1,44 +1,26 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// Geant4SimSvc.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
 #ifndef ISF_GEANT4SIMSVC_H
 #define ISF_GEANT4SIMSVC_H 1
 
 // STL includes
 #include <string>
 
-// FrameWork includes
+// Gaudi
 #include "GaudiKernel/ServiceHandle.h"
 #include "GaudiKernel/ToolHandle.h"
-#include "GaudiKernel/ServiceHandle.h"
-#include "AthenaBaseComps/AthService.h"
 
 // ISF includes
 #include "ISF_Interfaces/BaseSimulationSvc.h"
-
-#include "G4AtlasInterfaces/ISensitiveDetectorMasterTool.h"
-#include "G4AtlasInterfaces/IFastSimulationMasterTool.h"
-
-class IDetectorGeometrySvc;
-class G4Timer;
-
-namespace ISF {
-  class ISFParticle;
-  class ITruthSvc;
-}
+#include "ISF_Interfaces/ISimulatorTool.h"
+#include "ISF_Event/ISFParticleContainer.h"
 
 namespace iGeant4 {
 
-  class ITransportTool;
-
   /** @class Geant4SimSvc
 
-      @author Andreas.Salzburger -at- cern.ch
   */
   class Geant4SimSvc : public ISF::BaseSimulationSvc {
 
@@ -50,46 +32,26 @@ namespace iGeant4 {
     virtual ~Geant4SimSvc();
 
     /** Athena algorithm's interface methods */
-    StatusCode  initialize();
-    StatusCode  finalize();
+    virtual StatusCode initialize() override;
+    virtual StatusCode finalize() override;
 
     /** Simulation Call  */
-    StatusCode simulate(const ISF::ISFParticle& isp);
-
+    virtual StatusCode simulate(const ISF::ISFParticle& isp) override;
 
     /** Simulation Call for vector of ISF particles */
-    StatusCode simulateVector(const ISF::ConstISFParticleVector& particles);
+    virtual StatusCode simulateVector(const ISF::ConstISFParticleVector& particles) override;
 
     /** Setup Event chain - in case of a begin-of event action is needed */
-    StatusCode setupEvent();
+    virtual StatusCode setupEvent() override;
 
     /** Release Event chain - in case of an end-of event action is needed */
-    StatusCode releaseEvent();
+    virtual StatusCode releaseEvent() override;
 
   private:
     /** Default constructor */
     Geant4SimSvc();
 
-    ServiceHandle<IDetectorGeometrySvc> m_detGeoSvc;
-
-    /** Track Creation & transport */
-    ToolHandle<iGeant4::ITransportTool>  m_simulationTool;            //!< Pointer to the TrackCreator AlgTool
-
-    /** Geant4 Python Configuration Tool */
-    ToolHandle<IAlgTool>                 m_configTool;                //!< Pointer to the G4 Python Config Tool
-
-    PublicToolHandle<ISensitiveDetectorMasterTool> m_senDetTool{this, "SensitiveDetectorMasterTool", "SensitiveDetectorMasterTool", ""};
-    PublicToolHandle<IFastSimulationMasterTool> m_fastSimTool{this, "FastSimulationMasterTool", "FastSimulationMasterTool", ""};
-
-    // timing checks
-    bool  m_doTiming;
-    //float m_runTime;
-    float m_accumulatedEventTime;
-    float m_accumulatedEventTimeSq;
-    unsigned int m_nrOfEntries;
-
-    G4Timer* m_runTimer;
-    G4Timer* m_eventTimer;
+    PublicToolHandle<ISF::ISimulatorTool> m_simulatorTool{this, "SimulatorTool", "", ""};
 
   };
 }
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/components/ISF_Geant4Services_entries.cxx b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/components/ISF_Geant4Services_entries.cxx
index 9cfecd74985dea203e49d90f133cbb9a7c665f87..27f524a42c6031d375cc25489a1d50b6568cdf90 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/components/ISF_Geant4Services_entries.cxx
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Services/src/components/ISF_Geant4Services_entries.cxx
@@ -1,4 +1,3 @@
 #include "../Geant4SimSvc.h"
 
 DECLARE_COMPONENT( iGeant4::Geant4SimSvc )
-
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt
index 32899dd784c429e480e2d9d9f2a38b5527fe2331..9285829915a8f913ab100498634011122c3a60c5 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt
@@ -22,7 +22,6 @@ atlas_depends_on_subdirs( PUBLIC
                           Simulation/ISF/ISF_Core/ISF_Event
                           Simulation/ISF/ISF_Core/ISF_Interfaces
                           Simulation/ISF/ISF_Geant4/ISF_Geant4Event
-                          Simulation/ISF/ISF_Geant4/ISF_Geant4Interfaces
                           Simulation/ISF/ISF_HepMC/ISF_HepMC_Event )
 
 # External dependencies:
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfig.py b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfig.py
index 2aa9494308b2a4839312a683dd7177a2e97a3d67..a519ea1dc9c522bb12029eaef72ae35211883e22 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfig.py
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfig.py
@@ -69,7 +69,7 @@ def getAFII_G4TrackProcessorUserActionTool(name='AFII_G4TrackProcessorUserAction
 
 ## -----------------------------------------------------------------------------
 ### Base Version
-def getG4TransportTool(name='ISFG4TransportTool', **kwargs):
+def getGeant4Tool(name="ISF_Geant4Tool", **kwargs):
     from G4AtlasApps.SimFlags import simFlags
     kwargs.setdefault('RandomGenerator', 'athena')
     kwargs.setdefault('RandomNumberService', simFlags.RandomSvc())
@@ -87,24 +87,29 @@ def getG4TransportTool(name='ISFG4TransportTool', **kwargs):
     kwargs.setdefault('MultiThreading', is_hive)
     # Set commands for the G4AtlasAlg
     kwargs.setdefault("G4Commands", simFlags.G4Commands.get_Value())
-    from ISF_Geant4Tools.ISF_Geant4ToolsConf import iGeant4__G4TransportTool
-    return iGeant4__G4TransportTool(name, **kwargs)
-### Specialized Versions
-def getFullG4TransportTool(name='FullG4TransportTool', **kwargs):
+    from ISF_Config.ISF_jobProperties import ISF_Flags
+    kwargs.setdefault('PrintTimingInfo'       , ISF_Flags.DoTimeMonitoring() )
+    kwargs.setdefault('SenDetMasterTool', 'SensitiveDetectorMasterTool')
+    kwargs.setdefault('FastSimMasterTool', 'FastSimulationMasterTool')
+    from AthenaCommon import CfgMgr
+    return CfgMgr.iGeant4__G4TransportTool(name, **kwargs)
+
+def getFullGeant4Tool(name="ISF_FullGeant4Tool", **kwargs):
     kwargs.setdefault('UserActionSvc','G4UA::ISFFullUserActionSvc')
-    return getG4TransportTool(name, **kwargs)
+    return getGeant4Tool(name, **kwargs)
 
-def getPassBackG4TransportTool(name='PassBackG4TransportTool', **kwargs):
+### Specialized Versions
+def getPassBackGeant4Tool(name="ISF_PassBackGeant4Tool", **kwargs):
     kwargs.setdefault('UserActionSvc','G4UA::ISFPassBackUserActionSvc')
-    return getG4TransportTool(name, **kwargs)
+    return getGeant4Tool(name, **kwargs)
 
-def getAFII_G4TransportTool(name='AFII_G4TransportTool', **kwargs):
+def getAFIIGeant4Tool(name="ISF_AFIIGeant4Tool", **kwargs):
     kwargs.setdefault('UserActionSvc','G4UA::ISF_AFIIUserActionSvc')
-    return getG4TransportTool(name, **kwargs)
+    return getPassBackGeant4Tool(name, **kwargs)
 
-def getQuasiStableG4TransportTool(name='QuasiStableG4TransportTool', **kwargs):
+def getLongLivedGeant4Tool(name="ISF_LongLivedGeant4Tool", **kwargs):
     kwargs.setdefault('UserActionSvc','G4UA::ISFQuasiStableUserActionSvc')
     kwargs.setdefault('InputConverter', 'ISF_LongLivedInputConverter')
-    return getG4TransportTool(name, **kwargs)
+    return getFullGeant4Tool(name, **kwargs)
 
 ## -----------------------------------------------------------------------------
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigDb.py b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigDb.py
index d0da9840d9f161f305f3de4e36e3654bd4a3e562..4b85828a7d2b634bcbf3520955c4dfdb2db81751 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigDb.py
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigDb.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 from AthenaCommon.CfgGetter import addTool
 
@@ -14,9 +14,8 @@ addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getFullG4TrackProcessorUserAction
 addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getPassBackG4TrackProcessorUserActionTool"    , "PassBackG4TrackProcessorUserActionTool")
 addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getAFII_G4TrackProcessorUserActionTool"       , "AFII_G4TrackProcessorUserActionTool")
 
-
-addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getG4TransportTool"                       , "ISFG4TransportTool")
-addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getFullG4TransportTool"                   , "FullG4TransportTool")
-addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getPassBackG4TransportTool"               , "PassBackG4TransportTool")
-addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getAFII_G4TransportTool"                  , "AFII_G4TransportTool")
-addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getQuasiStableG4TransportTool"            , "QuasiStableG4TransportTool")
+addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getGeant4Tool",               "ISF_Geant4Tool")
+addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getFullGeant4Tool",           "ISF_FullGeant4Tool")
+addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getLongLivedGeant4Tool",      "ISF_LongLivedGeant4Tool")
+addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getPassBackGeant4Tool",       "ISF_PassBackGeant4Tool")
+addTool("ISF_Geant4Tools.ISF_Geant4ToolsConfig.getAFIIGeant4Tool",           "ISF_AFIIGeant4Tool")
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/MCTruthUserAction.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/MCTruthUserAction.h
index 8cce4638f7d04da51586f0eafe3971e1e9c949e5..b032a530899f38e77ffaeb9df9d3715c75592990 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/MCTruthUserAction.h
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/MCTruthUserAction.h
@@ -1,12 +1,11 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-#ifndef ISF_Geant4Interfaces_MCTruthUserAction_H
-#define ISF_Geant4Interfaces_MCTruthUserAction_H
+#ifndef ISF_Geant4Tools_MCTruthUserAction_H
+#define ISF_Geant4Tools_MCTruthUserAction_H
 
 
-//#include "ISF_Geant4Interfaces/IMCTruthUserAction.h"
 
 #include <string>
 
@@ -61,4 +60,4 @@ namespace G4UA{
 } // namespace G4UA
 
 
-#endif // ISF_Geant4Interfaces_MCTruthUserAction_H
+#endif // ISF_Geant4Tools_MCTruthUserAction_H
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TrackProcessorUserActionBase.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TrackProcessorUserActionBase.h
index 43ddce5efa49eae810285548eae90066f5a4f5a6..7dc0cdb9d415c3a701b4c8f1d9c8dd9df26a3b62 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TrackProcessorUserActionBase.h
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TrackProcessorUserActionBase.h
@@ -1,12 +1,10 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef ISF_GEANT4TOOLS_TRACKPROCESSORUSERACTIONBASE_H
 #define ISF_GEANT4TOOLS_TRACKPROCESSORUSERACTIONBASE_H
 
-//#include "ISF_Geant4Interfaces/ITrackProcessorUserAction.h"
-
 #include <string>
 
 #include "G4UserTrackingAction.hh"
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx
index 3904af1fa0b45169574dc4fed54263b406f935cb..f42b450ca9fd2954058676db26bc5d5b0e8e1b12 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // class header
@@ -33,6 +33,10 @@
 #include "G4TransportationManager.hh"
 #include "G4UImanager.hh"
 #include "G4ScoringManager.hh"
+#include "G4Timer.hh"
+#include "G4SDManager.hh"
+
+#include "AtlasDetDescr/AtlasRegionHelper.h"
 
 // call_once mutexes
 #include <mutex>
@@ -40,10 +44,10 @@ static std::once_flag initializeOnceFlag;
 static std::once_flag finalizeOnceFlag;
 
 //________________________________________________________________________
-iGeant4::G4TransportTool::G4TransportTool(const std::string& t,
-                                          const std::string& n,
-                                          const IInterface*  p )
-  : base_class(t,n,p)
+iGeant4::G4TransportTool::G4TransportTool(const std::string& type,
+                                          const std::string& name,
+                                          const IInterface*  parent )
+  : ISF::BaseSimulatorTool(type, name, parent)
 {
   declareProperty("Dll",                   m_libList);
   declareProperty("Physics",               m_physList);
@@ -56,6 +60,7 @@ iGeant4::G4TransportTool::G4TransportTool(const std::string& t,
   declareProperty("MultiThreading",        m_useMT, "Multi-threading specific settings");
   //declareProperty("KillAllNeutrinos",      m_KillAllNeutrinos=true);
   //declareProperty("KillLowEPhotons",       m_KillLowEPhotons=-1.);
+  declareProperty("PrintTimingInfo",      m_doTiming       );
 
 }
 
@@ -68,6 +73,15 @@ StatusCode iGeant4::G4TransportTool::initialize()
 {
   ATH_MSG_VERBOSE("initialize");
 
+  ATH_CHECK( ISF::BaseSimulatorTool::initialize() );
+
+  // create G4Timers if enabled
+  if (m_doTiming) {
+    m_runTimer   = new G4Timer();
+    m_eventTimer = new G4Timer();
+    m_runTimer->Start();
+  }
+
   ATH_CHECK(m_inputConverter.retrieve());
 
  // One-time initialization
@@ -84,6 +98,11 @@ StatusCode iGeant4::G4TransportTool::initialize()
 
   if (m_recordFlux) G4ScoringManager::GetScoringManager();
 
+  ATH_CHECK (m_detGeoSvc.retrieve());
+
+  ATH_CHECK(m_senDetTool.retrieve());
+  ATH_CHECK(m_fastSimTool.retrieve());
+
   return StatusCode::SUCCESS;
 }
 
@@ -174,6 +193,22 @@ StatusCode iGeant4::G4TransportTool::finalize()
     return StatusCode::FAILURE;
   }
 
+  if (m_doTiming) {
+    m_runTimer->Stop();
+    float runTime=m_runTimer->GetUserElapsed()+m_runTimer->GetSystemElapsed();
+    float avgTimePerEvent=(m_nrOfEntries>1) ? m_accumulatedEventTime/(m_nrOfEntries-1.) : runTime;
+    float sigma=( m_nrOfEntries>2) ? std::sqrt((m_accumulatedEventTimeSq/float(m_nrOfEntries-1)-
+                                                avgTimePerEvent*avgTimePerEvent)/float(m_nrOfEntries-2)) : 0;
+    ATH_MSG_INFO("*****************************************"<<endmsg<<
+                 "**                                     **"<<endmsg<<
+                 "    End of run - time spent is "<<std::setprecision(4) <<
+                 runTime<<endmsg<<
+                 "    Average time per event was "<<std::setprecision(4) <<
+                 avgTimePerEvent <<" +- "<< std::setprecision(4) << sigma<<endmsg<<
+                 "**                                     **"<<endmsg<<
+                 "*****************************************");
+  }
+
   return StatusCode::SUCCESS;
 }
 
@@ -188,23 +223,28 @@ void iGeant4::G4TransportTool::finalizeOnce()
 }
 
 //________________________________________________________________________
-StatusCode iGeant4::G4TransportTool::process(const ISF::ISFParticle& isp)
-{
-  ATH_MSG_VERBOSE("process(...)");
+StatusCode iGeant4::G4TransportTool::simulate( const ISF::ISFParticle& isp, ISF::ISFParticleContainer& secondaries ) {
+
+  // give a screen output that you entered Geant4SimSvc
+  ATH_MSG_VERBOSE( "Particle " << isp << " received for simulation." );
 
+  /** Process ParticleState from particle stack */
   // wrap the given ISFParticle into a STL vector of ISFParticles with length 1
   // (minimizing code duplication)
   const ISF::ConstISFParticleVector ispVector(1, &isp);
-  return this->processVector(ispVector);
+  StatusCode success = this->simulateVector(ispVector, secondaries);
+  ATH_MSG_VERBOSE( "Simulation done" );
+
+  // Geant4 call done
+  return success;
 }
 
 //________________________________________________________________________
-StatusCode iGeant4::G4TransportTool::processVector(const ISF::ConstISFParticleVector& ispVector)
-{
-  ATH_MSG_VERBOSE("processVector(...)");
-  ATH_MSG_DEBUG("processing vector of "<<ispVector.size()<<" particles");
+StatusCode iGeant4::G4TransportTool::simulateVector( const ISF::ConstISFParticleVector& particles, ISF::ISFParticleContainer& secondaries ) {
 
-  G4Event* inputEvent = m_inputConverter->ISF_to_G4Event(ispVector, genEvent());
+  ATH_MSG_DEBUG (name() << ".simulateVector(...) : Received a vector of " << particles.size() << " particles for simulation.");
+  /** Process ParticleState from particle stack */
+  G4Event* inputEvent = m_inputConverter->ISF_to_G4Event(particles, genEvent());
   if (!inputEvent) {
     ATH_MSG_ERROR("ISF Event conversion failed ");
     return StatusCode::FAILURE;
@@ -231,9 +271,110 @@ StatusCode iGeant4::G4TransportTool::processVector(const ISF::ConstISFParticleVe
   // }
 
   // not implemented yet... need to get particle stack from Geant4 and convert to ISFParticle
+  ATH_MSG_VERBOSE( "Simulation done" );
+
+  for (auto* cisp : particles) {
+    auto* isp = const_cast<ISF::ISFParticle*>(cisp);
+    // return any secondaries associated with this particle
+    auto searchResult = m_secondariesMap.find( isp );
+    if ( searchResult == m_secondariesMap.end() ) {
+
+      ATH_MSG_VERBOSE( "Found no secondaries" );
+
+    } else {
+
+      ATH_MSG_VERBOSE( "Found secondaries: " << searchResult->second.size() );
+      secondaries.splice( end(secondaries), std::move(searchResult->second) ); //append vector
+      m_secondariesMap.erase( searchResult );
+    }
+  }
+  // Geant4 call done
   return StatusCode::SUCCESS;
 }
 
+//________________________________________________________________________
+StatusCode iGeant4::G4TransportTool::setupEvent()
+{
+  ATH_MSG_DEBUG ( "setup Event" );
+
+  ATH_CHECK(m_senDetTool->BeginOfAthenaEvent());
+
+  m_nrOfEntries++;
+  if (m_doTiming) m_eventTimer->Start();
+
+  // make sure SD collections are properly initialized in every Athena event
+  G4SDManager::GetSDMpointer()->PrepareNewEvent();
+
+  return StatusCode::SUCCESS;
+}
+
+//________________________________________________________________________
+StatusCode iGeant4::G4TransportTool::setupEventST()
+{
+  return setupEvent();
+}
+
+//________________________________________________________________________
+StatusCode iGeant4::G4TransportTool::releaseEvent()
+{
+  ATH_MSG_DEBUG ( "release Event" );
+  /** @todo : strip hits of the tracks ... */
+
+  /* todo: ELLI: the following is copied in from the PyG4AtlasAlg:
+     -> this somehow needs to be moved into C++
+     and put into releaseEvent() ( or setupEvent() ?)
+
+     from ISF_Geant4Example import AtlasG4Eng
+     from ISF_Geant4Example.ISF_SimFlags import simFlags
+     if self.doFirstEventG4SeedsCheck :
+     if simFlags.SeedsG4.statusOn:
+     rnd = AtlasG4Eng.G4Eng.menu_G4RandomNrMenu()
+     rnd.set_Seed(simFlags.SeedsG4.get_Value())
+     self.doFirstEventG4SeedsCheck = False
+     if self.RndG4Menu.SaveStatus:
+     self.RndG4Menu.Menu.saveStatus('G4Seeds.txt')
+  */
+
+  // print per-event timing info if enabled
+  if (m_doTiming) {
+    m_eventTimer->Stop();
+
+    double eventTime=m_eventTimer->GetUserElapsed()+m_eventTimer->GetSystemElapsed();
+    if (m_nrOfEntries>1) {
+      m_accumulatedEventTime  +=eventTime;
+      m_accumulatedEventTimeSq+=eventTime*eventTime;
+    }
+
+    float avgTimePerEvent=(m_nrOfEntries>1) ? m_accumulatedEventTime/(m_nrOfEntries-1.) : eventTime;
+    float sigma=(m_nrOfEntries>2) ? std::sqrt((m_accumulatedEventTimeSq/float(m_nrOfEntries-1)-
+                                               avgTimePerEvent*avgTimePerEvent)/float(m_nrOfEntries-2)) : 0.;
+
+    ATH_MSG_INFO("\t Event nr. "<<m_nrOfEntries<<" took " << std::setprecision(4) <<
+                 eventTime << " s. New average " << std::setprecision(4) <<
+                 avgTimePerEvent<<" +- "<<std::setprecision(4) << sigma);
+  }
+
+  ATH_CHECK(m_senDetTool->EndOfAthenaEvent());
+  ATH_CHECK(m_fastSimTool->EndOfAthenaEvent());
+
+  return StatusCode::SUCCESS;
+}
+
+//________________________________________________________________________
+StatusCode iGeant4::G4TransportTool::releaseEventST()
+{
+  return releaseEvent();
+}
+
+//________________________________________________________________________
+// Act as particle broker for G4 secondaries
+void iGeant4::G4TransportTool::push( ISF::ISFParticle *particle, const ISF::ISFParticle *parent )
+{
+  ATH_MSG_VERBOSE( "Caught secondary particle push() from Geant4" );
+
+  m_secondariesMap[ parent ].push_back( particle );
+}
+
 //________________________________________________________________________
 HepMC::GenEvent* iGeant4::G4TransportTool::genEvent() const
 {
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h
index c5cc02f36bb9e3ebec81b9d2db69d9574e6bc879..28f161efc3dd716172441309659593f409f3bddb 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/src/TransportTool.h
@@ -1,25 +1,21 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// G4TransportTool.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
 #ifndef ISF_GEANT4TOOLS_TRANSPORTTOOL_H
 #define ISF_GEANT4TOOLS_TRANSPORTTOOL_H
 
-// Base class headers
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "ISF_Geant4Interfaces/ITransportTool.h"
-
 // STL headers
 #include <string>
+#include <unordered_map>
 
 // Gaudi headers
 #include "GaudiKernel/ToolHandle.h"
 #include "GaudiKernel/ServiceHandle.h"
 
+// DetectorDescription
+#include "AtlasDetDescr/AtlasRegion.h"
+
 // Athena headers
 #include "AthenaKernel/IAtRndmGenSvc.h"
 #include "G4AtlasInterfaces/IG4AtlasSvc.h"
@@ -30,6 +26,8 @@
 #include "G4AtlasInterfaces/IPhysicsListTool.h"
 
 // ISF includes
+#include "ISF_Interfaces/BaseSimulatorTool.h"
+#include "ISF_Interfaces/ISimulationSelector.h"
 #include "ISF_Interfaces/IInputConverter.h"
 #include "ISF_Geant4Tools/IG4RunManagerHelper.h"
 
@@ -56,8 +54,7 @@ namespace iGeant4
 
   class G4AtlasRunManager;
 
-  class G4TransportTool : public extends<AthAlgTool, ITransportTool>
-  {
+  class G4TransportTool : public ISF::BaseSimulatorTool {
 
   public:
     /** Constructor */
@@ -80,11 +77,21 @@ namespace iGeant4
     /// This is done (for now) because we get multiple tool instances in hive.
     void finalizeOnce();
 
-    /** Creates a new ParticleState from a given ParticleState, universal transport tool */
-    virtual StatusCode process(const ISF::ISFParticle& isp) override final;
+    virtual StatusCode simulate( const ISF::ISFParticle& isp, ISF::ISFParticleContainer& secondaries ) override;
+
+    virtual StatusCode simulateVector( const ISF::ConstISFParticleVector& particles, ISF::ISFParticleContainer& secondaries ) override;
+
+    virtual StatusCode setupEvent() override;
+
+    virtual StatusCode setupEventST() override;
 
-    /** Creates a new ParticleState from a given ParticleState, universal transport tool */
-    virtual StatusCode processVector(const std::vector<const ISF::ISFParticle*>& particles) override final;
+    virtual StatusCode releaseEvent() override;
+
+    virtual StatusCode releaseEventST() override;
+
+    virtual ISF::SimulationFlavor simFlavor() const override { return ISF::Geant4; };
+
+    virtual void push( ISF::ISFParticle *particle, const ISF::ISFParticle *parent ) override;
 
   private:
 
@@ -95,6 +102,19 @@ namespace iGeant4
 
     /// @name Configurable Properties
     /// @{
+
+    // timing checks
+    bool  m_doTiming{true};
+    //float m_runTime;
+    float m_accumulatedEventTime{0.};
+    float m_accumulatedEventTimeSq{0.};
+    unsigned int m_nrOfEntries{0};
+
+    G4Timer* m_runTimer{nullptr};
+    G4Timer* m_eventTimer{nullptr};
+
+    // store secondary particles that have been pushed back
+    std::unordered_map< ISF::ISFParticle const*, ISF::ISFParticleContainer > m_secondariesMap;
     std::string m_mcEventCollectionName{"TruthEvent"};
     /// Helper Tool to provide G4RunManager
     PublicToolHandle<ISF::IG4RunManagerHelper>  m_g4RunManagerHelper{this, "G4RunManagerHelper", "iGeant4::G4RunManagerHelper/G4RunManagerHelper", ""};
@@ -123,9 +143,9 @@ namespace iGeant4
     /// Physics List Tool
     PublicToolHandle<IPhysicsListTool> m_physListTool{this, "PhysicsListTool", "PhysicsListToolBase", ""};
     /// Sensitive Detector Master Tool
-    ToolHandle<ISensitiveDetectorMasterTool> m_senDetTool{this, "SenDetMasterTool", "SensitiveDetectorMasterTool", ""};
+    PublicToolHandle<ISensitiveDetectorMasterTool> m_senDetTool{this, "SenDetMasterTool", "SensitiveDetectorMasterTool", ""};
     /// Fast Simulation Master Tool
-    ToolHandle<IFastSimulationMasterTool> m_fastSimTool{this, "FastSimMasterTool", "FastSimulationMasterTool", ""};
+    PublicToolHandle<IFastSimulationMasterTool> m_fastSimTool{this, "FastSimMasterTool", "FastSimulationMasterTool", ""};
     /// @}
 
   };
diff --git a/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfig.py b/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfig.py
index 30643742bab28cb107ae81905954c23dc9ca8d51..fe3e9f4fd199294020c64ece2f92375a25186a26 100644
--- a/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfig.py
+++ b/Simulation/ISF/ISF_SimulationSelectors/python/ISF_SimulationSelectorsConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 """
 ISF_SimulationSelectors configurations for ISF
 Elmar Ritsch, 04/02/2013
@@ -8,7 +8,7 @@ from AthenaCommon import CfgMgr
 
 from AthenaCommon.Constants import *  # FATAL,ERROR etc.
 from AthenaCommon.SystemOfUnits import *
-
+from ISF_SimulationSelectors import SimulationFlavor
 ### DefaultSimSelector configurations
 
 def getDefaultSimSelector(name="ISF_DefaultSimSelector", **kwargs):
@@ -16,15 +16,18 @@ def getDefaultSimSelector(name="ISF_DefaultSimSelector", **kwargs):
 
 def getDefaultParticleKillerSelector(name="ISF_DefaultParticleKillerSelector", **kwargs):
     kwargs.setdefault("Simulator"   , 'ISF_ParticleKillerSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.ParticleKiller)
     return getDefaultSimSelector(name, **kwargs )
 
 def getPileupParticleKillerSelector(name="ISF_PileupParticleKillerSelector", **kwargs):
-    kwargs.setdefault("PileupBCID"   , [1] ) 
+    kwargs.setdefault("PileupBCID"   , [1] )
     kwargs.setdefault("Simulator"   , 'ISF_ParticleKillerSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.ParticleKiller)
     return CfgMgr.ISF__KinematicPileupSimSelector(name, **kwargs)
 
 def getDefaultGeant4Selector(name="ISF_DefaultGeant4Selector", **kwargs):
     kwargs.setdefault("Simulator"   , 'ISF_Geant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     return getDefaultSimSelector(name, **kwargs )
 
 def getDefaultAFIIGeant4Selector(name="ISF_DefaultAFIIGeant4Selector", **kwargs):
@@ -37,42 +40,52 @@ def getDefaultLongLivedGeant4Selector(name="ISF_DefaultLongLivedGeant4Selector",
 
 def getFullGeant4Selector(name="ISF_FullGeant4Selector", **kwargs):
     kwargs.setdefault("Simulator"   , 'ISF_FullGeant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     return getDefaultSimSelector(name, **kwargs )
 
 def getPassBackGeant4Selector(name="ISF_PassBackGeant4Selector", **kwargs):
     kwargs.setdefault("Simulator"   , 'ISF_PassBackGeant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     return getDefaultSimSelector(name, **kwargs )
 
 def getDefaultFastCaloSimSelector(name="ISF_DefaultFastCaloSimSelector", **kwargs):
     kwargs.setdefault("Simulator"   , 'ISF_FastCaloSimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSim)
     return getDefaultSimSelector(name, **kwargs )
 
 def getDefaultLegacyAFIIFastCaloSimSelector(name="ISF_DefaultLegacyAFIIFastCaloSimSelector", **kwargs):
     kwargs.setdefault("Simulator"   , 'ISF_LegacyAFIIFastCaloSimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSim)
     return getDefaultSimSelector(name, **kwargs )
 
 def getDefaultFastCaloSimV2Selector(name="ISF_DefaultFastCaloSimV2Selector", **kwargs):
     kwargs.setdefault("Simulator"   , 'ISF_FastCaloSimSvcV2')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSimV2)
     return getDefaultSimSelector(name, **kwargs )
 
 def getFastHitConvAlgFastCaloSimSelector(name="ISF_FastHitConvAlgFastCaloSimSelector", **kwargs):
     kwargs.setdefault("Simulator"   , 'ISF_FastHitConvAlgFastCaloSimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSim)
     return getDefaultSimSelector(name, **kwargs )
 
 def getFastHitConvAlgLegacyAFIIFastCaloSimSelector(name="ISF_FastHitConvAlgLegacyAFIIFastCaloSimSelector", **kwargs):
     kwargs.setdefault("Simulator"   , 'ISF_FastHitConvAlgLegacyAFIIFastCaloSimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSim)
     return getDefaultSimSelector(name, **kwargs )
 
 def getDefaultFatrasSelector(name="ISF_DefaultFatrasSelector", **kwargs):
     kwargs.setdefault("Simulator"   , 'ISF_FatrasSimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Fatras)
     return getDefaultSimSelector(name, **kwargs )
 
 def getDefaultFatrasNewExtrapolationSelector(name="ISF_DefaultFatrasNewExtrapolationSelector", **kwargs):
     kwargs.setdefault("Simulator"   , 'ISF_FatrasNewExtrapolationSimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Fatras)
     return getDefaultSimSelector(name, **kwargs )
 
 def getDefaultParametricSimulationSelector(name="ISF_DefaultParametricSimulationSelector", **kwargs):
     kwargs.setdefault("Simulator"   , 'ISF_ParametricSimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Parametric)
     return getDefaultSimSelector(name, **kwargs )
 
 ### PileUpSimSelector Configurations
@@ -83,23 +96,27 @@ def getPileupSimSelector(name="ISF_PileupSimSelector", **kwargs):
 def getFatrasPileupSelector(name="ISF_FatrasPileupSelector", **kwargs):
     kwargs.setdefault("PileupBCID"   , [1] )
     kwargs.setdefault("Simulator"   , 'ISF_FatrasPileupSimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.FatrasPileup)
     return getPileupSimSelector(name, **kwargs )
 
 def getFatrasPileupSelector_noHits(name="ISF_FatrasPileupSelector_noHits", **kwargs):
     kwargs.setdefault("PileupBCID"   , [2] )
     kwargs.setdefault("Simulator"   , 'ISF_FatrasPileupSimSvc_noHits')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.FatrasPileup)
     return getPileupSimSelector(name, **kwargs )
 
 def getFastCaloSimPileupSelector(name="ISF_FastCaloSimPileupSelector", **kwargs):
     from FastChainPileup.FastChain_jobProperties import FastChain_Flags
     kwargs.setdefault("PileupBCID"  , FastChain_Flags.FastChainBCID() )
     kwargs.setdefault("Simulator"   , 'ISF_FastCaloSimPileupSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSimPileup)
     return getPileupSimSelector(name, **kwargs )
 
 def getFastCaloSimPileupOTSelector(name="ISF_FastCaloSimPileupOTSelector", **kwargs):
     from FastChainPileup.FastChain_jobProperties import FastChain_Flags
     kwargs.setdefault("PileupBCID"   , FastChain_Flags.FastChainBCID() )
     kwargs.setdefault("Simulator"   , 'ISF_FastCaloSimPileupOTSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSimPileup)
     return getPileupSimSelector(name, **kwargs )
 
 ### KinematicSimSelector Configurations
@@ -107,11 +124,13 @@ def getFastCaloSimPileupOTSelector(name="ISF_FastCaloSimPileupOTSelector", **kwa
 def getElectronGeant4Selector(name="ISF_ElectronGeant4Selector", **kwargs):
     kwargs.setdefault('ParticlePDG'     , 11)
     kwargs.setdefault('Simulator'       , 'ISF_Geant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     return CfgMgr.ISF__KinematicSimSelector(name, **kwargs)
 
 def getNeutralGeant4Selector(name="ISF_NeutralGeant4Selector", **kwargs):
     kwargs.setdefault('Charge'      , 0)
     kwargs.setdefault('Simulator'   , 'ISF_Geant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     return CfgMgr.ISF__KinematicSimSelector(name, **kwargs)
 
 def getMuonSelector(name="ISF_MuonSelector", **kwargs):
@@ -120,26 +139,31 @@ def getMuonSelector(name="ISF_MuonSelector", **kwargs):
 
 def getMuonGeant4Selector(name="ISF_MuonGeant4Selector", **kwargs):
     kwargs.setdefault('Simulator'       , 'ISF_Geant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     return getMuonSelector(name, **kwargs)
 
 def getMuonAFIIGeant4Selector(name="ISF_MuonAFIIGeant4Selector", **kwargs):
     kwargs.setdefault('Simulator'       , 'ISF_AFIIGeant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     return getMuonGeant4Selector(name, **kwargs)
 
 def getMuonFatrasSelector(name="ISF_MuonFatrasSelector", **kwargs):
     kwargs.setdefault('Simulator'       , 'ISF_FatrasSimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Fatras)
     return getMuonSelector(name, **kwargs)
 
 def getMuonFatrasPileupSelector(name="ISF_MuonFatrasPileupSelector", **kwargs):
     kwargs.setdefault('Simulator'       , 'ISF_FatrasPileupSimSvc')
-    kwargs.setdefault("PileupBCID"      , [1])    
+    kwargs.setdefault("PileupBCID"      , [1])
     kwargs.setdefault('ParticlePDG'     , 13)
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Fatras)
     return getPileupSimSelector(name, **kwargs)
 
 def getWithinEta5FastCaloSimSelector(name="ISF_WithinEta5FastCaloSimSelector", **kwargs):
     kwargs.setdefault('Simulator'       , 'ISF_FastCaloSimSvc')
     kwargs.setdefault('MinPosEta'       , -5.0 )
     kwargs.setdefault('MaxPosEta'       ,  5.0 )
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.FastCaloSim)
     return CfgMgr.ISF__KinematicSimSelector(name, **kwargs)
 
 def getEtaGreater5ParticleKillerSimSelector(name="ISF_EtaGreater5ParticleKillerSimSelector", **kwargs):
@@ -147,13 +171,15 @@ def getEtaGreater5ParticleKillerSimSelector(name="ISF_EtaGreater5ParticleKillerS
     kwargs.setdefault('MinPosEta'       , -5.0 )
     kwargs.setdefault('MaxPosEta'       ,  5.0 )
     kwargs.setdefault('InvertCuts'      , True )
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.ParticleKiller)
     return CfgMgr.ISF__KinematicSimSelector(name, **kwargs)
-  
+
 def getEtaGreater5PileupParticleKillerSimSelector(name="ISF_EtaGreater5PileupParticleKillerSimSelector", **kwargs):
     kwargs.setdefault('Simulator'       , 'ISF_ParticleKillerSvc')
     kwargs.setdefault('MinPosEta'       , -5.0 )
     kwargs.setdefault('MaxPosEta'       ,  5.0 )
     kwargs.setdefault('InvertCuts'      , True )
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.ParticleKiller)
     return CfgMgr.ISF__KinematicPileupSimSelector(name, **kwargs)
 
 ### ConeSimSelector Configurations
@@ -167,10 +193,12 @@ def getPhotonConeSelector(name="ISF_PhotonConeSelector", **kwargs):
 
 def getPhotonConeFatrasSelector(name="ISF_PhotonConeFatrasSelector", **kwargs):
     kwargs.setdefault('Simulator', 'ISF_FatrasSimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Fatras)
     return getPhotonConeSelector(name, **kwargs)
 
 def getPhotonConeGeant4Selector(name="ISF_PhotonConeGeant4Selector", **kwargs):
     kwargs.setdefault('Simulator', 'ISF_Geant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     return getPhotonConeSelector(name, **kwargs)
 
 def getHiggsLeptonsConeSimSelector(name="ISF_HiggsLeptonsConeSimSelector", **kwargs):
@@ -186,6 +214,7 @@ def getHiggsLeptonsConeSimSelector(name="ISF_HiggsLeptonsConeSimSelector", **kwa
 
 def getHiggsLeptonsConeGeant4Selector(name="ISF_HiggsLeptonsConeGeant4Selector", **kwargs):
     kwargs.setdefault('Simulator'       , 'ISF_Geant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     return getHiggsLeptonsConeSimSelector(name, **kwargs)
 
 def getElectronsMuonsConeSimSelector(name="ISF_ElectronsMuonsConeSimSelector", **kwargs):
@@ -199,6 +228,7 @@ def getHiggsLeptonsConeGeant4CaloSelector(name="ISF_HiggsLeptonsConeGeant4CaloSe
 
 def getWLeptonsConeGeant4Selector(name="ISF_WLeptonsConeGeant4Selector", **kwargs):
     kwargs.setdefault('Simulator'                   , 'ISF_Geant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     kwargs.setdefault('ConeCreatorMinPt'            , 0.          )
     kwargs.setdefault('ConeSize'                    , 0.4         )
     kwargs.setdefault('CheckConeCreatorAncestors'   , True        )
@@ -212,6 +242,7 @@ def getZLeptonsDirectionConeGeant4Selector(name="ISF_ZLeptonsDirectionConeGeant4
     # this selector picks all particles with a mometum direction
     # within DeltaR<ConeSize relative to the Z decay leopton directions
     kwargs.setdefault('Simulator'                   , 'ISF_Geant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     kwargs.setdefault('ConeCreatorMinPt'            , 0.          )
     kwargs.setdefault('ConeSize'                    , 0.4         )
     kwargs.setdefault('CheckConeCreatorAncestors'   , True        )
@@ -229,6 +260,7 @@ def getZLeptonsPositionConeGeant4Selector(name="ISF_ZLeptonsPositionConeGeant4Se
 
 def getJPsiLeptonsConeGeant4Selector(name="ISF_JPsiLeptonsConeGeant4Selector", **kwargs):
     kwargs.setdefault('Simulator'                   , 'ISF_Geant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     kwargs.setdefault('ConeCreatorMinPt'            , 0.          )
     kwargs.setdefault('ConeSize'                    , 0.4         )
     kwargs.setdefault('CheckConeCreatorAncestors'   , True        )
@@ -251,10 +283,12 @@ def getBHadronProductsSimSelector(name="ISF_BHadronProductsSimSelector", **kwarg
 
 def getBHadronProductsGeant4Selector(name="ISF_BHadronProductsGeant4Selector", **kwargs):
     kwargs.setdefault('Simulator'       , 'ISF_Geant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     return getBHadronProductsSimSelector(name, **kwargs)
 
 def getBHadronProductsFatrasSelector(name="ISF_BHadronProductsFatrasSelector", **kwargs):
     kwargs.setdefault('Simulator'       , 'ISF_FatrasSimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Fatras)
     return getBHadronProductsSimSelector(name, **kwargs)
 
 def getTauProductsSimSelector(name="ISF_TauProductsSimSelector", **kwargs):
@@ -266,6 +300,7 @@ def getTauProductsSimSelector(name="ISF_TauProductsSimSelector", **kwargs):
 
 def getTauProductsGeant4Selector(name="ISF_TauProductsGeant4Selector", **kwargs):
     kwargs.setdefault('Simulator'       , 'ISF_Geant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     return getTauProductsSimSelector(name, **kwargs)
 
 def getZProductsSimSelector(name="ISF_ZProductsSimSelector", **kwargs):
@@ -277,6 +312,7 @@ def getZProductsSimSelector(name="ISF_ZProductsSimSelector", **kwargs):
 
 def getZProductsGeant4Selector(name="ISF_ZProductsGeant4Selector", **kwargs):
     kwargs.setdefault('Simulator'       , 'ISF_Geant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     return getZProductsSimSelector(name, **kwargs)
 
 ### HistorySimSelector Configurations
@@ -285,10 +321,12 @@ def getSubDetStickyGeant4SimSelector(name="ISF_SubDetStickyGeant4SimSelector", *
     kwargs.setdefault('PrevSimSvc'             , 'ISF_Geant4SimSvc')
     kwargs.setdefault('RequiresUnchangedGeoID' , True                           )
     kwargs.setdefault('Simulator'              , 'ISF_Geant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     return CfgMgr.ISF__HistorySimSelector(name, **kwargs)
 
 def getGlobalStickyGeant4SimSelector(name="ISF_GlobalStickyGeant4SimSelector", **kwargs):
     kwargs.setdefault('PrevSimSvc'             , 'ISF_Geant4SimSvc')
     kwargs.setdefault('RequiresUnchangedGeoID' , False                          )
     kwargs.setdefault('Simulator'              , 'ISF_Geant4SimSvc')
+    kwargs.setdefault('SimulationFlavor', SimulationFlavor.Geant4)
     return CfgMgr.ISF__HistorySimSelector(name, **kwargs)
diff --git a/Simulation/ISF/ISF_SimulationSelectors/python/SimulationFlavor.py b/Simulation/ISF/ISF_SimulationSelectors/python/SimulationFlavor.py
new file mode 100644
index 0000000000000000000000000000000000000000..e2e3b63bab497909d4a4a7a7554b0ff49c54bbf3
--- /dev/null
+++ b/Simulation/ISF/ISF_SimulationSelectors/python/SimulationFlavor.py
@@ -0,0 +1,13 @@
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+
+UndefinedSim = 0
+ParticleKiller = 1
+Fatras = 2
+Geant4 = 3
+FastCaloSim = 4
+FastCaloSimV2 = 5
+Parametric = 6
+FatrasPileup = 7
+FastCaloSimPileup = 8
+NFlavors = 9
+
diff --git a/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.cxx b/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.cxx
index c3716c20644c4ab853ceab66b97390e0aa5aae8b..27335317eeb4b0ac50c63ebb31cb6a83e2095781 100644
--- a/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.cxx
+++ b/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "BaseSimulationSelector.h"
@@ -13,14 +13,32 @@ ISF::BaseSimulationSelector::BaseSimulationSelector(const std::string& type, con
   base_class(type, name, parent),
   m_simulator("DefaultSimulator", name),
   m_isDynamic(false),
-  m_invertCuts(false),
-  m_simflavor(ISF::UndefinedSim)
+  m_invertCuts(false)
 {
   declareProperty("Simulator",      m_simulator  );
   declareProperty("IsDynamic",      m_isDynamic  );
   declareProperty("InvertCuts",     m_invertCuts );
+  declareProperty("SimulationFlavor", m_simFlavorProp);
+  m_simFlavorProp.verifier().setLower(ISF::UndefinedSim+1);
+  m_simFlavorProp.verifier().setUpper(ISF::NFlavors-1);
+  m_simFlavorProp.declareUpdateHandler(&ISF::BaseSimulationSelector::SimulationFlavorHandler, this);
 }
 
+void ISF::BaseSimulationSelector::SimulationFlavorHandler(Property&)
+{
+  // FIXME would probably be better to have this in SimulationFlavor.h
+  switch(m_simFlavorProp.value())
+    {
+    case 1: m_simflavor = ISF::ParticleKiller; break;
+    case 2: m_simflavor = ISF::Fatras; break;
+    case 3: m_simflavor = ISF::Geant4; break;
+    case 4: m_simflavor = ISF::FastCaloSim; break;
+    case 5: m_simflavor = ISF::FastCaloSimV2; break;
+    case 6: m_simflavor = ISF::Parametric; break;
+    case 7: m_simflavor = ISF::FatrasPileup; break;
+    case 8: m_simflavor = ISF::FastCaloSimPileup; break;
+    }
+}
 
 /** Gaudi sysInitialize() method */
 StatusCode ISF::BaseSimulationSelector::sysInitialize()
diff --git a/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.h b/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.h
index d951c53db939c059f76be4649fd8cdae15c1524a..d22225c9092126bff13a91279aa7ba6df3d747d4 100644
--- a/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.h
+++ b/Simulation/ISF/ISF_SimulationSelectors/src/BaseSimulationSelector.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef ISF_SIMULATIONSELECTORS_BASESIMULATIONSELECTOR_H
@@ -71,7 +71,9 @@ class BaseSimulationSelector : public extends<AthAlgTool, ISimulationSelector> {
     ServiceHandle<ISimulationSvc>       m_simulator;  //!< simulation service assigned to a single advisor
     bool                                m_isDynamic;  //!< this selector is either dynamic or static
     bool                                m_invertCuts; //!< invert the result given by passesCuts(..) method
-    ISF::SimulationFlavor               m_simflavor;  //!< simulation flavor
+    Gaudi::CheckedProperty<unsigned short> m_simFlavorProp{0}; //!< the simulation flavour that this selector will select
+    void SimulationFlavorHandler(Property&);
+    ISF::SimulationFlavor               m_simflavor{ISF::UndefinedSim};  //!< simulation flavor
 };
 
 
diff --git a/TileCalorimeter/TileEvent/TileEvent/TileDQstatus.h b/TileCalorimeter/TileEvent/TileEvent/TileDQstatus.h
index 8400b18a6d3692550299aa05310921c05e7a8099..bb086fbaa24ea600f4310ff3b793faae82f9a203 100644
--- a/TileCalorimeter/TileEvent/TileEvent/TileDQstatus.h
+++ b/TileCalorimeter/TileEvent/TileEvent/TileDQstatus.h
@@ -20,7 +20,7 @@
 
 
 class TileBeamInfoProvider;
-class TileDQstatusAlg;
+class TileDQstatusTool;
 class TileRawChannelCollection;
 class TileDigitsContainer;
 class MsgStream;
@@ -48,7 +48,7 @@ class TileDQstatus
 {
   //FIXME: Remove
   friend class TileBeamInfoProvider;
-  friend class TileDQstatusAlg;
+  friend class TileDQstatusTool;
 
 public:
 
@@ -159,6 +159,8 @@ public:
   int            trigType()  const { return m_trigType; }
   void setTrigType (int trigType);
 
+  uint32_t RODBCID() const   {return m_BCID;}
+
 
 protected:
 
diff --git a/TileCalorimeter/TileMonitoring/share/TileMonTopoCluster_jobOptions.py b/TileCalorimeter/TileMonitoring/share/TileMonTopoCluster_jobOptions.py
index 8a891977410417cca7f4509ffbd5d0ad8da65a2e..7c62296a5894645b4106285db0566a5a9557660e 100644
--- a/TileCalorimeter/TileMonitoring/share/TileMonTopoCluster_jobOptions.py
+++ b/TileCalorimeter/TileMonitoring/share/TileMonTopoCluster_jobOptions.py
@@ -22,7 +22,7 @@ from AthenaCommon.GlobalFlags import globalflags
 
 include( "CaloDetMgrDetDescrCnv/CaloDetMgrDetDescrCnv_joboptions.py")
 include( "CaloIdCnv/CaloIdCnv_joboptions.py" )
-#include( "LArDetDescr/LArDetDescr_joboptions.py" )
+include( "LArDetDescr/LArDetDescr_joboptions.py" )
 #include("LArConditionsCommon/LArConditionsCommon_comm_jobOptions.py")
 
 
diff --git a/TileCalorimeter/TileRecUtils/CMakeLists.txt b/TileCalorimeter/TileRecUtils/CMakeLists.txt
index 46d7d2f5bfe82fa7653f556985f7cbced4626704..67d822afb76af4ee4cef1d79dc3048b0c692ebf0 100644
--- a/TileCalorimeter/TileRecUtils/CMakeLists.txt
+++ b/TileCalorimeter/TileRecUtils/CMakeLists.txt
@@ -73,3 +73,15 @@ atlas_add_test( TileRawChannelBuilder_test
   PROPERTIES TIMEOUT 600
   EXTRA_PATTERNS "LArDetectorToolNV|is still valid|no data retrieved|Database being retired|Reading file|Unable to locate catalog|Resolved path|DigitizationFlags|^Domain|created CondCont|no dictionary for class|^ +[+]|Reading LArPedestalMC|IOV callback|^DetectorStore|TileDetectorTool|Creating TileCondProxyFile|Cache alignment" )
 
+
+atlas_add_test( TileDQstatusAlg_test
+  SCRIPT test/TileDQstatusAlg_test.sh
+  PROPERTIES TIMEOUT 600
+  EXTRA_PATTERNS "LArDetectorToolNV|is still valid|no data retrieved|Database being retired|Reading file|Unable to locate catalog|Resolved path|DigitizationFlags|^Domain|created CondCont|no dictionary for class|^ +[+]|Reading LArPedestalMC|IOV callback|^DetectorStore|TileDetectorTool|Creating TileCondProxyFile|Cache alignment" )
+
+
+atlas_add_test( TileDQstatusTool_test
+  SCRIPT test/TileDQstatusTool_test.sh
+  PROPERTIES TIMEOUT 600
+  EXTRA_PATTERNS "LArDetectorToolNV|is still valid|no data retrieved|Database being retired|Reading file|Unable to locate catalog|Resolved path|DigitizationFlags|^Domain|created CondCont|no dictionary for class|^ +[+]|Reading LArPedestalMC|IOV callback|^DetectorStore|TileDetectorTool|Creating TileCondProxyFile|Cache alignment" )
+
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/ITileDQstatusTool.h b/TileCalorimeter/TileRecUtils/TileRecUtils/ITileDQstatusTool.h
new file mode 100644
index 0000000000000000000000000000000000000000..df85ae0b74aa820845dba7015c9234227680380d
--- /dev/null
+++ b/TileCalorimeter/TileRecUtils/TileRecUtils/ITileDQstatusTool.h
@@ -0,0 +1,56 @@
+// This file's extension implies that it's C, but it's really -*- C++ -*-.
+/*
+ * Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration.
+ */
+/**
+ * @file TileRecUtils/ITileDQstatusTool.h
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Nov, 2018
+ * @brief Interface for building TileDQstatus object.
+ */
+
+
+#ifndef TILERECUTILS_ITILEDQSTATUSTOOL_H
+#define TILERECUTILS_ITILEDQSTATUSTOOL_H
+
+
+#include "GaudiKernel/IAlgTool.h"
+#include "GaudiKernel/StatusCode.h"
+
+
+class TileRawChannelContainer;
+class TileDigitsContainer;
+class TileBeamElemContainer;
+class TileDQstatus;
+class EventContext;
+
+
+/***
+ * @brief Interface for building TileDQstatus object.
+ */
+class ITileDQstatusTool
+  : virtual public IAlgTool
+{
+public:
+  DeclareInterfaceID (ITileDQstatusTool, 1, 0);
+
+
+  /**
+   * @brief Make a new TileDQstatus object.
+   * @param ctx Event context.
+   * @param rawChannelContainer The TileRawChannelContainer (may be null).
+   * @param tileDigitsContainer The TileDigitsContainer (may be null).
+   * @param tileBeamElemContainer The TileBeamElemContainer (may be null).
+   * @param[out] dqstatus TileDQstatus object to fill.
+   */
+  virtual
+  StatusCode
+  makeStatus (const EventContext& ctx,
+              const TileRawChannelContainer* rawChannelContainer,
+              const TileDigitsContainer* tileDigitsContainer,
+              const TileBeamElemContainer* tileBeamElemContainer,
+              TileDQstatus& dqstatus) = 0;
+};
+
+
+#endif // not TILERECUTILS_ITILEDQSTATUSTOOL_H
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRecUtilsDict.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRecUtilsDict.h
index 09fe45882e2f06a60c7540bf96655779ee94396b..03f25f8874f976e88148bd585f88fbaa468bc5c2 100644
--- a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRecUtilsDict.h
+++ b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRecUtilsDict.h
@@ -16,6 +16,7 @@
 
 // Needed for tests.
 #include "TileRecUtils/TileBeamInfoProvider.h"
+#include "TileRecUtils/ITileDQstatusTool.h"
 #include "TileRecUtils/TileRawChannelBuilder.h"
 
 
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/selection.xml b/TileCalorimeter/TileRecUtils/TileRecUtils/selection.xml
index 4a430bef1975481ca998393c4cd03c18e3e3831f..e06ba32da190367bf57f73afb80402c97ebc027d 100644
--- a/TileCalorimeter/TileRecUtils/TileRecUtils/selection.xml
+++ b/TileCalorimeter/TileRecUtils/TileRecUtils/selection.xml
@@ -1,4 +1,6 @@
 <lcgdict>
   <class name="TileBeamInfoProvider"/>
+  <class name="ITileDQstatusTool"/>
   <class name="TileRawChannelBuilder"/>
 </lcgdict>
+
diff --git a/TileCalorimeter/TileRecUtils/python/TileDQstatusAlgDefault.py b/TileCalorimeter/TileRecUtils/python/TileDQstatusAlgDefault.py
new file mode 100644
index 0000000000000000000000000000000000000000..12e6b4b3c2978c3b705a32ae5a6ce9d9b5897588
--- /dev/null
+++ b/TileCalorimeter/TileRecUtils/python/TileDQstatusAlgDefault.py
@@ -0,0 +1,56 @@
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration.
+#
+# @file TileRecUtils/python/TileDQstatusAlgDefault.py
+# @author scott snyder <snyder@bnl.gov>
+# @date Nov, 2018
+# @brief Configure TileDQstatusAlg
+#
+
+from TileRecUtils.TileRecUtilsConf import TileDQstatusAlg
+
+
+def _updateProp (dq, name, val):
+    if dq.properties()[name] == dq.propertyNoValue or getattr (dq, name) == '':
+        setattr (dq, name, val)
+        return
+    if val == '':
+        return
+    oval = getattr (dq, name)
+    if oval == val: return
+    if oval.find ('ServiceHandle') >= 0 or oval.find ('ToolHandle') >= 0:
+        setattr (dq, name, val)
+        return
+    from AthenaCommon.Logging import logging
+    log = logging.getLogger ('TileDQstatusAlgDefault')
+    log.error ('Conflicting settings for %s.%s; old: %s; new: %s' %
+               (dq.name(), name, oval, val))
+    import traceback
+    traceback.print_stack()
+    assert 0
+
+
+def TileDQstatusAlgDefault (name = 'TileDQstatusAlg',
+                            TileRawChannelContainer = '',
+                            TileDigitsContainer = '',
+                            TileBeamElemContainer = '',
+                            TileDQstatus = 'TileDQstatus',
+                            **kw):
+    from AthenaCommon.AlgSequence import AlgSequence
+    topSequence = AlgSequence()
+    dq = getattr (topSequence, name, None)
+    if not dq:
+        dq = TileDQstatusAlg (name,
+                              TileRawChannelContainer = TileRawChannelContainer,
+                              TileDigitsContainer = TileDigitsContainer,
+                              TileBeamElemContainer = TileBeamElemContainer,
+                              TileDQstatus = TileDQstatus,
+                              **kw)
+        topSequence += dq
+    else:
+        _updateProp (dq, 'TileRawChannelContainer', TileRawChannelContainer)
+        _updateProp (dq, 'TileDigitsContainer',     TileDigitsContainer)
+        _updateProp (dq, 'TileBeamElemContainer',   TileBeamElemContainer)
+        _updateProp (dq, 'TileDQstatus',            TileDQstatus)
+        for (k, v) in kw.items():
+            _updateProp (dq, k, v)
+    return dq
diff --git a/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.py b/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..68a1ebd256f93a37a1a6b5092f29db95d052fa5c
--- /dev/null
+++ b/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.py
@@ -0,0 +1,369 @@
+#
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration.
+#
+# File: TileRecUtils/share/TileDQstatusAlg_test.py
+# Author: sss
+# Date: Sep, 2018
+# Brief: Test for TileDQstatusAlg.
+#
+
+from __future__ import print_function
+
+
+import ROOT
+ROOT.TH1F
+
+from AthenaCommon.DetFlags      import DetFlags
+DetFlags.detdescr.Tile_setOn()
+DetFlags.detdescr.LAr_setOn()
+
+RunNumber = 284500
+
+import sys
+import string
+import ROOT
+import math
+from AtlasGeoModel import SetGeometryVersion
+from AtlasGeoModel import GeoModelInit
+from AtlasGeoModel import SetupRecoGeometry
+include('TileConditions/TileConditions_jobOptions.py')
+
+from GeoModelSvc.GeoModelSvcConf import GeoModelSvc
+ServiceMgr += GeoModelSvc()
+theApp.CreateSvc += [ "GeoModelSvc"]
+from AtlasGeoModel import TileGM
+from AtlasGeoModel import LArGM   #LAr needed to get MBTS DD.
+
+from IOVDbSvc.IOVDbSvcConf import IOVDbSvc
+IOVDbSvc().GlobalTag = 'OFLCOND-RUN12-SDR-35'
+
+from AthenaCommon.AlgSequence import AlgSequence
+topSequence = AlgSequence()
+
+theApp.EvtMax=2
+
+
+from AthenaPython.PyAthenaComps import Alg, StatusCode
+
+
+############################################################################
+
+
+# TileFragHash::TYPE
+class TileFragHash:
+    Beam = 255
+    Default = 0
+    Digitizer = 0
+    OptFilterDsp = 1
+    OptFilterOffline = 2
+    OptFilterDspCompressed = 3
+    ManyAmps = 4
+    MF = 5
+    FitFilter = 6
+    FitFilterCool = 7
+    FlatFilter = 8
+
+
+BEAM_TDC_FRAG = 0x000
+BEAM_ADC_FRAG = 0x001
+MUON_ADC_FRAG = 0x002
+ADDR_ADC_FRAG = 0x003
+LASE_PTN_FRAG = 0x004
+LASE_ADC_FRAG = 0x005
+ADD_FADC_FRAG = 0x006
+ECAL_ADC_FRAG = 0x007
+DIGI_PAR_FRAG = 0x0ff
+
+
+hits_0 = [
+    # (sec, side, mod, tow, samp, pmt, adc), [adc, time, qual, ped]
+    [0, [
+        [(1, 1, 0, 1, 1, 0, 1), [ 0.2,  22.1,  2.4, 42.9]],
+        [(1, 1, 0, 1, 1, 1, 1), [-0.4,  75.0,  2.7, 31.4]],
+        [(1, 1, 0, 1, 0, 0, 1), [-0.9, -13.3,  1.5, 37.4]],
+        [(1, 1, 0, 2, 0, 1, 1), [41.8,   0.1,  2.5, 45.7]],
+        [(1, 1, 0, 2, 0, 0, 1), [30.6,  -0.4,  2.0, 33.1]],
+        [(1, 1, 0, 2, 1, 1, 1), [ 1.4,  12.9,  4.7, 43.1]],
+        [(1, 1, 0, 2, 1, 0, 1), [ 3.4,   3.5,  1.9, 54.2]],
+    ]],
+
+    [136, [
+        [(3, 1, 8, 13, 3, 0, 1),  [26.9, 4.8, 5.2, 45.4]],
+    ]],
+
+    [146, [
+        [(3, 1, 18, 13, 3, 0, 1), [ 4.4, -26.5, 23.9, 51.2]],
+        [(3, 1, 18, 15, 3, 0, 1), [-0.1, -75.0,  3.7, 51.0]],
+        [(3, 1, 18,  8, 2, 0, 1), [-0.1,  75.0,  4.2, 41.7]],
+        [(3, 1, 18,  8, 2, 1, 1), [ 3.5, -11.9,  2.6, 44.7]],
+        [(3, 1, 18,  9, 1, 0, 1), [ 0.8, -17.6,  1.8, 49.2]],
+        [(3, 1, 18,  9, 1, 1, 1), [ 0.1, -75.0,  3.4, 48.4]],
+        [(2, 1, 18, 11, 0, 0, 1), [ 8.7,   0.4,  2.7, 50.2]],
+        [(2, 1, 18, 11, 0, 1, 1), [ 6.3,   1.9,  1.6, 48.6]],
+        [(2, 1, 18, 10, 1, 0, 1), [53.3,   1.3,  3.8, 38.4]],
+        [(2, 1, 18, 10, 1, 1, 1), [64.1,   1.0,  3.5, 36.9]],
+        [(2, 1, 18, 12, 0, 0, 1), [-0.2, -75.0,  2.8, 38.1]],
+        [(2, 1, 18, 12, 0, 1, 1), [ 0.5, -32.7,  1.9, 40.3]],
+        [(3, 1, 18, 10, 3, 0, 1), [ 5.4,   7.7,  8.2, 57.0]],
+        [(3, 1, 18, 11, 3, 0, 1), [48.9,   0.4,  4.0, 32.3]],
+        [(2, 1, 18, 11, 1, 0, 1), [38.5,   0.5,  1.7, 46.8]],
+        [(2, 1, 18, 11, 1, 1, 1), [48.1,   0.3,  1.6, 46.3]],
+        [(2, 1, 18, 10, 2, 0, 1), [ 0.3,  75.0,  2.0, 34.9]],
+        [(2, 1, 18, 10, 2, 1, 1), [0.1,  -75.0,  3.7, 54.7]],
+    ]],
+
+    # Some MBTS cells.
+    [135, [ [(4,  1, 0, 1, 0, 0, 0), [ 59.1, 2.8, 6.9, 56.2]] ]],
+    [181, [ [(4,  1, 6, 1, 0, 0, 0), [ 56.4, 1.2, 2.9, 39.9]] ]],
+    [182, [ [(4,  1, 6, 0, 0, 0, 0), [ 44.9, 0.5, 1.4, 42.1]] ]],
+    [231, [ [(4, -1, 3, 0, 0, 0, 0), [107.9, 1.7, 7.8, 47.8]] ]],
+
+    # Some E4 cells.
+    [220, [ [(4, -1, 0, 2, 0, 0, 0), [  2.3,   3.2, 2.5, 44.4]] ]],
+    [223, [ [(4, -1, 1, 2, 0, 0, 0), [  3.1,  -5.3, 2.4, 44.4]] ]],
+    [225, [ [(4, -1, 2, 2, 0, 0, 0), [ -0.4,  27.6, 1.3, 32.5]] ]],
+    [228, [ [(4, -1, 3, 2, 0, 0, 0), [  0.2, -75.0, 2.4, 35.4]] ]],
+
+    # Some disconnected cells.
+    [253, [
+        [4706026383833300992, [ 0, 0, 0, 50000]],
+        [4706027483344928768, [ 0, 0, 0, 50000]] ], ],
+    [255, [
+        [4706157225717006336, [ 0, 0, 0, 80000]],
+        [4706158325228634112, [ 0, 0, 0, 80000]] ], ],
+]
+
+
+############################################################################
+
+
+# Record test data to SG.
+class RecordAlg (Alg):
+    def __init__ (self, name,
+                  rc_key, digits_key, be_key=''):
+        Alg.__init__ (self, name)
+        self.rc_key = rc_key
+        self.rc_hits = hits_0
+        self.rc_typ = TileFragHash.OptFilterOffline
+        #self.rc_typ = TileFragHash.OptFilterDsp
+        self.rc_baddq = {}
+        #self.rc_baddq = {146 : [2, 10]}
+
+        self.digits_key = digits_key
+        self.digits_incomplete = False
+        self.digits_isCalib = False
+
+        self.be_key = be_key
+        self.be_frag = LASE_PTN_FRAG
+        return
+
+
+    def initialize (self):
+        return StatusCode.Success
+
+
+    def execute (self):
+        if not self.record_raw_data (self.rc_key,
+                                     self.rc_hits,
+                                     self.rc_typ,
+                                     self.rc_baddq):
+            return StatusCode.Failure
+
+        if not self.record_digits (self.digits_key,
+                                   self.digits_incomplete,
+                                   self.digits_isCalib):
+            return StatusCode.Failure
+
+        if self.be_key != '':
+            if not self.record_beamelem (self.be_key, self.be_frag):
+                return StatusCode.Failure
+        return StatusCode.Success
+
+
+    def record_raw_data (self, key, hits, typ, baddq):
+        idHelper  = self.detStore['CaloCell_ID'].tile_idHelper()
+
+        unit = 0 # TileRawChannelUnit::ADCcounts
+        cont = ROOT.TileRawChannelContainer (False, typ, unit)
+        cont.set_bsflags (0x32002000)
+        hashFunc = cont.hashFunc()
+
+        for icoll, colldata in hits:
+            coll = ROOT.TileRawChannelCollection (hashFunc.identifier(icoll))
+
+            mask = 0
+            for chan in baddq.get (icoll, []):
+                mask |= (1<<(chan/3))
+            coll.setFragMemoryPar(mask)
+
+            for addr, data in colldata:
+                if type(addr) == type(()):
+                    adc_id = idHelper.adc_id (*addr)
+                    chan = ROOT.TileRawChannel (adc_id, *data)
+                else:
+                    hwid = ROOT.HWIdentifier (addr)
+                    chan = ROOT.TileRawChannel (hwid, *data)
+                coll.push_back (chan)
+
+            cont.addCollection (coll, ROOT.IdentifierHash(icoll))
+            ROOT.SetOwnership (coll, False)
+
+        return self.evtStore.record (cont, key, False)
+
+
+    def record_digits (self, key, incomplete, isCalib):
+        cont = ROOT.TileDigitsContainer()
+        hashFunc = cont.hashFunc()
+        hwidHelper = self.detStore['TileHWID']
+
+        emptyfrag = (3, 13) # ros, drawer
+        for frag in [(1, 3), emptyfrag]:
+            id = hwidHelper.frag (*frag)
+            coll = ROOT.TileDigitsCollection (id)
+
+            if frag == emptyfrag:
+                v = getattr(ROOT,'vector<unsigned>')()
+                v.resize(16)
+                v[3]  = 0xffffffff
+                v[9]  = 0xffffffff
+                v[12] = 0xffffffff
+                coll.setFragChipHeaderWords (v)
+
+
+            if frag == emptyfrag and incomplete:
+                ndig = 10
+            elif frag == emptyfrag and isCalib:
+                ndig = 96
+            else:
+                ndig = 48
+
+            digits = getattr(ROOT,'vector<float>')()
+            digits.resize (12);
+            for idig in range(ndig):
+                dig = ROOT.TileDigits(ROOT.HWIdentifier(), digits)
+                coll.push_back (dig)
+
+            cont.addCollection (coll, ROOT.IdentifierHash (hashFunc(id)))
+            ROOT.SetOwnership (coll, False)
+        return self.evtStore.record (cont, key, False)
+
+
+    def record_beamelem (self, key, frag):
+        cont = ROOT.TileBeamElemContainer()
+        hashFunc = cont.hashFunc()
+
+        coll = ROOT.TileBeamElemCollection (frag)
+        coll.setLvl1Type (123)
+
+        if frag == LASE_PTN_FRAG:
+            v = getattr(ROOT,'vector<unsigned>')()
+            v.resize(16)
+            v[0] = (23 << 8)
+            elem = ROOT.TileBeamElem (ROOT.Identifier(), v)
+            coll.push_back (elem)
+
+        elif frag == DIGI_PAR_FRAG:
+            coll.setRODBCID (11)
+            hwidHelper = self.detStore['TileHWID']
+
+            def id (cha):
+                ros = 1
+                drawer = 1
+                adc = 0
+                return hwidHelper.adc_id (ros, drawer, cha, adc)
+
+            for cha in range(15):
+                hwid = id(cha)
+                elem = ROOT.TileBeamElem (hwid, cha + 100)
+                coll.push_back (elem)
+
+            hwid = id(15)
+            v = getattr(ROOT,'vector<unsigned>')()
+            v.resize(10)
+            for i in range(10):
+                v[i] = 111 + i
+            v[1] = 2
+            v[2] = 0x08070605
+            elem = ROOT.TileBeamElem (hwid, v)
+            coll.push_back (elem)
+
+        elif frag == LASER_OBJ_FRAG:
+            coll.setRODBCID (11)
+            
+
+        cont.addCollection (coll, ROOT.IdentifierHash (frag))
+        ROOT.SetOwnership (coll, False)
+
+        return self.evtStore.record (cont, key, False)
+
+
+############################################################################
+
+
+# Check results.
+class CheckAlg (Alg):
+    def __init__ (self, name, dq_key):
+        Alg.__init__ (self, name)
+        self.dq_key = dq_key
+        return
+
+
+    def initialize (self):
+        return StatusCode.Success
+
+
+    def execute (self):
+        dq = self.evtStore[self.dq_key]
+
+        assert dq.isFilled() == True
+        assert dq.isBiGain() == False
+        assert dq.nonZeroCounter() == True
+        assert dq.incompleteDigits() == False
+        assert dq.calibMode() == 0
+        assert dq.trigType() == 0
+
+        self.check_empty (dq)
+        
+        #cispar
+        #isAdcDQgood
+        #isChanDQgood
+        #checkGlobalErr
+        #checkGlobalCRCErr
+        #checkROD_CRCErr
+        #checkFE_CRCErr
+        #checkBCIDErr
+        #checkBCIDErrDetail
+        #checkHeaderFormatErr
+        #checkHeaderParityErr
+        #checkSampleFormatErr
+        #checkSampleParityErr
+        #checkMemoryParityErr
+        #checkSingleStrobeErr
+        #checkDoubleStrobeErr
+        return StatusCode.Success
+
+
+    def check_empty (self, dq):
+        for part in range(5):
+            for drawer in range(64):
+                for dmu in range (16):
+                    is_empty = (part==3 and drawer==13 and
+                                dmu in [3, 9, 12])
+                    assert dq.checkEmptyEvent(part, drawer, dmu) == is_empty
+        return
+
+        
+############################################################################
+
+from TileRecUtils.TileRecUtilsConf import TileDQstatusAlg
+
+record1 = RecordAlg ('record1',
+                     'RC1', 'Dig1')
+topSequence += record1
+alg1 = TileDQstatusAlg ('alg1',
+                        TileRawChannelContainer = 'RC1',
+                        TileDigitsContainer = 'Dig1',
+                        TileDQstatus = 'DQ1')
+topSequence += alg1
+check1 = CheckAlg ('check1', 'DQ1')
+topSequence += check1
diff --git a/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.ref b/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.ref
new file mode 100644
index 0000000000000000000000000000000000000000..091dcc7ab31c66cad655feb2b8150be9fba0603e
--- /dev/null
+++ b/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.ref
@@ -0,0 +1,468 @@
+Mon Nov 19 18:16:20 CET 2018
+Preloading tcmalloc_minimal.so
+Py:Athena            INFO including file "AthenaCommon/Preparation.py"
+Py:Athena            INFO using release [WorkDir-22.0.1] [x86_64-slc6-gcc62-opt] [atlas-work3h/b5d888be63e] -- built on [2018-11-19T1802]
+Py:Athena            INFO including file "AthenaCommon/Atlas.UnixStandardJob.py"
+Py:Athena            INFO executing ROOT6Setup
+Py:Athena            INFO including file "AthenaCommon/Execution.py"
+Py:Athena            INFO including file "TileRecUtils/TileDQstatusAlg_test.py"
+[?1034hSetGeometryVersion.py obtained major release version 22
+Py:Athena            INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py"
+Py:ConfigurableDb    INFO Read module info for 5415 configurables from 8 genConfDb files
+Py:ConfigurableDb    INFO No duplicates have been found: that's good !
+EventInfoMgtInit: Got release version  Athena-22.0.1
+Py:IOVDbSvc.CondDB    INFO Setting up conditions DB access to instance OFLP200
+Py:Athena            INFO including file "TileConditions/TileConditions_jobOptions.py"
+Py:TileInfoConf.     INFO Adding TileCablingSvc to ServiceMgr
+Py:TileConditions_jobOptions.py    INFO Forcing RUN2 (2014-2017) cabling for run 284500 with geometry ATLAS-R2-2016-01-00-01
+Py:TileConditions_jobOptions.py    INFO Adjusting TileInfo for 7 samples
+Py:TileConditions_jobOptions.py    INFO setting up COOL for TileCal conditions data
+Py:TileInfoConf.     INFO Changing default TileBadChanTool configuration to COOL source
+Py:TileInfoConf.     INFO Changing default TileBadChanLegacyTool configuration to COOL source
+Py:TileInfoConf.     INFO Changing default TileCondToolEmscale configuration to COOL source
+Py:TileInfoConf.     INFO Changing default TileCondToolNoiseSample configuration to COOL source
+Py:TileInfoConf.     INFO Changing default TileCondToolTiming configuration to COOL source
+Py:TileConditions_jobOptions.py    INFO Adjusting TileInfo to return cell noise for Opt.Filter without iterations
+Py:Athena            INFO including file "AthenaCommon/runbatch.py"
+ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+ApplicationMgr    SUCCESS 
+====================================================================================================================================
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v30r4)
+                                          running on lxplus056.cern.ch on Mon Nov 19 18:17:38 2018
+====================================================================================================================================
+ApplicationMgr       INFO Successfully loaded modules : AthenaServices
+ApplicationMgr       INFO Application Manager Configured successfully
+ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+StatusCodeSvc        INFO initialize
+AthDictLoaderSvc     INFO in initialize...
+AthDictLoaderSvc     INFO acquired Dso-registry
+ClassIDSvc           INFO  getRegistryEntries: read 6946 CLIDRegistry entries for module ALL
+CoreDumpSvc          INFO install f-a-t-a-l handler... (flag = -1)
+CoreDumpSvc          INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) 
+MetaDataSvc          INFO Initializing MetaDataSvc - package version AthenaServices-00-00-00
+AthenaPoolCnvSvc     INFO Initializing AthenaPoolCnvSvc - package version AthenaPoolCnvSvc-00-00-00
+PoolSvc              INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.xml) [ok]
+PoolSvc              INFO Set connectionsvc retry/timeout/IDLE timeout to  'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled
+PoolSvc              INFO Frontier compression level set to 5
+DBReplicaSvc         INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://lcgft-atlas.gridpp.rl.ac.uk:3128/frontierATLAS)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy-wigner.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data
+DBReplicaSvc         INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/dbreplica.config
+DBReplicaSvc         INFO Total of 10 servers found for host lxplus056.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ]
+PoolSvc              INFO Successfully setup replica sorting algorithm
+PoolSvc              INFO Setting up APR FileCatalog and Streams
+PoolSvc           WARNING Unable to locate catalog for prfile:poolcond/PoolCat_oflcond.xml check your ATLAS_POOLCOND_PATH and DATAPATH variables
+PoolSvc           WARNING Unable to locate catalog for apcfile:poolcond/PoolCat_oflcond.xml check your ATLAS_POOLCOND_PATH and DATAPATH variables
+PoolSvc              INFO Resolved path (via ATLAS_POOLCOND_PATH) is /cvmfs/atlas-condb.cern.ch/repo/conditions/poolcond/PoolFileCatalog.xml
+PoolSvc              INFO POOL WriteCatalog is xmlcatalog_file:PoolFileCatalog.xml
+DbSession            INFO     Open     DbSession    
+Domain[ROOT_All]     INFO >   Access   DbDomain     READ      [ROOT_All] 
+IOVDbSvc             INFO Opened read transaction for POOL PersistencySvc
+IOVDbSvc             INFO Only 5 POOL conditions files will be open at once
+IOVDbSvc             INFO Cache alignment will be done in 3 slices
+IOVDbSvc             INFO Global tag: OFLCOND-RUN12-SDR-35 set from joboptions
+IOVDbSvc             INFO Read from meta data only for folder /TagInfo
+IOVDbSvc             INFO Initialised with 3 connections and 14 folders
+IOVDbSvc             INFO Service IOVDbSvc initialised successfully
+IOVDbSvc             INFO preLoadAddresses: Removing folder /TagInfo. It should only be in the file meta data and was not found.
+IOVDbSvc             INFO Opening COOL connection for COOLOFL_LAR/OFLP200
+IOVSvc               INFO No IOVSvcTool associated with store "StoreGateSvc"
+IOVSvcTool           INFO IOVRanges will be checked at every Event
+IOVDbSvc             INFO Opening COOL connection for COOLOFL_TILE/OFLP200
+IOVDbSvc             INFO Disconnecting from COOLOFL_LAR/OFLP200
+IOVDbSvc             INFO Disconnecting from COOLOFL_TILE/OFLP200
+IOVDbSvc             INFO Added taginfo remove for /LAR/Align
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/CALIB/CES
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/CALIB/CIS/FIT/LIN
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/CALIB/CIS/FIT/NLN
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/CALIB/EMS
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/CALIB/LAS/FIBER
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/CALIB/LAS/LIN
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/CALIB/LAS/NLN
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/NOISE/SAMPLE
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/STATUS/ADC
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/TIME/CHANNELOFFSET/PHY
+IOVDbSvc             INFO Added taginfo remove for /TILE/ONL01/STATUS/ADC
+IOVDbSvc             INFO Added taginfo remove for /LAR/LArCellPositionShift
+ClassIDSvc           INFO  getRegistryEntries: read 1917 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 17 CLIDRegistry entries for module ALL
+DetDescrCnvSvc       INFO  initializing 
+DetDescrCnvSvc       INFO Found DetectorStore service
+DetDescrCnvSvc       INFO  filling proxies for detector managers 
+DetDescrCnvSvc       INFO  filling address for CaloTTMgr with CLID 117659265 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CaloMgr with CLID 4548337 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CaloSuperCellMgr with CLID 241807251 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CaloIdManager with CLID 125856940 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArIdManager with CLID 79554919 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for IdDict with CLID 2411 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for AtlasID with CLID 164875623 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for PixelID with CLID 2516 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for SCT_ID with CLID 2517 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for TRT_ID with CLID 2518 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for SiliconID with CLID 129452393 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArEM_ID with CLID 163583365 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArEM_SuperCell_ID with CLID 99488227 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArHEC_ID with CLID 3870484 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArHEC_SuperCell_ID with CLID 254277678 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArFCAL_ID with CLID 45738051 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArFCAL_SuperCell_ID with CLID 12829437 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArMiniFCAL_ID with CLID 79264204 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArOnlineID with CLID 158698068 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for TTOnlineID with CLID 38321944 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArOnline_SuperCellID with CLID 115600394 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArHVLineID with CLID 27863673 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArElectrodeID with CLID 80757351 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for TileID with CLID 2901 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for Tile_SuperCell_ID with CLID 49557789 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for TileHWID with CLID 2902 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for TileTBID with CLID 2903 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for MDTIDHELPER with CLID 4170 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CSCIDHELPER with CLID 4171 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for RPCIDHELPER with CLID 4172 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for TGCIDHELPER with CLID 4173 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for STGCIDHELPER with CLID 4174 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for MMIDHELPER with CLID 4175 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CaloLVL1_ID with CLID 108133391 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CaloCell_ID with CLID 123500438 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CaloCell_SuperCell_ID with CLID 128365736 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CaloDM_ID with CLID 167756483 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for ZdcID with CLID 190591643 and storage type 68 to detector store 
+GeoModelSvc::RD...WARNING  Getting PixTBMatComponents with default tag
+GeoModelSvc::RD...WARNING  Getting PixTBMaterials with default tag
+GeoModelSvc::RD...WARNING  Getting InDetMatComponents with default tag
+GeoModelSvc::RD...WARNING  Getting InDetMaterials with default tag
+GeoModelSvc.LAr...   INFO Keys for LAr are ATLAS-R2-2016-01-00-01  ATLAS
+GeoModelSvc.LAr...   INFO Building LAr version LAr-Revised-17-01 while ATLAS version is ATLAS-R2-2016-01-00-01
+GeoModelSvc.LAr...   INFO LAr Geometry Options:
+GeoModelSvc.LAr...   INFO   Sagging           = false
+GeoModelSvc.LAr...   INFO   Barrel            = ON
+GeoModelSvc.LAr...   INFO   Endcap            = ON
+BarrelConstruction   INFO Getting primary numbers for ATLAS, ATLAS-R2-2016-01-00-01
+BarrelConstruction   INFO   Makes detailed absorber sandwich  ? 1 1
+BarrelConstruction   INFO   Use sagging in geometry  ? 0
+============== EMEC Construction ===============
+  multi-layered version of absorbers activated, mlabs == 1
+================================================
+EventPersistenc...   INFO Added successfully Conversion service:DetDescrCnvSvc
+ClassIDSvc           INFO  getRegistryEntries: read 2398 CLIDRegistry entries for module ALL
+CaloIDHelper_ID...   INFO in createObj: creating a TileTBID helper object in the detector store
+IdDictDetDescrCnv    INFO in initialize
+IdDictDetDescrCnv    INFO in createObj: creating a IdDictManager object in the detector store
+IdDictDetDescrCnv    INFO IdDictName:  IdDictParser/ATLAS_IDS.xml
+IdDictDetDescrCnv    INFO Reading InnerDetector    IdDict file InDetIdDictFiles/IdDictInnerDetector_IBL3D25-03.xml
+IdDictDetDescrCnv    INFO Reading LArCalorimeter   IdDict file IdDictParser/IdDictLArCalorimeter_DC3-05-Comm-01.xml
+IdDictDetDescrCnv    INFO Reading TileCalorimeter  IdDict file IdDictParser/IdDictTileCalorimeter.xml
+IdDictDetDescrCnv    INFO Reading Calorimeter      IdDict file IdDictParser/IdDictCalorimeter_L1Onl.xml
+IdDictDetDescrCnv    INFO Reading MuonSpectrometer IdDict file IdDictParser/IdDictMuonSpectrometer_R.03.xml
+IdDictDetDescrCnv    INFO Reading ForwardDetectors IdDict file IdDictParser/IdDictForwardDetectors_2010.xml
+IdDictDetDescrCnv    INFO Found id dicts:
+IdDictDetDescrCnv    INFO Using dictionary tag: null
+IdDictDetDescrCnv    INFO Dictionary ATLAS                version default              DetDescr tag (using default) file 
+IdDictDetDescrCnv    INFO Dictionary Calorimeter          version default              DetDescr tag CaloIdentifier-LVL1-02 file IdDictParser/IdDictCalorimeter_L1Onl.xml
+IdDictDetDescrCnv    INFO Dictionary ForwardDetectors     version default              DetDescr tag ForDetIdentifier-01       file IdDictParser/IdDictForwardDetectors_2010.xml
+IdDictDetDescrCnv    INFO Dictionary InnerDetector        version IBL-DBM              DetDescr tag InDetIdentifier-IBL3D25-02 file InDetIdDictFiles/IdDictInnerDetector_IBL3D25-03.xml
+IdDictDetDescrCnv    INFO Dictionary LArCalorimeter       version fullAtlas            DetDescr tag LArIdentifier-DC3-05-Comm file IdDictParser/IdDictLArCalorimeter_DC3-05-Comm-01.xml
+IdDictDetDescrCnv    INFO Dictionary LArElectrode         version fullAtlas            DetDescr tag (using default) file 
+IdDictDetDescrCnv    INFO Dictionary LArHighVoltage       version fullAtlas            DetDescr tag (using default) file 
+IdDictDetDescrCnv    INFO Dictionary MuonSpectrometer     version R.03                 DetDescr tag MuonIdentifier-08         file IdDictParser/IdDictMuonSpectrometer_R.03.xml
+IdDictDetDescrCnv    INFO Dictionary TileCalorimeter      version fullAtlasAndTestBeam DetDescr tag TileIdentifier-00         file IdDictParser/IdDictTileCalorimeter.xml
+TileTBID             INFO initialize_from_dictionary 
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+EndcapDMConstru...   INFO Start building EC electronics geometry
+============== EMEC Construction ===============
+  multi-layered version of absorbers activated, mlabs == 1
+================================================
+EndcapDMConstru...   INFO Start building EC electronics geometry
+GeoModelSvc          INFO GeoModelSvc.LArDetectorToolNV	 SZ= 22956Kb 	 Time = 0.73S
+GeoModelSvc.Til...   INFO  Entering TileDetectorTool::create()
+TileDddbManager      INFO m_tag = ATLAS-R2-2016-01-00-01
+TileDddbManager      INFO n_tiglob = 5
+TileDddbManager      INFO n_timod = 320
+TileDddbManager      INFO n_cuts = 9
+TileDddbManager      INFO n_saddle = 1
+TileDddbManager      INFO n_tilb = 21
+TileDddbManager      INFO n_tileSwitches = 1
+ClassIDSvc           INFO  getRegistryEntries: read 213 CLIDRegistry entries for module ALL
+CaloIDHelper_ID...   INFO in createObj: creating a TileID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+TileNeighbour        INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/TileNeighbour_reduced.txt
+TileHWIDDetDesc...   INFO in createObj: creating a TileHWID helper object in the detector store
+TileHWID             INFO initialize_from_dictionary 
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+ClassIDSvc           INFO  getRegistryEntries: read 55 CLIDRegistry entries for module ALL
+CaloIDHelper_ID...   INFO in createObj: creating a CaloCell_ID helper object in the detector store
+CaloIDHelper_ID...   INFO in createObj: creating a LArEM_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+CaloIDHelper_ID...   INFO in createObj: creating a LArHEC_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+CaloIDHelper_ID...   INFO in createObj: creating a LArFCAL_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/FCal2DNeighbors-April2011.txt
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/FCal3DNeighborsNext-April2011.txt
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/FCal3DNeighborsPrev-April2011.txt
+CaloIDHelper_ID...   INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+LArMiniFCAL_ID       INFO  initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID.
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+GeoModelSvc.Til...   INFO  U-shape parameter from database is: 1
+GeoModelSvc.Til...   INFO  Glue parameter from database is: 1
+GeoModelSvc.Til...   INFO  Cs Tube parameter from database is: 0
+GeoModelSvc.Til...   INFO  Entering TileAtlasFactory::create()
+GeoModelSvc.Til...   INFO  Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx
+GeoModelSvc.Til...   INFO  => New BFingerLengthPos 430.5
+GeoModelSvc.Til...   INFO  => New BFingerLengthNeg 420.5
+GeoModelSvc.Til...   INFO  Positioning barrel with translation 0
+GeoModelSvc.Til...   INFO  Positioning positive barrel finger with translation 3035.25
+GeoModelSvc.Til...   INFO  Positioning negative barrel finger with translation -3030.25
+GeoModelSvc.Til...   INFO  Positioning positive ext.barrel with translation 4854.75
+GeoModelSvc.Til...   INFO  Positioning positive ext.barrel finger with translation ztrans= 6338.5
+GeoModelSvc.Til...   INFO  Positioning positive ext.barrel saddle with translation ztrans= 6192.5
+GeoModelSvc.Til...   INFO  Positive ITC envelope parameters: PLUG1  Rmin= 3438.85 Rmax= 4250 dzITC1= 154.5
+GeoModelSvc.Til...   INFO                                    PLUG2  Rmin= 2981 Rmax= 3440 dzITC2= 47.425
+GeoModelSvc.Til...   INFO  Positioning positive ITC with translation 3405
+GeoModelSvc.Til...   INFO  Positioning positive Gap with translation 3552
+GeoModelSvc.Til...   INFO  Positioning positive Crack with translation 3536
+GeoModelSvc.Til...   INFO  Positioning negative ext.barrel with translation ztrans -4854.75
+GeoModelSvc.Til...   INFO  Positioning negative ext.barrel finger with translation ztrans= -6338.5
+GeoModelSvc.Til...   INFO  Positioning negative ext.barrel saddle with translation ztrans= -6192.5
+GeoModelSvc.Til...   INFO  Negative ITC envelope parameters: PLUG1  Rmin= 3438.85 Rmax= 4250 dzITC1= 154.5
+GeoModelSvc.Til...   INFO                                    PLUG2  Rmin= 2981 Rmax= 3440 dzITC2= 47.425
+GeoModelSvc.Til...   INFO  Positioning negative ITC with translation -3405
+GeoModelSvc.Til...   INFO  Positioning negative Gap with translation -3552
+GeoModelSvc.Til...   INFO  Positioning negative Crack with translation -3536
+GeoModelSvc.Til...   INFO  Global positioning of barrel with rotation (0,0,0)) and translation (0,0,0) CLHEP::cm
+GeoModelSvc.Til...   INFO  Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) CLHEP::cm
+GeoModelSvc.Til...   INFO  Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) CLHEP::cm
+TileDetDescrMan...   INFO Entering create_elements()
+GeoModelSvc          INFO GeoModelSvc.TileDetectorTool	 SZ= 4596Kb 	 Time = 0.24S
+ClassIDSvc           INFO  getRegistryEntries: read 65 CLIDRegistry entries for module ALL
+TileInfoLoader       INFO Initializing....TileInfoLoader
+TileInfoLoader       INFO New ATLAS geometry detected: ATLAS-R2-2016-01-00-01 (010001) version 10001
+TileInfoLoader       INFO Changing TTL1 calib from 4.1 to 6.9
+TileInfoLoader       INFO Changing TTL1 noise sigma from 2.5 to 2.8
+TileInfoLoader       INFO ATLAS IBL geometry - special sampling fractions for gap/crack scin are allowed
+TileInfoLoader       INFO Special C10 in EB module 39
+TileInfoLoader       INFO Special C10 in EB module 40
+TileInfoLoader       INFO Special C10 in EB module 41
+TileInfoLoader       INFO Special C10 in EB module 42
+TileInfoLoader       INFO Special C10 in EB module 55
+TileInfoLoader       INFO Special C10 in EB module 56
+TileInfoLoader       INFO Special C10 in EB module 57
+TileInfoLoader       INFO Special C10 in EB module 58
+TileInfoLoader       INFO Sampling fraction for normal cells 1/34
+TileInfoLoader       INFO Sampling fraction for special C10 cells 1/45
+TileInfoLoader       INFO Sampling fraction for E1 cells 1/125
+TileInfoLoader       INFO Sampling fraction for E2 cells 1/107
+TileInfoLoader       INFO Sampling fraction for E3 cells 1/97
+TileInfoLoader       INFO Sampling fraction for E4 cells 1/75
+TileInfoLoader       INFO Sampling fraction for E4' cells 1/75
+TileInfoLoader       INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/pulsehi_physics.dat
+TileInfoLoader       INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/pulselo_physics.dat
+TileInfoLoader       INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/pulse_adder_tower_physics.dat
+TileInfoLoader       INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/pulse_adder_muonRcv_physics.dat
+TileInfoLoader       INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/pulse_adder_muon_physics.dat
+CaloIDHelper_ID...   INFO in createObj: creating a CaloLVL1_ID helper object in the detector store
+CaloLVL1_ID          INFO initialize_from_dictionary
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+TileCablingSvc       INFO RUN2 ATLAS geometry flag detected for geometry: ATLAS-R2-2016-01-00-01
+TileCablingSvc       INFO Cabling for RUN2 (2014-2017) ATLAS geometry is set via jobOptions 
+TileCablingSvc       INFO Setting Cabling type to 4
+TileInfoLoader       INFO Placed TileInfo object in the detector store.
+ToolSvc.TileBad...   INFO Creating TileCondProxyCool(ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OnlBch) for folder: "/TILE/ONL01/STATUS/ADC"
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for TileCondProxyCool<TileCalibDrawerBch>[0x19267700]+7fae0477c710 bound to CondAttrListCollection[/TILE/ONL01/STATUS/ADC]
+ToolSvc.TileBad...   INFO Creating TileCondProxyCool(ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OflBch) for folder: "/TILE/OFL02/STATUS/ADC"
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for TileCondProxyCool<TileCalibDrawerBch>[0x19266100]+7fae0477c710 bound to CondAttrListCollection[/TILE/OFL02/STATUS/ADC]
+ToolSvc.TileBad...   INFO ProxyOnlBch and ProxyOflBch will be used for bad channel status
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for TileBadChanLegacyTool[0x190d9000]+7fae04709150 bound to /TILE/ONL01/STATUS/ADC
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for TileBadChanLegacyTool[0x190d9000]+7fae04709150 bound to /TILE/OFL02/STATUS/ADC
+AthenaEventLoopMgr   INFO Initializing AthenaEventLoopMgr - package version AthenaServices-00-00-00
+ClassIDSvc           INFO  getRegistryEntries: read 265 CLIDRegistry entries for module ALL
+CondInputLoader      INFO Initializing CondInputLoader...
+CondInputLoader      INFO Adding base classes:
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CES' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/LIN' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/NLN' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/EMS' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/FIBER' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/LIN' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/NLN' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/NOISE/SAMPLE' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/STATUS/ADC' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/TIME/CHANNELOFFSET/PHY' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/ONL01/STATUS/ADC' )   ->
+CondInputLoader      INFO Will create WriteCondHandle dependencies for the following DataObjects:
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CES' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/LIN' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/NLN' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/EMS' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/FIBER' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/LIN' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/NLN' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/NOISE/SAMPLE' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/STATUS/ADC' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/TIME/CHANNELOFFSET/PHY' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/ONL01/STATUS/ADC' ) 
+TileBadChannels...   INFO Creating TileCondProxyCool(TileBadChannelsCondAlg.TileCondProxyCool_OnlBch) for folder: "/TILE/ONL01/STATUS/ADC"
+TileBadChannels...   INFO Creating TileCondProxyCool(TileBadChannelsCondAlg.TileCondProxyCool_OflBch) for folder: "/TILE/OFL02/STATUS/ADC"
+TileBadChannels...   INFO ProxyOnlBch and ProxyOflBch will be used for bad channel status
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflCisLin) for folder: "/TILE/OFL02/CALIB/CIS/FIT/LIN"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflCisNln) for folder: "/TILE/OFL02/CALIB/CIS/FIT/NLN"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflLasLin) for folder: "/TILE/OFL02/CALIB/LAS/LIN"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflLasNln) for folder: "/TILE/OFL02/CALIB/LAS/NLN"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflLasFib) for folder: "/TILE/OFL02/CALIB/LAS/FIBER"
+TileEMScaleCondAlg   INFO ProxyOflLasFib is set up and can be used
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflCes) for folder: "/TILE/OFL02/CALIB/CES"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflEms) for folder: "/TILE/OFL02/CALIB/EMS"
+TileEMScaleCondAlg   INFO Undoing online calibration is not requested, since OnlCacheUnit= 'OnlCacheUnit':Invalid
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlCis) for folder: "/TILE/OFL02/CALIB/CIS/FIT/LIN"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlLas) for folder: "/TILE/OFL02/CALIB/LAS/LIN"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlCes) for folder: "/TILE/OFL02/CALIB/CES"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlEms) for folder: "/TILE/OFL02/CALIB/EMS"
+TileSampleNoise...   INFO Creating TileCondProxyCool(TileSampleNoiseCondAlg.TileCondProxyCool_NoiseSample) for folder: "/TILE/OFL02/NOISE/SAMPLE"
+TileTimingCondA...   INFO Creating TileCondProxyCool(TileTimingCondAlg.TileCondProxyCool_AdcOffset) for folder: "/TILE/OFL02/TIME/CHANNELOFFSET/PHY"
+ClassIDSvc           INFO  getRegistryEntries: read 4762 CLIDRegistry entries for module ALL
+PyComponentMgr       INFO Initializing PyComponentMgr...
+record1              INFO Initializing record1...
+check1               INFO Initializing check1...
+HistogramPersis...WARNING Histograms saving not required.
+ApplicationMgr       INFO Application Manager Initialized successfully
+ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/CES'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/LIN'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/NLN'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/EMS'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/LAS/FIBER'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/LAS/LIN'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/LAS/NLN'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/NOISE/SAMPLE'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/STATUS/ADC'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/TIME/CHANNELOFFSET/PHY'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/ONL01/STATUS/ADC'
+ApplicationMgr       INFO Application Manager Started successfully
+AthenaEventLoopMgr   INFO   ===>>>  start of run 1    <<<===
+EventPersistenc...   INFO Added successfully Conversion service:AthenaPoolCnvSvc
+EventPersistenc...   INFO Added successfully Conversion service:TagInfoMgr
+ClassIDSvc           INFO  getRegistryEntries: read 109 CLIDRegistry entries for module ALL
+IOVDbSvc             INFO Opening COOL connection for COOLOFL_LAR/OFLP200
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to LARAlign-IOVDEP-00 for folder /LAR/Align
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to LArCellPositionShift-ideal for folder /LAR/LArCellPositionShift
+IOVDbSvc             INFO Disconnecting from COOLOFL_LAR/OFLP200
+IOVDbSvc             INFO Opening COOL connection for COOLOFL_TILE/OFLP200
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibCes-SIM-06 for folder /TILE/OFL02/CALIB/CES
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibCisFitLin-COM-00 for folder /TILE/OFL02/CALIB/CIS/FIT/LIN
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibCisFitNln-COM-00 for folder /TILE/OFL02/CALIB/CIS/FIT/NLN
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibEms-COM-00 for folder /TILE/OFL02/CALIB/EMS
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibLasFiber-000-00 for folder /TILE/OFL02/CALIB/LAS/FIBER
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibLasLin-COM-00 for folder /TILE/OFL02/CALIB/LAS/LIN
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibLasNln-COM-00 for folder /TILE/OFL02/CALIB/LAS/NLN
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02NoiseSample-TwoGauss-19 for folder /TILE/OFL02/NOISE/SAMPLE
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02StatusAdc-IOVDEP-03 for folder /TILE/OFL02/STATUS/ADC
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02TimeChanneloffsetPhy-000-00 for folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY
+IOVDbSvc             INFO Disconnecting from COOLOFL_TILE/OFLP200
+DbSession            INFO     Open     DbSession    
+Domain[ROOT_All]     INFO >   Access   DbDomain     READ      [ROOT_All] 
+Domain[ROOT_All]     INFO ->  Access   DbDatabase   READ      [ROOT_All] EACFEBD4-9BD2-E211-848A-02163E006B20
+Domain[ROOT_All]     INFO                           /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000057.gen.COND/cond09_mc.000057.gen.COND._0001.pool.root
+RootDatabase.open    INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000057.gen.COND/cond09_mc.000057.gen.COND._0001.pool.root File version:52200
+ToolSvc.TileBad...   INFO ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OnlBch: callback has been triggered by: /TILE/ONL01/STATUS/ADC 
+ToolSvc.TileBad...   INFO ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OflBch: callback has been triggered by: /TILE/OFL02/STATUS/ADC 
+CaloMgrDetDescrCnv   INFO in createObj: creating a Calo Detector Manager object in the detector store
+CaloIdMgrDetDes...   INFO in createObj: creating a CaloDescrManager object in the detector store
+ClassIDSvc           INFO  getRegistryEntries: read 193 CLIDRegistry entries for module ALL
+CaloIDHelper_ID...   INFO in createObj: creating a CaloDM_ID helper object in the detector store
+CaloDM_ID            INFO initialize_from_dictionary
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+CaloIDHelper_ID...   INFO in createObj: creating a TTOnlineID helper object in the detector store
+TTOnlineID           INFO initialize_from_dictionary
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+CaloIDHelper_ID...   INFO in createObj: creating a CaloCell_SuperCell_ID helper object in the detector store
+CaloIDHelper_ID...   INFO in createObj: creating a LArEM_SuperCell_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+CaloIDHelper_ID...   INFO in createObj: creating a LArHEC_SuperCell_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+CaloIDHelper_ID...   INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt
+CaloIDHelper_ID...   INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+TileNeighbour        INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-15T2257/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-opt/share/TileSuperCellNeighbour.txt
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+CaloIdMgrDetDes...   INFO  Finished 
+CaloIdMgrDetDes...   INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv 
+Domain[ROOT_All]     INFO ->  Access   DbDatabase   READ      [ROOT_All] 8667C6F2-1559-DE11-A611-000423D9A21A
+Domain[ROOT_All]     INFO                           /cvmfs/atlas-condb.cern.ch/repo/conditions/cond08/cond08_mc.000003.gen.COND/cond08_mc.000003.gen.COND._0064.pool.root
+RootDatabase.open    INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond08/cond08_mc.000003.gen.COND/cond08_mc.000003.gen.COND._0064.pool.root File version:52200
+ToolSvc.TileBad...   INFO TileBadChanLegacyTool::recache() has been triggered by: '/TILE/OFL02/STATUS/ADC' '/TILE/ONL01/STATUS/ADC' 
+ToolSvc.TileBad...   INFO Updating TileBchStatus::isBad() definition from DB
+ToolSvc.TileBad...   INFO Updating TileBchStatus::isNoisy() definition from DB
+ToolSvc.TileBad...   INFO No TileBchStatus::isNoGainL1() definition found in DB, using defaults
+ToolSvc.TileBad...   INFO No TileBchStatus::isBadTiming() definition found in DB, using defaults
+ToolSvc.TileBad...   INFO TileBchStatus::isBad() is defined by: ADC masked (unspecified); ADC dead; Very large HF noise; No data; Wrong DSP configuration; Severe stuck bit; Severe data corruption; Channel masked (unspecified); No PMT connected; No HV; Wrong HV; 
+ToolSvc.TileBad...   INFO TileBchStatus::isNoisy() is defined by: Large HF noise; Correlated noise; Large LF noise; 
+ToolSvc.TileBad...   INFO TileBchStatus::isNoGainL1() is defined by: ADC dead; No PMT connected; No HV; Channel masked for LV1 (unspecified); LV1 channel no gain; LV1 channel noisy; Channel disabled for LV1; 
+ToolSvc.TileBad...   INFO TileBchStatus::isBadTiming() is defined by: Bad timing; Online bad timing; 
+ToolSvc.TileBad...   INFO No drawer trips probabilities found in DB
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #1, run #1 0 events processed so far  <<<===
+TileBadChannels...   INFO Updating TileBchStatus::isBad() definition from DB
+TileBadChannels...   INFO Updating TileBchStatus::isNoisy() definition from DB
+TileBadChannels...   INFO No TileBchStatus::isNoGainL1() definition found in DB, using defaults
+TileBadChannels...   INFO No TileBchStatus::isBadTiming() definition found in DB, using defaults
+TileBadChannels...   INFO TileBchStatus::isBad() is defined by: ADC masked (unspecified); ADC dead; Very large HF noise; No data; Wrong DSP configuration; Severe stuck bit; Severe data corruption; Channel masked (unspecified); No PMT connected; No HV; Wrong HV; 
+TileBadChannels...   INFO TileBchStatus::isNoisy() is defined by: Large HF noise; Correlated noise; Large LF noise; 
+TileBadChannels...   INFO TileBchStatus::isNoGainL1() is defined by: ADC dead; No PMT connected; No HV; Channel masked for LV1 (unspecified); LV1 channel no gain; LV1 channel noisy; Channel disabled for LV1; 
+TileBadChannels...   INFO TileBchStatus::isBadTiming() is defined by: Bad timing; Online bad timing; 
+TileBadChannels...   INFO No drawer trips probabilities found in DB
+ClassIDSvc           INFO  getRegistryEntries: read 650 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 196 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 3 CLIDRegistry entries for module ALL
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #1, run #1 1 events processed so far  <<<===
+/cvmfs/atlas-co...   INFO Database being retired...
+Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] EACFEBD4-9BD2-E211-848A-02163E006B20
+/cvmfs/atlas-co...   INFO Database being retired...
+Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] 8667C6F2-1559-DE11-A611-000423D9A21A
+Domain[ROOT_All]     INFO >   Deaccess DbDomain     READ      [ROOT_All] 
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #2, run #1 1 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #2, run #1 2 events processed so far  <<<===
+TileInfoLoader       INFO Handling EndRun incident
+TileInfoLoader       INFO Removed TileInfo object from detector store.
+Domain[ROOT_All]     INFO >   Deaccess DbDomain     READ      [ROOT_All] 
+ApplicationMgr       INFO Application Manager Stopped successfully
+IncidentProcAlg1     INFO Finalize
+CondInputLoader      INFO Finalizing CondInputLoader...
+record1              INFO Finalizing record1...
+check1               INFO Finalizing check1...
+IncidentProcAlg2     INFO Finalize
+PyComponentMgr       INFO Finalizing PyComponentMgr...
+IdDictDetDescrCnv    INFO in finalize
+IOVDbSvc             INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 ((     0.12 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 ((     0.06 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 ((     0.04 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 ((     0.04 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 ((     0.03 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 ((     0.04 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 ((     0.03 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 ((     0.04 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641476 ((     0.05 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/2 objs/chan/bytes 277/277/97884 ((     0.04 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 ((     0.04 ))s
+IOVDbSvc             INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/2 objs/chan/bytes 277/277/76 ((     0.00 ))s
+IOVDbSvc             INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 1/1 objs/chan/bytes 1/1/195 ((     0.04 ))s
+IOVDbSvc             INFO Total payload read from COOL: 844581 bytes in ((      0.56 ))s
+IOVDbSvc             INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: ((     0.00 ))s
+IOVDbSvc             INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: ((     0.16 ))s
+IOVDbSvc             INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: ((     0.40 ))s
+TileInfoLoader       INFO TileInfoLoader::finalize()
+AthDictLoaderSvc     INFO in finalize...
+ToolSvc              INFO Removing all tools created by ToolSvc
+*****Chrono*****     INFO ****************************************************************************************************
+*****Chrono*****     INFO  The Final CPU consumption ( Chrono ) Table (ordered)
+*****Chrono*****     INFO ****************************************************************************************************
+cObjR_ALL            INFO Time User   : Tot= 0.62  [s] Ave/Min/Max= 0.31(+-  0.3)/ 0.01/ 0.61  [s] #=  2
+cObj_ALL             INFO Time User   : Tot= 0.73  [s] Ave/Min/Max=0.0487(+-0.162)/    0/ 0.65  [s] #= 15
+ChronoStatSvc        INFO Time User   : Tot= 49.6  [s]                                             #=  1
+*****Chrono*****     INFO ****************************************************************************************************
+ChronoStatSvc.f...   INFO  Service finalized successfully 
+ApplicationMgr       INFO Application Manager Finalized successfully
+ApplicationMgr       INFO Application Manager Terminated successfully
+Py:Athena            INFO leaving with code 0: "successful run"
diff --git a/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.py b/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..4ad299625abf26fdaa8a899817497853efd22436
--- /dev/null
+++ b/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.py
@@ -0,0 +1,522 @@
+#
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration.
+#
+# File: TileRecUtils/share/TileDQstatusTool_test.py
+# Author: scott snyder
+# Date: Nov, 2018
+# Brief: Test for TileDQstatusTool.
+#
+
+from __future__ import print_function
+
+
+import ROOT
+ROOT.TH1F
+
+from AthenaCommon.DetFlags      import DetFlags
+DetFlags.detdescr.Tile_setOn()
+DetFlags.detdescr.LAr_setOn()
+
+RunNumber = 284500
+
+import sys
+import string
+import ROOT
+import math
+from AtlasGeoModel import SetGeometryVersion
+from AtlasGeoModel import GeoModelInit
+from AtlasGeoModel import SetupRecoGeometry
+include('TileConditions/TileConditions_jobOptions.py')
+
+from GeoModelSvc.GeoModelSvcConf import GeoModelSvc
+ServiceMgr += GeoModelSvc()
+theApp.CreateSvc += [ "GeoModelSvc"]
+from AtlasGeoModel import TileGM
+from AtlasGeoModel import LArGM   #LAr needed to get MBTS DD.
+
+from IOVDbSvc.IOVDbSvcConf import IOVDbSvc
+IOVDbSvc().GlobalTag = 'OFLCOND-RUN12-SDR-35'
+
+from AthenaCommon.AlgSequence import AlgSequence
+topSequence = AlgSequence()
+
+theApp.EvtMax=1
+
+
+from AthenaPython.PyAthenaComps import Alg, StatusCode
+
+
+############################################################################
+
+
+# TileFragHash::TYPE
+class TileFragHash:
+    Beam = 255
+    Default = 0
+    Digitizer = 0
+    OptFilterDsp = 1
+    OptFilterOffline = 2
+    OptFilterDspCompressed = 3
+    ManyAmps = 4
+    MF = 5
+    FitFilter = 6
+    FitFilterCool = 7
+    FlatFilter = 8
+
+
+BEAM_TDC_FRAG = 0x000
+BEAM_ADC_FRAG = 0x001
+MUON_ADC_FRAG = 0x002
+ADDR_ADC_FRAG = 0x003
+LASE_PTN_FRAG = 0x004
+LASE_ADC_FRAG = 0x005
+ADD_FADC_FRAG = 0x006
+ECAL_ADC_FRAG = 0x007
+DIGI_PAR_FRAG = 0x0ff
+LASER_OBJ_FRAG = 0x016
+
+
+hits_0 = [
+    # (sec, side, mod, tow, samp, pmt, adc), [adc, time, qual, ped]
+    [0, [
+        [(1, 1, 0, 1, 1, 0, 1), [ 0.2,  22.1,  2.4, 42.9]],
+        [(1, 1, 0, 1, 1, 1, 1), [-0.4,  75.0,  2.7, 31.4]],
+        [(1, 1, 0, 1, 0, 0, 1), [-0.9, -13.3,  1.5, 37.4]],
+        [(1, 1, 0, 2, 0, 1, 1), [41.8,   0.1,  2.5, 45.7]],
+        [(1, 1, 0, 2, 0, 0, 1), [30.6,  -0.4,  2.0, 33.1]],
+        [(1, 1, 0, 2, 1, 1, 1), [ 1.4,  12.9,  4.7, 43.1]],
+        [(1, 1, 0, 2, 1, 0, 1), [ 3.4,   3.5,  1.9, 54.2]],
+    ]],
+
+    [136, [
+        [(3, 1, 8, 13, 3, 0, 1),  [26.9, 4.8, 5.2, 45.4]],
+    ]],
+
+    [146, [
+        [(3, 1, 18, 13, 3, 0, 1), [ 4.4, -26.5, 23.9, 51.2]],
+        [(3, 1, 18, 15, 3, 0, 1), [-0.1, -75.0,  3.7, 51.0]],
+        [(3, 1, 18,  8, 2, 0, 1), [-0.1,  75.0,  4.2, 41.7]],
+        [(3, 1, 18,  8, 2, 1, 1), [ 3.5, -11.9,  2.6, 44.7]],
+        [(3, 1, 18,  9, 1, 0, 1), [ 0.8, -17.6,  1.8, 49.2]],
+        [(3, 1, 18,  9, 1, 1, 1), [ 0.1, -75.0,  3.4, 48.4]],
+        [(2, 1, 18, 11, 0, 0, 1), [ 8.7,   0.4,  2.7, 50.2]],
+        [(2, 1, 18, 11, 0, 1, 1), [ 6.3,   1.9,  1.6, 48.6]],
+        [(2, 1, 18, 10, 1, 0, 1), [53.3,   1.3,  3.8, 38.4]],
+        [(2, 1, 18, 10, 1, 1, 1), [64.1,   1.0,  3.5, 36.9]],
+        [(2, 1, 18, 12, 0, 0, 1), [-0.2, -75.0,  2.8, 38.1]],
+        [(2, 1, 18, 12, 0, 1, 1), [ 0.5, -32.7,  1.9, 40.3]],
+        [(3, 1, 18, 10, 3, 0, 1), [ 5.4,   7.7,  8.2, 57.0]],
+        [(3, 1, 18, 11, 3, 0, 1), [48.9,   0.4,  4.0, 32.3]],
+        [(2, 1, 18, 11, 1, 0, 1), [38.5,   0.5,  1.7, 46.8]],
+        [(2, 1, 18, 11, 1, 1, 1), [48.1,   0.3,  1.6, 46.3]],
+        [(2, 1, 18, 10, 2, 0, 1), [ 0.3,  75.0,  2.0, 34.9]],
+        [(2, 1, 18, 10, 2, 1, 1), [0.1,  -75.0,  3.7, 54.7]],
+    ]],
+
+    # Some MBTS cells.
+    [135, [ [(4,  1, 0, 1, 0, 0, 0), [ 59.1, 2.8, 6.9, 56.2]] ]],
+    [181, [ [(4,  1, 6, 1, 0, 0, 0), [ 56.4, 1.2, 2.9, 39.9]] ]],
+    [182, [ [(4,  1, 6, 0, 0, 0, 0), [ 44.9, 0.5, 1.4, 42.1]] ]],
+    [231, [ [(4, -1, 3, 0, 0, 0, 0), [107.9, 1.7, 7.8, 47.8]] ]],
+
+    # Some E4 cells.
+    [220, [ [(4, -1, 0, 2, 0, 0, 0), [  2.3,   3.2, 2.5, 44.4]] ]],
+    [223, [ [(4, -1, 1, 2, 0, 0, 0), [  3.1,  -5.3, 2.4, 44.4]] ]],
+    [225, [ [(4, -1, 2, 2, 0, 0, 0), [ -0.4,  27.6, 1.3, 32.5]] ]],
+    [228, [ [(4, -1, 3, 2, 0, 0, 0), [  0.2, -75.0, 2.4, 35.4]] ]],
+
+    # Some disconnected cells.
+    [253, [
+        [4706026383833300992, [ 0, 0, 0, 50000]],
+        [4706027483344928768, [ 0, 0, 0, 50000]] ], ],
+    [255, [
+        [4706157225717006336, [ 0, 0, 0, 80000]],
+        [4706158325228634112, [ 0, 0, 0, 80000]] ], ],
+]
+
+
+############################################################################
+
+
+def compare_args (args, pat):
+    if len(args) != len(pat): return False
+    for i in range(len(args)):
+        if args[i] != pat[i] and pat[i] != -1:
+            return False
+    return True
+def check_exc (args, exclist):
+    for exc in exclist:
+        if compare_args (args, exc): return True
+    return False
+def check_flag (dq, mname, exp, exc, *args):
+    ret = getattr(dq, mname)(*args)
+    if bool(ret) == bool(exp): return
+    if check_exc (args, exc.get(mname, [])): return
+    print ('xxx', mname, ret, exp, *args)
+    assert 0
+    return
+
+
+class TestAlg (Alg):
+    def __init__ (self, name):
+        Alg.__init__ (self, name)
+        return
+
+
+    def initialize (self):
+        ROOT.ICaloCellMakerTool
+
+        def gettool (name):
+            tool = ROOT.ToolHandle(ROOT.ITileDQstatusTool)('TileDQstatusTool/' + name)
+            if not tool.retrieve():
+                assert 0
+            return tool
+
+        self.tool1 = gettool ('tool1')
+        self.tool2 = gettool ('tool2')
+
+        return StatusCode.Success
+
+
+    def execute (self):
+        self.test1()
+        self.test2()
+        self.test3()
+        self.test4()
+        self.test5()
+        self.test6()
+        self.test7()
+        self.test8()
+        return StatusCode.Success
+
+
+    def test1 (self):
+        print ('*** Starting test1')
+
+        flag_exc = {'checkEmptyEvent' :
+                    [(3,13,3), (3,13,9), (3,13,12)],
+                    }
+
+        rctype = TileFragHash.OptFilterOffline
+        self.do_test (rctype, flag_exc)
+        return
+
+
+    def test2 (self):
+        print ('*** Starting test2')
+
+        flag_exc = {'checkEmptyEvent' :
+                    [(3,13,3), (3,13,9), (3,13,12)],
+                    'checkMemoryParityErr' :
+                    [(3,18,0,-1), (3,18,3,-1)],
+                    'isAdcDQgood' :
+                    [(3,18,0,-1), (3,18,1,-1), (3,18,2,-1),
+                     (3,18,9,-1), (3,18,10,-1), (3,18,11,-1),],
+                    'isChanDQgood' :
+                    [(3,18,0), (3,18,1), (3,18,2),
+                     (3,18,9), (3,18,10), (3,18,11),],
+                    }
+
+        rctype = TileFragHash.OptFilterDsp
+        rc_baddq = {146 : [('setFragMemoryPar', 0x09)]}
+        self.do_test (rctype, flag_exc, rc_baddq = rc_baddq)
+        return
+
+
+    def test3 (self):
+        print ('*** Starting test3')
+
+        flag_exc = {'checkEmptyEvent' :
+                    [(3,13,3), (3,13,9), (3,13,12)],
+                    'isAdcDQgood'  : [(3,18,-1,-1)],
+                    'isChanDQgood' : [(3,18,-1)],
+                    'checkBCIDErr' : [(3,18,-1,-1)],
+                    'checkBCIDErrDetail' : [(3,18,-1,-1)],
+                    }
+
+        rctype = TileFragHash.OptFilterDsp
+        rc_baddq = {146 : [('setFragBCID', 0x6565)]}
+        self.do_test (rctype, flag_exc, rc_baddq = rc_baddq)
+        return
+
+
+    def test4 (self):
+        print ('*** Starting test4')
+
+        flag_exc = {'checkEmptyEvent' :
+                    [(3,13,3), (3,13,9), (3,13,12)],
+                    }
+
+        rctype = TileFragHash.OptFilterOffline
+        self.do_test (rctype, flag_exc, isCalib = True)
+        return
+
+
+    def test5 (self):
+        print ('*** Starting test5')
+
+        flag_exc = {'checkEmptyEvent' :
+                    [(3,13,3), (3,13,9), (3,13,12)],
+                    }
+
+        rctype = TileFragHash.OptFilterOffline
+        self.do_test (rctype, flag_exc, incomplete = True)
+        return
+
+
+    def test6 (self):
+        print ('*** Starting test6')
+
+        flag_exc = {'checkEmptyEvent' :
+                    [(3,13,3), (3,13,9), (3,13,12)],
+                    }
+
+        rctype = TileFragHash.OptFilterOffline
+        self.do_test (rctype, flag_exc, beamfrag = DIGI_PAR_FRAG)
+        return
+
+
+    def test7 (self):
+        print ('*** Starting test7')
+
+        flag_exc = {'checkEmptyEvent' :
+                    [(3,13,3), (3,13,9), (3,13,12)],
+                    }
+
+        rctype = TileFragHash.OptFilterOffline
+        self.do_test (rctype, flag_exc, beamfrag = LASER_OBJ_FRAG)
+        return
+
+
+    def test8 (self):
+        print ('*** Starting test8')
+
+        flag_exc = {'checkEmptyEvent' :
+                    [(3,13,3), (3,13,9), (3,13,12)],
+                    }
+
+        rctype = TileFragHash.OptFilterOffline
+        self.do_test (rctype, flag_exc, tool = self.tool2)
+        return
+
+
+    def do_test (self, rctype, flag_exc, rc_baddq={},
+                 isCalib = False,
+                 incomplete = False,
+                 beamfrag = LASE_PTN_FRAG,
+                 tool = None):
+        rc = self.make_raw_data (hits_0, rctype, rc_baddq)
+        digits = self.make_digits (incomplete, isCalib)
+        be = self.make_beamelem (beamfrag)
+
+        dq = ROOT.TileDQstatus()
+
+        eid = ROOT.EventIDBase()
+        eid.set_bunch_crossing_id (1234)
+        ctx = ROOT.EventContext()
+        ctx.setEventID (eid)
+        ctx.setSlot (0)
+
+        trigType = -123
+        cispar = 110*[0]
+        bcid = 1234
+        if beamfrag == LASE_PTN_FRAG:
+            trigType = 23
+
+        elif beamfrag == DIGI_PAR_FRAG:
+            cispar = [100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+                      110, 111, 112, 113, 114, 111,   2,   5,   6,   7,
+                        8, 117, 118, 119, 120] + 85*[0]
+            bcid = 11
+
+        elif beamfrag == LASER_OBJ_FRAG:
+            bcid = 22
+
+        if not tool:
+            tool = self.tool1
+        assert tool.makeStatus (ctx, rc, digits, be, dq).isSuccess()
+
+        assert dq.isFilled() == True
+        assert dq.isBiGain() == isCalib
+        assert dq.nonZeroCounter() == True
+        assert dq.incompleteDigits() == incomplete
+        assert dq.calibMode() == isCalib
+        assert dq.trigType() == trigType
+        assert dq.RODBCID() == bcid
+
+        dq_cispar = [dq.cispar()[i] for i in range(110)]
+        assert dq_cispar == cispar
+
+
+        for partition in range(5):
+            for drawer in range(64):
+                for gain in range(2):
+                    check_flag (dq, 'checkGlobalErr', False, flag_exc,
+                                partition, drawer, gain)
+                    check_flag (dq, 'checkGlobalCRCErr', False, flag_exc,
+                                partition, drawer, gain)
+                for ch in range(48):
+                    for gain in range(2):
+                        check_flag (dq, 'isAdcDQgood', True, flag_exc,
+                                    partition, drawer, ch, gain)
+                    check_flag (dq, 'isChanDQgood', True, flag_exc,
+                                partition, drawer, ch)
+                for dmu in range(16):
+                    check_flag (dq, 'checkEmptyEvent', False, flag_exc,
+                                partition, drawer, dmu)
+                    for gain in range(2):
+                        check_flag (dq, 'checkROD_CRCErr', False, flag_exc,
+                                    partition, drawer, dmu, gain)
+                        check_flag (dq, 'checkFE_CRCErr', False, flag_exc,
+                                    partition, drawer, dmu, gain)
+                        check_flag (dq, 'checkBCIDErr', False, flag_exc,
+                                    partition, drawer, dmu, gain)
+                        check_flag (dq, 'checkBCIDErrDetail', False, flag_exc,
+                                    partition, drawer, dmu, gain)
+                        check_flag (dq, 'checkHeaderFormatErr', False, flag_exc,
+                                    partition, drawer, dmu, gain)
+                        check_flag (dq, 'checkHeaderParityErr', False, flag_exc,
+                                    partition, drawer, dmu, gain)
+                        check_flag (dq, 'checkSampleFormatErr', False, flag_exc,
+                                    partition, drawer, dmu, gain)
+                        check_flag (dq, 'checkSampleParityErr', False, flag_exc,
+                                    partition, drawer, dmu, gain)
+                        check_flag (dq, 'checkMemoryParityErr', False, flag_exc,
+                                    partition, drawer, dmu, gain)
+                        check_flag (dq, 'checkSingleStrobeErr', False, flag_exc,
+                                    partition, drawer, dmu, gain)
+                        check_flag (dq, 'checkDoubleStrobeErr', False, flag_exc,
+                                    partition, drawer, dmu, gain)
+
+        return StatusCode.Success
+
+
+    def make_raw_data (self, hits, typ, baddq):
+        idHelper  = self.detStore['CaloCell_ID'].tile_idHelper()
+
+        unit = 0 # TileRawChannelUnit::ADCcounts
+        cont = ROOT.TileRawChannelContainer (False, typ, unit)
+        cont.set_bsflags (0x32002000)
+        hashFunc = cont.hashFunc()
+
+        for icoll, colldata in hits:
+            coll = ROOT.TileRawChannelCollection (hashFunc.identifier(icoll))
+            coll.setFragFEChipMask (0)
+
+            for func, mask in baddq.get (icoll, []):
+                getattr(coll, func)(mask)
+
+            for addr, data in colldata:
+                if type(addr) == type(()):
+                    adc_id = idHelper.adc_id (*addr)
+                    chan = ROOT.TileRawChannel (adc_id, *data)
+                else:
+                    hwid = ROOT.HWIdentifier (addr)
+                    chan = ROOT.TileRawChannel (hwid, *data)
+                coll.push_back (chan)
+
+            cont.addCollection (coll, ROOT.IdentifierHash(icoll))
+            ROOT.SetOwnership (coll, False)
+
+        return cont
+        
+
+    def make_digits (self, incomplete, isCalib):
+        cont = ROOT.TileDigitsContainer()
+        hashFunc = cont.hashFunc()
+        hwidHelper = self.detStore['TileHWID']
+
+        emptyfrag = (3, 13) # ros, drawer
+        for frag in [(1, 3), emptyfrag]:
+            id = hwidHelper.frag (*frag)
+            coll = ROOT.TileDigitsCollection (id)
+
+            if frag == emptyfrag:
+                v = getattr(ROOT,'vector<unsigned>')()
+                v.resize(16)
+                v[3]  = 0xffffffff
+                v[9]  = 0xffffffff
+                v[12] = 0xffffffff
+                coll.setFragChipHeaderWords (v)
+
+
+            if frag == emptyfrag and incomplete:
+                ndig = 10
+            elif frag == emptyfrag and isCalib:
+                ndig = 96
+            else:
+                ndig = 48
+
+            digits = getattr(ROOT,'vector<float>')()
+            digits.resize (12);
+            for idig in range(ndig):
+                dig = ROOT.TileDigits(ROOT.HWIdentifier(), digits)
+                coll.push_back (dig)
+
+            cont.addCollection (coll, ROOT.IdentifierHash (hashFunc(id)))
+            ROOT.SetOwnership (coll, False)
+
+        return cont
+
+
+    def make_beamelem (self, frag):
+        cont = ROOT.TileBeamElemContainer()
+        hashFunc = cont.hashFunc()
+
+        coll = ROOT.TileBeamElemCollection (frag)
+        coll.setLvl1Type (123)
+
+        if frag == LASE_PTN_FRAG:
+            v = getattr(ROOT,'vector<unsigned>')()
+            v.resize(16)
+            v[0] = (23 << 8)
+            elem = ROOT.TileBeamElem (ROOT.HWIdentifier(), v)
+            coll.push_back (elem)
+
+        elif frag == DIGI_PAR_FRAG:
+            coll.setRODBCID (11)
+            hwidHelper = self.detStore['TileHWID']
+
+            def id (cha):
+                ros = 1
+                drawer = 1
+                adc = 0
+                return hwidHelper.adc_id (ros, drawer, cha, adc)
+
+            for cha in range(15):
+                hwid = id(cha)
+                elem = ROOT.TileBeamElem (hwid, cha + 100)
+                coll.push_back (elem)
+
+            hwid = id(15)
+            v = getattr(ROOT,'vector<unsigned>')()
+            v.resize(10)
+            for i in range(10):
+                v[i] = 111 + i
+            v[1] = 2
+            v[2] = 0x08070605
+            elem = ROOT.TileBeamElem (hwid, v)
+            coll.push_back (elem)
+
+        elif frag == LASER_OBJ_FRAG:
+            coll.setRODBCID (22)
+            
+
+        cont.addCollection (coll, ROOT.IdentifierHash (frag))
+        ROOT.SetOwnership (coll, False)
+
+        return cont
+
+
+
+############################################################################
+
+from TileRecUtils.TileRecUtilsConf import TileDQstatusTool
+
+tool1 = TileDQstatusTool ('tool1')
+ToolSvc += tool1
+tool2 = TileDQstatusTool ('tool2', SimulateTrips = True)
+ToolSvc += tool2
+
+test1 = TestAlg ('test1')
+topSequence += test1
diff --git a/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.ref b/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.ref
new file mode 100644
index 0000000000000000000000000000000000000000..ca6c137381446060a1fafa00eefe99146b8ef9c8
--- /dev/null
+++ b/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.ref
@@ -0,0 +1,471 @@
+Thu Nov 22 06:52:15 CET 2018
+Preloading tcmalloc_minimal.so
+Py:Athena            INFO including file "AthenaCommon/Preparation.py"
+Py:Athena            INFO using release [WorkDir-22.0.1] [x86_64-slc6-gcc62-dbg] [atlas-work3j/e5920231315] -- built on [2018-11-22T0640]
+Py:Athena            INFO including file "AthenaCommon/Atlas.UnixStandardJob.py"
+Py:Athena            INFO executing ROOT6Setup
+Py:Athena            INFO including file "AthenaCommon/Execution.py"
+Py:Athena            INFO including file "TileRecUtils/TileDQstatusTool_test.py"
+[?1034hSetGeometryVersion.py obtained major release version 22
+Py:Athena            INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py"
+Py:ConfigurableDb    INFO Read module info for 5411 configurables from 4 genConfDb files
+Py:ConfigurableDb    INFO No duplicates have been found: that's good !
+EventInfoMgtInit: Got release version  Athena-22.0.1
+Py:IOVDbSvc.CondDB    INFO Setting up conditions DB access to instance OFLP200
+Py:Athena            INFO including file "TileConditions/TileConditions_jobOptions.py"
+Py:TileInfoConf.     INFO Adding TileCablingSvc to ServiceMgr
+Py:TileConditions_jobOptions.py    INFO Forcing RUN2 (2014-2017) cabling for run 284500 with geometry ATLAS-R2-2016-01-00-01
+Py:TileConditions_jobOptions.py    INFO Adjusting TileInfo for 7 samples
+Py:TileConditions_jobOptions.py    INFO setting up COOL for TileCal conditions data
+Py:TileInfoConf.     INFO Changing default TileBadChanTool configuration to COOL source
+Py:TileInfoConf.     INFO Changing default TileBadChanLegacyTool configuration to COOL source
+Py:TileInfoConf.     INFO Changing default TileCondToolEmscale configuration to COOL source
+Py:TileInfoConf.     INFO Changing default TileCondToolNoiseSample configuration to COOL source
+Py:TileInfoConf.     INFO Changing default TileCondToolTiming configuration to COOL source
+Py:TileConditions_jobOptions.py    INFO Adjusting TileInfo to return cell noise for Opt.Filter without iterations
+Py:Athena            INFO including file "AthenaCommon/runbatch.py"
+ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+ApplicationMgr    SUCCESS 
+====================================================================================================================================
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v30r4)
+                                          running on lxplus055.cern.ch on Thu Nov 22 06:52:56 2018
+====================================================================================================================================
+ApplicationMgr       INFO Successfully loaded modules : AthenaServices
+ApplicationMgr       INFO Application Manager Configured successfully
+ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+StatusCodeSvc        INFO initialize
+AthDictLoaderSvc     INFO in initialize...
+AthDictLoaderSvc     INFO acquired Dso-registry
+ClassIDSvc           INFO  getRegistryEntries: read 6946 CLIDRegistry entries for module ALL
+CoreDumpSvc          INFO install f-a-t-a-l handler... (flag = -1)
+CoreDumpSvc          INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) 
+MetaDataSvc          INFO Initializing MetaDataSvc - package version AthenaServices-00-00-00
+AthenaPoolCnvSvc     INFO Initializing AthenaPoolCnvSvc - package version AthenaPoolCnvSvc-00-00-00
+PoolSvc              INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.xml) [ok]
+PoolSvc              INFO Set connectionsvc retry/timeout/IDLE timeout to  'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled
+PoolSvc              INFO Frontier compression level set to 5
+DBReplicaSvc         INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://lcgft-atlas.gridpp.rl.ac.uk:3128/frontierATLAS)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy-wigner.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data
+DBReplicaSvc         INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/dbreplica.config
+DBReplicaSvc         INFO Total of 10 servers found for host lxplus055.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ]
+PoolSvc              INFO Successfully setup replica sorting algorithm
+PoolSvc              INFO Setting up APR FileCatalog and Streams
+PoolSvc           WARNING Unable to locate catalog for prfile:poolcond/PoolCat_oflcond.xml check your ATLAS_POOLCOND_PATH and DATAPATH variables
+PoolSvc           WARNING Unable to locate catalog for apcfile:poolcond/PoolCat_oflcond.xml check your ATLAS_POOLCOND_PATH and DATAPATH variables
+PoolSvc              INFO Resolved path (via ATLAS_POOLCOND_PATH) is /cvmfs/atlas-condb.cern.ch/repo/conditions/poolcond/PoolFileCatalog.xml
+PoolSvc              INFO POOL WriteCatalog is xmlcatalog_file:PoolFileCatalog.xml
+DbSession            INFO     Open     DbSession    
+Domain[ROOT_All]     INFO >   Access   DbDomain     READ      [ROOT_All] 
+IOVDbSvc             INFO Opened read transaction for POOL PersistencySvc
+IOVDbSvc             INFO Only 5 POOL conditions files will be open at once
+IOVDbSvc             INFO Cache alignment will be done in 3 slices
+IOVDbSvc             INFO Global tag: OFLCOND-RUN12-SDR-35 set from joboptions
+IOVDbSvc             INFO Read from meta data only for folder /TagInfo
+IOVDbSvc             INFO Initialised with 3 connections and 14 folders
+IOVDbSvc             INFO Service IOVDbSvc initialised successfully
+IOVDbSvc             INFO preLoadAddresses: Removing folder /TagInfo. It should only be in the file meta data and was not found.
+IOVDbSvc             INFO Opening COOL connection for COOLOFL_LAR/OFLP200
+IOVSvc               INFO No IOVSvcTool associated with store "StoreGateSvc"
+IOVSvcTool           INFO IOVRanges will be checked at every Event
+IOVDbSvc             INFO Opening COOL connection for COOLOFL_TILE/OFLP200
+IOVDbSvc             INFO Disconnecting from COOLOFL_LAR/OFLP200
+IOVDbSvc             INFO Disconnecting from COOLOFL_TILE/OFLP200
+IOVDbSvc             INFO Added taginfo remove for /LAR/Align
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/CALIB/CES
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/CALIB/CIS/FIT/LIN
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/CALIB/CIS/FIT/NLN
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/CALIB/EMS
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/CALIB/LAS/FIBER
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/CALIB/LAS/LIN
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/CALIB/LAS/NLN
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/NOISE/SAMPLE
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/STATUS/ADC
+IOVDbSvc             INFO Added taginfo remove for /TILE/OFL02/TIME/CHANNELOFFSET/PHY
+IOVDbSvc             INFO Added taginfo remove for /TILE/ONL01/STATUS/ADC
+IOVDbSvc             INFO Added taginfo remove for /LAR/LArCellPositionShift
+ClassIDSvc           INFO  getRegistryEntries: read 1917 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 17 CLIDRegistry entries for module ALL
+DetDescrCnvSvc       INFO  initializing 
+DetDescrCnvSvc       INFO Found DetectorStore service
+DetDescrCnvSvc       INFO  filling proxies for detector managers 
+DetDescrCnvSvc       INFO  filling address for CaloTTMgr with CLID 117659265 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CaloMgr with CLID 4548337 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CaloSuperCellMgr with CLID 241807251 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CaloIdManager with CLID 125856940 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArIdManager with CLID 79554919 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for IdDict with CLID 2411 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for AtlasID with CLID 164875623 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for PixelID with CLID 2516 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for SCT_ID with CLID 2517 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for TRT_ID with CLID 2518 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for SiliconID with CLID 129452393 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArEM_ID with CLID 163583365 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArEM_SuperCell_ID with CLID 99488227 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArHEC_ID with CLID 3870484 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArHEC_SuperCell_ID with CLID 254277678 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArFCAL_ID with CLID 45738051 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArFCAL_SuperCell_ID with CLID 12829437 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArMiniFCAL_ID with CLID 79264204 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArOnlineID with CLID 158698068 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for TTOnlineID with CLID 38321944 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArOnline_SuperCellID with CLID 115600394 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArHVLineID with CLID 27863673 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for LArElectrodeID with CLID 80757351 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for TileID with CLID 2901 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for Tile_SuperCell_ID with CLID 49557789 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for TileHWID with CLID 2902 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for TileTBID with CLID 2903 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for MDTIDHELPER with CLID 4170 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CSCIDHELPER with CLID 4171 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for RPCIDHELPER with CLID 4172 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for TGCIDHELPER with CLID 4173 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for STGCIDHELPER with CLID 4174 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for MMIDHELPER with CLID 4175 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CaloLVL1_ID with CLID 108133391 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CaloCell_ID with CLID 123500438 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CaloCell_SuperCell_ID with CLID 128365736 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for CaloDM_ID with CLID 167756483 and storage type 68 to detector store 
+DetDescrCnvSvc       INFO  filling address for ZdcID with CLID 190591643 and storage type 68 to detector store 
+GeoModelSvc::RD...WARNING  Getting PixTBMatComponents with default tag
+GeoModelSvc::RD...WARNING  Getting PixTBMaterials with default tag
+GeoModelSvc::RD...WARNING  Getting InDetMatComponents with default tag
+GeoModelSvc::RD...WARNING  Getting InDetMaterials with default tag
+GeoModelSvc.LAr...   INFO Keys for LAr are ATLAS-R2-2016-01-00-01  ATLAS
+GeoModelSvc.LAr...   INFO Building LAr version LAr-Revised-17-01 while ATLAS version is ATLAS-R2-2016-01-00-01
+GeoModelSvc.LAr...   INFO LAr Geometry Options:
+GeoModelSvc.LAr...   INFO   Sagging           = false
+GeoModelSvc.LAr...   INFO   Barrel            = ON
+GeoModelSvc.LAr...   INFO   Endcap            = ON
+BarrelConstruction   INFO Getting primary numbers for ATLAS, ATLAS-R2-2016-01-00-01
+BarrelConstruction   INFO   Makes detailed absorber sandwich  ? 1 1
+BarrelConstruction   INFO   Use sagging in geometry  ? 0
+============== EMEC Construction ===============
+  multi-layered version of absorbers activated, mlabs == 1
+================================================
+EventPersistenc...   INFO Added successfully Conversion service:DetDescrCnvSvc
+ClassIDSvc           INFO  getRegistryEntries: read 2398 CLIDRegistry entries for module ALL
+CaloIDHelper_ID...   INFO in createObj: creating a TileTBID helper object in the detector store
+IdDictDetDescrCnv    INFO in initialize
+IdDictDetDescrCnv    INFO in createObj: creating a IdDictManager object in the detector store
+IdDictDetDescrCnv    INFO IdDictName:  IdDictParser/ATLAS_IDS.xml
+IdDictDetDescrCnv    INFO Reading InnerDetector    IdDict file InDetIdDictFiles/IdDictInnerDetector_IBL3D25-03.xml
+IdDictDetDescrCnv    INFO Reading LArCalorimeter   IdDict file IdDictParser/IdDictLArCalorimeter_DC3-05-Comm-01.xml
+IdDictDetDescrCnv    INFO Reading TileCalorimeter  IdDict file IdDictParser/IdDictTileCalorimeter.xml
+IdDictDetDescrCnv    INFO Reading Calorimeter      IdDict file IdDictParser/IdDictCalorimeter_L1Onl.xml
+IdDictDetDescrCnv    INFO Reading MuonSpectrometer IdDict file IdDictParser/IdDictMuonSpectrometer_R.03.xml
+IdDictDetDescrCnv    INFO Reading ForwardDetectors IdDict file IdDictParser/IdDictForwardDetectors_2010.xml
+IdDictDetDescrCnv    INFO Found id dicts:
+IdDictDetDescrCnv    INFO Using dictionary tag: null
+IdDictDetDescrCnv    INFO Dictionary ATLAS                version default              DetDescr tag (using default) file 
+IdDictDetDescrCnv    INFO Dictionary Calorimeter          version default              DetDescr tag CaloIdentifier-LVL1-02 file IdDictParser/IdDictCalorimeter_L1Onl.xml
+IdDictDetDescrCnv    INFO Dictionary ForwardDetectors     version default              DetDescr tag ForDetIdentifier-01       file IdDictParser/IdDictForwardDetectors_2010.xml
+IdDictDetDescrCnv    INFO Dictionary InnerDetector        version IBL-DBM              DetDescr tag InDetIdentifier-IBL3D25-02 file InDetIdDictFiles/IdDictInnerDetector_IBL3D25-03.xml
+IdDictDetDescrCnv    INFO Dictionary LArCalorimeter       version fullAtlas            DetDescr tag LArIdentifier-DC3-05-Comm file IdDictParser/IdDictLArCalorimeter_DC3-05-Comm-01.xml
+IdDictDetDescrCnv    INFO Dictionary LArElectrode         version fullAtlas            DetDescr tag (using default) file 
+IdDictDetDescrCnv    INFO Dictionary LArHighVoltage       version fullAtlas            DetDescr tag (using default) file 
+IdDictDetDescrCnv    INFO Dictionary MuonSpectrometer     version R.03                 DetDescr tag MuonIdentifier-08         file IdDictParser/IdDictMuonSpectrometer_R.03.xml
+IdDictDetDescrCnv    INFO Dictionary TileCalorimeter      version fullAtlasAndTestBeam DetDescr tag TileIdentifier-00         file IdDictParser/IdDictTileCalorimeter.xml
+TileTBID             INFO initialize_from_dictionary 
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+EndcapDMConstru...   INFO Start building EC electronics geometry
+============== EMEC Construction ===============
+  multi-layered version of absorbers activated, mlabs == 1
+================================================
+EndcapDMConstru...   INFO Start building EC electronics geometry
+GeoModelSvc          INFO GeoModelSvc.LArDetectorToolNV	 SZ= 29060Kb 	 Time = 1.36S
+GeoModelSvc.Til...   INFO  Entering TileDetectorTool::create()
+TileDddbManager      INFO m_tag = ATLAS-R2-2016-01-00-01
+TileDddbManager      INFO n_tiglob = 5
+TileDddbManager      INFO n_timod = 320
+TileDddbManager      INFO n_cuts = 9
+TileDddbManager      INFO n_saddle = 1
+TileDddbManager      INFO n_tilb = 21
+TileDddbManager      INFO n_tileSwitches = 1
+ClassIDSvc           INFO  getRegistryEntries: read 213 CLIDRegistry entries for module ALL
+CaloIDHelper_ID...   INFO in createObj: creating a TileID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+TileNeighbour        INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/TileNeighbour_reduced.txt
+TileHWIDDetDesc...   INFO in createObj: creating a TileHWID helper object in the detector store
+TileHWID             INFO initialize_from_dictionary 
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+ClassIDSvc           INFO  getRegistryEntries: read 55 CLIDRegistry entries for module ALL
+CaloIDHelper_ID...   INFO in createObj: creating a CaloCell_ID helper object in the detector store
+CaloIDHelper_ID...   INFO in createObj: creating a LArEM_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+CaloIDHelper_ID...   INFO in createObj: creating a LArHEC_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+CaloIDHelper_ID...   INFO in createObj: creating a LArFCAL_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/FCal2DNeighbors-April2011.txt
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/FCal3DNeighborsNext-April2011.txt
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/FCal3DNeighborsPrev-April2011.txt
+CaloIDHelper_ID...   INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+LArMiniFCAL_ID       INFO  initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID.
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+GeoModelSvc.Til...   INFO  U-shape parameter from database is: 1
+GeoModelSvc.Til...   INFO  Glue parameter from database is: 1
+GeoModelSvc.Til...   INFO  Cs Tube parameter from database is: 0
+GeoModelSvc.Til...   INFO  Entering TileAtlasFactory::create()
+GeoModelSvc.Til...   INFO  Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx
+GeoModelSvc.Til...   INFO  => New BFingerLengthPos 430.5
+GeoModelSvc.Til...   INFO  => New BFingerLengthNeg 420.5
+GeoModelSvc.Til...   INFO  Positioning barrel with translation 0
+GeoModelSvc.Til...   INFO  Positioning positive barrel finger with translation 3035.25
+GeoModelSvc.Til...   INFO  Positioning negative barrel finger with translation -3030.25
+GeoModelSvc.Til...   INFO  Positioning positive ext.barrel with translation 4854.75
+GeoModelSvc.Til...   INFO  Positioning positive ext.barrel finger with translation ztrans= 6338.5
+GeoModelSvc.Til...   INFO  Positioning positive ext.barrel saddle with translation ztrans= 6192.5
+GeoModelSvc.Til...   INFO  Positive ITC envelope parameters: PLUG1  Rmin= 3438.85 Rmax= 4250 dzITC1= 154.5
+GeoModelSvc.Til...   INFO                                    PLUG2  Rmin= 2981 Rmax= 3440 dzITC2= 47.425
+GeoModelSvc.Til...   INFO  Positioning positive ITC with translation 3405
+GeoModelSvc.Til...   INFO  Positioning positive Gap with translation 3552
+GeoModelSvc.Til...   INFO  Positioning positive Crack with translation 3536
+GeoModelSvc.Til...   INFO  Positioning negative ext.barrel with translation ztrans -4854.75
+GeoModelSvc.Til...   INFO  Positioning negative ext.barrel finger with translation ztrans= -6338.5
+GeoModelSvc.Til...   INFO  Positioning negative ext.barrel saddle with translation ztrans= -6192.5
+GeoModelSvc.Til...   INFO  Negative ITC envelope parameters: PLUG1  Rmin= 3438.85 Rmax= 4250 dzITC1= 154.5
+GeoModelSvc.Til...   INFO                                    PLUG2  Rmin= 2981 Rmax= 3440 dzITC2= 47.425
+GeoModelSvc.Til...   INFO  Positioning negative ITC with translation -3405
+GeoModelSvc.Til...   INFO  Positioning negative Gap with translation -3552
+GeoModelSvc.Til...   INFO  Positioning negative Crack with translation -3536
+GeoModelSvc.Til...   INFO  Global positioning of barrel with rotation (0,0,0)) and translation (0,0,0) CLHEP::cm
+GeoModelSvc.Til...   INFO  Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) CLHEP::cm
+GeoModelSvc.Til...   INFO  Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) CLHEP::cm
+TileDetDescrMan...   INFO Entering create_elements()
+GeoModelSvc          INFO GeoModelSvc.TileDetectorTool	 SZ= 5196Kb 	 Time = 1.54S
+ClassIDSvc           INFO  getRegistryEntries: read 65 CLIDRegistry entries for module ALL
+TileInfoLoader       INFO Initializing....TileInfoLoader
+TileInfoLoader       INFO New ATLAS geometry detected: ATLAS-R2-2016-01-00-01 (010001) version 10001
+TileInfoLoader       INFO Changing TTL1 calib from 4.1 to 6.9
+TileInfoLoader       INFO Changing TTL1 noise sigma from 2.5 to 2.8
+TileInfoLoader       INFO ATLAS IBL geometry - special sampling fractions for gap/crack scin are allowed
+TileInfoLoader       INFO Special C10 in EB module 39
+TileInfoLoader       INFO Special C10 in EB module 40
+TileInfoLoader       INFO Special C10 in EB module 41
+TileInfoLoader       INFO Special C10 in EB module 42
+TileInfoLoader       INFO Special C10 in EB module 55
+TileInfoLoader       INFO Special C10 in EB module 56
+TileInfoLoader       INFO Special C10 in EB module 57
+TileInfoLoader       INFO Special C10 in EB module 58
+TileInfoLoader       INFO Sampling fraction for normal cells 1/34
+TileInfoLoader       INFO Sampling fraction for special C10 cells 1/45
+TileInfoLoader       INFO Sampling fraction for E1 cells 1/125
+TileInfoLoader       INFO Sampling fraction for E2 cells 1/107
+TileInfoLoader       INFO Sampling fraction for E3 cells 1/97
+TileInfoLoader       INFO Sampling fraction for E4 cells 1/75
+TileInfoLoader       INFO Sampling fraction for E4' cells 1/75
+TileInfoLoader       INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/pulsehi_physics.dat
+TileInfoLoader       INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/pulselo_physics.dat
+TileInfoLoader       INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/pulse_adder_tower_physics.dat
+TileInfoLoader       INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/pulse_adder_muonRcv_physics.dat
+TileInfoLoader       INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/pulse_adder_muon_physics.dat
+CaloIDHelper_ID...   INFO in createObj: creating a CaloLVL1_ID helper object in the detector store
+CaloLVL1_ID          INFO initialize_from_dictionary
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+TileCablingSvc       INFO RUN2 ATLAS geometry flag detected for geometry: ATLAS-R2-2016-01-00-01
+TileCablingSvc       INFO Cabling for RUN2 (2014-2017) ATLAS geometry is set via jobOptions 
+TileCablingSvc       INFO Setting Cabling type to 4
+TileInfoLoader       INFO Placed TileInfo object in the detector store.
+ToolSvc.TileBad...   INFO Creating TileCondProxyCool(ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OnlBch) for folder: "/TILE/ONL01/STATUS/ADC"
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for TileCondProxyCool<TileCalibDrawerBch>[0x1cb87600]+7f1630fd78a6 bound to CondAttrListCollection[/TILE/ONL01/STATUS/ADC]
+ToolSvc.TileBad...   INFO Creating TileCondProxyCool(ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OflBch) for folder: "/TILE/OFL02/STATUS/ADC"
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for TileCondProxyCool<TileCalibDrawerBch>[0x1cb88c00]+7f1630fd78a6 bound to CondAttrListCollection[/TILE/OFL02/STATUS/ADC]
+ToolSvc.TileBad...   INFO ProxyOnlBch and ProxyOflBch will be used for bad channel status
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for TileBadChanLegacyTool[0x16e05000]+7f1630d8460e bound to /TILE/ONL01/STATUS/ADC
+IOVSvcTool           INFO Still in initialize phase, not tiggering callback for TileBadChanLegacyTool[0x16e05000]+7f1630d8460e bound to /TILE/OFL02/STATUS/ADC
+AthenaEventLoopMgr   INFO Initializing AthenaEventLoopMgr - package version AthenaServices-00-00-00
+ClassIDSvc           INFO  getRegistryEntries: read 265 CLIDRegistry entries for module ALL
+CondInputLoader      INFO Initializing CondInputLoader...
+CondInputLoader      INFO Adding base classes:
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CES' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/LIN' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/NLN' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/EMS' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/FIBER' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/LIN' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/NLN' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/NOISE/SAMPLE' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/STATUS/ADC' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/TIME/CHANNELOFFSET/PHY' )   ->
+  +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/ONL01/STATUS/ADC' )   ->
+CondInputLoader      INFO Will create WriteCondHandle dependencies for the following DataObjects:
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CES' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/LIN' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/NLN' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/EMS' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/FIBER' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/LIN' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/CALIB/LAS/NLN' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/NOISE/SAMPLE' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/STATUS/ADC' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/OFL02/TIME/CHANNELOFFSET/PHY' ) 
+    +  ( 'CondAttrListCollection' , 'ConditionStore+/TILE/ONL01/STATUS/ADC' ) 
+TileBadChannels...   INFO Creating TileCondProxyCool(TileBadChannelsCondAlg.TileCondProxyCool_OnlBch) for folder: "/TILE/ONL01/STATUS/ADC"
+TileBadChannels...   INFO Creating TileCondProxyCool(TileBadChannelsCondAlg.TileCondProxyCool_OflBch) for folder: "/TILE/OFL02/STATUS/ADC"
+TileBadChannels...   INFO ProxyOnlBch and ProxyOflBch will be used for bad channel status
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflCisLin) for folder: "/TILE/OFL02/CALIB/CIS/FIT/LIN"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflCisNln) for folder: "/TILE/OFL02/CALIB/CIS/FIT/NLN"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflLasLin) for folder: "/TILE/OFL02/CALIB/LAS/LIN"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflLasNln) for folder: "/TILE/OFL02/CALIB/LAS/NLN"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflLasFib) for folder: "/TILE/OFL02/CALIB/LAS/FIBER"
+TileEMScaleCondAlg   INFO ProxyOflLasFib is set up and can be used
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflCes) for folder: "/TILE/OFL02/CALIB/CES"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OflEms) for folder: "/TILE/OFL02/CALIB/EMS"
+TileEMScaleCondAlg   INFO Undoing online calibration is not requested, since OnlCacheUnit= 'OnlCacheUnit':Invalid
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlCis) for folder: "/TILE/OFL02/CALIB/CIS/FIT/LIN"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlLas) for folder: "/TILE/OFL02/CALIB/LAS/LIN"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlCes) for folder: "/TILE/OFL02/CALIB/CES"
+TileEMScaleCond...   INFO Creating TileCondProxyCool(TileEMScaleCondAlg.TileCondProxyCool_OnlEms) for folder: "/TILE/OFL02/CALIB/EMS"
+TileSampleNoise...   INFO Creating TileCondProxyCool(TileSampleNoiseCondAlg.TileCondProxyCool_NoiseSample) for folder: "/TILE/OFL02/NOISE/SAMPLE"
+TileTimingCondA...   INFO Creating TileCondProxyCool(TileTimingCondAlg.TileCondProxyCool_AdcOffset) for folder: "/TILE/OFL02/TIME/CHANNELOFFSET/PHY"
+PyComponentMgr       INFO Initializing PyComponentMgr...
+test1                INFO Initializing test1...
+ClassIDSvc           INFO  getRegistryEntries: read 5654 CLIDRegistry entries for module ALL
+HistogramPersis...WARNING Histograms saving not required.
+ApplicationMgr       INFO Application Manager Initialized successfully
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/CES'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/LIN'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/CIS/FIT/NLN'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/EMS'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/LAS/FIBER'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/LAS/LIN'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/CALIB/LAS/NLN'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/NOISE/SAMPLE'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/STATUS/ADC'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/OFL02/TIME/CHANNELOFFSET/PHY'
+CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/TILE/ONL01/STATUS/ADC'
+ApplicationMgr       INFO Application Manager Started successfully
+AthenaEventLoopMgr   INFO   ===>>>  start of run 1    <<<===
+EventPersistenc...   INFO Added successfully Conversion service:AthenaPoolCnvSvc
+EventPersistenc...   INFO Added successfully Conversion service:TagInfoMgr
+ClassIDSvc           INFO  getRegistryEntries: read 109 CLIDRegistry entries for module ALL
+IOVDbSvc             INFO Opening COOL connection for COOLOFL_LAR/OFLP200
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to LARAlign-IOVDEP-00 for folder /LAR/Align
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to LArCellPositionShift-ideal for folder /LAR/LArCellPositionShift
+IOVDbSvc             INFO Disconnecting from COOLOFL_LAR/OFLP200
+IOVDbSvc             INFO Opening COOL connection for COOLOFL_TILE/OFLP200
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibCes-SIM-06 for folder /TILE/OFL02/CALIB/CES
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibCisFitLin-COM-00 for folder /TILE/OFL02/CALIB/CIS/FIT/LIN
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibCisFitNln-COM-00 for folder /TILE/OFL02/CALIB/CIS/FIT/NLN
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibEms-COM-00 for folder /TILE/OFL02/CALIB/EMS
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibLasFiber-000-00 for folder /TILE/OFL02/CALIB/LAS/FIBER
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibLasLin-COM-00 for folder /TILE/OFL02/CALIB/LAS/LIN
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02CalibLasNln-COM-00 for folder /TILE/OFL02/CALIB/LAS/NLN
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02NoiseSample-TwoGauss-19 for folder /TILE/OFL02/NOISE/SAMPLE
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02StatusAdc-IOVDEP-03 for folder /TILE/OFL02/STATUS/ADC
+IOVDbSvc             INFO HVS tag OFLCOND-RUN12-SDR-35 resolved to TileOfl02TimeChanneloffsetPhy-000-00 for folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY
+IOVDbSvc             INFO Disconnecting from COOLOFL_TILE/OFLP200
+DbSession            INFO     Open     DbSession    
+Domain[ROOT_All]     INFO >   Access   DbDomain     READ      [ROOT_All] 
+Domain[ROOT_All]     INFO ->  Access   DbDatabase   READ      [ROOT_All] EACFEBD4-9BD2-E211-848A-02163E006B20
+Domain[ROOT_All]     INFO                           /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000057.gen.COND/cond09_mc.000057.gen.COND._0001.pool.root
+RootDatabase.open    INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000057.gen.COND/cond09_mc.000057.gen.COND._0001.pool.root File version:52200
+ToolSvc.TileBad...   INFO ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OnlBch: callback has been triggered by: /TILE/ONL01/STATUS/ADC 
+ToolSvc.TileBad...   INFO ToolSvc.TileBadChanLegacyTool.TileCondProxyCool_OflBch: callback has been triggered by: /TILE/OFL02/STATUS/ADC 
+CaloMgrDetDescrCnv   INFO in createObj: creating a Calo Detector Manager object in the detector store
+CaloIdMgrDetDes...   INFO in createObj: creating a CaloDescrManager object in the detector store
+ClassIDSvc           INFO  getRegistryEntries: read 193 CLIDRegistry entries for module ALL
+CaloIDHelper_ID...   INFO in createObj: creating a CaloDM_ID helper object in the detector store
+CaloDM_ID            INFO initialize_from_dictionary
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+CaloIDHelper_ID...   INFO in createObj: creating a TTOnlineID helper object in the detector store
+TTOnlineID           INFO initialize_from_dictionary
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+CaloIDHelper_ID...   INFO in createObj: creating a CaloCell_SuperCell_ID helper object in the detector store
+CaloIDHelper_ID...   INFO in createObj: creating a LArEM_SuperCell_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+CaloIDHelper_ID...   INFO in createObj: creating a LArHEC_SuperCell_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+CaloIDHelper_ID...   INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/FCalSuperCells2DNeighborsNew-April2014.txt
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/FCalSuperCells3DNeighborsNextNew-April2014.txt
+LArFCAL_Base_ID      INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt
+CaloIDHelper_ID...   INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+TileNeighbour        INFO Reading file  /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-11-19T2259/Athena/22.0.1/InstallArea/x86_64-slc6-gcc62-dbg/share/TileSuperCellNeighbour.txt
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+CaloIdMgrDetDes...   INFO  Finished 
+CaloIdMgrDetDes...   INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv 
+Domain[ROOT_All]     INFO ->  Access   DbDatabase   READ      [ROOT_All] 8667C6F2-1559-DE11-A611-000423D9A21A
+Domain[ROOT_All]     INFO                           /cvmfs/atlas-condb.cern.ch/repo/conditions/cond08/cond08_mc.000003.gen.COND/cond08_mc.000003.gen.COND._0064.pool.root
+RootDatabase.open    INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond08/cond08_mc.000003.gen.COND/cond08_mc.000003.gen.COND._0064.pool.root File version:52200
+ToolSvc.TileBad...   INFO TileBadChanLegacyTool::recache() has been triggered by: '/TILE/OFL02/STATUS/ADC' '/TILE/ONL01/STATUS/ADC' 
+ToolSvc.TileBad...   INFO Updating TileBchStatus::isBad() definition from DB
+ToolSvc.TileBad...   INFO Updating TileBchStatus::isNoisy() definition from DB
+ToolSvc.TileBad...   INFO No TileBchStatus::isNoGainL1() definition found in DB, using defaults
+ToolSvc.TileBad...   INFO No TileBchStatus::isBadTiming() definition found in DB, using defaults
+ToolSvc.TileBad...   INFO TileBchStatus::isBad() is defined by: ADC masked (unspecified); ADC dead; Very large HF noise; No data; Wrong DSP configuration; Severe stuck bit; Severe data corruption; Channel masked (unspecified); No PMT connected; No HV; Wrong HV; 
+ToolSvc.TileBad...   INFO TileBchStatus::isNoisy() is defined by: Large HF noise; Correlated noise; Large LF noise; 
+ToolSvc.TileBad...   INFO TileBchStatus::isNoGainL1() is defined by: ADC dead; No PMT connected; No HV; Channel masked for LV1 (unspecified); LV1 channel no gain; LV1 channel noisy; Channel disabled for LV1; 
+ToolSvc.TileBad...   INFO TileBchStatus::isBadTiming() is defined by: Bad timing; Online bad timing; 
+ToolSvc.TileBad...   INFO No drawer trips probabilities found in DB
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #1, run #1 0 events processed so far  <<<===
+TileBadChannels...   INFO Updating TileBchStatus::isBad() definition from DB
+TileBadChannels...   INFO Updating TileBchStatus::isNoisy() definition from DB
+TileBadChannels...   INFO No TileBchStatus::isNoGainL1() definition found in DB, using defaults
+TileBadChannels...   INFO No TileBchStatus::isBadTiming() definition found in DB, using defaults
+TileBadChannels...   INFO TileBchStatus::isBad() is defined by: ADC masked (unspecified); ADC dead; Very large HF noise; No data; Wrong DSP configuration; Severe stuck bit; Severe data corruption; Channel masked (unspecified); No PMT connected; No HV; Wrong HV; 
+TileBadChannels...   INFO TileBchStatus::isNoisy() is defined by: Large HF noise; Correlated noise; Large LF noise; 
+TileBadChannels...   INFO TileBchStatus::isNoGainL1() is defined by: ADC dead; No PMT connected; No HV; Channel masked for LV1 (unspecified); LV1 channel no gain; LV1 channel noisy; Channel disabled for LV1; 
+TileBadChannels...   INFO TileBchStatus::isBadTiming() is defined by: Bad timing; Online bad timing; 
+TileBadChannels...   INFO No drawer trips probabilities found in DB
+*** Starting test1
+ClassIDSvc           INFO  getRegistryEntries: read 650 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 154 CLIDRegistry entries for module ALL
+*** Starting test2
+*** Starting test3
+*** Starting test4
+*** Starting test5
+*** Starting test6
+*** Starting test7
+*** Starting test8
+AthRNGSvc            INFO Creating engine ToolSvc.tool2/ToolSvc.tool2
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #1, run #1 1 events processed so far  <<<===
+/cvmfs/atlas-co...   INFO Database being retired...
+Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] EACFEBD4-9BD2-E211-848A-02163E006B20
+/cvmfs/atlas-co...   INFO Database being retired...
+Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] 8667C6F2-1559-DE11-A611-000423D9A21A
+Domain[ROOT_All]     INFO >   Deaccess DbDomain     READ      [ROOT_All] 
+TileInfoLoader       INFO Handling EndRun incident
+TileInfoLoader       INFO Removed TileInfo object from detector store.
+Domain[ROOT_All]     INFO >   Deaccess DbDomain     READ      [ROOT_All] 
+ApplicationMgr       INFO Application Manager Stopped successfully
+IncidentProcAlg1     INFO Finalize
+CondInputLoader      INFO Finalizing CondInputLoader...
+test1                INFO Finalizing test1...
+IncidentProcAlg2     INFO Finalize
+PyComponentMgr       INFO Finalizing PyComponentMgr...
+IdDictDetDescrCnv    INFO in finalize
+IOVDbSvc             INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 ((    18.62 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 ((    22.12 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 ((     1.98 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 ((     2.21 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 ((     2.05 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 ((     2.95 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 ((     5.13 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 ((     3.02 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641476 ((    26.42 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/2 objs/chan/bytes 277/277/97884 ((     0.04 ))s
+IOVDbSvc             INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 ((     0.04 ))s
+IOVDbSvc             INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/2 objs/chan/bytes 277/277/76 ((     0.01 ))s
+IOVDbSvc             INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 1/1 objs/chan/bytes 1/1/195 ((     2.81 ))s
+IOVDbSvc             INFO Total payload read from COOL: 844581 bytes in ((     87.41 ))s
+IOVDbSvc             INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: ((     0.00 ))s
+IOVDbSvc             INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: ((    21.43 ))s
+IOVDbSvc             INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: ((    65.98 ))s
+TileInfoLoader       INFO TileInfoLoader::finalize()
+AthDictLoaderSvc     INFO in finalize...
+ToolSvc              INFO Removing all tools created by ToolSvc
+*****Chrono*****     INFO ****************************************************************************************************
+*****Chrono*****     INFO  The Final CPU consumption ( Chrono ) Table (ordered)
+*****Chrono*****     INFO ****************************************************************************************************
+cObjR_ALL            INFO Time User   : Tot= 0.58  [s] Ave/Min/Max= 0.29(+- 0.27)/ 0.02/ 0.56  [s] #=  2
+cObj_ALL             INFO Time User   : Tot= 0.72  [s] Ave/Min/Max=0.048(+-0.155)/    0/ 0.62  [s] #= 15
+ChronoStatSvc        INFO Time User   : Tot= 68.2  [s]                                             #=  1
+*****Chrono*****     INFO ****************************************************************************************************
+ChronoStatSvc.f...   INFO  Service finalized successfully 
+ApplicationMgr       INFO Application Manager Finalized successfully
+ApplicationMgr       INFO Application Manager Terminated successfully
+Py:Athena            INFO leaving with code 0: "successful run"
diff --git a/TileCalorimeter/TileRecUtils/src/TileDQstatusAlg.cxx b/TileCalorimeter/TileRecUtils/src/TileDQstatusAlg.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..562eececf444d418f1752ec1895bbe7924bca9f3
--- /dev/null
+++ b/TileCalorimeter/TileRecUtils/src/TileDQstatusAlg.cxx
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration.
+ */
+/**
+ * @file TileRecUtils/src/TileDQstatusAlg.cxx
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Sep, 2018
+ * @brief Produce a TileDQstatus object.
+ *        This replaces the old TileBeamInfoProvider.
+ */
+
+
+#include "TileDQstatusAlg.h"
+#include "TileCalibBlobObjs/TileCalibUtils.h"
+#include "TileIdentifier/TileTBFrag.h"
+#include "TileIdentifier/TileHWID.h"
+#include "StoreGate/WriteHandle.h"
+#include "StoreGate/ReadHandle.h"
+#include "AthenaKernel/RNGWrapper.h"
+#include <CLHEP/Random/RandomEngine.h>
+#include <CLHEP/Random/RandFlat.h>
+
+
+/**
+ * @brief Constructor.
+ * @param name Algorithm name.
+ * @param svcloc Gaudi service locator.
+ */
+TileDQstatusAlg::TileDQstatusAlg (const std::string& name, ISvcLocator* svcloc)
+  : AthReentrantAlgorithm (name, svcloc)
+{
+}
+
+
+/**
+ * @brief Gaudi initialize method.
+ */
+StatusCode TileDQstatusAlg::initialize()
+{
+  ATH_CHECK( m_tileDQstatusTool.retrieve() );
+
+  ATH_CHECK( m_DQstatusKey.initialize() );
+  if (!m_rawChannelContainerKey.key().empty())
+    ATH_CHECK( m_rawChannelContainerKey.initialize() );
+  if (!m_digitsContainerKey.key().empty())
+    ATH_CHECK( m_digitsContainerKey.initialize() );
+  if (!m_beamElemContainerKey.key().empty())
+    ATH_CHECK( m_beamElemContainerKey.initialize() );
+
+  return StatusCode::SUCCESS;
+}
+
+
+/**
+ * @brief Gaudi execute method.
+ * @param ctx Event context.
+ */
+StatusCode TileDQstatusAlg::execute_r (const EventContext& ctx) const
+{
+  auto dqstatus = std::make_unique<TileDQstatus>();
+
+  const TileDigitsContainer* tileDigitsContainer = nullptr;
+  if (!m_digitsContainerKey.key().empty()) {
+    tileDigitsContainer = SG::makeHandle (m_digitsContainerKey, ctx).get();
+  }
+
+  const TileRawChannelContainer* tileRawChannelContainer = nullptr;
+  if (!m_rawChannelContainerKey.key().empty()) {
+    tileRawChannelContainer = SG::makeHandle (m_rawChannelContainerKey, ctx).get();
+  }
+
+  const TileBeamElemContainer* tileBeamElemContainer = nullptr;
+  if (!m_beamElemContainerKey.key().empty()) {
+    tileBeamElemContainer = SG::makeHandle (m_beamElemContainerKey, ctx).get();
+  }
+
+  ATH_CHECK( m_tileDQstatusTool->makeStatus (ctx,
+                                             tileRawChannelContainer,
+                                             tileDigitsContainer,
+                                             tileBeamElemContainer,
+                                             *dqstatus) );
+
+  ATH_CHECK( SG::makeHandle (m_DQstatusKey, ctx).record (std::move (dqstatus)) );
+  return StatusCode::SUCCESS;
+}
+
diff --git a/TileCalorimeter/TileRecUtils/src/TileDQstatusAlg.h b/TileCalorimeter/TileRecUtils/src/TileDQstatusAlg.h
new file mode 100644
index 0000000000000000000000000000000000000000..29385046411b961ada01aa7e493b3451101eaa80
--- /dev/null
+++ b/TileCalorimeter/TileRecUtils/src/TileDQstatusAlg.h
@@ -0,0 +1,81 @@
+// This file's extension implies that it's C, but it's really -*- C++ -*-.
+/*
+ * Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration.
+ */
+/**
+ * @file TileRecUtils/src/TileDQstatusAlg.h
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Sep, 2018
+ * @brief Produce a TileDQstatus object.
+ *        This replaces the old TileBeamInfoProvider.
+ */
+
+
+#ifndef TILERECUTILS_TILEDQSTATUSALG_H
+#define TILERECUTILS_TILEDQSTATUSALG_H
+
+
+#include "TileRecUtils/ITileDQstatusTool.h"
+#include "TileEvent/TileDQstatus.h"
+#include "TileEvent/TileRawChannelContainer.h"
+#include "TileEvent/TileDigitsContainer.h"
+#include "TileEvent/TileBeamElemContainer.h"
+#include "TileConditions/ITileBadChanTool.h"
+#include "AthenaBaseComps/AthReentrantAlgorithm.h"
+#include "StoreGate/WriteHandleKey.h"
+#include "StoreGate/ReadHandleKey.h"
+#include "AthenaKernel/IAthRNGSvc.h"
+#include "GaudiKernel/ServiceHandle.h"
+#include "GaudiKernel/ToolHandle.h"
+class TileHWID;
+
+
+/**
+ * @brief Produce a TileDQstatus object.
+ *        This replaces the old TileBeamInfoProvider.
+ */
+class TileDQstatusAlg
+  : public AthReentrantAlgorithm
+{
+public:
+  /**
+   * @brief Constructor.
+   * @param name Algorithm name.
+   * @param svcloc Gaudi service locator.
+   */
+  TileDQstatusAlg (const std::string& name, ISvcLocator* svcloc);
+
+
+  /**
+   * @brief Gaudi initialize method.
+   */
+  virtual StatusCode initialize() override;
+
+
+  /**
+   * @brief Gaudi execute method.
+   * @param ctx Event context.
+   */
+  virtual StatusCode execute_r (const EventContext& ctx) const override;
+
+
+private:
+  /// ** Properties
+  SG::WriteHandleKey<TileDQstatus> m_DQstatusKey
+  {this, "TileDQstatus", "TileDQstatus", "Output TileDQstatus key" };
+
+  SG::ReadHandleKey<TileRawChannelContainer> m_rawChannelContainerKey
+  {this, "TileRawChannelContainer", "", "Input TileRawChannelContainer key" };
+
+  SG::ReadHandleKey<TileDigitsContainer> m_digitsContainerKey
+  {this, "TileDigitsContainer", "", "Input TileDigitsContainer key" };
+
+  SG::ReadHandleKey<TileBeamElemContainer> m_beamElemContainerKey
+  {this, "TileBeamElemContainer",  "", "Input Tile beam elements container key"};
+
+  ToolHandle<ITileDQstatusTool> m_tileDQstatusTool
+  {this, "TileDQstatusTool", "TileDQstatusTool", "TileDQstatusTool"};
+};
+
+
+#endif // not TILERECUTILS_TILEDQSTATUSALG_H
diff --git a/TileCalorimeter/TileRecUtils/src/TileDQstatusTool.cxx b/TileCalorimeter/TileRecUtils/src/TileDQstatusTool.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..c471902ad3e856867becd3af0146a562f38c2d51
--- /dev/null
+++ b/TileCalorimeter/TileRecUtils/src/TileDQstatusTool.cxx
@@ -0,0 +1,343 @@
+/*
+ * Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration.
+ */
+/**
+ * @file TileRecUtils/src/TileDQstatusTool.cxx
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Nov, 2018
+ * @brief Construct a TileDQstatus object.
+ */
+
+
+#include "TileDQstatusTool.h"
+#include "TileEvent/TileDQstatus.h"
+#include "TileEvent/TileRawChannelContainer.h"
+#include "TileEvent/TileDigitsContainer.h"
+#include "TileEvent/TileBeamElemContainer.h"
+#include "TileIdentifier/TileHWID.h"
+#include "TileIdentifier/TileTBFrag.h"
+#include "TileCalibBlobObjs/TileCalibUtils.h"
+#include "AthenaKernel/RNGWrapper.h"
+#include <CLHEP/Random/RandomEngine.h>
+#include <CLHEP/Random/RandFlat.h>
+#include "GaudiKernel/EventContext.h"
+
+
+/**
+ * @brief Standard Gaudi tool constructor.
+ * @param type The name of the tool type.
+ * @param name The tool name.
+ * @param parent The tool's Gaudi parent.
+ */
+TileDQstatusTool::TileDQstatusTool (const std::string& type,
+                                    const std::string& name,
+                                    const IInterface* parent)
+  : base_class (type, name, parent),
+    m_tileBadChanTool ("TileBadChanTool")
+{
+  // FIXME: public tool
+  declareProperty ("TileBadChanTool", m_tileBadChanTool,
+                   "Tile bad channel tool.");
+}
+
+
+/**
+ * @brief Gaudi initialize method.
+ */
+StatusCode TileDQstatusTool::initialize()
+{
+  ATH_CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
+
+  if (m_simulateTrips) {
+    ATH_CHECK( m_athRNGSvc.retrieve() );
+    ATH_CHECK( m_tileBadChanTool.retrieve() );
+  }
+  else {
+    m_tileBadChanTool.disable();
+  }
+  return StatusCode::SUCCESS;
+}
+
+
+/**
+ * @brief Make a new TileDQstatus object.
+ * @param ctx Event context.
+ * @param rawChannelContainer The TileRawChannelContainer (may be null).
+ * @param tileDigitsContainer The TileDigitsContainer (may be null).
+ * @param tileBeamElemContainer The TileBeamElemContainer (may be null).
+ * @param[out] dqstatus TileDQstatus object to fill.
+ */
+StatusCode
+TileDQstatusTool::makeStatus (const EventContext& ctx,
+                              const TileRawChannelContainer* rawChannelContainer,
+                              const TileDigitsContainer* tileDigitsContainer,
+                              const TileBeamElemContainer* tileBeamElemContainer,
+                              TileDQstatus& dqstatus)
+{
+  dqstatus.setAllGood();
+  dqstatus.setRODBCID (ctx.eventID().bunch_crossing_id());
+
+  ATH_CHECK( doBeamElem (tileBeamElemContainer, dqstatus) );
+
+  if (rawChannelContainer != nullptr) {
+    if (tileDigitsContainer != nullptr) {
+      bool isCalib = false;
+      bool incomplete = false;
+      for (const TileDigitsCollection* coll : *tileDigitsContainer) {
+        incomplete |= (coll->size() < 48);
+        
+        if (coll->size() > 0) {
+          int dsize = (*(coll->begin()))->NtimeSamples();
+          if (4 < dsize && dsize < 15) { // don't use strange fragments
+            isCalib |= coll->isCalibMode();
+          }
+        }
+
+        int frag = coll->identify();
+        int partition = (frag >> 8);
+        int drawer = (frag & 0x3F);
+
+        std::vector < uint32_t > data = coll->getFragChipHeaderWords();
+        unsigned int dataSize = std::min(16u, (unsigned int) data.size());
+        for (unsigned int dmu = 0; dmu < dataSize; ++dmu) {
+          if (data[dmu] == 0xFFFFFFFF)
+            dqstatus.setEmptyEvent(partition, drawer, dmu, 0, 1);
+        }
+
+        data = coll->getFragChipHeaderWordsHigh();
+        dataSize = std::min(16u, (unsigned int) data.size());
+        for (unsigned int dmu = 0; dmu < dataSize; ++dmu) {
+          if (data[dmu] == 0xFFFFFFFF)
+            dqstatus.setEmptyEvent(partition, drawer, dmu, 1, 1);
+        }
+      }
+      dqstatus.setIncompleteDigits (incomplete);
+      dqstatus.setCalibMode (isCalib);
+      dqstatus.setBiGain (isCalib);
+    }
+
+    TileFragHash::TYPE RChType = rawChannelContainer->get_type();
+    if (RChType != TileFragHash::OptFilterDsp
+        && RChType != TileFragHash::OptFilterDspCompressed)
+    {
+      ATH_MSG_DEBUG("RawChannelContainer didn't come from BS - don't check DQ flags");
+      ATH_MSG_DEBUG("RChType = " << RChType);
+    }
+    else {
+      for (const TileRawChannelCollection *coll : *rawChannelContainer) {
+        ATH_MSG_VERBOSE("RCh collection 0x" << MSG::hex
+                       << coll->identify() << MSG::dec
+                       << " size=" << coll->size());
+
+        dqstatus.fillArrays(coll, tileDigitsContainer, 0);
+        dqstatus.fillArrays(coll, tileDigitsContainer, 1);
+      }
+      if (dqstatus.nonZeroCounter() == 0) {
+        ATH_MSG_DEBUG("all DQ elements are empty - don't check DQ flags");
+        dqstatus.setAllGood();
+      }
+      else {
+        ATH_MSG_DEBUG("BiGain mode: " << ((dqstatus.isBiGain()) ? "true" : "false"));
+      }
+    }
+  }
+
+  if (m_simulateTrips) {
+    ATHRNG::RNGWrapper* wrapper = m_athRNGSvc->getEngine (this, this->name());
+    wrapper->setSeed (this->name(), ctx);
+    CLHEP::HepRandomEngine* engine = wrapper->getEngine (ctx);
+    double rndmVec[TileCalibUtils::MAX_DRAWER];
+
+    for (unsigned int partition = 1; partition < TileCalibUtils::MAX_ROS; ++partition) {
+      CLHEP::RandFlat::shootArray (engine, TileCalibUtils::MAX_DRAWER, rndmVec);
+      std::vector<float> trips = m_tileBadChanTool->getTripsProbabilities(partition);
+      dqstatus.fillTrips(partition, trips, rndmVec, this->msg());
+    }
+  }
+
+  dqstatus.setFilled (true);
+  return StatusCode::SUCCESS;
+}
+
+
+/**
+ * @brief Process BeamElemContainer.
+ * @param tileBeamElemContainer The TileBeamElemContainer (may be null).
+ * @param dqstatus TileDQstatus object being filled.
+ */
+StatusCode
+TileDQstatusTool::doBeamElem (const TileBeamElemContainer* tileBeamElemContainer,
+                              TileDQstatus& dqstatus) const
+{
+  if (!tileBeamElemContainer) {
+    return StatusCode::SUCCESS;
+  }
+
+  uint32_t* cispar = dqstatus.cispar();
+
+  for (const TileBeamElemCollection* coll : *tileBeamElemContainer) {
+    int frag = coll->identify();
+
+    if (dqstatus.trigType() == 0 && coll->getLvl1Type() != 0) {
+      // take it from the ROD header
+      // make negative to distinguish from TileCal internal trig types
+      dqstatus.setTrigType (- coll->getLvl1Type());
+    }
+
+    switch (frag) {
+
+    case LASE_PTN_FRAG: {
+
+      TileBeamElemCollection::const_iterator beamItr = coll->begin();
+      TileBeamElemCollection::const_iterator lastBeam = coll->end();
+
+      if (beamItr != lastBeam) {
+        std::vector < uint32_t > digits = (*beamItr)->get_digits();
+
+        if (digits.size() > 0) {
+          uint32_t laserFlag = digits[0];
+          if (laserFlag & 0xFF00)
+            dqstatus.setTrigType (laserFlag >> 8);
+        }
+      }
+    }
+    break;
+
+    case DIGI_PAR_FRAG: {
+      dqstatus.setRODBCID (coll->getRODBCID());
+
+      for (const TileBeamElem* elem : *coll) {
+        HWIdentifier id = elem->adc_HWID();
+        std::vector < uint32_t > digits = elem->get_digits();
+        int cha = m_tileHWID->channel(id);
+
+        if (cha < 15) {
+          if (digits.size() > 0) {
+            cispar[cha] = digits[0];
+            ATH_MSG_VERBOSE("cispar [" << cha << "] = " << cispar[cha]);
+          }
+        }
+        else if (cha == 15) {
+          int siz = 15 + digits.size();
+          if (siz > 110)
+            siz = 110;
+          for (int i = 15; i < siz; ++i) {
+            cispar[i] = digits[i - 15];
+            ATH_MSG_VERBOSE("cispar [" << i << "] = " << cispar[i]);
+          }
+          switch (cispar[16]) {
+
+          case 0x02: {
+            int aux_ext = cispar[17];
+            cispar[17] = (aux_ext & 0x00ff); // dac
+            cispar[18] = (aux_ext >> 8) & 0x00ff; // 00
+            cispar[19] = (aux_ext >> 16) & 0x00ff; // 00
+            cispar[20] = (aux_ext >> 24) & 0x00ff; // small/large cap
+          }
+          break;
+
+          case 0x07: {
+            bool badpar = ((cispar[16] == cispar[17]) || (cispar[17] == cispar[18]));
+            int aux_ext = cispar[18];
+            cispar[18] = (aux_ext & 0x00ff) - 1; // pmt ext cispar starts from 1
+            cispar[19] = (aux_ext >> 8) & 0x00ff; // tower
+            cispar[20] = (aux_ext >> 16) & 0x00ff; // drawer
+
+            if (badpar || (aux_ext>>24)!=0 || cispar[18]>5 || cispar[19]>15 || cispar[20]>63) {
+              ATH_MSG_WARNING("bad cispar[16,17,18]: " << cispar[16] << " " << cispar[17] << " " << aux_ext
+                              << "  drawer,tower,pmt: " << cispar[20] << " " << cispar[19] << " " << (int)cispar[18]);
+              cispar[16] += 0x100; // flag bad events
+              cispar[18] = 5;
+              cispar[19] = 0xff;
+              cispar[20] = 0xff;
+            }
+
+            if (cispar[16] != cispar[17]) {
+              // Warning: nonportable.
+              union {
+                unsigned int i;
+                float f;
+              } chargeCnv;
+              chargeCnv.i = cispar[17];
+              cispar[17] = chargeCnv.f;
+            }
+          }
+          break;
+          }
+        }
+      }
+    }
+    break;
+
+    case LASER_OBJ_FRAG: {
+
+      dqstatus.setRODBCID (coll->getRODBCID());
+
+      // laspar isn't actually used by anything.
+      // Leave commented out for now.
+#if 0      
+      TileBeamElemCollection::const_iterator beamItr = (*collItr)->begin();
+      TileBeamElemCollection::const_iterator lastBeam = (*collItr)->end();
+
+      if (beamItr != lastBeam) { // one channel is expected, check that it's really there
+
+        std::vector < uint32_t > digits = (*beamItr)->get_digits();
+        int cha = std::min(32, (int) digits.size());
+
+        while (--cha >= 0) {
+          m_laspar[cha] = digits[cha];
+          ATH_MSG_VERBOSE("laspar [" << cha << "] = " << m_laspar[cha]);
+        }
+      }
+#endif
+    }
+    break;
+
+    case COIN_TRIG1_FRAG:
+    case COIN_TRIG2_FRAG:
+    case COIN_TRIG3_FRAG:
+    case COIN_TRIG4_FRAG:
+    case COIN_TRIG5_FRAG:
+    case COIN_TRIG6_FRAG:
+    case COIN_TRIG7_FRAG:
+    case COIN_TRIG8_FRAG: {
+      // coincTrig is not actually used by anything now.
+      // Leave commented out.
+#if 0
+      unsigned int board = frag - COIN_TRIG1_FRAG;
+      // make sure that we have enough space
+      if (board >= m_coincTrig.size()) {
+        m_coincTrig.resize(board + 1);
+      }
+
+      TileBeamElemCollection::const_iterator beamItr = (*collItr)->begin();
+      TileBeamElemCollection::const_iterator lastBeam = (*collItr)->end();
+
+      // loop over 4 integer words for one board
+      for (; beamItr != lastBeam; ++beamItr) {
+
+        HWIdentifier id = (*beamItr)->adc_HWID();
+        std::vector < uint32_t > digits = (*beamItr)->get_digits();
+        uint32_t amplitude = (digits.size() > 0) ? digits[0] : 0;
+        int cha = m_tileHWID->channel(id);
+
+        if (cha < 3) {
+          int idx = cha * 32;
+          for (int ibit = 0; ibit < 32; ++ibit) {
+            m_coincTrig[board].trig[idx++] = (amplitude >> ibit) & 1;
+          }
+        } else if (cha == 3) {
+          m_coincTrig[board].amp = amplitude;
+        }
+      }
+#endif
+    }
+    break;
+
+    default:
+    break;
+    }
+  }
+
+  return StatusCode::SUCCESS;
+}
diff --git a/TileCalorimeter/TileRecUtils/src/TileDQstatusTool.h b/TileCalorimeter/TileRecUtils/src/TileDQstatusTool.h
new file mode 100644
index 0000000000000000000000000000000000000000..7ed6dbd81ea02a1d0c40f7d9325cea1b15a73b3c
--- /dev/null
+++ b/TileCalorimeter/TileRecUtils/src/TileDQstatusTool.h
@@ -0,0 +1,87 @@
+// This file's extension implies that it's C, but it's really -*- C++ -*-.
+/*
+ * Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration.
+ */
+/**
+ * @file TileRecUtils/src/TileDQstatusTool.h
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Nov, 2018
+ * @brief Construct a TileDQstatus object.
+ */
+
+
+#ifndef TILERECUTILS_TILEDQSTATUSTOOL_H
+#define TILERECUTILS_TILEDQSTATUSTOOL_H
+
+
+#include "TileRecUtils/ITileDQstatusTool.h"
+#include "TileConditions/ITileBadChanTool.h"
+#include "AthenaBaseComps/AthAlgTool.h"
+#include "AthenaKernel/IAthRNGSvc.h"
+#include "GaudiKernel/ServiceHandle.h"
+class TileHWID;
+
+
+class TileDQstatusTool
+: public extends<AthAlgTool, ITileDQstatusTool>
+{
+public:
+  /**
+   * @brief Standard Gaudi tool constructor.
+   * @param type The name of the tool type.
+   * @param name The tool name.
+   * @param parent The tool's Gaudi parent.
+   */
+  TileDQstatusTool (const std::string& type,
+                    const std::string& name,
+                    const IInterface* parent);
+
+
+  /**
+   * @brief Gaudi initialize method.
+   */
+  virtual StatusCode initialize() override;
+
+
+  /**
+   * @brief Make a new TileDQstatus object.
+   * @param ctx Event context.
+   * @param rawChannelContainer The TileRawChannelContainer (may be null).
+   * @param tileDigitsContainer The TileDigitsContainer (may be null).
+   * @param tileBeamElemContainer The TileBeamElemContainer (may be null).
+   * @param[out] dqstatus TileDQstatus object to fill.
+   */
+  virtual
+  StatusCode
+  makeStatus (const EventContext& ctx,
+              const TileRawChannelContainer* rawChannelContainer,
+              const TileDigitsContainer* tileDigitsContainer,
+              const TileBeamElemContainer* tileBeamElemContainer,
+              TileDQstatus& dqstatus) override;
+
+private:
+  /**
+   * @brief Process BeamElemContainer.
+   * @param tileBeamElemContainer The TileBeamElemContainer (may be null).
+   * @param dqstatus TileDQstatus object being filled.
+   */
+  StatusCode doBeamElem (const TileBeamElemContainer* tileBeamElemContainer,
+                         TileDQstatus& dqstatus) const;
+
+
+  Gaudi::Property<bool> m_simulateTrips
+  {this, "SimulateTrips", false, "Simulate drawer trips (default=false)"};
+
+  ServiceHandle<IAthRNGSvc> m_athRNGSvc
+  {this, "AthRNGSvc", "AthRNGSvc", "Random number service"};
+
+  /// Tool which provides trips probabilities also
+  ToolHandle<ITileBadChanTool> m_tileBadChanTool;
+
+
+  /// Tile ID helper.
+  const TileHWID* m_tileHWID = nullptr;
+};
+
+
+#endif // not TILERECUTILS_TILEDQSTATUSTOOL_H
diff --git a/TileCalorimeter/TileRecUtils/src/components/TileRecUtils_entries.cxx b/TileCalorimeter/TileRecUtils/src/components/TileRecUtils_entries.cxx
index 5a61cd460e3f62c282b368da4919b7a00eabff8b..eed93cbeee308ef94d482bb51c4323e44ff854dc 100644
--- a/TileCalorimeter/TileRecUtils/src/components/TileRecUtils_entries.cxx
+++ b/TileCalorimeter/TileRecUtils/src/components/TileRecUtils_entries.cxx
@@ -25,6 +25,8 @@
 #include "../TileLaserObjectDumper.h"
 #include "../TileMuonReceiverDumper.h"
 #include "../TileRawChannelBuilderTest.h"
+#include "../TileDQstatusTool.h"
+#include "../TileDQstatusAlg.h"
 
 DECLARE_COMPONENT( TileRawChannelBuilderFlatFilter )
 DECLARE_COMPONENT( TileRawChannelBuilderFitFilter )
@@ -53,4 +55,5 @@ DECLARE_COMPONENT( TileL2Dumper )
 DECLARE_COMPONENT( TileLaserObjectDumper )
 DECLARE_COMPONENT( TileMuonReceiverDumper )
 DECLARE_COMPONENT( TileRawChannelBuilderTest )
-
+DECLARE_COMPONENT( TileDQstatusTool )
+DECLARE_COMPONENT( TileDQstatusAlg )
diff --git a/TileCalorimeter/TileRecUtils/test/TileDQstatusAlg_test.sh b/TileCalorimeter/TileRecUtils/test/TileDQstatusAlg_test.sh
new file mode 100755
index 0000000000000000000000000000000000000000..244fb877c06ffb42ff94a64c0a1caf39dce2ef62
--- /dev/null
+++ b/TileCalorimeter/TileRecUtils/test/TileDQstatusAlg_test.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+#
+# Script running the TileDQstatusAlg_test.py test with CTest.
+#
+
+# Run the job:
+athena.py TileRecUtils/TileDQstatusAlg_test.py
diff --git a/TileCalorimeter/TileRecUtils/test/TileDQstatusTool_test.sh b/TileCalorimeter/TileRecUtils/test/TileDQstatusTool_test.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9563acf52cf628063c5e431867e74f96a88978f4
--- /dev/null
+++ b/TileCalorimeter/TileRecUtils/test/TileDQstatusTool_test.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+#
+# Script running the TileDQstatusTool_test.py test with CTest.
+#
+
+# Run the job:
+athena.py TileRecUtils/TileDQstatusTool_test.py
diff --git a/TileCalorimeter/TileSimAlgs/TileSimAlgs/TileDigitsMaker.h b/TileCalorimeter/TileSimAlgs/TileSimAlgs/TileDigitsMaker.h
index 84526cc43d744fc9014945569364b6adcadc76c8..dbbdb3066ebfa321fcd0015e05f402978a5b5c0c 100644
--- a/TileCalorimeter/TileSimAlgs/TileSimAlgs/TileDigitsMaker.h
+++ b/TileCalorimeter/TileSimAlgs/TileSimAlgs/TileDigitsMaker.h
@@ -137,6 +137,8 @@ class TileDigitsMaker: public AthAlgorithm {
     bool m_tileThresh;     //!< If true => apply threshold to Digits
     double m_tileThreshHi; //!< Actual threshold value for high gain
     double m_tileThreshLo; //!< Actual threshold value for low gain
+    int m_allChannels;     //!< If set to 1 => always create all channels in output container
+                           //!< If set to 2 => always add noise to all missing channels in overlay
 
     std::vector<double> m_digitShapeHi; //!< High gain pulse shape
     int m_nShapeHi;                     //!< Number of bins in high gain pulse shape 
diff --git a/TileCalorimeter/TileSimAlgs/share/TileTTL1_jobOptions.py b/TileCalorimeter/TileSimAlgs/share/TileTTL1_jobOptions.py
index 5ed8283bdb2eda6171b317329afda4c64db9beff..4e40fd9f75e0b20f2e4e938a3994bccdae9cfbbc 100644
--- a/TileCalorimeter/TileSimAlgs/share/TileTTL1_jobOptions.py
+++ b/TileCalorimeter/TileSimAlgs/share/TileTTL1_jobOptions.py
@@ -1,14 +1,11 @@
 from AthenaCommon.AlgSequence import AlgSequence
 topSequence = AlgSequence()
 
-from TileSimAlgs.TileTTL1FromHitsGetter import *
+from TileSimAlgs.TileTTL1FromHitsGetter import TileTTL1FromHitsGetter
 theTileTTL1FromHitsGetter = TileTTL1FromHitsGetter()
 
-from TileSimAlgs.TileSimAlgsConf import *
-theTileHitToTTL1=TileHitToTTL1()
-
 from Digitization.DigitizationFlags import jobproperties
-theTileHitToTTL1.RndmSvc=jobproperties.Digitization.rndmSvc()
+topSequence.TileHitToTTL1.RndmSvc = jobproperties.Digitization.rndmSvc()
 jobproperties.Digitization.rndmSeedList.addSeed("Tile_HitToTTL1", 4789899, 989240512)
 
 from AthenaCommon.BeamFlags import jobproperties
diff --git a/TileCalorimeter/TileSimAlgs/src/TileDigitsMaker.cxx b/TileCalorimeter/TileSimAlgs/src/TileDigitsMaker.cxx
index f303d9a89e0796f6e9cd2d2e7542410ff63eb770..110e326fc018888df55b5c34fb2ba7176b357108 100644
--- a/TileCalorimeter/TileSimAlgs/src/TileDigitsMaker.cxx
+++ b/TileCalorimeter/TileSimAlgs/src/TileDigitsMaker.cxx
@@ -113,6 +113,7 @@ TileDigitsMaker::TileDigitsMaker(std::string name, ISvcLocator* pSvcLocator)
   declareProperty("TileBadChanTool",m_tileBadChanTool);
   declareProperty("MaskBadChannels",m_maskBadChannels = false,"Remove channels tagged bad (default=false)");
   declareProperty("DoHSTruthReconstruction",m_doDigiTruth = true);
+  declareProperty("AllChannels", m_allChannels = -1, "Create all channels, use 0 or 1 or 2 (default=-1 - unset)");
 }
 
 TileDigitsMaker::~TileDigitsMaker() {
@@ -225,6 +226,7 @@ StatusCode TileDigitsMaker::initialize() {
     m_tileCoherNoise = false;
     m_tileThresh = false;
     m_calibRun = false;
+    if (m_allChannels<0) m_allChannels = 2; // create all channels with noise in overlay by default
 
     ATH_MSG_INFO( "Pileup and/or noise added by overlaying digits of random events");
 
@@ -238,6 +240,8 @@ StatusCode TileDigitsMaker::initialize() {
 
   } else {
     m_beamInfo.disable();
+    if (m_allChannels<0) m_allChannels = 0;                 // do not create all channels by default
+    if (m_tileNoise || m_tileCoherNoise) m_allChannels = 2; // unless noise is set to True
     if (msgLvl(MSG::INFO)) {
       msg(MSG::INFO) << "Obtained info from TileInfo" << endmsg;
       msg(MSG::INFO) << "tileNoise=" << ((m_tileNoise) ? "true" : "false")
@@ -250,6 +254,13 @@ StatusCode TileDigitsMaker::initialize() {
     }
   }
 
+  if (m_allChannels>1)
+    ATH_MSG_INFO( "Create all channels with noise: true");
+  else if (m_allChannels>0)
+    ATH_MSG_INFO( "Create all channels without noise: true");
+  else
+    ATH_MSG_INFO( "Create all channels: false");
+
   if (m_calibRun) {
     m_filteredDigitsContainerKey = "";
   }
@@ -561,10 +572,11 @@ StatusCode TileDigitsMaker::execute() {
     /* set to be active.  If not, set them all to be inactive (gain=-1).  */
     /* Only those which contain actual hits will be set active when the   */
     /* hits are read in.                                                  */
-    int igainch = -1;
-    if (m_tileNoise || m_tileCoherNoise || m_rndmEvtOverlay) {
+    int igainch = (m_allChannels) ? TileID::HIGHGAIN : -1;
+    if (m_rndmEvtOverlay) {
+      memset(over_gain, -1, sizeof(over_gain));
+    } else if (m_tileNoise || m_tileCoherNoise) {
       igainch = TileID::HIGHGAIN;
-      if (m_rndmEvtOverlay) memset(over_gain, -1, sizeof(over_gain));
     }
     for (int ich = 0; ich < nchMax; ++ich) {
       igain[ich] = igainch;
@@ -830,7 +842,7 @@ StatusCode TileDigitsMaker::execute() {
       bool tileNoiseHG(false),tileNoiseLG(false);
 
       if (overNoiseHG) {
-        overNoiseHG &= m_rndmEvtOverlay; // set it to true only for overlay
+        overNoiseHG &= (m_rndmEvtOverlay && m_allChannels>1); // set it to true only for overlay
         tileNoiseHG = m_tileNoise || overNoiseHG;
 
         pedSimHi = m_tileToolNoiseSample->getPed(idhash, ich, TileID::HIGHGAIN);
@@ -850,7 +862,7 @@ StatusCode TileDigitsMaker::execute() {
       }
       
       if (overNoiseLG) {
-        overNoiseLG &= m_rndmEvtOverlay; // set it to true only for overlay
+        overNoiseLG &= (m_rndmEvtOverlay && m_allChannels>1); // set it to true only for overlay
         tileNoiseLG = m_tileNoise || overNoiseLG;
 
         pedSimLo = m_tileToolNoiseSample->getPed(idhash, ich, TileID::LOWGAIN);
@@ -883,8 +895,8 @@ StatusCode TileDigitsMaker::execute() {
       double * pDigitSamplesLo = m_drawerBufferLo[ich];
       double * pDigitSamplesHi_DigiHSTruth = nullptr;
       double * pDigitSamplesLo_DigiHSTruth = nullptr;
-			if(m_doDigiTruth) pDigitSamplesHi_DigiHSTruth = m_drawerBufferHi_DigiHSTruth[ich];
-			if(m_doDigiTruth) pDigitSamplesLo_DigiHSTruth = m_drawerBufferLo_DigiHSTruth[ich];
+      if(m_doDigiTruth) pDigitSamplesHi_DigiHSTruth = m_drawerBufferHi_DigiHSTruth[ich];
+      if(m_doDigiTruth) pDigitSamplesLo_DigiHSTruth = m_drawerBufferLo_DigiHSTruth[ich];
 
       ATH_MSG_DEBUG(" Channel " << ros << '/' << drawer << '/' << ich 
                      << " sampHi=" << pDigitSamplesHi[m_iTrig]
@@ -1005,8 +1017,8 @@ StatusCode TileDigitsMaker::execute() {
           overNoiseHG = false;
 
           if (msgLvl(MSG::VERBOSE)) {
-              msg(MSG::VERBOSE) << "Channel " << ros << '/' << drawer << '/' << ich << "/" << igain[ich]
-                                << "  Switch to low gain  Amp(lo)=" << digitsBuffer[m_iTrig] << endmsg;
+            msg(MSG::VERBOSE) << "Channel " << ros << '/' << drawer << '/' << ich << "/" << igain[ich]
+                              << "  Switch to low gain  Amp(lo)=" << digitsBuffer[m_iTrig] << endmsg;
             if (overNoiseLG) {
               if (sigmaLo_Norm<1.0) {
                 msg(MSG::VERBOSE) << "LG Ped & noise from DB "
@@ -1272,8 +1284,7 @@ StatusCode TileDigitsMaker::FillDigitCollection(TileHitContainer::const_iterator
   double ech_tot[nchMax];
   //double ech_int[nchMax];
 
-    ATH_MSG_VERBOSE( "Dumping 2G noise parameters");
-    IdContext drawer_context = m_tileHWID->drawer_context();
+  IdContext drawer_context = m_tileHWID->drawer_context();
 
   /* Set up buffers for handling information in a single collection. */
   IdentifierHash idhash;
@@ -1318,7 +1329,7 @@ StatusCode TileDigitsMaker::FillDigitCollection(TileHitContainer::const_iterator
 
     /* Set gain=high and get digitSamples and calibration for this channel. */
     if (igain[ich] < 0)
-    igain[ich] = TileID::HIGHGAIN;
+      igain[ich] = TileID::HIGHGAIN;
     // conversion from scintillator energy to total cell energy (sampling fraction)  
     double hit_calib = m_tileInfo->HitCalib(pmt_id);
 
@@ -1409,7 +1420,7 @@ StatusCode TileDigitsMaker::FillDigitCollection(TileHitContainer::const_iterator
       }
 
       if (msgLvl(MSG::VERBOSE)) {
-      msg(MSG::VERBOSE) << "subHit:  ch=" << ich
+        msg(MSG::VERBOSE) << "subHit:  ch=" << ich
                           << " e_hit=" << e_hit
                           << " t_hit=" << t_hit
                           << " SamplesHi[" << m_iTrig << "]=" << pDigitSamplesHi[m_iTrig]
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h
index 0102cb6a2df27fca1477f2a3099a112a5870a7cb..a836a909b1ecb42f936393516b212e2ab477dd50 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Decoder.h
@@ -255,7 +255,7 @@ class TileROD_Decoder: public AthAlgTool {
      The phase is encoded in ns. <p>
      The subfragment type 0x4 contains the reconstructed parameters from the
      48 read-out channels of a tilecal module. */
-    void unpack_frag4(uint32_t version, const uint32_t* p, pRwChVec & pChannel);
+    void unpack_frag4(uint32_t version, unsigned int unit, const uint32_t* p, pRwChVec & pChannel);
 
     /** unpack_frag5 decodes tile subfragment type 0x4. This subfragment contains the
      reconstructed amplitude and phase from the tilecal digitized pulse and a
@@ -306,7 +306,7 @@ class TileROD_Decoder: public AthAlgTool {
      The phase is encoded in ns. <p>
      The subfragment type 0x4 contains the reconstructed parameters from the
      48 read-out channels of a tilecal module. */
-    void unpack_frag4HLT(uint32_t version, const uint32_t* p, pFRwChVec & pChannel);
+    void unpack_frag4HLT(uint32_t version, unsigned int unit, const uint32_t* p, pFRwChVec & pChannel);
 
     /** unpack_frag5HLT decodes tile subfragment type 0x5 for the high level trigger (HLT).
      This subfragment contains the
@@ -983,7 +983,6 @@ void TileROD_Decoder::fillCollection(const ROBData * rob, COLLECTION & v) {
           if (m_useFrag4) {
             m_bsflags = idAndType & 0xFFFF0000; // ignore frag num, keep all the rest
             int unit = (idAndType & 0xC0000000) >> 30;
-            m_rc2bytes4.setUnit(unit);
 
             int DataType = (idAndType & 0x30000000) >> 28;
 
@@ -1010,7 +1009,7 @@ void TileROD_Decoder::fillCollection(const ROBData * rob, COLLECTION & v) {
               m_rChUnit = (TileRawChannelUnit::UNIT) (unit); // Offline units in simulated data
             }
 
-            unpack_frag4(version, p, pChannel);
+            unpack_frag4(version, unit, p, pChannel);
           }
           break;
 
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Encoder.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Encoder.h
index e2ba74d2b85ab2b1e53372d131fff9bf0433d5f0..1d9ac11be66ced4e0d3f32a81a948cb4b50e5109 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Encoder.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileROD_Encoder.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TILEBYTESTREAM_TILEROD_ENCODER_H
@@ -148,6 +148,7 @@ class TileROD_Encoder {
     bool m_verbose;
     unsigned int m_type;
     unsigned int m_unitType;
+    unsigned int m_rChUnit;
 
     mutable Athena::MsgStreamMember m_msg;
     int m_maxChannels;
diff --git a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes4.h b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes4.h
index 95596c7b7dfa1daee712004f6998fe1cf1549310..587066214e3f41b615318566e391aee907f25442 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes4.h
+++ b/TileCalorimeter/TileSvc/TileByteStream/TileByteStream/TileRawChannel2Bytes4.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TILEBYTESTREAM_TILERAWCHANNEL2BYTES4_H 
@@ -66,41 +66,30 @@ class TileFastRawChannel;
 class TileRawChannel2Bytes4 {
   public:
     TileRawChannel2Bytes4()
-        : m_verbose(false), m_rChUnit(0) {
+    {
     }
 
     /** Adds an entry to the vector<int> v for this TileRawChannel.
      The entry is the single 32-bit word generated using TileRawChannel2Bytes4::getWord() method.<p>
      Returns 1 which is the number of entries added to the vector. */
-    int getBytes(const TileFastRawChannel* rc, int gain, std::vector<unsigned int>& v);
+    int getBytes(const TileFastRawChannel& rc, unsigned int unit,
+                 int gain, std::vector<unsigned int>& v) const;
     /** Returns a single 32-bit word which encodes the TileRawChannel information
      (gain,amplitude,phase and quality) for a single read-out channel. */
-    unsigned int getWord(const TileFastRawChannel* rc, int gain);
+    unsigned int getWord(const TileFastRawChannel& rc, unsigned int unit, int gain) const;
 
     /** Returns the gain unpacked from the single 32-bit word w. */
     inline int gain(unsigned int w) const;
     /** Returns the amplitude in the corresponding units, unpacked from the single 32-bit word w. */
-    inline float amplitude(unsigned int w) const;
+    inline float amplitude(unsigned int w, unsigned int unit) const;
     /** Returns the phase of the pulse in ns, unpacked from the single 32-bit word w. */
     inline float time(unsigned int w) const;
     /** Returns the quality factor unpacked from the single 32-bit word w. */
     inline float quality(unsigned int w) const;
 
     /** Sets verbose mode true or false. */
-    inline void setVerbose(bool verbose) {
-      m_verbose = verbose;
+    inline void setVerbose(bool /*verbose*/) {
     }
-
-    /** Sets the energy units value (TileRawChannel2Bytes4::m_rChUnit). */
-    inline void setUnit(unsigned int unit) {
-      m_rChUnit = unit;
-    }
-
-  private:
-    /** Verbose flag. */
-    bool m_verbose;
-    /** Energy units. */
-    unsigned int m_rChUnit;
 };
 
 // inline functions
@@ -110,11 +99,11 @@ inline int TileRawChannel2Bytes4::gain(unsigned int w) const {
   return g;
 }
 
-inline float TileRawChannel2Bytes4::amplitude(unsigned int w) const {
+inline float TileRawChannel2Bytes4::amplitude(unsigned int w, unsigned int unit) const {
   int g = (w >> GAIN_SHIFT4) & GAIN_RANGE4;
   float a = (((w >> AMPLITUDE_SHIFT4) & AMPLITUDE_RANGE4) - AMPLITUDE_OFFSET4[g])
-      / AMPLITUDE_FACTOR4[m_rChUnit];
-  if (m_rChUnit != 0 && g == 1) a = a / 64.0F;
+      / AMPLITUDE_FACTOR4[unit];
+  if (unit != 0 && g == 1) a = a / 64.0F;
   return a;
 }
 
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx
index 509bbd900aa65454d285ef97c999b357a9ca0078..f736700fd5859ee5c4225be9b843f4c6628fbc6d 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx
@@ -153,7 +153,6 @@ int TileROD_Decoder::getErrorCounter() {
 StatusCode TileROD_Decoder::initialize() {
   
   m_rc2bytes5.setVerbose(m_verbose);
-  m_rc2bytes4.setVerbose(m_verbose);
   m_rc2bytes2.setVerbose(m_verbose);
   m_rc2bytes.setVerbose(m_verbose);
   m_d2Bytes.setVerbose(m_verbose);
@@ -897,7 +896,9 @@ void TileROD_Decoder::unpack_frag3(uint32_t /* version */, const uint32_t* p,
   return;
 }
 
-void TileROD_Decoder::unpack_frag4(uint32_t /* version */, const uint32_t* p,
+void TileROD_Decoder::unpack_frag4(uint32_t /* version */,
+                                   unsigned int unit,
+                                   const uint32_t* p,
                                    pRwChVec & pChannel) {
   // first word is frag size
   int count = *(p);
@@ -928,7 +929,7 @@ void TileROD_Decoder::unpack_frag4(uint32_t /* version */, const uint32_t* p,
     if (w != 0) { // skip invalid channels
       if (all00) all00 = TileFragStatus::ALL_OK;
       rc = new TileRawChannel(adcID
-                              , m_rc2bytes4.amplitude(w)
+                              , m_rc2bytes4.amplitude(w, unit)
                               , m_rc2bytes4.time(w)
                               , m_rc2bytes4.quality(w));
     } else {
@@ -1864,7 +1865,7 @@ void TileROD_Decoder::unpack_frag14(uint32_t /* version */, const uint32_t* p,
   nDrawer[0] = frag & 0x3F;
   nDrawer[1] = (frag & 0xFC0) >> 6;
   
-  p += 2; // 2 words so far
+  p += 2; // 2 words somethingm far
   
   std::vector<float> sumE(1);
   
@@ -3296,7 +3297,6 @@ uint32_t TileROD_Decoder::fillCollectionHLT(const ROBData * rob, TileCellCollect
           if (!m_ignoreFrag4HLT && !fragFound) {
             fragFound = true;
             int unit = (idAndType & 0xC0000000) >> 30;
-            m_rc2bytes4.setUnit(unit);
             
             int DataType = (idAndType & 0x30000000) >> 28;
             
@@ -3314,7 +3314,7 @@ uint32_t TileROD_Decoder::fillCollectionHLT(const ROBData * rob, TileCellCollect
               m_rChUnit = (TileRawChannelUnit::UNIT) (unit); // Offline units in simulated data
             }
             
-            unpack_frag4HLT(version, p, m_pRwChVec);
+            unpack_frag4HLT(version, unit, p, m_pRwChVec);
           }
           break;
           
@@ -3680,7 +3680,9 @@ void TileROD_Decoder::unpack_frag3HLT(uint32_t /* version */, const uint32_t* p,
   return;
 }
 
-void TileROD_Decoder::unpack_frag4HLT(uint32_t /* version */, const uint32_t* p,
+void TileROD_Decoder::unpack_frag4HLT(uint32_t /* version */,
+                                      unsigned int unit,
+                                      const uint32_t* p,
                                       pFRwChVec & pChannel) {
   // first word is frag size
   int count = *(p);
@@ -3693,7 +3695,7 @@ void TileROD_Decoder::unpack_frag4HLT(uint32_t /* version */, const uint32_t* p,
     if (w != 0) { // skip invalid channels
       pChannel[ch]->set(ch
                         , m_rc2bytes4.gain(w)
-                        , m_rc2bytes4.amplitude(w)
+                        , m_rc2bytes4.amplitude(w, unit)
                         , m_rc2bytes4.time(w)
                         , m_rc2bytes4.quality(w));
       
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Encoder.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Encoder.cxx
index 96350c5f1eabdb172219f56b3c13edf6a128f299..fb6067863d26a3b1f652cccc51b56b4039d3b2fd 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Encoder.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Encoder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // Implementation of TileROD_Encoder class 
@@ -25,7 +25,8 @@ TileROD_Encoder::TileROD_Encoder():
   m_tileHWID(0), 
   m_verbose(false), 
   m_type(0), 
-  m_unitType(0), 
+  m_unitType(0),
+  m_rChUnit(0),
   m_msg("TileROD_Encoder"), 
   m_maxChannels(TileCalibUtils::MAX_CHAN) {
 }
@@ -86,7 +87,7 @@ void TileROD_Encoder::setTypeAndUnit(TileFragHash::TYPE type, TileRawChannelUnit
     // 24,25,26 - OF type
     // next 8 bits - frag type ( 2,3,4, ... )
     m_unitType = (rChUnit << 30) | (3 << 28) | (0 << 27) | (OFType << 24) | (m_type << 16);
-    m_rc2bytes4.setUnit(rChUnit);
+    m_rChUnit = rChUnit;
   } else if (m_type == 5) {
     // 8 upper bits:
     // UULLLTTT
@@ -416,7 +417,7 @@ void TileROD_Encoder::fillROD4(std::vector<uint32_t>& v) {
     int chan = rc->channel();
     int gain = rc->adc();
     if (chan < m_maxChannels) {
-      v[start + chan] = m_rc2bytes4.getWord(rc, gain);
+      v[start + chan] = m_rc2bytes4.getWord(*rc, m_rChUnit, gain);
     }
 
   } // end of all TileRawChannel
diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes4.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes4.cxx
index c3ee735a83a1c9ef696ea9dadd29807820f01bf8..8efa7835f43c9b326a8bb1274273313c6c755cfe 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes4.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileRawChannel2Bytes4.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TileByteStream/TileRawChannel2Bytes4.h" 
@@ -7,28 +7,33 @@
 #include <algorithm> 
 #include <cmath>
 
-int TileRawChannel2Bytes4::getBytes(const TileFastRawChannel* rc, int gain,
-    std::vector<unsigned int>& v) {
+int TileRawChannel2Bytes4::getBytes(const TileFastRawChannel& rc,
+                                    unsigned int unit,
+                                    int gain,
+                                    std::vector<unsigned int>& v) const
+{
   // pack raw data into one 32-bits integer
-  v.push_back(getWord(rc, gain));
+  v.push_back(getWord(rc, unit, gain));
 
   return 1; // one int added to vector
 }
 
-unsigned int TileRawChannel2Bytes4::getWord(const TileFastRawChannel* rc, int gain) {
-
+unsigned int TileRawChannel2Bytes4::getWord(const TileFastRawChannel& rc,
+                                            unsigned int unit,
+                                            int gain) const
+{
   // pack raw data into one 32-bits integer
-  float tmp = rc->amplitude();
-  if (m_rChUnit != 0 && gain == 1) tmp = tmp * 64.0F;
+  float tmp = rc.amplitude();
+  if (unit != 0 && gain == 1) tmp = tmp * 64.0F;
   unsigned int a = std::max(0, std::min(AMPLITUDE_RANGE4
-      , (int) lround(tmp * AMPLITUDE_FACTOR4[m_rChUnit] + AMPLITUDE_OFFSET4[gain])));
+      , (int) lround(tmp * AMPLITUDE_FACTOR4[unit] + AMPLITUDE_OFFSET4[gain])));
 
   unsigned int t = std::max(0,std::min(TIME_RANGE4
-      , (int) lround(rc->time() * TIME_FACTOR4 + TIME_OFFSET4)));
+      , (int) lround(rc.time() * TIME_FACTOR4 + TIME_OFFSET4)));
 
   unsigned int q = std::max(0,
       std::min(QUALITY_RANGE4_NOFLAG,
-          (int) lround(rc->quality() * QUALITY_FACTOR4 + QUALITY_OFFSET4)));
+          (int) lround(rc.quality() * QUALITY_FACTOR4 + QUALITY_OFFSET4)));
 
   unsigned int w = (a << AMPLITUDE_SHIFT4) | (t << TIME_SHIFT4) | (q << QUALITY_SHIFT4);
 
diff --git a/TileCalorimeter/TileSvc/TileByteStream/test/TileRawChannel2Bytes4_test.cxx b/TileCalorimeter/TileSvc/TileByteStream/test/TileRawChannel2Bytes4_test.cxx
index b0dd9315c29a8023da2ea09d3965609a0165c444..10990ad3302e62ac4f21ed727dfa354b55948f7b 100644
--- a/TileCalorimeter/TileSvc/TileByteStream/test/TileRawChannel2Bytes4_test.cxx
+++ b/TileCalorimeter/TileSvc/TileByteStream/test/TileRawChannel2Bytes4_test.cxx
@@ -21,22 +21,20 @@ void test1()
   TileRawChannel2Bytes4 rch;
   TileFastRawChannel fch;
   fch.set (0, 0, 0, 120.5, 1.25, 5);
-  rch.setUnit (0);
-  unsigned int w = rch.getWord (&fch, 0);
+  unsigned int w = rch.getWord (fch, 0, 0);
   assert (w == (2440<<16) + (1044<<5) + 5);
   assert (rch.gain(w) == 0);
-  assert (rch.amplitude(w) == 120.5);
+  assert (rch.amplitude(w, 0) == 120.5);
   assert (rch.time(w) == 1.25);
   assert (rch.quality(w) == 5);
 
   std::vector<unsigned int> v;
   fch.set (0, 0, 0, -0.5, 1.25, 3);
-  rch.setUnit (1);
-  assert (rch.getBytes (&fch, 1, v) == 1);
+  assert (rch.getBytes (fch, 1, 1, v) == 1);
   assert (v.size() == 1);
   assert (v[0] == (1024u<<16) + (1044u<<5) + 3u + (1u<<31));
   assert (rch.gain(v[0]) == 1);
-  assert (rch.amplitude(v[0]) == -0.5);
+  assert (rch.amplitude(v[0], 1) == -0.5);
   assert (rch.time(v[0]) == 1.25);
   assert (rch.quality(v[0]) == 3);
 }
diff --git a/TileCalorimeter/TileTBRec/TileTBRec/TileTBDump.h b/TileCalorimeter/TileTBRec/TileTBRec/TileTBDump.h
index b4f1f84da438a24324e09bb42230543bb68739e5..4fabe352d2d0e57664e84a41062fbd780ada05f1 100755
--- a/TileCalorimeter/TileTBRec/TileTBRec/TileTBDump.h
+++ b/TileCalorimeter/TileTBRec/TileTBRec/TileTBDump.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //****************************************************************************
@@ -203,7 +203,9 @@ class TileTBDump: public AthAlgorithm {
                          , unsigned int version, int verbosity, int* ngain, int* nchannel);
 
     int tile_unpack_reco_calib(T_RodDataFrag* frag, T_TileRecoCalib* recocalib, int nchannel_max
-                               , unsigned int version, int verbosity, int* ngain, int* nchannel); // Baxo
+                               , unsigned int version
+                               , unsigned int unit
+                               , int verbosity, int* ngain, int* nchannel); // Baxo
 
     int tile_unpack_quality(T_RodDataFrag* frag, T_TileRecoQuality & DQword);
 
diff --git a/TileCalorimeter/TileTBRec/src/TileTBDump.cxx b/TileCalorimeter/TileTBRec/src/TileTBDump.cxx
index 0e87be69622e983913a486758cb0dc12024f14a3..a64e8fec7c6a36e63488a27d57042fd260bcd846 100755
--- a/TileCalorimeter/TileTBRec/src/TileTBDump.cxx
+++ b/TileCalorimeter/TileTBRec/src/TileTBDump.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //*****************************************************************************
@@ -1549,8 +1549,7 @@ void TileTBDump::dump_digi(unsigned int subdet_id, const uint32_t* roddata, unsi
 
           case 4: // fragment with gain/amp/time/bad/quality in 32 bit words
             m_unit = unit;
-            m_rc2bytes4.setUnit(unit);
-            tile_unpack_reco_calib(frag[f], recocalib, MAX_DIGI_CHAN, version, verbosity, &ngain,
+            tile_unpack_reco_calib(frag[f], recocalib, MAX_DIGI_CHAN, version, unit, verbosity, &ngain,
                 &nchan);
 
             std::cout << "\nReco calibrated energy fragment 0x" << std::hex  << id << std::dec << ", " << size << " words found:"
@@ -2025,6 +2024,7 @@ int TileTBDump::tile_unpack_reco(T_RodDataFrag *frag, T_TileRecoChannel * channe
 /*--------------------------------------------------------------------------*/
 int TileTBDump::tile_unpack_reco_calib(T_RodDataFrag* frag, T_TileRecoCalib* recocalib
                                        , int nchannel_max, unsigned int /* version */
+                                       , unsigned int unit
                                        , int /* verbosity */, int *ngain, int *nchannel) {// Baxo
     /*--------------------------------------------------------------------------*/
 
@@ -2043,7 +2043,7 @@ int TileTBDump::tile_unpack_reco_calib(T_RodDataFrag* frag, T_TileRecoCalib* rec
     recocalib[ch].time = (w >> TIME_SHIFT4) & TIME_RANGE4;
     recocalib[ch].bad = ((w >> QUALITY_SHIFT4) & QUALITY_RANGE4 & 0x10) >> 4;
     recocalib[ch].quality = ((w >> QUALITY_SHIFT4) & QUALITY_RANGE4 & 0xF);
-    recocalib[ch].d_amp = m_rc2bytes4.amplitude(w);
+    recocalib[ch].d_amp = m_rc2bytes4.amplitude(w, unit);
     recocalib[ch].d_time = m_rc2bytes4.time(w);
     recocalib[ch].d_quality = m_rc2bytes4.quality(w);
   }
diff --git a/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py b/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py
index e4c1ca199d59e45395df024661548bc8b9124298..c462bd0bc1054b7b8c65aad930d6471bb5391cdc 100644
--- a/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py
+++ b/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py
@@ -77,7 +77,12 @@ pmon_properties.PerfMonFlags.doMonitoring=True
 pmon_properties.PerfMonFlags.doSemiDetailedMonitoring=True
 
 
-
+# Conditions sequence for Athena MT
+from AthenaCommon.AlgSequence import AthSequencer
+condSeq = AthSequencer("AthCondSeq")
+if not hasattr(condSeq, "BeamSpotCondAlg"):
+   from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg
+   condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" )
 
 
 #####################Back to Skeleton.EVGENtoHIT.py######################
diff --git a/Tools/Tier0ChainTests/test/test_expressstream_1_run276689_collisions.sh b/Tools/Tier0ChainTests/test/test_expressstream_1_run276689_collisions.sh
index 14362be5b028d15dbcedce50fb391d1b7e5961a5..a89f74c2d232b2567a524ec8a6ceb8d82de1f9d0 100755
--- a/Tools/Tier0ChainTests/test/test_expressstream_1_run276689_collisions.sh
+++ b/Tools/Tier0ChainTests/test/test_expressstream_1_run276689_collisions.sh
@@ -2,6 +2,11 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
 Reco_tf.py  --outputHISTFile=myMergedMonitoring_express_0.root --AMI=f628 --maxEvents=25 --outputESDFile=myESD_express_0.pool.root --outputAODFile=myAOD_express_0.AOD.pool.root --outputTAGFile=myTAG_express_0.root --ignoreErrors=False --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0220._SFO-ALL._0001.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0221._SFO-ALL._0001.1 --imf False
 echo "art-result: $?"
diff --git a/Tools/Tier0ChainTests/test/test_expressstream_2_run276689_collisions.sh b/Tools/Tier0ChainTests/test/test_expressstream_2_run276689_collisions.sh
index 819407d2a67bfbddf064f2cd6a30177fc1c77367..d5205555cf3e3bbdde3830cb825bc13386959178 100755
--- a/Tools/Tier0ChainTests/test/test_expressstream_2_run276689_collisions.sh
+++ b/Tools/Tier0ChainTests/test/test_expressstream_2_run276689_collisions.sh
@@ -2,6 +2,11 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
 Reco_tf.py  --outputHISTFile=myMergedMonitoring_express_1.root --AMI=f628 --maxEvents=25 --outputESDFile=myESD_express_1.pool.root --outputAODFile=myAOD_express_1.AOD.pool.root --outputTAGFile=myTAG_express_1.root --ignoreErrors=False --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0222._SFO-ALL._0001.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0223._SFO-ALL._0001.1 --imf False
 echo "art-result: $?"
diff --git a/Tools/Tier0ChainTests/test/test_expressstream_3_run276689_collisions.sh b/Tools/Tier0ChainTests/test/test_expressstream_3_run276689_collisions.sh
index f017940c238f84938710feb4f6ae3c2a77e318c3..08e9a5c364201eeeb1c69b1698122678596869ce 100755
--- a/Tools/Tier0ChainTests/test/test_expressstream_3_run276689_collisions.sh
+++ b/Tools/Tier0ChainTests/test/test_expressstream_3_run276689_collisions.sh
@@ -2,6 +2,11 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
 Reco_tf.py  --outputHISTFile=myMergedMonitoring_express_2.root --AMI=f628 --maxEvents=300 --outputESDFile=myESD_express_2.pool.root --outputAODFile=myAOD_express_2.AOD.pool.root --outputTAGFile=myTAG_express_2.root --ignoreErrors=False --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0224._SFO-ALL._0001.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0225._SFO-ALL._0001.1 --imf False
 echo "art-result: $?"
diff --git a/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions.sh b/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions.sh
index 97bf8642a337d68893840c2e15e5fd35351a13e6..7b4f2853bccb85115988f4c79ee093cadba1f28f 100755
--- a/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions.sh
+++ b/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions.sh
@@ -2,6 +2,11 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
 Reco_tf.py  --outputHISTFile=myMergedMonitoring_express_3.root --AMI=f628 --maxEvents=30 --outputESDFile=myESD_express_3.pool.root --outputAODFile=myAOD_express_3.AOD.pool.root --outputTAGFile=myTAG_express_3.root --ignoreErrors=False --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0226._SFO-ALL._0001.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0227._SFO-ALL._0001.1 --imf False
 echo "art-result: $?"
diff --git a/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions_rawtoall.sh b/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions_rawtoall.sh
index bd6ed04ebe7ff4e20899251881dc318dcc59c67f..ab608ccfa34848d38f70ccb115ed0b7923b706ee 100755
--- a/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions_rawtoall.sh
+++ b/Tools/Tier0ChainTests/test/test_expressstream_4_run276689_collisions_rawtoall.sh
@@ -2,6 +2,11 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
 Reco_tf.py  --outputHISTFile=myMergedMonitoring_express_3.root --AMI=f628 --maxEvents=30 --outputESDFile=myESD_express_3.pool.root --outputAODFile=myAOD_express_3.AOD.pool.root --outputTAGFile=myTAG_express_3.root --ignoreErrors=False --steering=doRAWtoALL --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0226._SFO-ALL._0001.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_13TeV.00276689.express_express.merge.RAW._lb0227._SFO-ALL._0001.1 --imf False
 echo "art-result: $?"
diff --git a/Tools/Tier0ChainTests/test/test_q220.sh b/Tools/Tier0ChainTests/test/test_q220.sh
index 366709a60ac512147639de53d0e1b7189ad6a19d..bd2d1be252bbd6dcc2a31b129c264445e01a0f6d 100755
--- a/Tools/Tier0ChainTests/test/test_q220.sh
+++ b/Tools/Tier0ChainTests/test/test_q220.sh
@@ -2,6 +2,11 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
 Reco_tf.py --AMI=q220 --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_cos.00251363.physics_IDCosmic.merge.RAW._lb0057._SFO-ALL._0001.1 --imf False
 echo "art-result: $?"
diff --git a/Tools/Tier0ChainTests/test/test_q220_mp.sh b/Tools/Tier0ChainTests/test/test_q220_mp.sh
index ea6e2a0a9feede23025e307c82cefae22f56451e..6a6a2fa90256e562fbbe974d431336c4e407f57d 100755
--- a/Tools/Tier0ChainTests/test/test_q220_mp.sh
+++ b/Tools/Tier0ChainTests/test/test_q220_mp.sh
@@ -2,6 +2,11 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
-Reco_tf.py --AMI=q220 --athenaopts='--nprocs=2' --maxEvents=100 --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_cos.00251363.physics_IDCosmic.merge.RAW._lb0057._SFO-ALL._0001.1
-
+Reco_tf.py --AMI=q220 --athenaopts='--nprocs=2' --maxEvents=100 --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root
+echo "art-result: $? Reco"
\ No newline at end of file
diff --git a/Tools/Tier0ChainTests/test/test_q221.sh b/Tools/Tier0ChainTests/test/test_q221.sh
index 8d61a6c03e4b2b0c9c08d1f9fac775285e8f620f..030db729e40df294869bb7e4934c37c35832d48e 100755
--- a/Tools/Tier0ChainTests/test/test_q221.sh
+++ b/Tools/Tier0ChainTests/test/test_q221.sh
@@ -2,6 +2,11 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
 Reco_tf.py --AMI=q221 --outputRDOFile=myRDO.pool.root --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputHITSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/mc15_13TeV.410500.PowhegPythia8EvtGen_A14_ttbar_hdamp172p5_nonallhad.simul.HITS.e4797_s2726.50events.pool.root --imf False
 echo "art-result: $?"
diff --git a/Tools/Tier0ChainTests/test/test_q221_mp.sh b/Tools/Tier0ChainTests/test/test_q221_mp.sh
index 9a71a83870439893009aabf75b35930626b8d843..81e98aa1d2052df7407609f432d8d325cbba2e61 100755
--- a/Tools/Tier0ChainTests/test/test_q221_mp.sh
+++ b/Tools/Tier0ChainTests/test/test_q221_mp.sh
@@ -2,6 +2,12 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
-Reco_tf.py --AMI=q221 --athenaopts='--nprocs=2' --maxEvents=100 --outputRDOFile=myRDO.pool.root --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputHITSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/mc15_13TeV.410500.PowhegPythia8EvtGen_A14_ttbar_hdamp172p5_nonallhad.simul.HITS.e4797_s2726.50events.pool.root
+Reco_tf.py --AMI=q221 --athenaopts='--nprocs=2' --maxEvents=100 --outputRDOFile=myRDO.pool.root --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root
+echo "art-result: $? Reco"
 
diff --git a/Tools/Tier0ChainTests/test/test_q223.sh b/Tools/Tier0ChainTests/test/test_q223.sh
index 869d4f3cbf879a7502fe2f58effbf62c27ca18d0..2fe49544b5b05a5f5a90f6a99c95ac06a887c6a7 100755
--- a/Tools/Tier0ChainTests/test/test_q223.sh
+++ b/Tools/Tier0ChainTests/test/test_q223.sh
@@ -2,6 +2,11 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
 Reco_tf.py --AMI=q223 --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_comm.00264034.physics_MinBias.daq.RAW._lb0644._SFO-6._0001.data --imf False
 echo "art-result: $?"
diff --git a/Tools/Tier0ChainTests/test/test_q223_mp.sh b/Tools/Tier0ChainTests/test/test_q223_mp.sh
index 790fca0c9993b62928df75691203fe172c65c9ad..ce58bd426455948b6f8896969ac71a1bb8d23c61 100755
--- a/Tools/Tier0ChainTests/test/test_q223_mp.sh
+++ b/Tools/Tier0ChainTests/test/test_q223_mp.sh
@@ -2,6 +2,12 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
-Reco_tf.py --AMI=q223 --athenaopts='--nprocs=2' --maxEvents=100 --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data15_comm.00264034.physics_MinBias.daq.RAW._lb0644._SFO-6._0001.data
+Reco_tf.py --AMI=q223 --athenaopts='--nprocs=2' --maxEvents=100 --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root
+echo "art-result: $? Reco"
 
diff --git a/Tools/Tier0ChainTests/test/test_q431.sh b/Tools/Tier0ChainTests/test/test_q431.sh
index b3f21d32a76e03e955a1893fae34a2309ba0440d..c5184d0ce031a0cb3a279963228e1869302cb38e 100755
--- a/Tools/Tier0ChainTests/test/test_q431.sh
+++ b/Tools/Tier0ChainTests/test/test_q431.sh
@@ -2,6 +2,11 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
 Reco_tf.py --AMI=q431 --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data16_13TeV.00297447.physics_Main.daq.RAW._lb0555._SFO-1._0001.data --imf False
 echo "art-result: $?"
diff --git a/Tools/Tier0ChainTests/test/test_q431_mp.sh b/Tools/Tier0ChainTests/test/test_q431_mp.sh
index 00348f398e1fe8df322e2d45728e301b0650fa3c..b8ea6551adb8f337be2f1ed04c1eaa020baa02fb 100755
--- a/Tools/Tier0ChainTests/test/test_q431_mp.sh
+++ b/Tools/Tier0ChainTests/test/test_q431_mp.sh
@@ -2,6 +2,11 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
 Reco_tf.py --AMI=q431 --athenaopts='--nprocs=2' --maxEvents=100 --outputTAGFile=myTAG.pool.root --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root --outputHISTFile=myHIST.root --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data16_13TeV.00297447.physics_Main.daq.RAW._lb0555._SFO-1._0001.data
 
diff --git a/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs.sh b/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs.sh
index e92d1edda90c70bf87bc4a898f7c6574723c0757..7af56ac75e85f06412e08646ef7fb9a849af3979 100755
--- a/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs.sh
+++ b/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs.sh
@@ -2,6 +2,11 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
 Reco_tf.py --conditionsTag all:CONDBR2-BLKPA-2017-05 --ignoreErrors 'False' --autoConfiguration='everything' --maxEvents '250' --geometryVersion all:ATLAS-R2-2015-04-00-00 --steering='doRAWtoALL' --inputBSFile '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data16_13TeV.00306451.physics_Main.daq.RAW._lb0948._SFO-4._0001.data' --outputDRAW_EGZFile 'myDRAW_EGZ.data' --outputDESDM_IDALIGNFile 'myDESDM_IDALIGN.pool.root' --outputDESDM_SGLELFile 'myDESDM_SGLEL.pool.root' --outputDESDM_SLTTMUFile 'myDESDM_SLTTMU.pool.root' --outputDAOD_IDTRKVALIDFile 'myDAOD_IDTRKVALID.pool.root' --outputDRAW_ZMUMUFile 'myDRAW_ZMUMU.data' --outputAODFile 'myAOD.pool.root' --outputDRAW_TAUMUHFile 'myDRAW_TAUMUH.data' --outputDESDM_EGAMMAFile 'myDESDM_EGAMMA.pool.root' --outputDESDM_MCPFile 'myDESDM_MCP.pool.root' --outputDESDM_CALJETFile 'myDESDM_CALJET.pool.root' --outputDESDM_PHOJETFile 'myDESDM_PHOJET.pool.root' --outputDESDM_TILEMUFile 'myDESDM_TILEMU.pool.root' --outputDRAW_RPVLLFile 'myDRAW_RPVLL.data' --outputDESDM_EXOTHIPFile 'myDESDM_EXOTHIP.pool.root' --outputESDFile 'myESD.pool.root' --outputHISTFile 'myHIST.root' --outputDAOD_IDTIDEFile 'myDAOD_IDTIDE.pool.root' --imf False
 echo "art-result: $?"
diff --git a/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs_2.sh b/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs_2.sh
index a61a3428886b34554ace2d394cc62cebb0a1c291..0d69aeab0d651c0e81957fbb0d24f9ec280fe66c 100755
--- a/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs_2.sh
+++ b/Tools/Tier0ChainTests/test/test_reco_with_derived_outputs_2.sh
@@ -2,14 +2,16 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
 Reco_tf.py  --outputDESDM_IDALIGNFile=IDALIGN_Main_0.pool.root --outputDESDM_SLTTMUFile=SLTTMU_Main_0.pool.root --outputDRAW_ZMUMUFile=ZMUMU_Main_0.data --outputDAOD_IDTIDEFile=IDTIDE_Main_0.AOD.pool.root --outputDESDM_MCPFile=MCP_Main_0.pool.root --outputDRAW_TOPSLMUFile=TOPSLMU_Main_0.data --outputDRAW_EGZFile=EGZ_Main_0.data --outputDESDM_PHOJETFile=PHOJET_Main_0.pool.root --outputDESDM_TILEMUFile=TILEMU_Main_0.pool.root --outputDRAW_RPVLLFile=RPVLL_Main_0.data --outputDAOD_IDTRKVALIDFile=IDTRKVALID_Main_0.AOD.pool.root --outputHISTFile=myMergedMonitoring_Main_0.root --AMI=f739 --outputDESDM_EXOTHIPFile=EXOTHIP_Main_0.pool.root --outputDESDM_SGLELFile=SGLEL_Main_0.pool.root --maxEvents=500 --outputESDFile=myESD_Main_0.pool.root --outputDESDM_EGAMMAFile=EGAMMA_Main_0.pool.root --outputAODFile=myAOD_Main_0.AOD.pool.root --outputTAGFile=myTAG_Main_0.root --ignoreErrors=False --conditionsTag=CONDBR2-BLKPA-2017-05 --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data16_13TeV.00304008.physics_Main.daq.RAW._lb0838._SFO-6._0001.data --outputDRAW_TAUMUHFile=TAUMUH_Main_0.data --outputDESDM_CALJETFile=CALJET_Main_0.pool.root --imf False
 echo "art-result: $?"
 
 ArtPackage=$1
 ArtJobName=$2
-art.py compare grid --entries 10 ${ArtPackage} ${ArtJobName}
-echo "art-result: $?"
-
-art.py compare grid --days=3 --entries 10 ${ArtPackage} ${ArtJobName}
-echo "art-result: $?"
+art.py compare grid --entries 2 ${ArtPackage} ${ArtJobName}
+echo "art-result: $? Diff"
diff --git a/Tools/Tier0ChainTests/test/test_reprocessing_with_derived_outputs.sh b/Tools/Tier0ChainTests/test/test_reprocessing_with_derived_outputs.sh
index 09e500d3f825bab81baccf87fee0e3e4d642d094..a66cba7c7579fe101a3b22eb6b75f33f62bfae77 100755
--- a/Tools/Tier0ChainTests/test/test_reprocessing_with_derived_outputs.sh
+++ b/Tools/Tier0ChainTests/test/test_reprocessing_with_derived_outputs.sh
@@ -2,5 +2,11 @@
 #
 # art-description: RecoTrf
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
 Reco_tf.py  --outputDESDM_IDALIGNFile=IDALIGN_Main_0.pool.root --outputDESDM_SLTTMUFile=SLTTMU_Main_0.pool.root --outputDRAW_ZMUMUFile=ZMUMU_Main_0.data --outputDAOD_IDTIDEFile=IDTIDE_Main_0.AOD.pool.root --outputDESDM_MCPFile=MCP_Main_0.pool.root --outputDRAW_TOPSLMUFile=TOPSLMU_Main_0.data --outputDRAW_EGZFile=EGZ_Main_0.data --outputDESDM_PHOJETFile=PHOJET_Main_0.pool.root --outputDESDM_TILEMUFile=TILEMU_Main_0.pool.root --outputDRAW_RPVLLFile=RPVLL_Main_0.data --outputDAOD_IDTRKVALIDFile=IDTRKVALID_Main_0.AOD.pool.root --outputHISTFile=myMergedMonitoring_Main_0.root --AMI=r9050 --outputDESDM_EXOTHIPFile=EXOTHIP_Main_0.pool.root --outputDESDM_SGLELFile=SGLEL_Main_0.pool.root --maxEvents=500 --outputESDFile=myESD_Main_0.pool.root --outputDESDM_EGAMMAFile=EGAMMA_Main_0.pool.root --outputAODFile=myAOD_Main_0.AOD.pool.root --outputTAGFile=myTAG_Main_0.root --ignoreErrors=False --conditionsTag=CONDBR2-BLKPA-2016-25 --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data16_13TeV.00304008.physics_Main.daq.RAW._lb0838._SFO-6._0001.data --outputDRAW_TAUMUHFile=TAUMUH_Main_0.data --outputDESDM_CALJETFile=CALJET_Main_0.pool.root --athenaopts=--nprocs=4 --imf False
+echo "art-result: $? Reco"
diff --git a/Tools/Tier0ChainTests/test/test_run00184169_egamma_collisions.sh b/Tools/Tier0ChainTests/test/test_run00184169_egamma_collisions.sh
index dab46d8179c05554b2c7f149a402a47ef9317728..7796a3bd04d1cfa9f35962812253615182dcec4b 100755
--- a/Tools/Tier0ChainTests/test/test_run00184169_egamma_collisions.sh
+++ b/Tools/Tier0ChainTests/test/test_run00184169_egamma_collisions.sh
@@ -2,6 +2,11 @@
 #
 # art-description: RecoTrf with beamType=collisions
 # art-type: grid
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: 21.3/Athena
+# art-include: 21.9/Athena
 
 Reco_tf.py  --outputHISTFile=myMergedMonitoring_Egamma_0.root --maxEvents=500 --outputESDFile=myESD_Egamma_0.pool.root --outputAODFile=myAOD_Egamma_0.AOD.pool.root --outputTAGFile=myTAG_Egamma_0.root --ignoreErrors=False --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data11_7TeV.00184169.physics_Egamma.merge.RAW._lb0900._SFO-10._0001.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data11_7TeV.00184169.physics_Egamma.merge.RAW._lb0900._SFO-11._0001.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data11_7TeV.00184169.physics_Egamma.merge.RAW._lb0900._SFO-12._0001.1 --preExec='rec.doTrigger=False;' --imf False
 echo "art-result: $?"
diff --git a/Tracking/Acts/ActsGeometry/share/GeantinoMapping_jobOptions.py b/Tracking/Acts/ActsGeometry/share/GeantinoMapping_jobOptions.py
index 992f16b3a0995b019e6ba04f83e7f5944a8fc41e..b6414415fe599bb4552cf95e777709d3f779cc96 100644
--- a/Tracking/Acts/ActsGeometry/share/GeantinoMapping_jobOptions.py
+++ b/Tracking/Acts/ActsGeometry/share/GeantinoMapping_jobOptions.py
@@ -143,5 +143,13 @@ topSeq += getAlgorithm("BeamEffectsAlg", tryDefaultConfigurable=True)
 ## Populate alg sequence
 topSeq += getAlgorithm("G4AtlasAlg",tryDefaultConfigurable=True)
 
+# Conditions sequence for Athena MT
+from AthenaCommon.AlgSequence import AthSequencer
+condSeq = AthSequencer("AthCondSeq")
+if not hasattr(condSeq, "BeamSpotCondAlg"):
+   from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg
+   condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" )
+
+
 #--- End jobOptions.GeantinoMapping.py file  ------------------------------
 
diff --git a/Tracking/TrkDetDescr/TrkDetDescrTPCnv/src/TrkGeometry/HomogeneousLayerMaterialCnv_p1.cxx b/Tracking/TrkDetDescr/TrkDetDescrTPCnv/src/TrkGeometry/HomogeneousLayerMaterialCnv_p1.cxx
index b4e8439f63cbd2c347f8c3bae3cd6ef4688d6d11..1efdc3abb97f4d4e717fa706218671e0a4aaf823 100644
--- a/Tracking/TrkDetDescr/TrkDetDescrTPCnv/src/TrkGeometry/HomogeneousLayerMaterialCnv_p1.cxx
+++ b/Tracking/TrkDetDescr/TrkDetDescrTPCnv/src/TrkGeometry/HomogeneousLayerMaterialCnv_p1.cxx
@@ -21,7 +21,7 @@ void HomogeneousLayerMaterialCnv_p1::persToTrans( const Trk::HomogeneousLayerMat
     // create the persistent material properties
     // pointer to converter (will be auto-retrieved)
     ITPConverterFor<Trk::MaterialProperties> *materialCnv = 0;
-    transObj->m_fullMaterial = createTransFromPStore( &materialCnv, persObj->material, mlog );
+    transObj->m_fullMaterial = std::unique_ptr<Trk::MaterialProperties>( createTransFromPStore( &materialCnv, persObj->material, mlog ));
     transObj->m_splitFactor = persObj->splitFactor;
     
 }
@@ -35,6 +35,6 @@ void HomogeneousLayerMaterialCnv_p1::transToPers( const Trk::HomogeneousLayerMat
     
     // create the persistent material properties
     // pointer to converter (will be auto-retrieved)
-    ITPConverterFor<Trk::MaterialProperties> *materialCnv = 0;
-    persObj->material =  toPersistent( &materialCnv, transObj->m_fullMaterial, mlog );
+    ITPConverterFor<Trk::MaterialProperties> *materialCnv = 0; 
+    persObj->material =  toPersistent( &materialCnv, transObj->m_fullMaterial.get(), mlog );
 }
diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/HomogeneousLayerMaterial.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/HomogeneousLayerMaterial.h
index c5bc9b42fb7f2603deebc5e6c65b69995ee7e933..03e3ffe9660ab2c1a7185349423766e709de56ac 100755
--- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/HomogeneousLayerMaterial.h
+++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/HomogeneousLayerMaterial.h
@@ -1,111 +1,120 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// HomogeneousLayerMaterial.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#ifndef TRKGEOMETY_HOMOGENOUSLAYERMATERIAL_H
-#define TRKGEOMETY_HOMOGENOUSLAYERMATERIAL_H
-
-// Amg
-#include "GeoPrimitives/GeoPrimitives.h"
-//Trk
-#include "TrkGeometry/LayerMaterialProperties.h"
-#include "TrkGeometry/MaterialProperties.h"
-//Gaudi
-#include "GaudiKernel/MsgStream.h"
-//STD
-#include <vector>
-
-class HomogeneousLayerMaterialCnv_p1;
-
-namespace Trk {
-
-
-  class BinUtility;
-  /** 
-   @class HomogeneousLayerMaterial
-
-   It extends the LayerMaterialProperties base class
-
-   This class encapsulates the logics to build pre/post/full update material 
-   for Layer structures, it hosts 5 different MaterialProperties in the following order:
-   
-    - fullUpdate          (crossing full Layer in both directions)
-    - alongPreUpdate      (passing material to sensitive part in direction of the normal vector)
-    - alongPostUpdate     (passing material after sensitive part in direction of the normal vector)
-    - oppositePreUpdate   (passing material to sensitive part in opposite direction to the normal vector)
-    - poopsitePostUpdate  (passing material after sensitive part in opposite direction to the normal vector)
-
-    This is handeled by a full Lauyer information and a split factor
-
-      
-   @author Andreas.Salzburger@cern.ch 
-   */
-
-  class HomogeneousLayerMaterial : public LayerMaterialProperties {
-    
-    public:
-      /** Default Constructor - creates empty HomogeneousLayerMaterial */
-      HomogeneousLayerMaterial();
-      
-      /**Explizit constructor with only full MaterialProperties, 
-         alongPre and oppositePre, alongPre and oppositePost are obviously swapped*/
-      HomogeneousLayerMaterial(const MaterialProperties& full, double splitFactor);
-      
-      /**Copy Constructor */  
-      HomogeneousLayerMaterial(const HomogeneousLayerMaterial& mprop);
-      
-      /**Destructor*/
-      virtual ~HomogeneousLayerMaterial();
-      
-      /**Pseudo-Constructor clone()*/ 
-      HomogeneousLayerMaterial* clone() const override;
-      
-      /** Assignment operator */
-      HomogeneousLayerMaterial& operator=(const HomogeneousLayerMaterial& lmp);
-
-      /** Scale operator */
-      virtual HomogeneousLayerMaterial& operator*=(double scale) override;
-
-      /**Return method for full material description of the Layer */
-      virtual const MaterialProperties* fullMaterial(const Amg::Vector3D& gp) const override;
-
-      /**Direct access via bins to the MaterialProperties */
-      virtual const MaterialProperties* material(size_t ib0, size_t ib1) const override;
-      
-      /** Return the BinUtility */
-      const BinUtility* binUtility() const  override { return 0; }
-      
-      /** Update the BinUtility if necessary - passing ownership of the utility class*/
-      virtual void updateBinning(BinUtility*) const override { }
-          
-      /** Output Method for MsgStream, to be overloaded by child classes */
-      MsgStream& dump(MsgStream& sl) const override;
-      /** Output Method for std::ostream, to be overloaded by child classes */
-      std::ostream& dump(std::ostream& sl) const override;      
-
-    private:
-      friend class ::HomogeneousLayerMaterialCnv_p1;
-
-      /** The five different MaterialProperties */
-      MaterialProperties*           m_fullMaterial;
-                                            
-  };
-  
-inline HomogeneousLayerMaterial* HomogeneousLayerMaterial::clone() const
-  { return new HomogeneousLayerMaterial(*this); }  
-  
-inline const MaterialProperties* HomogeneousLayerMaterial::fullMaterial(const Amg::Vector3D&) const
-  { return m_fullMaterial; }
-      
-inline const MaterialProperties* HomogeneousLayerMaterial::material(size_t, size_t) const
-  { return m_fullMaterial; }      
-    
-} // end of namespace
-
-#endif 
-
-
+///////////////////////////////////////////////////////////////////
+// HomogeneousLayerMaterial.h, (c) ATLAS Detector software
+///////////////////////////////////////////////////////////////////
+
+#ifndef TRKGEOMETY_HOMOGENOUSLAYERMATERIAL_H
+#define TRKGEOMETY_HOMOGENOUSLAYERMATERIAL_H
+
+// Amg
+#include "GeoPrimitives/GeoPrimitives.h"
+// Trk
+#include "TrkGeometry/LayerMaterialProperties.h"
+#include "TrkGeometry/MaterialProperties.h"
+// Gaudi
+#include "GaudiKernel/MsgStream.h"
+// STD
+#include <vector>
+
+#include <memory>
+
+class HomogeneousLayerMaterialCnv_p1;
+
+namespace Trk {
+
+
+  class BinUtility;
+  /** 
+   @class HomogeneousLayerMaterial
+
+   It extends the LayerMaterialProperties base class.
+
+   This class encapsulates the logic to build pre/post/full update material 
+   for Layer structures, it hosts 5 different MaterialProperties in the following order:
+   
+    - fullUpdate          (crossing full Layer in both directions)
+    - alongPreUpdate      (passing material to sensitive part in the direction of the normal vector)
+    - alongPostUpdate     (passing material after sensitive part in the direction of the normal vector)
+    - oppositePreUpdate   (passing material to sensitive part in the opposite direction to the normal vector)
+    - oppositePostUpdate  (passing material after sensitive part in the opposite direction to the normal vector)
+
+    This is handled by a full Layer information and a split factor.
+
+      
+   @author Andreas.Salzburger@cern.ch 
+   */
+
+  class HomogeneousLayerMaterial : public LayerMaterialProperties {
+    
+    public:
+      /** Default Constructor - creates empty HomogeneousLayerMaterial */
+      HomogeneousLayerMaterial();
+      
+      /**Explicit constructor with only full MaterialProperties. 
+         alongPre and oppositePre, alongPre and oppositePost are obviously swapped*/
+      HomogeneousLayerMaterial(const MaterialProperties& full, double splitFactor);
+      
+      /**Copy Constructor */  
+      HomogeneousLayerMaterial(const HomogeneousLayerMaterial& mprop);
+      
+      /**Destructor*/
+      virtual ~HomogeneousLayerMaterial();
+      
+      /**Pseudo-Constructor clone()*/ 
+      HomogeneousLayerMaterial* clone() const override;
+      
+      /** Assignment operator */
+      HomogeneousLayerMaterial& operator=(const HomogeneousLayerMaterial& lmp);
+
+      /** Default move constructor */
+      HomogeneousLayerMaterial(Trk::HomogeneousLayerMaterial&& lmp) = default; 
+
+      /** Default move assignment operator */
+      HomogeneousLayerMaterial& operator=(Trk::HomogeneousLayerMaterial&& lmp) = default; 
+
+      /** Scale operator */
+      virtual HomogeneousLayerMaterial& operator*=(double scale) override;
+
+      /**Return method for full material description of the Layer */
+      virtual const MaterialProperties* fullMaterial(const Amg::Vector3D& gp) const override;
+
+      /**Direct access via bins to the MaterialProperties */
+      virtual const MaterialProperties* material(size_t ib0, size_t ib1) const override;
+      
+      /** Return the BinUtility */
+      const BinUtility* binUtility() const  override { return 0; }
+      
+      /** Update the BinUtility if necessary - passing ownership of the utility class*/
+      virtual void updateBinning(BinUtility*) const override { }
+          
+      /** Output Method for MsgStream, to be overloaded by child classes */
+      MsgStream& dump(MsgStream& sl) const override;
+      /** Output Method for std::ostream, to be overloaded by child classes */
+      std::ostream& dump(std::ostream& sl) const override;      
+
+    private:
+      friend class ::HomogeneousLayerMaterialCnv_p1;
+
+      /** The five different MaterialProperties */
+      std::unique_ptr<MaterialProperties>    m_fullMaterial;
+                                            
+  };
+ 
+
+inline HomogeneousLayerMaterial* HomogeneousLayerMaterial::clone() const
+  { return new HomogeneousLayerMaterial(*this); }  
+  
+inline const MaterialProperties* HomogeneousLayerMaterial::fullMaterial(const Amg::Vector3D&) const
+  { return m_fullMaterial.get(); }
+      
+inline const MaterialProperties* HomogeneousLayerMaterial::material(size_t, size_t) const
+  { return m_fullMaterial.get(); }      
+    
+} // end of namespace
+
+#endif 
+
+
diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialProperties.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialProperties.h
index af802dc41fab17942c4d2854ee2e2ac6f31c0731..47bd46aac5eed6431a107c3733b88ccc9bff0e4c 100755
--- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialProperties.h
+++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialProperties.h
@@ -118,7 +118,8 @@ namespace Trk {
       
       /** Output Method for std::ostream, to be overloaded by child classes */
       virtual std::ostream& dump(std::ostream& sl) const = 0;
-                                            
+  
+                                          
     protected :
       friend class ::BinnedLayerMaterialCnv_p1;
       double               m_splitFactor;     //!< the split factor in favour of oppositePre
diff --git a/Tracking/TrkDetDescr/TrkGeometry/src/HomogeneousLayerMaterial.cxx b/Tracking/TrkDetDescr/TrkGeometry/src/HomogeneousLayerMaterial.cxx
index e135fb7de7421204e006a2abad7e67a27c289c55..ef521e7d52ea12869cdae1291f8cd919a21a6a8d 100755
--- a/Tracking/TrkDetDescr/TrkGeometry/src/HomogeneousLayerMaterial.cxx
+++ b/Tracking/TrkDetDescr/TrkGeometry/src/HomogeneousLayerMaterial.cxx
@@ -1,74 +1,70 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// HomogeneousLayerMaterial.cxx, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#include "TrkGeometry/HomogeneousLayerMaterial.h"
-#include "TrkGeometry/MaterialProperties.h"
-
-Trk::HomogeneousLayerMaterial::HomogeneousLayerMaterial() :
-  Trk::LayerMaterialProperties(),
-  m_fullMaterial(0)
-{}
-
-Trk::HomogeneousLayerMaterial::HomogeneousLayerMaterial( const Trk::MaterialProperties& full,
-                                                       double splitFactor) :
-  Trk::LayerMaterialProperties(splitFactor),
-  m_fullMaterial(full.clone())
-{}
-                 
-Trk::HomogeneousLayerMaterial::HomogeneousLayerMaterial(const Trk::HomogeneousLayerMaterial& lmp) :
-  LayerMaterialProperties(lmp.m_splitFactor),
-  m_fullMaterial(lmp.m_fullMaterial ? lmp.m_fullMaterial->clone() : 0)
-{}
-
-Trk::HomogeneousLayerMaterial::~HomogeneousLayerMaterial()
-{
-  delete m_fullMaterial;        
-}
-
-
-Trk::HomogeneousLayerMaterial& Trk::HomogeneousLayerMaterial::operator=(const Trk::HomogeneousLayerMaterial& lmp)
-{
-  if (this!=&lmp) {    
-    // first delete everything
-    delete m_fullMaterial;
-    // now refill evertything
-    m_fullMaterial         = lmp.m_fullMaterial ? lmp.m_fullMaterial->clone() : 0;
-    Trk::LayerMaterialProperties::m_splitFactor = lmp.m_splitFactor;
-  }
-  return (*this);
-}
-
-Trk::HomogeneousLayerMaterial& Trk::HomogeneousLayerMaterial::operator*=(double scale)
-{
-   // scale the sub properties    
-   if (m_fullMaterial)  
-      (*m_fullMaterial) *= scale;
-
-   return (*this);
-}
-
-MsgStream& Trk::HomogeneousLayerMaterial::dump( MsgStream& sl) const
-{
-  sl << "Trk::HomogeneousLayerMaterial : " << std::endl;
-  if (m_fullMaterial) {
-       sl << "   - fullMaterial         : " << *m_fullMaterial << std::endl;
-  }
-  sl << "   - split factor         : " << m_splitFactor << std::endl;
-
-  return sl;
-}
-
-std::ostream& Trk::HomogeneousLayerMaterial::dump( std::ostream& sl) const
-{
-  sl << "Trk::HomogeneousLayerMaterial : " << std::endl;
-  if (m_fullMaterial) {
-       sl << "   - fullMaterial         : " << *m_fullMaterial << std::endl;
-  }
-  sl << "   - split factor         : " << m_splitFactor << std::endl; 
-  return sl;
-}
+///////////////////////////////////////////////////////////////////
+// HomogeneousLayerMaterial.cxx, (c) ATLAS Detector software
+///////////////////////////////////////////////////////////////////
+
+#include "TrkGeometry/HomogeneousLayerMaterial.h"
+#include "TrkGeometry/MaterialProperties.h"
+
+Trk::HomogeneousLayerMaterial::HomogeneousLayerMaterial() :
+  Trk::LayerMaterialProperties(),
+  m_fullMaterial(nullptr)
+{}
+
+Trk::HomogeneousLayerMaterial::HomogeneousLayerMaterial( const Trk::MaterialProperties& full,
+                                                       double splitFactor) :
+  Trk::LayerMaterialProperties(splitFactor),
+  m_fullMaterial(full.clone())
+{}
+                 
+Trk::HomogeneousLayerMaterial::HomogeneousLayerMaterial(const Trk::HomogeneousLayerMaterial& lmp) :
+  LayerMaterialProperties(lmp.m_splitFactor),
+  m_fullMaterial(lmp.m_fullMaterial ? lmp.m_fullMaterial->clone() : 0)
+{}
+
+Trk::HomogeneousLayerMaterial::~HomogeneousLayerMaterial()
+{}
+
+
+Trk::HomogeneousLayerMaterial& Trk::HomogeneousLayerMaterial::operator=(const Trk::HomogeneousLayerMaterial& lmp)
+{
+  if (this!=&lmp) {    
+    // now refill everything
+    m_fullMaterial.reset( lmp.m_fullMaterial ? lmp.m_fullMaterial->clone() : nullptr);
+    Trk::LayerMaterialProperties::m_splitFactor = lmp.m_splitFactor;
+  }
+  return (*this);
+}
+
+Trk::HomogeneousLayerMaterial& Trk::HomogeneousLayerMaterial::operator*=(double scale)
+{
+   // scale the sub-properties    
+   if (m_fullMaterial)  
+      (*m_fullMaterial) *= scale;
+
+   return (*this);
+}
+
+MsgStream& Trk::HomogeneousLayerMaterial::dump( MsgStream& sl) const
+{
+  sl << "Trk::HomogeneousLayerMaterial : " << std::endl;
+  if (m_fullMaterial) {
+       sl << "   - fullMaterial         : " << *m_fullMaterial << std::endl;
+  }
+  sl << "   - split factor         : " << m_splitFactor << std::endl;
+
+  return sl;
+}
+
+std::ostream& Trk::HomogeneousLayerMaterial::dump( std::ostream& sl) const
+{
+  sl << "Trk::HomogeneousLayerMaterial : " << std::endl;
+  if (m_fullMaterial) {
+       sl << "   - fullMaterial         : " << *m_fullMaterial << std::endl;
+  }
+  sl << "   - split factor         : " << m_splitFactor << std::endl; 
+  return sl;
+}
diff --git a/Tracking/TrkFitter/TrkRefitAlg/CMakeLists.txt b/Tracking/TrkFitter/TrkRefitAlg/CMakeLists.txt
index 6c727398b50bcea493105b1a3db391a4a8d64a84..70017f1ba32d32f52a137c14cb6f433a7b46f7d5 100644
--- a/Tracking/TrkFitter/TrkRefitAlg/CMakeLists.txt
+++ b/Tracking/TrkFitter/TrkRefitAlg/CMakeLists.txt
@@ -13,6 +13,7 @@ atlas_depends_on_subdirs( PUBLIC
                           Tracking/TrkEvent/TrkEventUtils
                           Tracking/TrkEvent/TrkTrack
                           Tracking/TrkFitter/TrkFitterUtils
+                          InnerDetector/InDetConditions/BeamSpotConditionsData
                           PRIVATE
                           InnerDetector/InDetConditions/InDetBeamSpotService
                           Tracking/TrkDetDescr/TrkSurfaces
diff --git a/Tracking/TrkFitter/TrkRefitAlg/TrkRefitAlg/ReFitTrack.h b/Tracking/TrkFitter/TrkRefitAlg/TrkRefitAlg/ReFitTrack.h
index bead3025482a99170ec5e68a3d69643958dd8004..7354f22aa0967f801d29b5f5a7d420892712f175 100755
--- a/Tracking/TrkFitter/TrkRefitAlg/TrkRefitAlg/ReFitTrack.h
+++ b/Tracking/TrkFitter/TrkRefitAlg/TrkRefitAlg/ReFitTrack.h
@@ -22,12 +22,11 @@
 #include "StoreGate/ReadHandleKey.h"
 #include "StoreGate/WriteHandleKey.h"
 #include "TrkExInterfaces/IExtrapolator.h"
-#include "InDetBeamSpotService/IBeamCondSvc.h"
 #include "TrkToolInterfaces/ITrackSelectorTool.h"
 #include "TrkToolInterfaces/IPRD_AssociationTool.h"
 #include "TrkToolInterfaces/ITrackSummaryTool.h"
 #include "TrkFitterInterfaces/ITrackFitter.h"
-
+#include "BeamSpotConditionsData/BeamSpotData.h"
 class VxContainer;
 
 namespace Trk{
@@ -82,7 +81,7 @@ private:
                                                             
   unsigned int                     m_constrainFitMode;       //!< 0 - not constraint, 1 - vertex, 2 - beamspot
   SG::ReadHandleKey<VxContainer>  m_vxContainerName;   
-  ServiceHandle<IBeamCondSvc>      m_iBeamCondSvc;           //!< the beam conditions service
+  SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
   ToolHandle<Trk::IExtrapolator>   m_extrapolator;           //!< the extrapoaltor for the consistent measurement frame
   
   bool m_usetrackhypo;                                       //!< Fit using particle hypothesis from input track    
diff --git a/Tracking/TrkFitter/TrkRefitAlg/src/ReFitTrack.cxx b/Tracking/TrkFitter/TrkRefitAlg/src/ReFitTrack.cxx
index 91398e0435b4f452052dfe7043a948046c36bafe..71e2448159d54c800874aa049bd29af7601fb97d 100755
--- a/Tracking/TrkFitter/TrkRefitAlg/src/ReFitTrack.cxx
+++ b/Tracking/TrkFitter/TrkRefitAlg/src/ReFitTrack.cxx
@@ -50,7 +50,6 @@ Trk::ReFitTrack::ReFitTrack(const std::string &name, ISvcLocator *pSvcLocator) :
   m_trkSelectorTool(""),
   m_constrainFitMode(0),
   m_vxContainerName("VxPrimaryCandidate"),
-  m_iBeamCondSvc("BeamCondSvc", name),
   m_extrapolator("Trk::Extrapolator/InDetExtrapolator"),
   m_usetrackhypo(false)
 {  
@@ -71,7 +70,6 @@ Trk::ReFitTrack::ReFitTrack(const std::string &name, ISvcLocator *pSvcLocator) :
   // constrained fitting
   declareProperty("ConstrainFit",         m_constrainFitMode,"mode switch if/how the track is constrained to the BS/Vx");
   declareProperty("VertexCollection",     m_vxContainerName,"Source for vertex to use for constraining tracks");
-  declareProperty("BeamConditionsSvc",    m_iBeamCondSvc,"Beam spot service in case track is constrained to the BS");
   declareProperty("Extrapolator",         m_extrapolator, "Extrapolator needed for coherent measurement frame.");
   
 
@@ -126,12 +124,8 @@ StatusCode Trk::ReFitTrack::initialize()
   }
   
   // beam conditions service
-  if (m_constrainFitMode && !m_iBeamCondSvc.empty() ) {
-    if ( m_iBeamCondSvc.retrieve().isFailure() ) {
-      ATH_MSG_FATAL( "Failed to retrieve service " << m_iBeamCondSvc );
-      return StatusCode::FAILURE;
-    } else
-      ATH_MSG_VERBOSE( "Retrieved service " << m_iBeamCondSvc);
+  if (m_constrainFitMode) {
+    ATH_CHECK(m_beamSpotKey.initialize());
   }
   
   // extrapolator
@@ -181,9 +175,10 @@ StatusCode Trk::ReFitTrack::execute()
 
   // constrain fit to be done
   if (m_constrainFitMode > 0){
-      if ( m_constrainFitMode > 1 ){ 
+      if ( m_constrainFitMode > 1 ){
+        SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
         // get vertex position and uncertainties from BeamCondSvc
-        constrainVx = new Trk::RecVertex(m_iBeamCondSvc->beamVtx());   
+        constrainVx = new Trk::RecVertex(beamSpotHandle->beamVtx());   
         cleanup_constrainVx.reset( constrainVx );
         ATH_MSG_DEBUG("Track fit with BeamSpot constraint (x/y/z)  = " 
             << constrainVx->position().x() << ", " 
diff --git a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowingMS_jobOptions.py b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowingMS_jobOptions.py
index 21e3b8cddf5917a79a4bbcf6279c0e5c47789ac0..47d814fa730457d9383810dbd763877a07b21589 100644
--- a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowingMS_jobOptions.py
+++ b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowingMS_jobOptions.py
@@ -356,6 +356,14 @@ topSeq += getAlgorithm("BeamEffectsAlg", tryDefaultConfigurable=True)
 ## Populate alg sequence
 topSeq += getAlgorithm("G4AtlasAlg",tryDefaultConfigurable=True)
 
+# Conditions sequence for Athena MT
+from AthenaCommon.AlgSequence import AthSequencer
+condSeq = AthSequencer("AthCondSeq")
+if not hasattr(condSeq, "BeamSpotCondAlg"):
+   from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg
+   condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" )
+
+
 #AlgSequence("Streams").StreamHITS.ItemList                  = ['EventInfo#*']
 
 from AthenaCommon.AppMgr import AppMgr
diff --git a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowing_jobOptions.py b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowing_jobOptions.py
index cf553386d17ed52471b7050fe7c0357b88427dfc..7b574ce52575e09478b2af5869c1dde39f6c36ee 100644
--- a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowing_jobOptions.py
+++ b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantFollowing_jobOptions.py
@@ -12,6 +12,14 @@
 from AthenaCommon.AlgSequence import AlgSequence
 topSeq = AlgSequence()
 
+# Conditions sequence for Athena MT
+from AthenaCommon.AlgSequence import AthSequencer
+condSeq = AthSequencer("AthCondSeq")
+if not hasattr(condSeq, "BeamSpotCondAlg"):
+   from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg
+   condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" )
+
+
 #topSeq.ContinueEventloopOnFPE = True
 from RecExConfig.RecFlags import rec as rec
 rec.doFloatingPointException.set_Value_and_Lock(True)
diff --git a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantinoMapping_jobOptions.py b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantinoMapping_jobOptions.py
index 8347d6fd84fbc3862e1a2bc97f2094988d64d406..fba841d859b4fbed3318ef45d23edffb1178190e 100644
--- a/Tracking/TrkG4Components/TrkG4UserActions/share/GeantinoMapping_jobOptions.py
+++ b/Tracking/TrkG4Components/TrkG4UserActions/share/GeantinoMapping_jobOptions.py
@@ -13,6 +13,14 @@ __version__="$Revision: 757321 $"
 from AthenaCommon.AlgSequence import AlgSequence
 topSeq = AlgSequence()
 
+# Conditions sequence for Athena MT
+from AthenaCommon.AlgSequence import AthSequencer
+condSeq = AthSequencer("AthCondSeq")
+if not hasattr(condSeq, "BeamSpotCondAlg"):
+   from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg
+   condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" )
+
+
 #--- Output threshold (DEBUG, INFO, WARNING, ERROR, FATAL) ----
 #from AthenaCommon.AppMgr import ServiceMgr
 ServiceMgr.MessageSvc.OutputLevel  = INFO
diff --git a/Tracking/TrkTools/TrkParticleCreator/CMakeLists.txt b/Tracking/TrkTools/TrkParticleCreator/CMakeLists.txt
index c38a3af182df97c3fcc30e7c874efbaef30b73c1..a18f7f9f6c123d3fcf9416d3b9f816c87cdb84d8 100644
--- a/Tracking/TrkTools/TrkParticleCreator/CMakeLists.txt
+++ b/Tracking/TrkTools/TrkParticleCreator/CMakeLists.txt
@@ -28,6 +28,7 @@ atlas_depends_on_subdirs(
    DetectorDescription/GeoPrimitives
    DetectorDescription/IdDictDetDescr
    InnerDetector/InDetConditions/InDetBeamSpotService
+   InnerDetector/InDetConditions/BeamSpotConditionsData
    InnerDetector/InDetRecEvent/InDetPrepRawData
    InnerDetector/InDetRecEvent/InDetRIO_OnTrack
    MagneticField/MagFieldInterfaces
diff --git a/Tracking/TrkTools/TrkParticleCreator/TrkParticleCreator/TrackParticleCreatorTool.h b/Tracking/TrkTools/TrkParticleCreator/TrkParticleCreator/TrackParticleCreatorTool.h
index ea2a5fd50d2ae684e91d2c824b2b3f47198bcbf3..aa6d023263d7acb421ca9bfff15031b1f7a8ebd0 100755
--- a/Tracking/TrkTools/TrkParticleCreator/TrkParticleCreator/TrackParticleCreatorTool.h
+++ b/Tracking/TrkTools/TrkParticleCreator/TrkParticleCreator/TrackParticleCreatorTool.h
@@ -39,7 +39,6 @@ changes : 11.02.04 added docu
 
 class AtlasDetectorID;
 
-class IBeamCondSvc;
 class IBLParameterSvc;
 
 namespace Rec
@@ -57,6 +56,7 @@ namespace MagField
   class IMagFieldSvc;
 }
 
+namespace InDet { class BeamSpotData; }
 
 namespace Trk {
 
@@ -80,13 +80,14 @@ namespace Trk {
     i.e. the TrackParticle will not be complete
     @param track Pointer to a valid track (i.e. do not pass a zero!). Ownership is not taken (i.e. it will not be deleted)
     @param vxCandidate Pointer to a valid vxCandidate (i.e. do not pass a zero!). Ownership is not taken (i.e. it will not be deleted)
+    @param bsdata BeamSpot data - can be obtained with CondHandle or from a tool.
     @param prtOrigin 
     @warning In my opinion, the interface is not optimal - we're not taking ownership of the Trk::Track or Vx::Candidate, 
     so they should be passed by reference.
     */
     Rec::TrackParticle* createParticle( const Trk::Track* track,
     const Trk::VxCandidate* vxCandidate,
-    Trk::TrackParticleOrigin prtOrigin);
+    Trk::TrackParticleOrigin prtOrigin) override;
 
     /** Method to construct a xAOD::TrackParticle from a Rec::TrackParticle.
     @param track particle 
@@ -106,7 +107,7 @@ namespace Trk {
     xAOD::TrackParticle* createParticle( const Trk::Track& track,
                                          xAOD::TrackParticleContainer* container,
                                          const xAOD::Vertex* vxCandidate,
-                                         xAOD::ParticleHypothesis prtOrigin) const;
+                                         xAOD::ParticleHypothesis prtOrigin) const override;
 
     /** Method to construct a TrackParticle from a passed Track. Currently, it will ONLY fill the MeasuredPerigee
     i.e. the TrackParticle will not be complete
@@ -118,7 +119,7 @@ namespace Trk {
     xAOD::TrackParticle* createParticle( const ElementLink<TrackCollection>& trackLink,
                                          xAOD::TrackParticleContainer* container,
                                          const xAOD::Vertex* vxCandidate,
-                                         xAOD::ParticleHypothesis prtOrigin) const;
+                                         xAOD::ParticleHypothesis prtOrigin) const override;
 
     /** create a xAOD::TrackParticle out of constituents */
   xAOD::TrackParticle* createParticle( const Perigee* perigee, const FitQuality* fq, const TrackInfo* trackInfo, const TrackSummary* summary,
@@ -152,8 +153,10 @@ namespace Trk {
   
   /** Get the name used for the decoration of the track particle with the number of used hits for TRT dE/dx computation.*/
   static const std::string & trtdEdxUsedHitsAuxName() { return s_trtdEdxUsedHitsDecorationName; }
+  virtual const InDet::BeamSpotData* CacheBeamSpotData(const EventContext &ctx) const override;
 
 private:
+
   void compare( const Rec::TrackParticle& tp, const xAOD::TrackParticle& tpx ) const;      
   void compare( const TrackParameters& tp1, const TrackParameters& tp2 ) const;
   /**atlas id helper*/
@@ -167,7 +170,6 @@ private:
 
   /** to query magnetic field configuration */
   ServiceHandle<MagField::IMagFieldSvc>  m_magFieldSvc;
-  ServiceHandle<IBeamCondSvc> m_beamConditionsService;
   ServiceHandle <IBLParameterSvc> m_IBLParameterSvc;
 
 
diff --git a/Tracking/TrkTools/TrkParticleCreator/src/TrackParticleCreatorTool.cxx b/Tracking/TrkTools/TrkParticleCreator/src/TrackParticleCreatorTool.cxx
index 188e200d6936308c699e6dfa1295238c088dadf7..b737e56dac0c52189e6d3ce733032a857903a214 100644
--- a/Tracking/TrkTools/TrkParticleCreator/src/TrackParticleCreatorTool.cxx
+++ b/Tracking/TrkTools/TrkParticleCreator/src/TrackParticleCreatorTool.cxx
@@ -49,7 +49,7 @@
 #include "xAODTracking/TrackingPrimitives.h"
 #include "EventPrimitives/EventPrimitivesToStringConverter.h"
 #include "AtlasDetDescr/AtlasDetectorID.h"
-
+#include "BeamSpotConditionsData/BeamSpotData.h"
 #include <map>
 #include <vector>
 #include <algorithm>
@@ -111,7 +111,6 @@ namespace Trk
     m_trackToVertex       ("Reco::TrackToVertex/TrackToVertex"),
     m_hitSummaryTool      ("Muon::MuonHitSummaryTool/MuonHitSummaryTool"),
     m_magFieldSvc         ("AtlasFieldSvc", n),
-    m_beamConditionsService("BeamCondSvc", n),
     m_IBLParameterSvc("IBLParameterSvc",n),
     m_copyExtraSummaryName {"eProbabilityComb","eProbabilityHT","TRTTrackOccupancy","TRTdEdx","TRTdEdxUsedHits"},
     m_copyEProbabilities{},
@@ -238,9 +237,6 @@ namespace Trk
       return StatusCode::FAILURE;
     }   
   
-    if ( m_beamConditionsService.retrieve().isFailure() ){
-      ATH_MSG_WARNING( "Failed to retrieve service " << m_beamConditionsService << " - Tilts will not be filled!" );
-    }
 
     StatusCode sc(StatusCode::SUCCESS);
     m_copyEProbabilities.clear();
@@ -296,7 +292,7 @@ namespace Trk
   }
   
   Rec::TrackParticle* TrackParticleCreatorTool::createParticle(const Trk::Track*    track,
-                                                               const Trk::VxCandidate*  vxCandidate,
+                                                               const Trk::VxCandidate*  vxCandidate, 
                                                                Trk::TrackParticleOrigin prtOrigin)
   {
     if (track == 0) return 0;
@@ -330,7 +326,7 @@ namespace Trk
     } 
 
     else if  (m_perigeeExpression == "BeamSpot"){ //Express parameters at beamspot 
-      const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamspot( *track ); 
+      const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamspot( *track, CacheBeamSpotData(Gaudi::Hive::currentContext()) ); 
       if(!result){ 
 	
         ATH_MSG_WARNING("Failed to extrapolate to first Beamspot"); 
@@ -364,7 +360,7 @@ namespace Trk
       }
     }
     else if (m_perigeeExpression == "BeamLine"){
-      const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamline( *track ); 
+      const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamline( *track, CacheBeamSpotData(Gaudi::Hive::currentContext()) ); 
       if(!result){ 
 	
         ATH_MSG_WARNING("Failed to extrapolate to Beamline"); 
@@ -510,7 +506,7 @@ namespace Trk
         }
       }
     }else if (m_perigeeExpression == "BeamSpot"){ //Express parameters at beamspot 
-      const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamspot(track); 
+      const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamspot(track, CacheBeamSpotData(Gaudi::Hive::currentContext())); 
       if(!result){ 
         ATH_MSG_WARNING("Failed to extrapolate to first Beamspot - No TrackParticle created."); 
 	return 0;         
@@ -534,7 +530,7 @@ namespace Trk
       }
     }
     else if (m_perigeeExpression == "BeamLine"){
-      const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamline(track); 
+      const Trk::Perigee* result = m_trackToVertex->perigeeAtBeamline(track, CacheBeamSpotData(Gaudi::Hive::currentContext())); 
       if(!result){ 
 	ATH_MSG_WARNING("Failed to extrapolate to Beamline - No TrackParticle created."); 
 	return 0;        
@@ -878,9 +874,9 @@ namespace Trk
       setNumberOfUsedHits(*trackparticle,summary->numberOfUsedHitsdEdx());
       setNumberOfOverflowHits(*trackparticle,summary->numberOfOverflowHitsdEdx());
     }
-    
-    if (!m_beamConditionsService.empty()) {
-        setTilt(*trackparticle,m_beamConditionsService->beamTilt(0),m_beamConditionsService->beamTilt(1));
+    auto beamspot = CacheBeamSpotData(Gaudi::Hive::currentContext());
+    if (beamspot) {
+        setTilt(*trackparticle,beamspot->beamTilt(0),beamspot->beamTilt(1));
     }
     // Parameters
     if (perigee) {
@@ -1088,4 +1084,11 @@ void TrackParticleCreatorTool::setTrackSummary( xAOD::TrackParticle& tp, const T
   }
 }
 
+const InDet::BeamSpotData* TrackParticleCreatorTool::CacheBeamSpotData(const EventContext &ctx) const {
+// if(ctx.evt() == m_lastEvent) return m_lastBeamSpot;
+ return m_trackToVertex->GetBeamSpotData(ctx);
+// m_lastEvent = ctx.evt();
+// return m_lastBeamSpot;
+}
+
 } // end of namespace Trk
diff --git a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackParticleCreatorTool.h b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackParticleCreatorTool.h
index f6b648909458fa27f7213173f61b1882f77aa63f..6d03d499252cef8689d3a02568f1748b75acb434 100755
--- a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackParticleCreatorTool.h
+++ b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITrackParticleCreatorTool.h
@@ -22,6 +22,10 @@ namespace Rec
   class TrackParticle;
 }
 
+namespace InDet{
+  class BeamSpotData;
+}
+
 namespace Trk 
 {
     class Track;
@@ -47,8 +51,8 @@ namespace Trk
           @warning In my opinion, the interface is not optimal - we're not taking ownership of the Trk::Track or Vx::Candidate,  
           so they should be passed by reference. 
       */ 
-      virtual Rec::TrackParticle* createParticle( const Trk::Track* track, 
-                                                  const Trk::VxCandidate* vxCandidate = 0, 
+      virtual Rec::TrackParticle* createParticle( const Trk::Track* track,
+                                                  const Trk::VxCandidate* vxCandidate = 0,
                                                   Trk::TrackParticleOrigin prtOrigin = Trk::NoVtx)=0; 
 
         /** Method to construct a xAOD::TrackParticle from a Rec::TrackParticle.
@@ -88,7 +92,9 @@ namespace Trk
                                                    const std::vector< xAOD::ParameterPosition>& positions,  
 						   xAOD::ParticleHypothesis prtOrigin = xAOD::noHypothesis,
 						   xAOD::TrackParticleContainer* container = 0 ) const = 0;
-      
+
+      /** Convenience method to retrieve Beamspot Data object -- cache this once per event for optimal performance */
+      virtual const InDet::BeamSpotData* CacheBeamSpotData(const EventContext &ctx) const =0;
 
     };
 
diff --git a/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/CMakeLists.txt b/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/CMakeLists.txt
index 3c1de11971b8285e9da7c5d98f90ca48a999b9bf..58292db2b3e853b1582e3896d36250d2aef8992a 100644
--- a/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/CMakeLists.txt
+++ b/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/CMakeLists.txt
@@ -16,6 +16,7 @@ atlas_depends_on_subdirs(
    Tracking/TrkEvent/TrkParameters
    Tracking/TrkEvent/TrkParticleBase
    Tracking/TrkEvent/VxVertex
+   InnerDetector/InDetConditions/BeamSpotConditionsData
    PRIVATE
    Event/EventPrimitives
    Event/xAOD/xAODTruth
diff --git a/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.cxx b/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.cxx
index 2a6d3f92ae2840df9665123a1ffb8b06b6a0dc75..b3f54ef968e93cef0813d6edefd89ef7e9250f07 100644
--- a/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.cxx
+++ b/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.cxx
@@ -35,7 +35,6 @@ GaussianDensityTestAlg::GaussianDensityTestAlg( const std::string& name,
   ::AthAlgorithm( name, pSvcLocator ),
   m_useBeamConstraint(true),
   m_firstEvent(true),
-  m_iBeamCondSvc("BeamCondSvc", name),
   m_iTHistSvc("THistSvc", name)
 {
   //
@@ -61,7 +60,7 @@ StatusCode GaussianDensityTestAlg::initialize()
   ATH_CHECK( m_estimator.retrieve() );
   ATH_CHECK( m_trackFilter.retrieve() );
   ATH_CHECK( m_ipEstimator.retrieve() );
-
+  ATH_CHECK(m_beamSpotKey.initialize());
   // setup histograms/trees
   m_h_density = new TH1F("Density", "Density", 800, -200.0, 200.0);
   m_h_truthDensity = new TH1F("Truth", "Truth", 800, -200.0, 200.0);
@@ -139,12 +138,17 @@ void GaussianDensityTestAlg::selectTracks(const xAOD::TrackParticleContainer* tr
 					std::vector<Trk::ITrackLink*>& trackVector)
 {
   Root::TAccept selectionPassed;
+  const InDet::BeamSpotData* beamspot = nullptr;
+  if(m_useBeamConstraint){
+     SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
+     if(beamSpotHandle.isValid()) beamspot = beamSpotHandle.retrieve();
+  }
   for (auto itr  = trackParticles->begin(); itr != trackParticles->end(); ++itr) {
     if (m_useBeamConstraint) {
       xAOD::Vertex beamposition;
       beamposition.makePrivateStore();
-      beamposition.setPosition(m_iBeamCondSvc->beamVtx().position());
-      beamposition.setCovariancePosition(m_iBeamCondSvc->beamVtx().covariancePosition());
+      beamposition.setPosition(beamspot->beamVtx().position());
+      beamposition.setCovariancePosition(beamspot->beamVtx().covariancePosition());
       selectionPassed=m_trackFilter->accept(**itr,&beamposition);
     }
     else
diff --git a/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.h b/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.h
index 24097ae1e3a10230298b030b0a20431b07cdfd7f..877062ddff11f5c4c06b935b7d466e70b5b294ee 100644
--- a/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.h
+++ b/Tracking/TrkVertexFitter/TrkVertexSeedFinderUtils/src/GaussianDensityTestAlg.h
@@ -28,14 +28,13 @@
 #include "xAODTruth/TruthEventContainer.h"
 #include "xAODTruth/TruthPileupEventContainer.h"
 
-#include "InDetBeamSpotService/IBeamCondSvc.h"
 #include "TrkVertexFitterInterfaces/IVertexTrackDensityEstimator.h"
 #include "InDetTrackSelectionTool/IInDetTrackSelectionTool.h"
 #include "TrkVertexFitterInterfaces/ITrackToVertexIPEstimator.h"
 
 //Amg
 #include "GeoPrimitives/GeoPrimitives.h"
-
+#include "BeamSpotConditionsData/BeamSpotData.h"
 #include "TH1F.h"
 #include "TTree.h"
 
@@ -116,7 +115,7 @@ class GaussianDensityTestAlg
 
   // Non-property private data
   
-  ServiceHandle< IBeamCondSvc > m_iBeamCondSvc;
+  SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
   ServiceHandle< ITHistSvc > m_iTHistSvc;
 
   /// Data handle keys
diff --git a/Trigger/ALP/ALP/ALP.h b/Trigger/ALP/ALP/ALP.h
deleted file mode 100644
index 4ec05641317aff54a74bea3f8364dfddd55cf329..0000000000000000000000000000000000000000
--- a/Trigger/ALP/ALP/ALP.h
+++ /dev/null
@@ -1,149 +0,0 @@
-// Dear emacs, this is -*- c++ -*-
-/*
-
-Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-Author: Sami Kama 2017
-*/
-//  Offline equivalent of HLTMPPU
-//  
-
-
-#ifndef ALP_ALP_H
-#define ALP_ALP_H
-
-#include <string>
-#include <set>
-#include <sys/types.h>
-#include <unistd.h>
-#include <deque>
-#include <thread>
-#include <condition_variable>
-#include <mutex>
-#include <memory>
-#include <chrono>
-
-#include "hltinterface/HLTInterface.h"
-#include "tbb/atomic.h"
-#include "boost/thread/thread.hpp"
-#include <boost/chrono/time_point.hpp>
-#include <boost/chrono/system_clocks.hpp>
-
-
-namespace hltinterface{
-  class IInfoRegister;
-  class DataSource;
-  class IPCControlInterface;
-  class GenericHLTContainer;
-}
-
-class TH1F;
-
-class ALP : public hltinterface::HLTInterface {
-public:
-  ALP(); 
-  ~ALP();
-  bool configure(const boost::property_tree::ptree& args) override;
-  bool connect(const boost::property_tree::ptree& args) override;
-  bool prepareForRun(const boost::property_tree::ptree& args)override ;
-  bool stopRun(const boost::property_tree::ptree& args)override;
-  bool disconnect(const boost::property_tree::ptree& args)override;
-  bool unconfigure(const boost::property_tree::ptree& args)override;
-  bool publishStatistics(const boost::property_tree::ptree& args)override;
-  void timeOutReached(const boost::property_tree::ptree& args)override;
-  bool hltUserCommand(const boost::property_tree::ptree& args)override;
-  bool process (const std::vector<eformat::ROBFragment<const uint32_t*> >& l1r, 
-		hltinterface::HLTResult& hltr,
-		const hltinterface::EventId& evId) override;
-  bool prepareWorker(const boost::property_tree::ptree& args)override;
-  bool finalizeWorker(const boost::property_tree::ptree& args)override;
-private:
-  pid_t forkChildren(int pos);
-  bool doProcessLoop(const boost::property_tree::ptree& args,int childNo);
-  void doNannyWork();
-  void collectChildExitStatus();
-  void terminateChildren(int timeOut);
-  void printPtree(const boost::property_tree::ptree& args,std::string level);
-  void startNanny();
-  void stopNanny();
-  void statsPublisher();
-  void startMotherPublisher();
-  void stopMotherPublisher();
-  void doMotherPublication();
-  //void publishMotherInfo(std::shared_ptr<ISInfoDictionary> dict,const std::string & name);
-  void printOpenFDs(const std::string&);
-  void printTasks(const std::string&);
-  int  countThreads();
-  void softTimeout();
-  void hardTimeout();
-  void runTimer();
-  void waitForFreeMem(int maxSleep=100);
-  pid_t m_myPid;
-  pid_t m_myPgid;
-  std::map<pid_t,int> m_myChildren,m_exitedChildren;
-  std::map<int,pid_t> m_posPidMap;
-  std::map<std::string,int> m_diedChildren;
-  std::map<std::string,pid_t> m_childPidMap;
-  std::deque<int> m_availableSlots;
-  bool m_processEvents,m_terminationStarted;
-  int m_numChildren;
-  int m_FinalizeTimeout;
-  boost::thread *m_nannyThread,*m_publisherThread,*m_motherPublisher;
-  tbb::atomic<bool> m_nannyWork,m_publisherWork,m_timerWork;
-  boost::mutex m_condMutex;
-  hltinterface::HLTInterface  *m_HLTSteering;
-  hltinterface::DataSource *m_dataSource;
-  hltinterface::IInfoRegister *m_infoService;
-  hltinterface::IPCControlInterface *m_ipcc;
-  std::string m_myName;
-  std::string m_ISSName;
-  std::string m_childLogPath;
-  boost::chrono::steady_clock::time_point m_lastPublish;
-  std::chrono::steady_clock::time_point m_TOTimerStart;
-  int m_publishInterval;
-  int m_forkDelay;
-  int m_preforkSleep;
-  int m_softTimeout;
-  int m_hardTimeout;
-  int m_interEventSleep_ms;
-  int m_interEventSpread_ms;
-  int m_termStagger;
-  unsigned int m_l1ResultTimeout;
-  long m_evtNum;
-  long m_lbNum;
-  uint32_t m_CTPROBId;
-  bool m_dumpFD;
-  bool m_dumpThreads;
-  bool m_saveConfigOpts;
-  bool m_threadsExist;
-  bool m_softTOTrigger,m_hardTOTrigger;
-  bool m_keepNumForks;
-  bool m_skipFinalize,m_skipFinalizeWorker,m_exitImmediately;
-  int m_eventsInInterval,m_acceptedInInterval,m_rejectedInInterval;
-  std::shared_ptr<hltinterface::GenericHLTContainer> m_motherInfo,m_childInfo;
-  size_t m_MINumKills,m_MINumForks,m_MIUnexpectedChildExits,m_MINumRequested,m_MINumActive,m_MINumExited;
-  size_t m_CINumEvents,m_CIAcceptedEvents,m_CIRejectedEvents,m_CIL1ResultFetchTimeouts,m_CISoftTimeouts,
-    m_CILongestWaitForL1Result, m_CILongestProcessingTime, m_CIAverageProcessingTime, m_CIAverageAcceptTime, 
-    m_CIAverageRejectTime, m_CIAverageL1ResultTime, m_CITimePercentInProcessing, m_CITimePercentInAccept, 
-    m_CITimePercentInReject, m_CITimePercentInWait, m_CITimePercentInSend;
-  std::vector<TH1F*> m_histos;
-  boost::property_tree::ptree *m_configTree,*m_prepareForRunTree;
-  std::unique_ptr<std::thread> m_timeoutThread;
-  std::condition_variable m_timeoutCond;
-  std::mutex m_timeoutMutex,m_statMutex;
-  int m_myPos;
-  std::chrono::milliseconds m_accDuration,//accept 
-    m_rejDuration, //reject
-    m_waitDuration, //waiting on L1Result
-    m_sendDuration, // time to send
-    m_procDuration, // time spend in processing
-    m_totDuration; //total time
-  std::chrono::milliseconds m_accDurationCum,//accept 
-    m_rejDurationCum, //reject
-    m_waitDurationCum, //waiting on L1Result
-    m_sendDurationCum, // time to send
-    m_procDurationCum, // time spend in processing
-    m_totDurationCum; //total time
-};
-
-#endif
diff --git a/Trigger/ALP/ALP/ALP_utils.h b/Trigger/ALP/ALP/ALP_utils.h
deleted file mode 100644
index a839c96b54478e7db12a7d48d204adb66642aa45..0000000000000000000000000000000000000000
--- a/Trigger/ALP/ALP/ALP_utils.h
+++ /dev/null
@@ -1,61 +0,0 @@
-// --*-- c++ --*--
-/*
-
-Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-Author: Sami Kama 2017
-*/
-// Author: Sami Kama
-
-#ifndef ALP_UTILS_H
-#define ALP_UTILS_H
-#include <boost/property_tree/ptree.hpp>
-#include <boost/property_tree/xml_parser.hpp>
-#include <boost/algorithm/string.hpp>
-#include <chrono>
-#include <ctime>
-#include <iostream>
-
-namespace ALPUtils{
-  inline void printPtree(const boost::property_tree::ptree& args, std::string level) {
-    boost::property_tree::ptree::const_iterator it,itend=args.end();
-    level+=" ";
-    for(it=args.begin();it!=itend;++it){
-      std::string val(it->second.get_value<std::string>());
-      boost::algorithm::trim(val);
-      std::cout<<level<<it->first<<" : "<<val<<std::endl;
-      printPtree(it->second,level);
-    }
-  }
-  
-  inline const std::string getTimeTag() {
-    auto tnow=std::chrono::system_clock::now();
-    std::time_t t=std::chrono::system_clock::to_time_t(tnow);
-    char buff[100];
-    auto countMS=std::chrono::duration_cast<std::chrono::milliseconds>(tnow.time_since_epoch()).count();
-    auto countS=std::chrono::duration_cast<std::chrono::seconds>(tnow.time_since_epoch()).count();
-    if (std::strftime(buff, sizeof(buff), "%Y-%b-%d %H:%M:%S", std::localtime(&t))){
-      snprintf(buff+strlen(buff),100-strlen(buff),",%03ld ",countMS-countS*1000);
-    }
-    return std::string(buff);
-  } 
-
-  inline bool dump2File(const std::string &fname,const boost::property_tree::ptree& args) {
-    if(!fname.empty()){
-      try{
-	boost::property_tree::write_xml(fname,args,std::locale());
-      }catch(boost::property_tree::xml_parser::xml_parser_error &ex){
-	std::cerr<<ALPUtils::getTimeTag()<<"Caught exception when writing xml to file \""
-		 <<fname<<"\" exception is \""<<ex.what()<<"\""<<std::endl;
-      }
-      return false;
-    }else{
-      std::cerr<<ALPUtils::getTimeTag()<<" File name can not be empty"<<std::endl;
-      return false;
-    }
-    return true;
-  }
-  
-}
-
-#endif
diff --git a/Trigger/ALP/ALP/DataSourceExceptions.h b/Trigger/ALP/ALP/DataSourceExceptions.h
deleted file mode 100644
index 2251b31536649a214803284bd04cd7374b38d2e4..0000000000000000000000000000000000000000
--- a/Trigger/ALP/ALP/DataSourceExceptions.h
+++ /dev/null
@@ -1,86 +0,0 @@
-// -*- c++ -*-
-/*
-
-Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-Author: Sami Kama 2017
-*/
-#ifndef ALP_DATASOURCEEXCEPTIONS_H
-#define ALP_DATASOURCEEXCEPTIONS_H
-#include <stdexcept>
-#include <string>
-
-namespace ALPNS{
-  namespace DSErrors{
-    class EventNotReady:virtual public std::exception{
-    public:
-      EventNotReady() noexcept;
-      EventNotReady(const EventNotReady&) noexcept;
-      EventNotReady& operator=(const EventNotReady&) noexcept;
-      EventNotReady(const std::string &m) noexcept;
-      virtual const char * what() const noexcept;
-      virtual ~EventNotReady() noexcept;
-    private:
-      std::string m_msg;
-    };
-    class NoMoreEvents:virtual public std::exception{
-    public:
-      NoMoreEvents() noexcept;
-      NoMoreEvents(const std::string &m) noexcept;
-      NoMoreEvents(const NoMoreEvents&) noexcept;
-      NoMoreEvents& operator=(const NoMoreEvents&) noexcept;
-      virtual const char * what() const noexcept;
-      virtual ~NoMoreEvents() noexcept;
-    private:
-      std::string m_msg;
-    };
-    class CommunicationError:virtual public std::exception{
-    public:
-      CommunicationError() noexcept;
-      CommunicationError(const std::string &m) noexcept;
-      CommunicationError(const CommunicationError&) noexcept;
-      CommunicationError& operator=(const CommunicationError&) noexcept;
-      virtual const char * what() const noexcept;
-      virtual ~CommunicationError() noexcept;
-    private:
-      std::string m_msg;
-    };
-  }//namespace DSErrors
-  //common errors
-  class BadConfig:virtual public std::exception{
-  public:
-    BadConfig() noexcept;
-    BadConfig(const std::string &m) noexcept;
-    BadConfig(const BadConfig&) noexcept;
-    BadConfig& operator=(const BadConfig&) noexcept;
-    virtual const char * what() const noexcept;
-    virtual ~BadConfig() noexcept;
-  private:
-    std::string m_msg;
-  };
-  
-  class NonexistentLib:virtual public std::exception{
-  public:
-    NonexistentLib() noexcept;
-    NonexistentLib(const std::string &m) noexcept;
-    NonexistentLib(const NonexistentLib&) noexcept;
-    NonexistentLib& operator=(const NonexistentLib&) noexcept;
-    virtual const char * what() const noexcept;
-    virtual ~NonexistentLib() noexcept;
-  private:
-    std::string m_msg;
-  };
-  
-  class UnexpectedException:virtual public std::exception{
-  public:
-    UnexpectedException()noexcept;
-    UnexpectedException(const std::string &m)noexcept;
-    UnexpectedException(const UnexpectedException&) noexcept;
-    UnexpectedException& operator=(const UnexpectedException&) noexcept;
-    virtual const char * what() const noexcept;
-    virtual ~UnexpectedException() noexcept;
-    private:
-      std::string m_msg;
-  };
-}
-#endif
diff --git a/Trigger/ALP/ALP/FileDataSource.h b/Trigger/ALP/ALP/FileDataSource.h
deleted file mode 100644
index 317c82ead129477373a4ecf8269ecff9b1d9ee77..0000000000000000000000000000000000000000
--- a/Trigger/ALP/ALP/FileDataSource.h
+++ /dev/null
@@ -1,84 +0,0 @@
-// Dear emacs, this is -*- c++ -*-
-/*
-
-Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-Author: Sami Kama 2017
-*/
-
-#ifndef ALP_FILEDATASOURCE_H
-#define ALP_FILEDATASOURCE_H
-#include <vector>
-#include <string>
-#include <map>
-#include <set>
-#include <memory>
-#include <unordered_map>
-#include "hltinterface/DataSource.h"
-#include "eformat/compression.h"
-
-namespace EventStorage{
-  class DataReader;
-  class DataWriter;
-  struct run_parameters_record;
-}
-
-namespace eformat{
-  namespace read{
-    class FullEventFragment;
-  }
-}
-
-namespace ALPNS{
-
-  class FileDataSource:public hltinterface::DataSource{
-  public:
-    FileDataSource();
-    virtual ~FileDataSource();
-    virtual bool configure(const boost::property_tree::ptree &args);
-    virtual bool prepareForRun(const boost::property_tree::ptree &args);
-    virtual void sendResult(const bool accept,const uint32_t l1id, const hltinterface::HLTResult& res);
-  
-    virtual uint32_t collect(std::vector<hltinterface::DCM_ROBInfo>& data,
-			     const uint32_t lvl1_id, const std::vector<uint32_t>& ids) override;
-  
-    virtual uint32_t collect(std::vector<hltinterface::DCM_ROBInfo>& data, uint32_t lvl1_id) override;
-  
-    virtual void reserveROBData(const uint32_t lvl1_id, const std::vector<uint32_t>& ids) override;
-
-    virtual  void getL1Result(std::vector<eformat::ROBFragment<const uint32_t*> > &l1r,
-			      uint32_t &lvl1_id,
-			      uint64_t &gid, 
-			      uint64_t &lumiBlock) override;
-
-    virtual bool finalize(const boost::property_tree::ptree &args);
-    virtual bool prepareWorker(const boost::property_tree::ptree &args);
-    virtual bool finalizeWorker(const boost::property_tree::ptree &args);
-  private:
-    bool nextFile();
-    uint32_t* getNextEvent();
-    bool skipEvents(uint num);
-    bool m_loopFiles;
-    int m_currFile;
-    std::vector<std::string> *m_fileNames;
-    std::set<uint32_t> *m_collectedRobs;
-    EventStorage::DataReader* m_currReader;
-    std::unique_ptr<EventStorage::run_parameters_record> m_runParams;
-    std::unique_ptr<EventStorage::DataWriter> m_writer;
-    eformat::read::FullEventFragment *m_currEvent;
-    std::unordered_map<uint32_t, const uint32_t*> *m_IDmap; ///< The ID <-> ROB map    
-    std::vector<eformat::ROBFragment<const uint32_t*> > *m_l1r; ///< The LVL1 result
-    std::string m_outFileName;
-    eformat::Compression m_comp;
-    unsigned int m_compLevel;
-    const uint32_t * m_blob;
-    uint32_t m_stride;
-    uint32_t m_start;
-    uint32_t m_currEventInFile;
-    int m_nMaxEvents;
-    int m_nEventsToRead,m_nEvents;
-
-  };
-}
-
-#endif
diff --git a/Trigger/ALP/ALP/Issues.h b/Trigger/ALP/ALP/Issues.h
deleted file mode 100644
index b3c5d2ccaa78a1991ef0d44cc01cc0e4570b9a2a..0000000000000000000000000000000000000000
--- a/Trigger/ALP/ALP/Issues.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-
-Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-Author: Sami Kama 2017
-*/
-
-#ifndef ALP_ISSUES_H
-#define ALP_ISSUES_H
-
-ERS_DECLARE_ISSUE(ALPIssues,                // namespace name
-		  CommandLineIssue,   // issue name
-		  "Command-line parameter issue: " << type << ".",        // message
-		  ((const char *)type )             // first attribute
-		  )
-
-ERS_DECLARE_ISSUE(ALPIssues,                // namespace name
-		  DLLIssue,   // issue name
-		  "Can't load dll: \"" << type << "\".",        // message
-		  ((const char *)type )             // first attribute
-		  )
-
-ERS_DECLARE_ISSUE(ALPIssues,                // namespace name
-		  UnexpectedIssue,   // issue name
-		  "Unexpected Issue: \"" << type << "\".",        // message
-		  ((const char *)type )             // first attribute
-		  )
-
-ERS_DECLARE_ISSUE(ALPIssues,                // namespace name
-		  ConfigurationIssue,   // issue name
-		  "Configuration Issue: \"" << type << "\".",        // message
-		  ((const char *)type )             // first attribute
-		  )
-
-ERS_DECLARE_ISSUE(ALPIssues,                // namespace name
-		  TransitionIssue,   // issue name
-		  "Transition Issue: \"" << type << "\".",        // message
-		  ((const char *)type )             // first attribute
-		  )
-
-ERS_DECLARE_ISSUE(ALPIssues,                // namespace name
-		  ChildIssue,   // issue name
-		  "Child Issue: \"" << type << "\".",        // message
-		  ((const char *)type )             // first attribute
-		  )
-
-#endif
diff --git a/Trigger/ALP/ALP/PluginLoader.h b/Trigger/ALP/ALP/PluginLoader.h
deleted file mode 100644
index 48c9d5cce793d410c9a6d94139c3551a40625c58..0000000000000000000000000000000000000000
--- a/Trigger/ALP/ALP/PluginLoader.h
+++ /dev/null
@@ -1,84 +0,0 @@
-// --*- c++ -*-- 
-/*
-
-Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-Author: Sami Kama 2017
-*/
-
-#ifndef __ALP_PLUGINLOADER_H
-#define __ALP_PLUGINLOADER_H
-
-#include <errno.h>
-#include <dlfcn.h>
-#include <unistd.h>
-#include <vector>
-#include <string>
-#include <iostream>
-#include <map>
-#include <memory>
-
-namespace ALPNS{
-  class Plugin{
-  public:
-    Plugin(const std::vector<std::string>& libs):m_libs(libs){};
-    template <typename T>
-    T function(const std::string &name);
-  private:
-    std::vector<std::string> m_libs;
-  };
-
-  class LibUnloader{
-  public:
-    LibUnloader(const std::string& lname):m_libName(lname){};
-    void operator()(void* handle)const{
-      char* error;
-      dlerror();
-      int ret=dlclose(handle);
-      if (ret!=0){
-	if((error=dlerror())!=NULL){
-	  std::cerr<<"Failed to close library "<<m_libName<<" Error is "<<error<<std::endl;
-	}
-      }
-    }
-  private:
-    std::string m_libName;
-  };
-
-  class PluginLoader{
-  public:
-    PluginLoader();
-    ~PluginLoader();
-    static bool addPlugin(const std::string &unitName,const std::vector<std::string> &libList );
-    static std::shared_ptr<void> getHandle(const std::string& libName);
-    static std::shared_ptr<ALPNS::Plugin> get(const std::string& pluginName);
-  private:
-    static std::unique_ptr<std::map<std::string,std::vector<std::string> > >  m_units;
-    static std::unique_ptr<std::map<std::string,std::shared_ptr<void> > >  m_libHandles;
-  };
-}
-
-template <typename T>
-T ALPNS::Plugin::function(const std::string &name){
-  union{
-    void *p;
-    T origType;
-  }u;
-  u.p=0;
-  //char *error(0);
-  for(auto &l:m_libs){
-    auto h=ALPNS::PluginLoader::getHandle(l);
-    if(h){
-      void* handle=h.get();
-      dlerror();
-      void* s=dlsym(handle,name.c_str());
-      if(!dlerror()){
-	u.p=s;
-	return u.origType;
-      }
-    }
-  }
-  return u.origType;
-}
-
-#endif
diff --git a/Trigger/ALP/CMakeLists.txt b/Trigger/ALP/CMakeLists.txt
deleted file mode 100644
index 36208f9dc33d9c14417de97ed9455279840aa5a2..0000000000000000000000000000000000000000
--- a/Trigger/ALP/CMakeLists.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-################################################################################
-# Package: ALP
-# Author: Sami Kama 2017
-################################################################################
-
-# Declare the package name:
-atlas_subdir( ALP )
-
-# Declare the package's dependencies:
-atlas_depends_on_subdirs( PUBLIC
-                          GaudiKernel
-#                          PRIVATE
-                          )
-
-# External dependencies:
-find_package( Boost COMPONENTS filesystem thread system )
-find_package( PythonLibs )
-find_package (ROOT COMPONENTS Core Hist )
-find_package( tdaq-common COMPONENTS ers eformat eformat_write hltinterface DataWriter DataReader )
-# Component(s) in the package:
-atlas_add_library( ALP
-                   src/*.cxx 
-                   PUBLIC_HEADERS ALP
-                   INCLUDE_DIRS ${TDAQ-COMMON_INCLUDE_DIRS} 
-                   PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS}
-                   LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} GaudiKernel 
-                   PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} ${PYTHON_LIBRARIES} ${ROOT_LIBRARIES} )
-
-# Install files from the package:
-atlas_install_python_modules( python/*.py )
-atlas_install_joboptions( share/*.py )
-
diff --git a/Trigger/ALP/python/ALPPy.cxx b/Trigger/ALP/python/ALPPy.cxx
deleted file mode 100644
index 6163b6f5d7dd9e2744069755a06b80a6089ecbbd..0000000000000000000000000000000000000000
--- a/Trigger/ALP/python/ALPPy.cxx
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
-
-Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-Author: Sami Kama 2017
-*/
-// Python bindings for ALP
-#include <dlfcn.h>
-#include <cstdio>
-#include <memory>
-#include <Python.h>
-#include <sstream>
-#include <signal.h>
-#include <boost/property_tree/ptree.hpp>
-#include <boost/property_tree/xml_parser.hpp>
-#include "hltinterface/HLTInterface.h"
-#include "ALP/ALP_utils.h"
-
-typedef hltinterface::HLTInterface* (*creator)(void);
-typedef void (*destroyer)(hltinterface::HLTInterface*);
-
-
-void sahandler(int sig,siginfo_t * si,void* /*vp*/){
-  fprintf(stderr,"ALPPy Got signal\n");
-  if(sig==SIGTERM||sig==SIGINT){
-    //std::cerr<<"Got signal"<<std::endl;
-    std::terminate();
-  }
-  return;
-  std::cerr<<ALPUtils::getTimeTag()<<__PRETTY_FUNCTION__<<"signo="<<si->si_signo
-	   <<"  , errno="<<si->si_errno<<std::endl
-	   // <<"  , trapno="<<si->si_trapno<<std::endl
-    	   <<"  , pid="<<si->si_pid<<std::endl
-	   <<"  , uid="<<si->si_uid<<std::endl
-	   <<"  , status="<<si->si_status<<std::endl;
-  
-  std::cerr<<ALPUtils::getTimeTag()<<__PRETTY_FUNCTION__<<" si_code is =";
-  switch (si->si_code){
-  case CLD_EXITED:
-    std::cerr<<"CLD_EXITED"<<std::endl;
-    break;
-  case CLD_KILLED:
-    std::cerr<<"CLD_KILLED"<<std::endl;
-    break;
-  case CLD_DUMPED:
-    std::cerr<<"CLD_DUMPED"<<std::endl;
-    break;
-  case CLD_TRAPPED:
-    std::cerr<<"CLD_TRAPPED"<<std::endl;
-    break;
-  case CLD_STOPPED:
-    std::cerr<<"CLD_STOPPED"<<std::endl;
-    break;
-  case CLD_CONTINUED:
-    std::cerr<<"CLD_CONTINUED"<<std::endl;
-    break;
-  default:
-    std::cerr<<"OTHER CODE = "<<si->si_code<<std::endl;
-    break;
-  }
-}
-
-
-std::shared_ptr<hltinterface::HLTInterface> s_pu;
-static PyObject* ALPPyError;
-
-static PyObject* loadPULibrary(PyObject* self,PyObject* args){
-  const char *hltdll=0;
-  const char hltdllOrig[]="libHLTMMPU.so";
-  if (!PyArg_ParseTuple(args, "s", &hltdll)){
-    hltdll=hltdllOrig;
-  }
-  void * myDllHandle=dlopen(hltdll,RTLD_LAZY|RTLD_GLOBAL);
-
-  if(!myDllHandle){
-    char buff[2000];
-    const char* errmsg=dlerror();
-    if(errmsg){
-      snprintf(buff,2000,"Can't open ALP dll '%s' error is %s",hltdll,errmsg);
-    }else{
-      snprintf(buff,2000,"Can't open ALP dll '%s'",hltdll);
-    }
-    PyErr_SetString(ALPPyError, buff);
-    return NULL;
-  }
-
-  typedef creator (*creator_dlsym)(void *, const char*);
-  creator c=reinterpret_cast<creator_dlsym>(dlsym)(myDllHandle,"create_interface");
-  const char* dlsymError=dlerror();
-  if(dlsymError){
-    char buff[2000];
-    snprintf(buff,2000,"Can't import create_interface function from library '%s' error is %s",hltdll,dlsymError);
-    PyErr_SetString(ALPPyError, buff);
-    return NULL;
-  }
-
-  typedef destroyer (*destroyer_dlsym)(void *, const char*);
-  destroyer d=reinterpret_cast<destroyer_dlsym>(dlsym)(myDllHandle,"destroy_interface");
-  dlsymError=dlerror();
-  if(dlsymError){
-    char buff[2000];
-    snprintf(buff,2000,"Can't import destroy_interface function from library '%s' error is %s",hltdll,dlsymError);
-    PyErr_SetString(ALPPyError, buff);
-    return NULL;
-  }
-
-  auto hltmppu=c();
-  s_pu.reset(hltmppu,std::ptr_fun(d));
-
-  Py_RETURN_TRUE;
-}
-
-bool checkInit(){
-  if(!s_pu){
-    PyErr_SetString(ALPPyError, "Need to call LoadLibrary first!");    
-    return false;
-  }
-  return true;
-}
-
-static PyObject* configurePU(PyObject* self,PyObject* args){
-  if(!checkInit()){
-    return NULL;
-  }
-
-  const char * ptreestr;
-  if (!PyArg_ParseTuple(args, "s", &ptreestr)){
-      char buff[2000];
-      snprintf(buff,2000,"Failed to parse the arguments'");
-      PyErr_SetString(ALPPyError, buff);
-      return NULL;
-  }else{
-    std::stringstream str(ptreestr);
-    boost::property_tree::ptree pt;
-    int fl=  boost::property_tree::xml_parser::no_comments|
-      boost::property_tree::xml_parser::trim_whitespace;
-    try{
-      boost::property_tree::xml_parser::read_xml(str,pt,fl);
-    }catch(std::exception &ex){
-      str.str("Caught exception when parsing ptree. Exception was:");
-      str<<std::endl<<ex.what()<<std::endl;
-      PyErr_SetString(ALPPyError, str.str().c_str());
-      return NULL;      
-    }
-    try{
-      if(s_pu->configure(pt)){
-	Py_RETURN_TRUE;
-      }else{
-	Py_RETURN_FALSE;
-      }
-    }catch(std::exception &ex){
-      str.str("Caught exception during configure");
-      str<<std::endl<<ex.what()<<std::endl;
-      PyErr_SetString(ALPPyError, str.str().c_str());
-      return NULL;      
-    }
-  }
-  Py_RETURN_NONE;
-}
-
-static PyObject* unconfigurePU(PyObject* self,PyObject* args){
-  if(!checkInit()){
-    return NULL;
-  }
-  const char * ptreestr;
-  if (!PyArg_ParseTuple(args, "s", &ptreestr)){
-      char buff[2000];
-      snprintf(buff,2000,"Failed to parse the arguments'");
-      PyErr_SetString(ALPPyError, buff);
-      return NULL;
-  }else{
-    std::stringstream str(ptreestr);
-    boost::property_tree::ptree pt;
-    int fl=  boost::property_tree::xml_parser::no_comments|
-      boost::property_tree::xml_parser::trim_whitespace;
-    try{
-      boost::property_tree::xml_parser::read_xml(str,pt,fl);
-    }catch(std::exception &ex){
-      str.str("Caught exception when parsing ptree. Exception was:");
-      str<<std::endl<<ex.what()<<std::endl;
-      PyErr_SetString(ALPPyError, str.str().c_str());
-      return NULL;      
-    }
-    try{
-      if(s_pu->unconfigure(pt)){
-	Py_RETURN_TRUE;
-      }else{
-	Py_RETURN_FALSE;
-      }
-    }catch(std::exception &ex){
-      str.str("Caught exception during unconfigure");
-      str<<std::endl<<ex.what()<<std::endl;
-      PyErr_SetString(ALPPyError, str.str().c_str());
-      return NULL;      
-    }
-
-  }
-  Py_RETURN_NONE;
-}
-
-static PyObject* connectPU(PyObject* self,PyObject* args){
-  if(!checkInit()){
-    return NULL;
-  }
-  const char * ptreestr;
-  if (!PyArg_ParseTuple(args, "s", &ptreestr)){
-      char buff[2000];
-      snprintf(buff,2000,"Failed to parse the arguments'");
-      PyErr_SetString(ALPPyError, buff);
-      return NULL;
-  }else{
-    std::stringstream str(ptreestr);
-    boost::property_tree::ptree pt;
-    int fl=  boost::property_tree::xml_parser::no_comments|
-      boost::property_tree::xml_parser::trim_whitespace;
-    try{
-      boost::property_tree::xml_parser::read_xml(str,pt,fl);
-    }catch(std::exception &ex){
-      str.str("Caught exception when parsing ptree. Exception was:");
-      str<<std::endl<<ex.what()<<std::endl;
-      PyErr_SetString(ALPPyError, str.str().c_str());
-      return NULL;      
-    }
-    try{
-      if(s_pu->connect(pt)){
-	Py_RETURN_TRUE;
-      }else{
-	Py_RETURN_FALSE;
-      }
-    }catch(std::exception &ex){
-      str.str("Caught exception during connect");
-      str<<std::endl<<ex.what()<<std::endl;
-      PyErr_SetString(ALPPyError, str.str().c_str());
-      return NULL;      
-    }
-
-  }
-  Py_RETURN_NONE;
-
-}
-
-static PyObject* prepareForRunPU(PyObject* self,PyObject* args){
-  if(!checkInit()){
-    return NULL;
-  }
-  const char * ptreestr;
-  if (!PyArg_ParseTuple(args, "s", &ptreestr)){
-      char buff[2000];
-      snprintf(buff,2000,"Failed to parse the arguments'");
-      PyErr_SetString(ALPPyError, buff);
-      return NULL;
-  }else{
-    std::stringstream str(ptreestr);
-    boost::property_tree::ptree pt;
-    int fl=  boost::property_tree::xml_parser::no_comments|
-      boost::property_tree::xml_parser::trim_whitespace;
-    try{
-      boost::property_tree::xml_parser::read_xml(str,pt,fl);
-    }catch(std::exception &ex){
-      str.str("Caught exception when parsing ptree. Exception was:");
-      str<<std::endl<<ex.what()<<std::endl;
-      PyErr_SetString(ALPPyError, str.str().c_str());
-      return NULL;      
-    }
-    try{
-      if(s_pu->prepareForRun(pt)){
-	Py_RETURN_TRUE;
-      }else{
-	Py_RETURN_FALSE;
-      }
-    }catch(std::exception &ex){
-      str.str("Caught exception during prepareForRun");
-      str<<std::endl<<ex.what()<<std::endl;
-      PyErr_SetString(ALPPyError, str.str().c_str());
-      return NULL;      
-    }
-
-  }
-  Py_RETURN_NONE;
-
-}
-
-static PyObject* stopRunPU(PyObject* self,PyObject* args){
-  if(!checkInit()){
-    return NULL;
-  }
-  const char * ptreestr;
-  if (!PyArg_ParseTuple(args, "s", &ptreestr)){
-      char buff[2000];
-      snprintf(buff,2000,"Failed to parse the arguments'");
-      PyErr_SetString(ALPPyError, buff);
-      return NULL;
-  }else{
-    std::stringstream str(ptreestr);
-    boost::property_tree::ptree pt;
-    int fl=  boost::property_tree::xml_parser::no_comments|
-      boost::property_tree::xml_parser::trim_whitespace;
-    try{
-      boost::property_tree::xml_parser::read_xml(str,pt,fl);
-    }catch(std::exception &ex){
-      str.str("Caught exception when parsing ptree. Exception was:");
-      str<<std::endl<<ex.what()<<std::endl;
-      PyErr_SetString(ALPPyError, str.str().c_str());
-      return NULL;      
-    }
-    try{
-      if(s_pu->stopRun(pt)){
-	Py_RETURN_TRUE;
-      }else{
-	Py_RETURN_FALSE;
-      }
-    }catch(std::exception &ex){
-      str.str("Caught exception during stopRun");
-      str<<std::endl<<ex.what()<<std::endl;
-      PyErr_SetString(ALPPyError, str.str().c_str());
-      return NULL;      
-    }
-
-  }
-  Py_RETURN_NONE;
-
-}
-
-static PyObject* userCommandPU(PyObject* self,PyObject* args){
-  if(!checkInit()){
-    return NULL;
-  }
-  const char * ptreestr;
-  if (!PyArg_ParseTuple(args, "s", &ptreestr)){
-      char buff[2000];
-      snprintf(buff,2000,"Failed to parse the arguments'");
-      PyErr_SetString(ALPPyError, buff);
-      return NULL;
-  }else{
-    std::stringstream str(ptreestr);
-    boost::property_tree::ptree pt;
-    int fl=  boost::property_tree::xml_parser::no_comments|
-      boost::property_tree::xml_parser::trim_whitespace;
-    try{
-      boost::property_tree::xml_parser::read_xml(str,pt,fl);
-    }catch(std::exception &ex){
-      str.str("Caught exception when parsing ptree. Exception was:");
-      str<<std::endl<<ex.what()<<std::endl;
-      PyErr_SetString(ALPPyError, str.str().c_str());
-      return NULL;      
-    }
-    try{
-      if(s_pu->hltUserCommand(pt)){
-	Py_RETURN_TRUE;
-      }else{
-	Py_RETURN_FALSE;
-      }
-    }catch(std::exception &ex){
-      str.str("Caught exception during user command");
-      str<<std::endl<<ex.what()<<std::endl;
-      PyErr_SetString(ALPPyError, str.str().c_str());
-      return NULL;      
-    }
-
-  }
-  Py_RETURN_NONE;
-}
-
-static PyObject* setHandler(PyObject* self,PyObject* args){
-  static struct sigaction act;
-  memset (&act, '\0', sizeof(act));
-  act.sa_sigaction=&sahandler;
-  act.sa_flags=SA_SIGINFO;
-  if(sigaction(SIGTERM,&act,NULL)<0){
-    std::cerr<<ALPUtils::getTimeTag()<<"Error setting signal handler for SIGTERM"<<std::endl;
-      PyErr_SetString(ALPPyError, "Setting Signal handler failed");
-      return NULL;
-  }
-  if(sigaction(SIGINT,&act,NULL)<0){
-    std::cerr<<ALPUtils::getTimeTag()<<"Error setting signal handler for SIGINT"<<std::endl;
-      PyErr_SetString(ALPPyError, "Setting Signal handler failed");
-      return NULL;
-  }
-  std::cout<<"Signal handler set"<<std::endl;
-  Py_RETURN_TRUE;
-}
-
-static PyMethodDef HLTMPPymethods[]= {
-  {(char *)"LoadLibrary", (PyCFunction)loadPULibrary, METH_VARARGS, "Method to load HLTMMPU library. Needs to be called first"},
-  {(char *)"ConfigurePU", (PyCFunction)configurePU, METH_VARARGS, "configure call for PU"},
-  {(char *)"UnconfigurePU", (PyCFunction)unconfigurePU, METH_VARARGS, "unconfigure call for PU"},
-  {(char *)"ConnectPU", (PyCFunction)connectPU, METH_VARARGS, "Connect call for PU"},
-  {(char *)"PrepareForRunPU", (PyCFunction)prepareForRunPU, METH_VARARGS, "PrepareForRun call for PU"},
-  {(char *)"StopRunPU", (PyCFunction)stopRunPU, METH_VARARGS, "StopRun call for PU"},
-  {(char *)"UserCommandPU", (PyCFunction)userCommandPU, METH_VARARGS, "Send hltusercommand to Mother process"},
-  {(char *)"SetSignalHandler", (PyCFunction)setHandler, METH_VARARGS, "Set Signal handler"},
-  { NULL, NULL, 0, NULL }
-};
-
-PyMODINIT_FUNC init_HLTMPPy(void) { 
-
-  PyObject* m;
-  m=Py_InitModule("_HLTMPPy", HLTMPPymethods); 
-  ALPPyError=PyErr_NewException("HLTMPPy.error",0,0);
-  Py_INCREF(ALPPyError);
-  PyModule_AddObject(m,"error",ALPPyError);
-}
diff --git a/Trigger/ALP/python/ALPPy/ALPPy.py b/Trigger/ALP/python/ALPPy/ALPPy.py
deleted file mode 100644
index 8a01a4fda9d8cdfaa99d454685ace6f2baff5485..0000000000000000000000000000000000000000
--- a/Trigger/ALP/python/ALPPy/ALPPy.py
+++ /dev/null
@@ -1,904 +0,0 @@
-#####################
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-# 
-# Author: Sami Kama 2017
-#####################
-# Python module to construct ptrees for ALP execution
-# and provide ALP class for using from python side.
-#
-import os,sys
-from lxml import etree as et
-
-def recurseDict(d,rootName):
-    r=et.Element(rootName)
-    if isinstance(d,dict):
-        for k in iter(d):
-            val=d[k]
-            if isinstance(val,(str,unicode)):
-                et.SubElement(r,k).text=str(val)
-            else:
-                l=recurseDict(val,k)
-                r.append(l)
-    elif isinstance(d,(str,unicode)):
-        r.text=d
-    else:
-        for val in d:
-            r.append(recurseDict(val,rootName))
-    return r
-
-def recurseDictOld(d,rootName):
-    r=et.Element(rootName)
-    for k in iter(d):
-        val=d[k]
-        if isinstance(val,(str,unicode)):
-            et.SubElement(r,k).text=str(val)
-        else:
-            l=recurseDict(val,k)
-            r.append(l)
-    return r
-
-class DataSource:
-    def __init__(self,library):
-        self._library=library
-        self._defaultDict={}
-
-    def getLibrary(self):
-        return self._library
-    def getDefaultDict(self):
-        return self._defaultDict
-    def getTree(self):
-        return None
-
-
-class DCMDataSource(DataSource):
-    def __init__(self,library="dfinterfaceDcm"):
-        DataSource.__init__(self,library)
-        self._defaultDict={
-            # "HLTDFDCMBackend":{
-                "UID" : "DataSource-is-DCM",
-                "library" : str(self._library)
-            # }
-        }
-
-    def getTree(self):
-        return recurseDict({"HLTDFDCMBackend":self._defaultDict},"DataSource")
-
-class FileDataSource(DataSource):
-    def __init__(self,library="FileDataSource",
-                 fileList=[],
-                 outFile=None,
-                 compressionFormat="ZLIB",
-                 compressionLevel=2,
-                 numEvents=-1,
-                 loopFiles="false",
-                 preload="false"):
-        self._fileList=fileList
-        DataSource.__init__(self,library)
-        self._defaultDataDict={
-            "UID" : "FileDS",
-            "library" : str(self._library),
-            "loopOverFiles":loopFiles,
-            "start_id":1,
-            "preload":preload,
-            "numEvents":numEvents,
-            "fileOffset":-1,
-            "compressionLevel":compressionLevel,
-            "compressionFormat":compressionFormat,
-            "fileList":self._fileList
-            }
-        if outFile is not None:
-            self._defaultDataDict["outputFileName"]=outFile
-        self._defaultDict={
-            "HLTFileDataSource":
-                self._defaultDataDict
-            }
-
-    def getTree(self):
-        root=et.Element("DataSource")
-        ds=et.SubElement(root,"HLTFileDataSource")
-        plainlist=[x for x in self._defaultDataDict.keys() if x is not "fileList" ]
-        for k in plainlist:
-            et.SubElement(ds,k).text=str(self._defaultDataDict[k])
-        flist=et.SubElement(ds,"fileList")
-        files=self._defaultDataDict["fileList"]
-        for f in files:
-            et.SubElement(flist,"file").text=str(f)
-        return root
-
-class DFFileDataSource(DataSource):
-    def __init__(self,library="DFFileBackend",fileList=[]):
-        self._fileList=fileList
-        DataSource.__init__(self,library)
-        self._defaultDataDict={
-            "UID" : "DataSource-is-DCM",
-            "library" : str(self._library),
-            "loopOverFiles":"false",
-            "start_id":1,
-            "preload":"false",
-            "numEvents":-1,
-            "fileList":self._fileList
-            }
-        self._defaultDict={
-            "HLTDFFileBackend":
-                self._defaultDataDict
-            }
-
-    def getTree(self):
-        root=et.Element("DataSource")
-        ds=et.SubElement(root,"HLTDFFileBackend")
-        plainlist=[x for x in self._defaultDataDict.keys() if x is not "fileList" ]
-        for k in plainlist:
-            et.SubElement(ds,k).text=str(self._defaultDataDict[k])
-        flist=et.SubElement(ds,"fileList")
-        files=self._defaultDataDict["fileList"]
-        for f in files:
-            et.SubElement(flist,"file").text=str(f)
-        return root
-
-class InfoService:
-    def __init__(self,libraryName):
-        self._library=libraryName
-        self._defaultDict={}
-    def getLibrary(self):
-        return self._library
-    def getDefaultDictionary(self):
-        return self._defaultDict
-    def getTree(self):
-        return None
-
-class MonSvcInfoService(InfoService):
-    def __init__(self,libraryName="MonSvcInfoService",
-                 OHServer="${TDAQ_OH_SERVER=Histogramming}",
-                 OHSlots=1,
-                 OHInterval=80,
-                 OHRegex=".*",
-                 ISServer="${TDAQ_IS_SERVER=DF}",
-                 ISSlots=1,
-                 ISInterval=5,
-                 ISRegex=".*"
-                 
-    ):
-        InfoService.__init__(self,libraryName)
-        self._defaultDict={
-            "UID":"hltMonSvc",
-            "library":"MonSvcInfoService",
-            "ConfigurationRules":[
-                {
-                    "UID":"HltpuConfigurationRuleBundle",
-                    "Rules" : [
-                        {
-                            "UID":"HltpuOHRule",
-                            "IncludeFilter":str(OHRegex),
-                            "ExcludeFilter":"",
-                            "Name":"Dumm",
-                            "Parameters":{
-                                "OHPublishingParameters":{
-                                    "UID":"HltpuOHPublishingParameters",
-                                    "PublishInterval":str(OHInterval),
-                                    "OHServer":str(OHServer),
-                                    "NumberOfSlots":str(OHSlots),
-                                    "ROOTProvider":"${TDAQ_APPLICATION_NAME}"
-                                }
-                            }
-                        },
-                        {
-                            "UID":"HltpuISRule",
-                            "IncludeFilter":str(ISRegex),
-                            "ExcludeFilter":"",
-                            "Name":"DummDumm",
-                            "Parameters":{
-                                "ISPublishingParameters":{
-                                    "UID":"HltpuISPublishingParameters",
-                                    "PublishInterval":str(ISInterval),
-                                    "NumberOfSlots":str(ISSlots),
-                                    "ISServer":str(ISServer)
-                                }
-                            }
-                        }
-                    ]
-                }
-            ]
-        }
-    def getTree(self):
-        root=et.Element("HLTMonInfoImpl")
-        plainlist=[x for x in iter(self._defaultDict) if x is not "ConfigurationRules" ]
-        for k in plainlist:
-            et.SubElement(root,k).text=str(self._defaultDict[k])
-        crl=et.SubElement(root,"ConfigurationRules")
-        cr=self._defaultDict["ConfigurationRules"]
-        for f in cr:
-            crb=et.Element("ConfigurationRuleBundle")
-            et.SubElement(crb,"UID").text=str(f["UID"])
-            rules=et.SubElement(crb,"Rules")
-            for r in f["Rules"]:
-                #crn=et.SubElement(rules,"ConfigurationRule")
-                crn=recurseDict(r,"ConfigurationRule")
-                rules.append(crn)
-            #et.SubElement(flist,"file").text=str(f)
-            crl.append(crb)
-        return root
-        
-class TriggerConfig:
-    def __init__(self):
-        self._defaultDict={}
-    def getDefaultLibrary(self):
-        return None
-    def getDBConfig(self,SMK=0,coral=False,srv="LOCAL_HOST",port=3320,
-                    user="ATLAS_CONF_TRIGGER_RUN2_R",pwd="TrigConfigRead2015",alias="TRIGGERDB"):
-        TC={"TriggerDBConnection":
-                {
-                "UID":"TriggerDB_RUN2_CoralServer_Example",
-                "Server":"%s"%(srv),
-                "Port":"%s"%(port),
-                "Name":"'&oracle://ATLAS_CONFIG/ATLAS_CONF_TRIGGER_RUN2'",
-                "Alias":str(alias),
-                "User":"%s"%(user),
-                "Password":"%s"%(pwd),
-                "Type":"Coral",
-                "SuperMasterKey":"%s"%(SMK)
-                }
-            }
-
-        if coral:
-            defaultConns= [
-                {
-                    "UID": "ATLAS_COOLONL_INDET_CORALSRV",
-                    "Server": "%s"%(srv),
-                    "Port" :"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_INDET'",
-                    "Alias": "COOLONL_INDET",
-                    "User": "''",
-                    "Password": "''",
-                    "Type": "Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLONL_MDT_CORALSRV",
-                    "Server": "%s"%(srv),
-                    "Port": "%s"%(port),
-                    "Name": "'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_MDT'",
-                    "Alias":"COOLONL_MDT",
-                    "User": "''",
-                    "Password" :"''",
-                    "Type": "Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLONL_SCT_CORALSRV",
-                    "Server": "%s"%(srv),
-                    "Port": "%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_SCT'",
-                    "Alias":"COOLONL_SCT",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLOFL_TRT_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_TRT'",
-                    "Alias":"COOLOFL_TRT",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLONL_RPC_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_RPC'",
-                    "Alias":"COOLONL_RPC",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLONL_TDAQ_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_TDAQ'",
-                    "Alias":"COOLONL_TDAQ",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLONL_MUONALIGN_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_MUONALIGN'",
-                    "Alias":"COOLONL_MUONALIGN",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLONL_LAR_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_LAR'",
-                    "Alias":"COOLONL_LAR",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLASDD_CORALSRV_THROUGHATLASDD",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_DD/ATLASDD'",
-                    "Alias":"ATLASDD",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLONL_PIXEL_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_PIXEL'",
-                    "Alias":"COOLONL_PIXEL",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLOFL_MDT_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_MDT'",
-                    "Alias":"COOLOFL_MDT",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLONL_CALO_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_CALO'",
-                    "Alias":"COOLONL_CALO",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLONL_CSC_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_CSC'",
-                    "Alias":"COOLONL_CSC",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLONL_TRT_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_TRT'",
-                    "Alias":"COOLONL_TRT",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOL_GLOBAL_ORACLE",
-                    "Server":"ATLAS_COOLPROD",
-                    "Port":"''",
-                    "Name":"ATLAS_COOLONL_GLOBAL",
-                    "Alias":"COOLONL_GLOBAL",
-                    "User":"ATLAS_COOL_READER_U",
-                    "Password":"LMXTPRO4RED",
-                    "Type":"Oracle"
-                    },
-                {
-                    "UID":"ATLAS_COOLONL_GLOBAL_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_GLOBAL'",
-                    "Alias":"COOLONL_GLOBAL",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLOFL_PIXEL_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_PIXEL'",
-                    "Alias":"COOLOFL_PIXEL",
-                    "User":"ATLAS_COOL_PIXEL",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLOFL_TILE_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_TILE'",
-                    "Alias":"COOLOFL_TILE",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLOFL_INDET_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_INDET'",
-                    "Alias":"COOLOFL_INDET",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLONL_TRIGGER_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_TRIGGER'",
-                    "Alias":"COOLONL_TRIGGER",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLOFL_CSC_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_CSC'",
-                    "Alias":"COOLOFL_CSC",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLOFL_SCT_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_SCT'",
-                    "Alias":"COOLOFL_SCT",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLOFL_LAR_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_LAR'",
-                    "Alias":"COOLOFL_LAR",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLASDD_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://atlas_dd/atlasdd'",
-                    "Alias":"ATLASDD",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLONL_TGC_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_TGC'",
-                    "Alias":"COOLONL_TGC",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLOFL_DCS_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_DCS'",
-                    "Alias":"COOLOFL_DCS",
-                    "User":"ATLAS_COOL_DCS",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLONL_MUON_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_MUON'",
-                    "Alias":"COOLONL_MUON",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLOFL_GLOBAL_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLOFL_GLOBAL'",
-                    "Alias":"COOLOFL_GLOBAL",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    },
-                {
-                    "UID":"ATLAS_COOLONL_TILE_CORALSRV",
-                    "Server":"%s"%(srv),
-                    "Port":"%s"%(port),
-                    "Name":"'&oracle://ATLAS_COOLPROD/ATLAS_COOLONL_TILE'",
-                    "Alias":"COOLONL_TILE",
-                    "User":"''",
-                    "Password":"''",
-                    "Type":"Coral"
-                    }
-                ]
-            
-            root=et.Element("DBConnections")
-            for dbc in defaultConns:
-                c=et.SubElement(root,"DBConnection")
-                for k in dbc.keys():
-                    et.SubElement(c,str(k)).text=str(dbc[k])
-            return (root,recurseDict(TC,"TriggerDBConnection"))
-        return (None,recurseDict(TC,"TriggerDBConnection"))
-            
-    def getTree(self):
-        return  recurseDict(self._defaultDict,"TriggerConfiguration")
-        #return None
-
-class TriggerConfigJO(TriggerConfig):
-    def __init__(self,jopath,SMK=0,prescaleKey=0,bunchKey=0,L1MenuFrom="DB"):
-        TriggerConfig.__init__(self)
-        self._defaultDict={
-            "TriggerConfiguration":
-                {
-                "UID": "JobOptionsTriggerConfig-1",
-                "L1TriggerConfiguration":
-                    {
-                    "L1TriggerConfiguration":
-                        {
-                        "UID":"L1TrigConf",
-                        "Lvl1PrescaleKey":"%s"%(prescaleKey),
-                        "Lvl1BunchGroupKey": "%s"%(bunchKey),
-                        "ConfigureLvl1MenuFrom":"%s"%(L1MenuFrom)
-                        }
-                    },
-                "TriggerDBConnection":{
-                    "TriggerDBConnection":{
-                        "Type":"Coral",
-                        "Server":"TRIGGERDB",
-                        "SuperMasterKey":"%s"%SMK,
-                        "User":"",
-                        "Password":"",
-                        "Name":"dummy",
-                        "Alias":"TRIGGERDB"
-                        }
-                    },
-                "hlt":
-                    {
-                    "HLTImplementationJobOptions":
-                        {
-                        "UID": "HLTImplementationJobOptions-1",
-                        "libraries":{
-                            "library":["TrigServices",
-                                       "TrigPSC",
-                                   ]
-                        },
-                        "jobOptionsPath":"%s"%(jopath),
-                        "evtSel":"NONE",
-                        "pythonSetupFile": "TrigPSC/TrigPSCPythonSetup.py",
-                        "showInclude": "false",
-                        "logLevels":{
-                            "logLevel":[
-                                "INFO",
-                                "ERROR"
-                            ]
-                        },
-                        "tracePattern": "",
-                        "jobOptionsType": "NONE",
-                        "HLTCommonParameters":
-                            {
-                            "HLTCommonParameters":
-                                {
-                                "messageSvcType": "TrigMessageSvc",
-                                "jobOptionsSvcType" :"JobOptionsSvc",
-                                "dllName" :'',
-                                "factoryName": ''
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-
-class TriggerConfigDBPython(TriggerConfig):
-    def __init__(self,SMK=0,L1PSK=0,L1BG=0,HPSK=0,Coral=False,preCmds=[],postCmds=[],DBAlias="TRIGGERDB"):
-        TriggerConfig.__init__(self)
-        self.__SMK=SMK
-        self.__useCoral=Coral
-        self.__precmds=None
-        self.__postcmds=None
-        self.__DBAlias=DBAlias
-        if preCmds is not None:
-            if isinstance(preCmds,list):
-                self.__precmds=preCmds
-            else:
-                self.__precmds=[preCmds]
-        if postCmds is not None:
-            if isinstance(postCmds,list):
-                self.__postcmds=postCmds
-            else:
-                self.__postcmds=[postCmds]
-
-        self._defaultDict={ "TriggerConfiguration":
-                               {
-                "UID":"DBTriggerConfig-1",
-                "L1TriggerConfiguration":
-                    {
-                    "L1TriggerConfiguration":
-                        {
-                        "UID":"L1TrigConf",
-                        "Lvl1PrescaleKey":"%s"%(L1PSK),
-                        "Lvl1BunchGroupKey":"%s"%(L1BG),
-                        "ConfigureLvl1MenuFrom":"DB",
-                        }
-                    },
-                "hlt":
-                    {
-                    "HLTImplementationDBPython":
-                        {
-                        "UID":"HLTImplementationDBPython-1",
-                        "libraries":
-                            { 
-                                "library":
-                                [
-                                    "TrigServices",
-                                    "TrigPSC",
-                                    "TrigConfigSvc"
-                                ],
-                            },
-                        "hltPrescaleKey":"%s"%(HPSK),
-                        "HLTCommonParameters":
-                            {
-                            "HLTCommonParameters":
-                                {
-                                "messageSvcType":"TrigMessageSvc",
-                                "jobOptionsSvcType":"TrigConf::HLTJobOptionsSvc",
-                                "dllName":"",
-                                "factoryName":""
-                                }
-                            }
-                        }
-                    }
-                }
-                        }
-    def getTree(self):
-        TC=recurseDict(self._defaultDict,"TriggerConfiguration")
-        hlt=TC.find("TriggerConfiguration").find("hlt").find("HLTImplementationDBPython")
-        if self.__precmds is not None and len(self.__precmds):
-            pcr=et.Element("preCommands")
-            for pc in self.__precmds:
-                if len(pc):
-                    et.SubElement(pcr,"preCommand").text=str(pc)
-            hlt.append(pcr)
-        if self.__postcmds is not None and  len(self.__postcmds):
-            pcr=et.Element("postCommands")
-            for pc in self.__postcmds:
-                if len(pc):
-                    et.SubElement(pcr,"postCommand").text=str(pc)
-            hlt.append(pcr)
-        dbc=TriggerConfig.getDBConfig(self,self.__SMK,coral=self.__useCoral,alias=self.__DBAlias)
-        if dbc[0] is not None:
-            TC.find("TriggerConfiguration").append(dbc[0])
-        if dbc[1] is not None:
-            TC.find("TriggerConfiguration").append(dbc[1])
-        return TC
-
-class TriggerConfigDB(TriggerConfig):
-    def __init__(self,SMK=0,L1PSK=0,L1BG=0,HPSK=0,Coral=False,DBAlias="TRIGGERDB"):
-        TriggerConfig.__init__(self)
-        self.__SMK=SMK
-        self.__useCoral=Coral
-        self.__DBAlias=DBAlias
-        self._defaultDict={ "TriggerConfiguration":
-                               {
-                "UID":"DBTriggerConfig-1",
-                "L1TriggerConfiguration":
-                    {
-                    "L1TriggerConfiguration":
-                        {
-                        "UID":"L1TrigConf",
-                        "Lvl1PrescaleKey":"%s"%(L1PSK),
-                        "Lvl1BunchGroupKey":"%s"%(L1BG),
-                        "ConfigureLvl1MenuFrom":"DB",
-                        }
-                    },
-                "hlt":
-                    {
-                    "HLTImplementationDB":
-                        {
-                        "UID":"HLTImplementationDB-1",
-                        "libraries":{
-                            "library":
-                            [
-                                "TrigServices",
-                                "TrigPSC",
-                                "TrigConfigSvc"
-                            ],
-                        },
-                        "hltPrescaleKey":"%s"%(HPSK),
-                        "HLTCommonParameters":
-                            {
-                            "HLTCommonParameters":
-                                {
-                                "messageSvcType":"TrigMessageSvc",
-                                "jobOptionsSvcType":"TrigConf::HLTJobOptionsSvc",
-                                "dllName":"",
-                                "factoryName":""
-                                }
-                            }
-                        }
-                    }
-                }
-                            }
-
-    def getTree(self):
-        TC=recurseDict(self._defaultDict,"TriggerConfiguration")
-        #print self.__DBAlias
-        dbc=TriggerConfig.getDBConfig(self,self.__SMK,coral=self.__useCoral,alias=self.__DBAlias)
-        if dbc[0] is not None:
-            TC.find("TriggerConfiguration").append(dbc[0])
-        if dbc[1] is not None:
-            TC.find("TriggerConfiguration").append(dbc[1])
-        return TC
-                           
-class TriggerConfigAthenaHLT:
-    def __init__(self,args):
-        from HLTTestApps.configuration import configuration, run_number_error
-        from HLTTestApps.option import file_opt_spec, emon_opt_spec
-        conf=configuration(file_opt_spec,args)
-        t=et.fromstring(str(conf.get_config_ptree()))
-        TConfig=t.find("Partition").find("TriggerConfiguration").find("TriggerConfiguration")
-        TConfig.remove(TConfig.find("athenaHLTSpecificConfiguration"))
-        return TConfig
-
-class HLTMPPUConfig:
-    def __init__(self,numForks=2,finalizeTimeout=120,
-                 HardTimeout=60000,
-                 softTimeoutFraction=0.8,
-                 extraParams=[],
-                 childLogRoot="/tmp/",
-                 DataSrc=None,
-                 InfoSvc=None,
-                 partitionName="test",
-                 HLTLibs=["TrigServices","TrigPSC","TrigConfigSvc"]):
-        self._DataSource=DataSrc
-        self._InfoService=InfoSvc
-        self._childLogRoot=childLogRoot
-        if len(childLogRoot)==0:
-            self._childLogRoot="/log/%s/%s"%(os.environ["USER"],partitionName)
-        if not os.path.exists(self._childLogRoot):
-            try:
-                os.mkdir(self._childLogRoot)
-            except:
-                e = sys.exc_info()[0]
-                print "Warning log directory creation failed! %s"%(e)
-        self._defaultDict={
-            "UID":"ALPPy",
-            "childLogRoot":self._childLogRoot,
-            "numForks":numForks,
-            "finalizeTimeout":finalizeTimeout,
-            "HardTimeout":HardTimeout,
-            "softTimeoutFraction":softTimeoutFraction,
-            "extraParams":extraParams,
-            "HLTImplementationLibraries":HLTLibs,
-            "DataSource":self._DataSource,
-            "InfoService":self._InfoService
-            }
-
-    def getTree(self):
-        root=et.Element("ALPApplication")
-        specials=["extraParams","HLTImplementationLibraries","DataSource","InfoService"]
-        dd=self._defaultDict
-        for k in dd.keys():
-            if k not in specials:
-                et.SubElement(root,str(k)).text=str(dd[k])
-            else:
-                if k =="extraParams":
-                    if dd[k] is None or len(dd[k])==0:
-                        continue
-                    ep=et.SubElement(root,"extraParams")
-                    for e in dd[k]:
-                        et.SubElement(ep,"parameter").text=str(e)
-                elif k=="HLTImplementationLibraries":
-                    hl=et.SubElement(root,"HLTImplementationLibraries")
-                    for l in dd[k]:
-                        et.SubElement(hl,"library").text=str(l)
-                elif k=="DataSource":
-                    # dt=dd[k].getTree()
-                    # root.append(dt)
-                    et.SubElement(root,"DataSourceLibrary").text=str(dd[k].getLibrary())
-                elif k=="InfoService":
-                    # it=dd[k].getTree()
-                    # root.append(dt)
-                    et.SubElement(root,"InfoServiceLibrary").text=str(dd[k].getLibrary())
-        root.append(self._DataSource.getTree())
-        Inf=et.SubElement(root,"InfoService")
-        Inf.append(self._InfoService.getTree())
-        return root
-
-class ConfigHelper:
-    def __init__(self,configDict):
-        self._configDict=configDict
-
-    def xml2string(self,tree):
-        return et.tostring(tree)
-
-    def genRosMapping(self,ros2robMap):
-        ''' Convert ros2robMap dictionary to xml tree
-        Format has to be 
-        ros2robMap={"ROS-FULL_SD_EVENT-00":[1120005,1120006,...],
-        "ROS-FULL_SD_EVENT-01":[2120005,2120006,...],
-        }
-        '''
-        root=et.Element("ROS2ROBS")
-        for ros in iter(ros2robMap):
-            robs=ros2robMap[ros]
-            for rob in robs:
-                et.SubElement(r,"ROBID").text=str(rob)
-        return root
-    def recurseDict(self,d,rootName):
-        r=et.Element(rootName)
-        for k in iter(d):
-            if isinstance(d[k],str):
-                et.SubElement(r,k).text=str(d[k])
-            else:
-                l=recurseDict(d[k],k)
-                r.append(l)
-        return r
-
-
-
-class ALPPy:
-    def __init__(self,libName="libALP.so"):
-        import _ALPPy as ALP
-        #ALP.LoadLibrary(libName)
-        self.__libName=libName
-        self._libLoaded=False
-        self.LoadLibrary()
-        ALP.SetSignalHandler()
-    def LoadLibrary(self):
-        import _ALPPy as ALP
-        if not self._libLoaded:
-            self._libLoaded=ALP.LoadLibrary(self.__libName)
-    def Configure(self,configTree):
-        if configTree is not None:
-            import _ALPPy as ALP
-            return ALP.ConfigurePU(configTree)
-        return False
-    def Unconfigure(self):
-        import _ALPPy as ALP
-        return ALP.UnconfigurePU("")
-         
-    def Connect(self):
-        import _ALPPy as ALP
-        return ALP.ConnectPU("")
-
-    def PrepareForRun(self,prepTree):
-        import _ALPPy as ALP
-        import os
-        currpid=os.getpid()
-        retVal=ALP.PrepareForRunPU(prepTree)
-        newpid=os.getpid()
-        if currpid!=newpid:
-            print "Running in children with pid %s. Exiting!"%newpid
-            os.exit(0)
-        if not retVal:
-            print "Prepare for run returned false"
-        return retVal
-    def StopRun(self):
-        import _ALPPy as ALP
-        return ALP.StopRunPU("")
-    def UserCommand(self,comm):
-        import _ALPPy as ALP
-        return ALP.UserCommandPU(comm)
-
diff --git a/Trigger/ALP/python/ALPPy/__init__.py b/Trigger/ALP/python/ALPPy/__init__.py
deleted file mode 100644
index d11c3551fef877410a0042f07fd716bd05d2d888..0000000000000000000000000000000000000000
--- a/Trigger/ALP/python/ALPPy/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Trigger/ALP/python/ALPPy
diff --git a/Trigger/ALP/scripts/runALPPy.py b/Trigger/ALP/scripts/runALPPy.py
deleted file mode 100755
index 27007f75a5e4994f45f93cde3d200c534ce0a6f6..0000000000000000000000000000000000000000
--- a/Trigger/ALP/scripts/runALPPy.py
+++ /dev/null
@@ -1,423 +0,0 @@
-#!/usr/bin/env python
-import os,sys,argparse,signal
-
-def signal_handler(sig,frame):
-    print('Signal Handler Called for' ,signum)
-    os.exit()
-def parse_extra(parser,extra):
-    namespaces=[]
-    print "parsing commandline '%s'"%extra
-    while extra:
-        n,extra = parser.parse_known_args(extra)
-        namespaces.append(n)
-        print "Namespace=",n,"extra=",extra
-    return namespaces
-
-#from http://stackoverflow.com/questions/20094215/argparse-subparser-monolithic-help-output
-
-class _BigHelp(argparse._HelpAction):
-    def __call__(self, parser, namespace, values, option_string=None,ErrReason=None):
-        parser.print_help()
-        
-        modGroups={' Data Source Modules ':['dcmds','fileds'],
-                   ' Monitoring Modules ':['monsvcis'],
-                   ' Trigger Configuration Modules ':['joboptions','DBPython','DB'],
-                   ' ALPPy Module ':['ALP'],
-                   'help':['-h','--help']
-               }
-        modMaps={}
-        for mg in modGroups.keys():
-            for m in modGroups[mg]:
-                modMaps[m]=mg
-        helpGroups={}
-        # retrieve subparsers from parser
-        subparsers_actions = [
-            action for action in parser._actions
-            if isinstance(action, argparse._SubParsersAction)]
-        # there will probably only be one subparser_action,
-        # but better save than sorry
-        for subparsers_action in subparsers_actions:
-            # get all subparsers and print help
-            for choice, subparser in subparsers_action.choices.items():
-                hg=modMaps[choice]
-                if hg not in helpGroups:
-                    helpGroups[hg]=[]
-                helpGroups[hg].append("%s\n%s"%('{:-^40}'.format(" %s "%choice),subparser.format_help()))
-        print 20*"*","MODULES HELP",20*"*"
-        print " You can specify --help after module name to see only relative modules help"
-        for g in helpGroups:
-            print ("\n{:*^60}\n".format(g))
-            for m in helpGroups[g]:
-                print m
-        if ErrReason is not None:
-            print
-            print "%s\n"%ErrReason
-        parser.exit()
-
-
-def getDataSource(cdict):
-    NS=cdict["datasource"]
-    if NS is None or NS['module']=='dcmds':
-        from HLTMPPy.HLTMPPy import DCMDataSource as ds
-        return ds()
-    if NS['module']=='fileds':
-        from HLTMPPy.HLTMPPy import FileDataSource as FD
-        fds=FD(fileList=NS['file'],
-               outFile=NS["outFile"],
-               compressionLevel=NS["compressionLevel"],
-               compressionFormat=NS["compressionFormat"],
-               preload=NS["preload"],
-               numEvents=NS["numEvents"],
-               library=NS["dslibrary"],
-               loopFiles=NS["loopFiles"]
-               )
-        return fds
-    return None
-
-def getInfoSvc(cdict):
-    NS=cdict['monitoring']
-    if NS is None:
-        from HLTMPPy.HLTMPPy import MonSvcInfoService as MSI
-        mon=MSI()
-        return mon
-    if NS['module']=="monsvcis":
-        from HLTMPPy.HLTMPPy import MonSvcInfoService as MSI
-        mon=MSI(OHServer=NS['OHServer'],
-                OHSlots=NS['OHSlots'],
-                OHInterval=NS['OHInterval'],
-                OHRegex=NS['OHRegex'],
-                ISServer=NS['ISServer'],
-                ISSlots=NS['ISSlots'],
-                ISInterval=NS['ISInterval'],
-                ISRegex=NS['ISRegex'])
-        return mon
-    return None
-
-def getTriggerConfig(cdict):
-    td=cdict['trigger']
-    if td['module']=='joboptions':
-        from HLTMPPy.HLTMPPy import TriggerConfigJO as TC
-        tc=TC(jopath=td['joFile'],
-              SMK=td['SMK'],
-              prescaleKey=td['l1PSK'],
-              bunchKey=td['l1BG'],
-              L1MenuFrom=td['l1MenuConfig'])
-        return tc
-    elif td['module']=='DB':
-        from HLTMPPy.HLTMPPy import TriggerConfigDB as TC
-        tc=TC(SMK=td['SMK'],
-              L1PSK=td['l1PSK'],
-              L1BG=td['l1BG'],
-              HPSK=td['HLTPSK'],
-              Coral=td['use_coral'],
-              DBAlias=td['db_alias'])
-        return tc
-    elif td['module']=='DBPython':
-        from HLTMPPy.HLTMPPy import TriggerConfigDBPython as TC
-        tc=TC(SMK=td['SMK'],
-              L1PSK=td['l1PSK'],
-              L1BG=td['l1BG'],
-              HPSK=td['HLTPSK'],
-              Coral=td['use_coral'],
-              preCmds=td['precommand'],
-              postCmds=td['postcommand'],
-              DBAlias=td['db_alias']
-        )
-        return tc
-    return None
-
-def getHLTMPPUConfig(cdict,DS=None,IS=None):
-    hd=cdict['HLTMPPU']
-    DSrc=DS
-    if DSrc is None : DSrc=getDataSource(cdict)
-    ISvc=IS
-    if ISvc is None : ISvc=getInfoSvc(cdict)
-    
-    from HLTMPPy.HLTMPPy import HLTMPPUConfig as HC
-    hc=HC(numForks=hd['num_forks'],
-          HardTimeout=hd['hard_timeout'],
-          softTimeoutFraction=hd['soft_timeout_fraction'],
-          extraParams=hd['extra_params'],
-          childLogRoot=hd['log_root'],
-          partitionName=hd['partition_name'],
-          HLTLibs=cdict['trigger']['library'],
-          DataSrc=DSrc,
-          InfoSvc=ISvc
-      )
-    return hc
-
-def getPartitionTree(cdict):
- from lxml import etree as et
- root=et.Element("Partition")
- et.SubElement(root,"UID").text=str(cdict['global']['partition_name'])
- et.SubElement(root,"LogRoot").text=str(cdict['global']['log_root'])
- return root
-
-def getConfigurationTree(cdict):
- from lxml import etree as et
- root=et.Element("Configuration")
- ds=getDataSource(cdict)
- inf=getInfoSvc(cdict)
- hlt=getHLTMPPUConfig(cdict,ds,inf)
- trig=getTriggerConfig(cdict)
- part=getPartitionTree(cdict)
- part.append(trig.getTree())
- root.append(hlt.getTree())
- root.append(part)
- et.SubElement(root,"ROS2ROBS")
- return et.tostring(root,pretty_print=True)
-
-def getPrepareForRunTree(cdict):
- RunParams={
-  "run_number":cdict['global']['run_number'],
-  'max_events':'0',
-  'recording_enabled':'0',
-  'trigger_type':'0',
-  'run_type':'Physics',
-  'det_mask':'0'*(32-len(cdict['global']['detector_mask']))+cdict['global']['detector_mask'],
-  'beam_type':'0',
-  'beam_energy':'0',
-  'filename_tag':"",
-  'T0_project_tag':'',
-  'timeSOR':cdict['global']['date'],
-  'timeEOR':'1/1/70 01:00:00',
-  'totalTime':'0'
- }
- Magnets={'ToroidsCurrent':
-          {
-           'value':cdict['global']['toroid_current'],
-           'ts':cdict['global']['date']
-          },
-          'SolenoidCurrent':
-          {
-           'value':cdict['global']['solenoid_current'],
-           'ts':cdict['global']['date']
-          }
- }
- from lxml import etree as et
- RT=et.Element("RunParams")
- for k in iter(RunParams):
-  et.SubElement(RT,k).text=str(RunParams[k])
- M=et.Element("Magnets")
- for m in ("ToroidsCurrent","SolenoidCurrent"):
-  T=et.SubElement(M,m)
-  for k in iter(Magnets[m]):
-   et.SubElement(T,k).text=str(Magnets[m][k])
- return et.tostring(RT,pretty_print=True)+et.tostring(M,pretty_print=True)
-
-def getConfigDictionary(NamespaceList,modMap):
-    d={}
-    globalArgs=['extra','log_root','partition_name','with_infrastructure','run_number','save_options',
-                'options_file','detector_mask','toroid_current','solenoid_current','date'
-    ]
-    for n in NamespaceList:
-        gk=modMap[n.module]
-        args=vars(n)
-        d[gk]={key:value for (key,value) in args.items() if key not in globalArgs}
-    if d['trigger']['module'] is not 'joboptions':
-        d['trigger']['library'].append("TrigConfigSvc")
-    ht=d['HLTMPPU']
-    ht['log_root']=NamespaceList[0].log_root
-    ht['partition_name']=NamespaceList[0].partition_name
-    d['global']={key:value for (key,value) in vars(NamespaceList[0]).items() if key in globalArgs[1:]}
-    if d['global']['date']=="0":
-        import datetime
-        now=datetime.datetime.now()
-        d['global']['date']="{:%d/%m/%y} {:%H:%M:%S}".format(now,now)
-    return d
-
-
-def main():    
-    p=argparse.ArgumentParser(description="HLTMPPU python based steering",formatter_class=argparse.ArgumentDefaultsHelpFormatter,add_help=False)
-    p.add_argument('-h',"--help",action=_BigHelp,help="Print this help and exit")
-    subp=p.add_subparsers(help="Module configurations",dest='module')
-    #subp.required=True
-    #p.add_argument('--file',nargs='+')
-    # monmods=p.add_subparsers(help='Monitoring modules')
-    # trigmods=p.add_subparsers(help='Trigger configuration modules')
-
-    dcmdsopts=subp.add_parser('dcmds',help="DCMDataSource options",formatter_class=argparse.ArgumentDefaultsHelpFormatter)
-    #dcmdsopts.add_argument('--dslibrary',nargs=1,const="dfinterfaceDcm",default="dfinterfaceDcm")
-    dcmdsopts.add_argument('--dslibrary',nargs=1,default="dfinterfaceDcm",help="Library that provides the interface")
-    dcmdsopts.add_argument('--ros2robs',nargs=1,default='',help="Either a file or a string in the form of python array that contains ros-rob mappings")
-    
-#   File DS
-#
-#
-    fileds=subp.add_parser('fileds',help="File based data source options",formatter_class=argparse.ArgumentDefaultsHelpFormatter)
-    fileds.add_argument('--dslibrary',nargs='?',const="FileDataSource",default="FileDataSource",help="Library that provides the interface")
-    fileds.add_argument('--loopFiles',action='store_true',help="Whether to loop over the files")
-    fileds.add_argument('--skipEvts',type=int,nargs='?',help="Number of events to skip",const=0,default=0)
-    fileds.add_argument('--numEvents',type=int,nargs='?',help="Number of events to process",const=-1,default=-1)
-    fileds.add_argument('--file',action='append',help="list of files to process, can be repeated for multiple files",required=True)
-    fileds.add_argument('--preload',action='store_true',help="Preload files into memory")
-    fileds.add_argument('--outFile',help="name of the output file")
-    fileds.add_argument('--compressionLevel',type=int,help="compression level of output file",default=2)
-    fileds.add_argument('--compressionFormat',choices=["ZLIB","UNCOMPRESSED"],help="compression level of output file",default="ZLIB")
-
-    monsvcis=subp.add_parser('monsvcis',help="MonSvc (online) based monitoring",formatter_class=argparse.ArgumentDefaultsHelpFormatter)
-    monsvcis.add_argument('--histogram-server',nargs='?',
-                          const='${TDAQ_OH_SERVER=Histogramming}',
-                          default='${TDAQ_OH_SERVER=Histogramming}',
-                          help="Destination IS server for Histograms",dest='OHServer')
-    monsvcis.add_argument('--hist-publish-period',nargs='?',type=int,const=80,
-                          default=80,help="Publication period for histograms",
-                          dest='OHInterval'
-                          )
-    monsvcis.add_argument('--histogram-regex',nargs='?',const='.*',default='.*',
-                          help='Histogram regex',dest="OHRegex")
-
-    monsvcis.add_argument('--hist-slots',nargs='?',type=int,const=8,default=8,
-                          help="Number of slots for OH publication",dest='OHSlots')
-    monsvcis.add_argument('--is-publish-period',nargs='?',type=int,const=10,default=10,
-                          help="Publication period for IS objects",dest='ISInterval')
-    monsvcis.add_argument('--is-server',nargs='?',const='${TDAQ_IS_SERVER=DF}',
-                          default='${TDAQ_IS_SERVER=DF}',help="Destination IS server",
-                          dest='ISServer')
-    monsvcis.add_argument('--is-slots',nargs='?',type=int,const=1,default=1,
-                          help="Number of slots for IS publication",dest='ISSlots')
-    monsvcis.add_argument('--is-regex',nargs='?',const='.*',default='.*',
-                          help='Histogram regex',dest="ISRegex")
-
-    
-    trigcommon=argparse.ArgumentParser(add_help=False)
-    trigcommon.add_argument('--l1PSK',type=int,help="Level-1 Prescale key",default=0)
-    trigcommon.add_argument('--l1BG',type=int,help="Level-1 Bunch Group key",default=0)
-    trigcommon.add_argument('--SMK',type=int,help="Super Master Key",default=0)
-    trigcommon.add_argument('--library',action='append',default=["TrigServices","TrigPSC"])
-
-    dbcommon=argparse.ArgumentParser(add_help=False)
-    
-    dbcommon.add_argument('--HLTPSK',help='HLT Prescale key',default=0)
-    dbcommon.add_argument('--db-alias',help='Alias for Trigger DB configuration',default="TRIGGERDB")
-    dbcommon.add_argument('--use-coral',
-                          action='store_true',help='Whether to use local coral proxy')
-    dbcommon.add_argument('--coral-server',nargs='?',help='Coral Server url',const='LOCAL_HOST',default='LOCAL_HOST')
-    dbcommon.add_argument('--coral-port',nargs='?',type=int,help='Coral Server port',const=3320,default=3320)
-    dbcommon.add_argument('--coral-user',nargs='?',help='Coral Server user name',
-                          const="ATLAS_CONF_TRIGGER_RUN2_R",
-                          default="ATLAS_CONF_TRIGGER_RUN2_R")
-    dbcommon.add_argument('--coral-password',nargs='?',help='Coral Server password',
-                          const="TrigConfigRead2015",
-                          default="TrigConfigRead2015",
-                          )
-    jotrigConf=subp.add_parser('joboptions',help="Joboptions based trigger config",parents=[trigcommon],
-                               formatter_class=argparse.ArgumentDefaultsHelpFormatter)
-    jotrigConf.add_argument('--l1MenuConfig',nargs='?',const='DB',default='DB',choices=["DB"]
-                            ,help="Where to get L1 menu configuration")
-    jotrigConf.add_argument('--joFile',nargs=1,required=True,help="Joboptions file to run")
-    
-    
-    DBPyConf=subp.add_parser("DBPython",help="DBPython based trigger config",parents=[trigcommon,dbcommon],
-                             formatter_class=argparse.ArgumentDefaultsHelpFormatter)
-    DBPyConf.add_argument('--precommand',action='append',help='pre-command,can be repeated')
-    DBPyConf.add_argument('--postcommand',action='append',help='post-command, can be repeated')
-    
-    
-    DBConf=subp.add_parser("DB",help="DB based trigger config",parents=[trigcommon,dbcommon],
-                           formatter_class=argparse.ArgumentDefaultsHelpFormatter)
-    puConf=subp.add_parser("HLTMPPU",help="HLTMPPU Configuration",formatter_class=argparse.ArgumentDefaultsHelpFormatter)
-    puConf.add_argument("-N",'--application-name',nargs='?',const="HTLMPPy-1",default="HLTMPPy-1",help="Application Name")
-    puConf.add_argument("-i",'--interactive',action='store_true',help="Whether to run in interactive mode")
-    puConf.add_argument("-f",'--num-forks',nargs='?',type=int,const=2,default=2,help="Number of children to fork")
-    puConf.add_argument('-F','--finalize-timeout',type=int,nargs=1,default=120,help="Timeout at finalization")
-    puConf.add_argument('-e','--extra-params',action='append',help='Extra parameters for HLTMPPU')
-    puConf.add_argument('-t','--soft-timeout-fraction',type=float,nargs=1,default=0.8,help="Fraction of hard timeout to trigger soft timeout.")
-    puConf.add_argument('-T','--hard-timeout',type=int,nargs=1,default=60000,help="Hard timeout duration in milliseconds.")
-    p.add_argument("-I",'--with-infrastructure',action='store_true',help="Whether to start ipc and IS infrastructure")
-    p.add_argument("-r","--run-number",type=int,nargs='?',const=-1,default=-1,help="Run number")
-    p.add_argument("-l","--log-root",nargs=1,default="/tmp/",help="directory to save log files of child processes")
-    p.add_argument("-p","--partition-name",nargs='?',default="",help="Partition Name")
-    p.add_argument("-O","--options-file",nargs=1,help="Read configuration from options file")
-    p.add_argument("-S","--save-options",nargs=1,help="Write configuration to options file. Extension defines the format (json,yaml,xml)")
-
-    p.add_argument("--toroid-current",nargs='?',type=float,default=3.14,const=3.14,help="Value of the toroid current to pass during prepareForRun")
-    p.add_argument("--solenoid-current",nargs='?',type=float,default=314.15,const=314.15,help="Value of the solenoid current to pass during prepareForRun")
-    p.add_argument("--date",nargs='?',default="0",const="0",help="Run start date to be passed during prepareForRun")
-    p.add_argument("--sleep",type=int,default=120,help="Seconds to sleep before calling stop")
-    p.add_argument("--detector-mask",nargs='?',default="0000000000000000400269affffffff7",const="0000000000000000400269affffffff7",help="Detector mask")    
-    
-    #p.add_argument('extra',nargs='*',help=argparse.SUPPRESS)
-
-    commands=sys.argv[1:]
-    modGroups={'datasource':['dcmds','fileds'],
-               'monitoring':['monsvcis'],
-               'trigger':['DBPython','DB','joboptions'],
-               'HLTMPPU':['HLTMPPU'],
-               }
-    modNames=[]
-    for k in modGroups.keys():
-        modNames.extend(modGroups[k])
-    needDefault=True
-    modMap={}
-    modCount={}
-    for k in modGroups.keys():
-        modCount[k]=[]
-        for m in modGroups[k]:
-            modMap[m]=k
-    
-    #print modNames
-    for m in modNames:
-        if m in commands:
-            needDefault=False
-    if needDefault: commands.extend(['HLTMPPU'])
-
-    extra_namespaces=parse_extra(p,commands)
-    print 
-    for n in extra_namespaces:
-        g=modMap[n.module]
-        modCount[g].append(n.module)
-        print "Module __'%s'__  "%n.module,n
-        print
-    for m in modCount.keys():
-        if len(modCount[m]) > 1: 
-
-            _BigHelp(None,None)(p,None,None,None,'ERROR! More than one module type defined for module class %s %s'%(m,modCount[m]))
-        if len(modCount[m]) == 0:
-            defMod=modGroups[m][0]
-            modCount[m].append(defMod)
-            print "Adding default Module '%s' for type '%s' "%(defMod,m)
-            extra_namespaces.append((p.parse_known_args(["%s"%((modGroups[m])[0])]))[0])
-    print "Final namespaces ",extra_namespaces
-    import pprint
-    pp=pprint.PrettyPrinter()
-    from os import environ as env
-    if extra_namespaces[0].partition_name=="":
-        if "TDAQ_PARTITION" not in env:
-            extra_namespaces[0].partition_name="HLTMPPy_partition"
-        else:
-            extra_namespaces[0].partition_name=env['TDAQ_PARTITION']
-    cdict=getConfigDictionary(extra_namespaces,modMap)
-    pp.pprint(cdict)
-    #HConf=getHLTMPPUConfig(cdict)
-    #tree=g.getTree()
-    if "TDAQ_APPLICATION_NAME" not in env:
-     env["TDAQ_APPLICATION_NAME"]=cdict['HLTMPPU']['application_name']
-    if "TDAQ_PARTITION" not in env:
-     env["TDAQ_PARTITION"]=cdict['global']['partition_name']
-    tree=getConfigurationTree(cdict)
-    print tree
-    print
-    prtree=getPrepareForRunTree(cdict)
-    print prtree
-    # needed to initialize ipc::core
-    #sys.exit(0)
-    from ispy import IPCPartition
-    from HLTMPPy.HLTMPPy import HLTMPPy as HPY
-    mppy=HPY()
-    print mppy.Configure(tree)
-    print 10*"* *","Configure Finished"
-    print mppy.Connect()
-    print 10*"* *","Connect Finished"
-    print mppy.PrepareForRun(prtree)
-    if cdict['HLTMPPU']['interactive']:
-        from IPython import embed
-        embed()
-    else:
-        import time
-        print "sleeping for %s seconds"%extra_namespaces[0].sleep
-        time.sleep(extra_namespaces[0].sleep)
-
-if "__main__" in __name__:
- main()
-
diff --git a/Trigger/ALP/src/ALP.cxx b/Trigger/ALP/src/ALP.cxx
deleted file mode 100644
index e072261e6c371529347bf0ab303bab408ef83780..0000000000000000000000000000000000000000
--- a/Trigger/ALP/src/ALP.cxx
+++ /dev/null
@@ -1,2151 +0,0 @@
-// Dear emacs, this is -*- c++ -*-
-/*
-
-Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-Author: Sami Kama 2017
-*/
-
-#include "ALP/ALP.h"
-// needed for system calls
-#include <errno.h>
-#include <sys/prctl.h>
-#include <signal.h>
-#include <sys/wait.h>
-#include <cstdio>
-#include <cstdlib>
-#include <dlfcn.h>
-#include <unistd.h>
-
-// needed for io, threads etc
-#include <string>
-#include <cstring>
-#include <iostream>
-#include <boost/thread.hpp>
-#include "boost/date_time/posix_time/posix_time.hpp"
-#include <boost/foreach.hpp>
-#include <boost/algorithm/string.hpp>
-#include <ers/ers.h>
-#include "ALP/Issues.h"
-//needed for IPC initialization
-//#include "ipc/core.h"
-#include "hltinterface/IPCControlInterface.h"
-//InformationService
-#include "hltinterface/IInfoRegister.h"
-// Data Source
-#include "hltinterface/DataSource.h"
-//dynlibs Module
-//#include "dynlibs/Module.h"
-#include "ALP/PluginLoader.h"
-#include "ALP/DataSourceExceptions.h"
-//ISObjects
-#include "hltinterface/ContainerFactory.h"
-#include "hltinterface/GenericHLTContainer.h"
-//needed temporarily for IS publication.
-#include "TH1F.h"
-#include "dirent.h"
-//Random number generator
-#include <random>
-#include "ALP/ALP_utils.h"
-
-extern char **environ;
-
-namespace HLTPU {
-  //fix this!
-  class ScopedISHelper{
-  public:
-    ScopedISHelper(long LB,long ev){
-      m_tree.put("eventNumber",ev);
-      m_tree.put("LBNumber",LB);
-      try{
-	hltinterface::IInfoRegister::instance()->beginEvent(m_tree);
-      }catch(const std::exception &ex){
-	ERS_LOG("Caught exception while calling beginEvent for event "
-		<<ev<<" at LB "<<LB
-		<<". Exception was "<<ex.what());
-      }
-    }
-    ~ScopedISHelper(){
-      try{
-	hltinterface::IInfoRegister::instance()->endEvent(m_tree);
-      }catch(const std::exception &ex){
-	ERS_LOG("Caught exception while calling beginEvent for event "<<m_tree.get<long>("eventNumber")
-		<<" at LB "<<m_tree.get<long>("LBNumber")
-		<<". Exception was "<<ex.what());
-      }
-    }
-  private:
-    boost::property_tree::ptree m_tree;
-  };
-}
-#define GCIncrIntField(obj,field,val) \
-  obj->setIntField(field,obj->getIntField(field)+val)
-#define GCDecrIntField(obj,field,val) \
-  obj->setIntField(field,obj->getIntField(field)-val)
-
-ALP::ALP(){
-  m_myPid=getpid();
-  m_myPgid=getpgid(0);
-  std::cout<<ALPUtils::getTimeTag()<<"Constructing ALP Interface with pid "<<m_myPid<<" and pgid "<<m_myPgid<<std::endl;
-  //  ERS_LOG("Constructing ALP Interface with pid "<<m_myPid<<" and pgid "<<m_myPgid);
-  std::cout<<ALPUtils::getTimeTag()<<"Library built on "<<__DATE__<<" "<<__TIME__<<std::endl;
-  //ERS_LOG("Library built on "<<__DATE__<<" "<<__TIME__<<std::endl);
-  m_nannyWork=false;
-  m_nannyThread=0;
-  m_motherPublisher=0;
-  m_numChildren=1;
-  m_HLTSteering=0;
-  m_dataSource=0;
-  m_myName=getenv("TDAQ_APPLICATION_NAME");
-  m_processEvents=true;
-  m_childLogPath="/tmp/";
-  // to be removed
-  char * tmp = getenv("TDAQ_IS_SERVER");
-  if(tmp){
-    m_ISSName=std::string(tmp);
-  }else{
-    m_ISSName="DF";
-  }
-  m_publishInterval=30;
-  //  m_motherInfo=std::make_shared<ALP::ALPMotherInfo>();
-  auto inst=hltinterface::ContainerFactory::getInstance();
-  m_motherInfo=inst->constructContainer("PU_MotherInfo",
-		"ALPMotherInfo",
-		hltinterface::GenericHLTContainer::UntilEOR,
-		hltinterface::GenericHLTContainer::WRITE);
-  //size_t MINumKills,MINumForks,MIUnexpectedChildExits,MINumRequested,MINumActive,MINumExited;
-  m_MINumKills=inst->addInt(m_motherInfo,"NumKills");
-  m_MINumForks=inst->addInt(m_motherInfo,"NumForks");
-  m_MIUnexpectedChildExits=inst->addInt(m_motherInfo,"UnexpectedChildExits");
-  m_MINumRequested=inst->addInt(m_motherInfo,"NumRequested");
-  m_MINumActive=inst->addInt(m_motherInfo,"NumActive");
-  m_MINumExited=inst->addInt(m_motherInfo,"NumExited");
-  m_childInfo=inst->constructContainer("PU_ChildInfo",
-		"ALPInfo",
-		hltinterface::GenericHLTContainer::UntilEOR,
-		hltinterface::GenericHLTContainer::WRITE);
-  
-  m_CINumEvents=inst->addInt(m_childInfo,"NumEvents");
-  m_CIAcceptedEvents=inst->addInt(m_childInfo,"AcceptedEvents");
-  m_CIRejectedEvents=inst->addInt(m_childInfo,"RejectedEvents");
-  m_CIL1ResultFetchTimeouts=inst->addInt(m_childInfo,"L1ResultFetchTimeouts");
-  m_CISoftTimeouts=inst->addInt(m_childInfo,"Softtimeouts");
-
-  m_CILongestWaitForL1Result=inst->addInt(m_childInfo,"LongestWaitForL1Result");
-  m_CILongestProcessingTime=inst->addInt(m_childInfo,"LongestProcessingTime");
-  m_CIAverageProcessingTime=inst->addFloat(m_childInfo,"AverageProcessingTime");
-  m_CIAverageAcceptTime=inst->addFloat(m_childInfo,"AverageAcceptTime");
- 
-  m_CIAverageRejectTime=inst->addFloat(m_childInfo,"AverageRejectTime");
-  m_CIAverageL1ResultTime=inst->addFloat(m_childInfo,"AverageL1ResultTime");
-  m_CITimePercentInProcessing=inst->addFloat(m_childInfo,"TimePercentInProcessing");
-  m_CITimePercentInAccept=inst->addFloat(m_childInfo,"TimePercentInAccept");
- 
-  m_CITimePercentInReject=inst->addFloat(m_childInfo,"TimePercentInReject");
-  m_CITimePercentInWait=inst->addFloat(m_childInfo,"TimePercentInWait");
-  m_CITimePercentInSend=inst->addFloat(m_childInfo,"TimePercentInSend");
-    
-  m_configTree=new boost::property_tree::ptree();
-  m_prepareForRunTree=new boost::property_tree::ptree();
-  m_forkDelay=-1;
-  m_preforkSleep=-1;
-  m_terminationStarted=false;
-  m_dumpFD=false;
-  m_dumpThreads=false;
-  m_lbNum=0;
-  m_evtNum=0;
-  m_CTPROBId=0x770001;
-  m_timerWork=true;
-  m_l1ResultTimeout=100000;//in ms
-  m_softTimeout=60000;//in ms;
-  m_saveConfigOpts=false;
-  m_threadsExist=false;
-  m_softTOTrigger=false;
-  m_hardTOTrigger=false;
-  m_FinalizeTimeout=120;
-  m_publisherThread=0;
-  m_infoService=0;
-  m_hardTimeout=60;
-  m_interEventSleep_ms=-1;
-  m_interEventSpread_ms=-1;
-  m_keepNumForks=false;
-  m_termStagger=0;
-  m_skipFinalize=false;
-  m_skipFinalizeWorker=false;
-  m_exitImmediately=false;
-  m_eventsInInterval=0;
-  m_acceptedInInterval=0;
-  m_rejectedInInterval=0;
-  m_ipcc=0;
-}
-
-
-ALP::~ALP(){
-  std::cout<<ALPUtils::getTimeTag()<<"Destructing ALP Interface with pid "<<m_myPid<<std::endl;
-  //  delete m_dataSource;
-  //delete m_infoService;
-  //delete m_HLTSteering;
-  delete m_configTree;
-  delete m_prepareForRunTree;
-  stopNanny();
-  stopMotherPublisher();
-
-}
-
-bool ALP::configure(const boost::property_tree::ptree& args ) {
-  //ERS_LOG("--ALP_ConfigureStart. using the following configuration tree: ");
-  std::cout<<ALPUtils::getTimeTag()<<"--ALP_ConfigureStart. using the following configuration tree: "<<std::endl;
-  printPtree(args,"");
-  std::cout.flush();
-  *m_configTree=args;
-  m_numChildren=args.get("Configuration.ALPApplication.numForks",4);
-  m_FinalizeTimeout=args.get("Configuration.ALPApplication.finalizeTimeout",120);
-  double softTOfraction=args.get<double>("Configuration.ALPApplication.softTimeoutFraction",0.80);
-  m_hardTimeout=args.get("Configuration.ALPApplication.HardTimeout",60000);
-  m_softTimeout=m_hardTimeout*softTOfraction;
-  m_childLogPath=std::string(args.get_child("Configuration.Partition.LogRoot").data());
-  std::string ipclib("CorbaIPCControl");
-  std::vector<std::string> libs,mods;
-  try{
-    ipclib=std::string(args.get_child("Configuration.ALPApplication.IPCController").data());
-  }catch(boost::property_tree::ptree_bad_path &ex){
-  }catch(...){
-  }
-
-  std::cout<<ALPUtils::getTimeTag()<<"Trying to open ipc control library "<<ipclib<<std::endl;
-
-  try{
-    ALPNS::PluginLoader::addPlugin("IPCController",libs);
-  }catch(std::exception &ex){
-    std::cerr<<ALPUtils::getTimeTag()<<"Error loading IPCController libraries "<<ex.what()<<std::endl;
-    std::string errMsg=std::string("IPCController library load failed with \"")+ex.what()+"\"";
-    //ers::fatal(ALPIssues::DLLIssue(ERS_HERE,errMsg.c_str()));
-    throw ALPIssues::DLLIssue(ERS_HERE,errMsg.c_str());
-    return false;
-  }
-  libs.resize(0);
-  typedef hltinterface::IPCControlInterface* (*ipccreator)(void);
-  ipccreator ipccfact=ALPNS::PluginLoader::get("IPCController")->function<ipccreator>("create_ipccontroller");
-  m_ipcc=ipccfact();
-  m_ipcc->initializeIPC(args);
-  try{
-    //std::pair<boost::property_tree::ptree::const_assoc_iterator,boost::property_tree::ptree::const_assoc_iterator> extras=
-    auto extras=args.get_child("Configuration.ALPApplication.extraParams").equal_range("parameter");
-    for(auto it=extras.first;it!=extras.second;++it){
-      std::vector<std::string> tokens;
-      std::string data=std::string(it->second.data());
-      boost::algorithm::split(tokens,data,boost::is_any_of("="));
-      if(tokens.size()>1){
-	if(tokens.at(0)==std::string("forkDelay")){
-	  int forkDelay=::strtol(tokens.at(1).c_str(),0,10);
-	  if(errno==ERANGE||errno==EINVAL){
-	    std::cerr<<ALPUtils::getTimeTag()<<"Fork delay is set incorrectly! offending line is \""<<data<<"\""<<std::endl;
-	    errno=0;
-	  }else{
-	    m_forkDelay=forkDelay;
-	  }
-	}else if(tokens.at(0)==std::string("preForkSleep")){
-	  int preforkSleep=::strtol(tokens.at(1).c_str(),0,10);
-	  if(errno==ERANGE||errno==EINVAL){
-	    std::cerr<<ALPUtils::getTimeTag()<<"Fork sleep is set incorrectly! offending line is \""<<data<<"\""<<std::endl;
-	    errno=0;
-	  }else{
-	    m_preforkSleep=preforkSleep;
-	  }
-	}else if(tokens.at(0)==std::string("publishInterval")){
-	  int publishInterval=::strtol(tokens.at(1).c_str(),0,10);
-	  if(errno==ERANGE||errno==EINVAL){
-	    std::cerr<<ALPUtils::getTimeTag()<<"publication interval is set incorrectly! offending line is \""<<data<<"\""<<std::endl;
-	    errno=0;
-	  }else{
-	    m_publishInterval=publishInterval;
-	    if(m_publishInterval<10)m_publishInterval=10;//5 second publish interval minimum
-	  }
-	}else if(tokens.at(0)==std::string("keepForks")){
-	  int keepForks=::strtol(tokens.at(1).c_str(),0,10);
-	  if(errno==ERANGE||errno==EINVAL){
-	    std::cerr<<ALPUtils::getTimeTag()<<"keepForks parameter set incorrectly (0 or !=0) \""<<data<<"\""<<std::endl;
-	    errno=0;
-	  }else{
-	    m_keepNumForks=(keepForks!=0);
-	  }
-	}else if(tokens.at(0)==std::string("dumpFDs")){
-	  int dump=::strtol(tokens.at(1).c_str(),0,10);
-	  if(errno==ERANGE||errno==EINVAL){
-	    std::cerr<<ALPUtils::getTimeTag()<<"DumpFD is set incorrectly! offending line is \""<<data<<"\""<<std::endl;
-	    errno=0;
-	  }else{
-	    m_dumpFD=(dump!=0);
-	  }
-	}else if(tokens.at(0)==std::string("dumpThreads")){
-	  int dump=::strtol(tokens.at(1).c_str(),0,10);
-	  if(errno==ERANGE||errno==EINVAL){
-	    std::cerr<<ALPUtils::getTimeTag()<<"dumpThreads is set incorrectly! offending line is \""<<data<<"\""<<std::endl;
-	    errno=0;
-	  }else{
-	    m_dumpThreads=(dump!=0);
-	  }
-	}else if(tokens.at(0)==std::string("L1ResultTimeout")){
-	  int dump=::strtol(tokens.at(1).c_str(),0,10);
-	  if(errno==ERANGE||errno==EINVAL){
-	    std::cerr<<ALPUtils::getTimeTag()<<"L1Result timeout set incorrectly! offending line is \""<<data<<"\""<<std::endl;
-	    errno=0;
-	  }else{
-	    m_l1ResultTimeout=((dump<1000)?1000:dump);
-	  }
-	}else if(tokens.at(0)==std::string("SaveInputParams")){
-	  int dump=::strtol(tokens.at(1).c_str(),0,10);
-	  if(errno==ERANGE||errno==EINVAL){
-	    std::cerr<<ALPUtils::getTimeTag()<<"SaveInputParams set incorrectly! offending line is \""<<data<<"\""<<std::endl;
-	    errno=0;
-	  }else{
-	    m_saveConfigOpts=(dump!=0);
-	  }
-	}else if(tokens.at(0)==std::string("SkipFinalizeWorker")){
-	  int dump=::strtol(tokens.at(1).c_str(),0,10);
-	  if(errno==ERANGE||errno==EINVAL){
-	    std::cerr<<ALPUtils::getTimeTag()<<"SkipFinalizeWorker set incorrectly! offending line is \""<<data<<"\""<<std::endl;
-	    errno=0;
-	  }else{
-	    m_skipFinalizeWorker=(dump!=0);
-	  }
-	}else if(tokens.at(0)==std::string("SkipFinalize")){
-	  int dump=::strtol(tokens.at(1).c_str(),0,10);
-	  if(errno==ERANGE||errno==EINVAL){
-	    std::cerr<<ALPUtils::getTimeTag()<<"SkipFinalize set incorrectly! offending line is \""<<data<<"\""<<std::endl;
-	    errno=0;
-	  }else{
-	    m_skipFinalize=(dump!=0);
-	  }
-	}else if(tokens.at(0)==std::string("ExitWithoutCleanup")){
-	  int dump=::strtol(tokens.at(1).c_str(),0,10);
-	  if(errno==ERANGE||errno==EINVAL){
-	    std::cerr<<ALPUtils::getTimeTag()<<"ExitWithoutCleanup set incorrectly! offending line is \""<<data<<"\""<<std::endl;
-	    errno=0;
-	  }else{
-	    m_exitImmediately=(dump!=0);
-	  }
-	}else if(tokens.at(0)==std::string("CTPROBId")){ //needs to be in HEXADECIMAL
-	  int dump=::strtol(tokens.at(1).c_str(),0,16);
-	  if(errno==ERANGE||errno==EINVAL){
-	    std::cerr<<ALPUtils::getTimeTag()<<"CTPROBId is set incorrectly! offending line is \""<<data<<"\""<<std::endl;
-	    errno=0;
-	  }else{
-	    m_CTPROBId=dump;
-	  }
-	}else if(tokens.at(0)==std::string("InterEventSleep_ms")){
-	  int interSleep=::strtol(tokens.at(1).c_str(),0,10);
-	  if(errno==ERANGE||errno==EINVAL){
-	    std::cerr<<ALPUtils::getTimeTag()<<"Inter event sleep is set incorrectly! offending line is \""<<data<<"\""<<std::endl;
-	    errno=0;
-	  }else{
-	    m_interEventSleep_ms=interSleep;
-	  }
-	}else if(tokens.at(0)==std::string("InterEventSpread_ms")){
-	  int interSpread=::strtol(tokens.at(1).c_str(),0,10);
-	  if(errno==ERANGE||errno==EINVAL){
-	    std::cerr<<ALPUtils::getTimeTag()<<"Inter event sleep is set incorrectly! offending line is \""<<data<<"\""<<std::endl;
-	    errno=0;
-	  }else{
-	    m_interEventSpread_ms=interSpread;
-	  }
-	}else if(tokens.at(0)==std::string("MaxTermStagger_s")){
-	  int interSpread=::strtol(tokens.at(1).c_str(),0,10);
-	  if(errno==ERANGE||errno==EINVAL){
-	    std::cerr<<ALPUtils::getTimeTag()<<"Inter event sleep is set incorrectly! offending line is \""<<data<<"\""<<std::endl;
-	    errno=0;
-	  }else{
-	    m_termStagger=interSpread;
-	  }
-	}
-      }
-    }
-  }catch(boost::property_tree::ptree_bad_path &ex){
-    std::cerr<<ALPUtils::getTimeTag()<<"No ExtraParams "<<std::endl;
-    ERS_DEBUG(1,"there is no extraParams, skipping");
-  }catch (...){
-    std::cerr<<ALPUtils::getTimeTag()<<"I caught something that I don't know (i.e. catch(...) caught the exception) "<<std::endl;
-  }
-
-  ERS_DEBUG(1,"Configuring. my pid is "<<m_myPid);
-  //load data source
-
-  ERS_DEBUG(1,"Loading DataSource library");
-  libs.emplace_back(args.get_child("Configuration.ALPApplication.DataSourceLibrary").data());
-  //check whether running DFDataSource or not
-  {
-    dlerror();
-    void * handle=dlopen(libs.back().c_str(),RTLD_LAZY|RTLD_LOCAL);
-    if(!handle){
-      char b[4000];
-      snprintf(b,4000,"lib%s.so",libs.back().c_str());
-      ERS_DEBUG(1,"Can't find library '"<<libs.back()<<"' trying '"<<b<<"'"); 
-      handle=dlopen(b,RTLD_LAZY|RTLD_LOCAL);
-    }
-
-    if(handle){
-      dlerror();
-      void* sym=dlsym(handle,"create_hltmp_datasource");
-      char *errv=dlerror();
-      if(!sym){// then library don't have necessary function. probably dfinterfacedcm.so
-	ERS_LOG("Can't find symbol create_hltmp_datasource in '"<<libs.back()<<"' adding DFDataSource ");
-	libs.insert(libs.begin(),"DFDataSource");
-	if(errv){
-	  ERS_DEBUG(1,"dlsym error was "<<errv);
-	}
-      }else{
-	ERS_LOG("Find symbol create_hltmp_datasource in '"<<libs.back()<<"'. Bypassing DFDataSource");
-      }
-      if(dlclose(handle)){
-	ERS_DEBUG(1,"Closing library handle after plugin check failed!");
-      }
-    }else{// couldn't open handle revert back to old behavior
-      ERS_LOG("Can't dlopen library  '"<<libs.back()<<"' or lib"<<libs.back()<<".so adding DFDataSource");
-      libs.insert(libs.begin(),"DFDataSource");
-    }
-  }
-
-  try{
-    ALPNS::PluginLoader::addPlugin("DataSource",libs);
-  }catch(std::exception &ex){
-    std::cerr<<ALPUtils::getTimeTag()<<"Error loading datasource libraries "<<ex.what()<<std::endl;
-    std::string errMsg=std::string("DataSource library load failed with \"")+ex.what()+"\"";
-    ers::fatal(ALPIssues::DLLIssue(ERS_HERE,errMsg.c_str()));
-    throw ALPIssues::DLLIssue(ERS_HERE,errMsg.c_str());
-    return false;
-  }
-  //load information service
-  ERS_DEBUG(1,"Loading InformationService library");
-  libs.clear();
-  libs.push_back(args.get_child("Configuration.ALPApplication.InfoServiceLibrary").data());
-  try{
-    ALPNS::PluginLoader::addPlugin("InfoService",libs);
-  }catch(std::exception &ex){
-    std::string errMsg=std::string("InfoService library load failed with \"")+ex.what()+"\";";
-    ers::fatal(ALPIssues::DLLIssue(ERS_HERE,errMsg.c_str()));
-    throw ALPIssues::DLLIssue(ERS_HERE,errMsg.c_str());
-    return false;
-  }
-  //load HLTImplementation libraries
-  libs.clear();
-  ERS_DEBUG(1,"Loading HLTSteering libraries");
-  BOOST_FOREACH(const boost::property_tree::ptree::value_type &v,
-		args.get_child("Configuration.ALPApplication.HLTImplementationLibraries")){
-    std::cout<<ALPUtils::getTimeTag()<<"HLT Library= "<<v.second.data()<<std::endl;
-    libs.push_back(v.second.data());
-  }
-  try{
-    ALPNS::PluginLoader::addPlugin("HLTImplementation",libs);
-  }catch(std::exception &ex){
-    std::string errMsg=std::string("HLTSteering libraries load failed with \"")+ex.what()+"\";";
-    ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str()));
-    throw ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str());
-    return false;
-  }
-  //construct the objects
-  typedef hltinterface::HLTInterface* (*hltcreator)(void);
-  typedef hltinterface::DataSource* (*dscreator)(void);  
-  typedef hltinterface::IInfoRegister* (*isvccreator)(void);  
-
-  ERS_DEBUG(1,"Instantiating DataSource implementation");
-  dscreator dsc=ALPNS::PluginLoader::get("DataSource")->function<dscreator>("create_hltmp_datasource");
-  if(!dsc){
-    std::cerr<<ALPUtils::getTimeTag()<<"Can't get DataSource factory function. Check configuration! Can't continue. exiting"<<std::endl;
-    ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,"Can't get DataSource factory function. Check configuration! Can't continue. exiting"));
-    //exit(EXIT_FAILURE);
-    throw ALPIssues::ConfigurationIssue(ERS_HERE,"Can't get DataSource factory function. Check configuration! Can't continue. exiting");
-    return false;
-  }
-  m_dataSource=dsc();
-  ERS_DEBUG(1,"Instantiating Info Service implementation");
-  isvccreator isc=ALPNS::PluginLoader::get("InfoService")->function<isvccreator>("create_hltmp_infoservice");
-  if(!isc){
-    std::cerr<<ALPUtils::getTimeTag()<<"Can't get InfoService factory function. Check configuration! Can't continue. exiting"<<std::endl;
-    ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,"Can't get InfoService factory function. Check configuration! Can't continue. exiting"));
-    //exit(EXIT_FAILURE);
-    throw ALPIssues::ConfigurationIssue(ERS_HERE,"Can't get InfoService factory function. Check configuration! Can't continue. exiting");
-    return false;
-  }
-
-  m_infoService=isc();
-  ERS_DEBUG(1,"Instantiating HLTSteering implementation");
-  hltcreator hltc=ALPNS::PluginLoader::get("HLTImplementation")->function<hltcreator>("hlt_factory");
-  if(!hltc){
-    std::cerr<<ALPUtils::getTimeTag()<<"Can't get HLTSteering factory function. Check configuration! Can't continue. exiting"<<std::endl;
-    ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,"Can't get HLTSteering factory function. Check configuration! Can't continue. exiting"));
-    throw ALPIssues::ConfigurationIssue(ERS_HERE,"Can't get HLTSteering factory function. Check configuration! Can't continue. exiting");
-    return false;
-    //exit(EXIT_FAILURE);
-  }
-
-  m_HLTSteering=hltc();
-  bool retVal=true;
-
-  //configure infoservice
-  {
-    ERS_DEBUG(1,"Configuring Info Service implementation");
-    boost::property_tree::ptree conf=args.get_child("Configuration.ALPApplication.InfoService");
-    try{
-      boost::optional<const boost::property_tree::ptree&> extraParms=args.get_child_optional("Configuration.ALPApplication.extraParams");
-      if(extraParms){
-	conf.add_child("extraParams",(*extraParms));
-      }
-      try{
-	retVal=retVal&&m_infoService->configure(conf);
-      }catch(ers::Issue &ex){
-	ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE," InfoService configuration failed! Check configuration",ex));
-	throw ALPIssues::ConfigurationIssue(ERS_HERE," InfoService configuration failed! Check configuration",ex);
-	return false;
-      }	
-      if(!retVal){
-	ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE," InfoService configuration failed! Check configuration"));
-	throw ALPIssues::ConfigurationIssue(ERS_HERE," InfoService configuration failed! Check configuration");
-      }
-    }catch(std::exception &ex){
-      std::cerr<<ALPUtils::getTimeTag()<<"Caught exception \""<<ex.what()<<"\" during InfoService configuration"<<std::endl; 
-      std::string errMsg=std::string("InfoService configuration failed with \"")+ex.what()+"\" Check configuration";
-      ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str()));
-      throw ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str());
-      return false;
-    }
-  }
-
-  //configure data source
-  {
-    ERS_DEBUG(1,"Configuring DataSource implementation");    
-    // const boost::property_tree::ptree& conf=args.get_child("Configuration.ALPApplication.DataSource");
-    // boost::property_tree::ptree ptemp(conf);
-    try{
-      // DummyDataSource cannot do EB without ROB info ??
-      m_configTree->put("Configuration.ALPApplication.DataSource.L1ResultTimeout",m_l1ResultTimeout);
-      bool r=m_dataSource->configure(*m_configTree);
-      retVal=retVal&&r;
-      if(!r){
-	ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE," DataSource configuration failed! Check configuration"));
-	throw ALPIssues::ConfigurationIssue(ERS_HERE," DataSource configuration failed! Check configuration");
-	return false;
-      }
-    }catch(std::exception &ex){
-      std::cerr<<ALPUtils::getTimeTag()<<"Caught exception \""<<ex.what()<<"\" during DataSource configuration"<<std::endl; 
-      std::string errMsg=std::string("DataSource configuration failed with \"")+ex.what()+"\" Check configuration";
-      ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str()));
-      throw ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str());
-      return false;
-    }
-  }
-
-  // configure HLT
-  {
-    ERS_DEBUG(1,"Configuring HLTSteering implementation");
-    try{
-      bool r=m_HLTSteering->configure(args);
-      retVal=retVal&&r;
-      if(!r){
-	ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,"HLT configuration failed! Check configuration"));
-	throw ALPIssues::ConfigurationIssue(ERS_HERE,"HLT configuration failed! Check configuration");
-	return false;
-      }
-    }catch(std::exception &ex){
-      std::cerr<<ALPUtils::getTimeTag()<<"Caught exception \""<<ex.what()<<"\" during Steering configuration"<<std::endl; 
-      std::string errMsg=std::string("HLTSteering configuration failed with \"")+ex.what()+"\" Check configuration";
-      ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str()));
-      throw ALPIssues::ConfigurationIssue(ERS_HERE,errMsg.c_str());
-      return false;
-    }
-  }
-
-  //::sleep(1);
-  //ERS_INFO("Steering code loading failed continuing with dummy");  
-  //return retVal;
-  if(!retVal){
-    throw ALPIssues::ConfigurationIssue(ERS_HERE,"Configure failed! Check Configuration");
-  }
-
-  // m_motherInfo->LastUserCommand=std::vector<std::string>();
-  // m_motherInfo->LastStateTransition="Configure";
-  // m_motherInfo->LastExitedChild="";
-  m_motherInfo->setIntField(m_MINumKills,0);
-  m_motherInfo->setIntField(m_MINumForks,0);
-  m_motherInfo->setIntField(m_MIUnexpectedChildExits,0);
-  m_motherInfo->setIntField(m_MINumRequested,m_numChildren);
-  m_motherInfo->setIntField(m_MINumActive,0);
-  m_motherInfo->setIntField(m_MINumExited,0);
-  // char * tmp = getenv("TDAQ_PARTITION");
-  // std::shared_ptr<IPCPartition> m_part(0);
-  // ERS_LOG("Starting IS Publishing");
-  // if(tmp){
-  //   ERS_LOG("Using partition "<<tmp<<" server "<<m_ISSName<<" with object name "<<m_myName<<".PU_MotherInfo");
-  //   try{
-  //     m_part=std::make_shared<IPCPartition>(tmp);
-  //   }catch(std::exception &ex){
-  //     ERS_LOG("Can't create partition object "<<ex.what());
-  //   }
-  // }
-  // if(m_part){
-  //   auto id=std::make_shared<ISInfoDictionary>(*m_part);
-  //   std::string objName=m_ISSName+"."+m_myName+".PU_MotherInfo";
-  //   publishMotherInfo(id,objName);
-  // }
-  ERS_LOG("--ALP_ConfigureEnd ");
-  if(m_saveConfigOpts){
-    ALPUtils::dump2File("Configure.xml",args);
-    try{
-      std::ofstream of("Environ.sh",std::ofstream::out|std::ofstream::trunc);
-      for (char **env=environ; *env!=0;env++){
-	of<<"export "<<*env<<std::endl;
-      }
-      of.close();
-    }catch(std::exception &ex){
-      std::cerr<<ALPUtils::getTimeTag()<<"Failed to dump the environment to file. Error was "<<ex.what()<<std::endl;
-    }
-  }
-  return retVal;
-}
-
-bool ALP::connect(const boost::property_tree::ptree& args) {
-  //std::cout << "Executing connect..." << std::endl;
-  ERS_LOG("--ALP_ConnectStart. using the following configuration tree: ");
-  //ERS_LOG("Executing connect... "<<m_myPid);
-  printPtree(args,"");
-  //std::cout<<ALPUtils::getTimeTag()<<"My Pid is "<<m_myPid<<std::endl;
-  if(m_saveConfigOpts){
-    ALPUtils::dump2File("Connect.xml",args);
-  }
-
-  bool retVal=true;
-  if(m_HLTSteering){
-    retVal=(m_HLTSteering)->connect(args);
-  }
-  //::sleep(1);
-  if(!retVal){
-    ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,"HLTSteering connect() transition failed. Check configuration"));
-    throw ALPIssues::TransitionIssue(ERS_HERE,"HLTSteering connect() transition failed. Check configuration");
-    return false;
-  }
-  ERS_LOG("--ALP_ConnectEnd. ");
-
-  return retVal;
-}
-
-bool ALP::prepareForRun(const boost::property_tree::ptree& args) {
-  //  std::cout<<"Starting prepareForRun with arguments"<<std::endl;
-  ERS_LOG("Starting prepare for run, pid= "<<m_myPid);
-  ERS_LOG("--ALP_PrepareForRunStart. using the following configuration tree: ");
-  //ERS_INFO("Starting prepare for run, pid="<<m_myPid);
-  printPtree(args,"");
-  //  std::cerr<<"My Pid is "<<m_myPid<<std::endl;
-  if(m_saveConfigOpts){
-    ALPUtils::dump2File("PrepareForRun.xml",args);
-  }
-
-  *m_prepareForRunTree=args;
-  bool retVal=true;
-  // m_motherInfo->LastUserCommand=std::vector<std::string>();
-  // m_motherInfo->LastStateTransition="prepareForRun";
-  // m_motherInfo->LastExitedChild="";
-
-  m_motherInfo->setIntField(m_MINumKills,0);
-  m_motherInfo->setIntField(m_MINumForks,0);
-  m_motherInfo->setIntField(m_MIUnexpectedChildExits,0);
-  m_motherInfo->setIntField(m_MINumRequested,m_numChildren);
-  m_motherInfo->setIntField(m_MINumActive,0);
-  m_motherInfo->setIntField(m_MINumExited,0);
-
-  if(m_infoService){
-    bool ret=false;
-    try{
-      ret=m_infoService->prepareForRun(args);
-    }catch(ers::Issue &ex){
-      ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,"InfoService failed to complete prepareForRun",ex));
-    }catch(...){
-      ret=false;
-    }
-    if(!ret){
-      ERS_LOG("InfoService prepareForRun failed");
-      return false;
-    }
-  }
-
-  if(m_HLTSteering){
-    try{
-      retVal=m_HLTSteering->prepareForRun(args);
-    }catch(std::exception &ex){
-      std::string errMsg=std::string("PSC threw an exception \"")+ex.what()+"\"";
-      ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,errMsg.c_str()));
-      throw ALPIssues::UnexpectedIssue(ERS_HERE,errMsg.c_str());
-      return false;
-    }
-  }
-  if(!retVal){
-    ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,"PSC failed prepareForRun transition."));
-    throw ALPIssues::TransitionIssue(ERS_HERE,"PSC failed prepareForRun transition.");
-    return retVal;
-  }
-  if(m_nannyThread){
-    ERS_LOG("Waiting for nanny thread to Join");
-    //ERS_INFO("Waiting for nanny thread to Join");
-    stopNanny();
-  }
-  if(m_motherPublisher){
-    ERS_LOG("Waiting for MotherInfo publisher thread to Join");
-    //ERS_INFO("Waiting for nanny thread to Join");
-    stopMotherPublisher();
-  }
-  if(m_numChildren<0)m_numChildren=-m_numChildren;
-  // ERS_INFO("Preparing to fork "<<m_numChildren<<" child processes. SHUTTING DOWN IPC."
-  // 	   <<" Mother process will be outside IPC until forking is completed!.");
-  std::cout<<ALPUtils::getTimeTag()<<"Preparing to fork "<<m_numChildren<<" child processes. SHUTTING DOWN IPC."
-	   <<" Mother process will be outside IPC until forking is completed!."<<std::endl;
-
-  //sleep(30);
-  //printOpenFDs();
-  // if(m_childInfo){
-  //   m_childInfo.reset();
-  // }
-  //m_childInfo=new ALP::ALPInfo();
-  m_ipcc->shutdownIPC(args);
-  //remove this in real system.
-  std::cerr<<ALPUtils::getTimeTag()<<"IPC shutdown completed"<<std::endl;
-  //  sleep(30);
-  //printOpenFDs();
-  std::random_device rgen;
-  std::mt19937 rEngine(rgen());//seed with a real number possibly from /dev/urandom 
-  std::uniform_int_distribution<int> uniform_dist(0,((m_forkDelay>0)?m_forkDelay:1000));
-  if(m_preforkSleep>0){
-    std::cout<<ALPUtils::getTimeTag()<<"Sleeping for "<<m_preforkSleep<<" milliseconds before starting fork process"<<std::endl;
-    try{
-      boost::this_thread::sleep(boost::posix_time::milliseconds(m_preforkSleep));//sleep for given milliseconds
-    }catch(boost::thread_interrupted &ex){
-    }
-  }
-  for(int i =1;i<=m_numChildren;i++){
-    if(m_forkDelay>0){
-      try{
-	boost::this_thread::sleep(boost::posix_time::milliseconds(uniform_dist(rEngine)));//add a random delay
-      }catch(boost::thread_interrupted &ex){
-      }
-
-    }
-    pid_t t=forkChildren(i);
-    if(t!=0){// mother process
-      errno=0;
-      int spidRet=setpgid(t,m_myPgid);
-      if(spidRet!=0){
-	//char buff[200];
-	//strerror_r(errno,buff,200);
-	std::string errNo;
-	if(errno==EACCES){
-	  errNo="EACCESS";
-	}else if(errno==EINVAL){
-	  errNo="EINVAL";
-	}else if(errno==EPERM){
-	  errNo="EPERM";
-	}else if(errno==ESRCH){
-	  errNo="ESRCH";
-	}else{
-	  errNo="Unexpected error";
-	}
-	std::cerr<<ALPUtils::getTimeTag()<<"setpgid failed with "<<spidRet<<" "<<errNo<<std::endl;
-	ers::error(ALPIssues::UnexpectedIssue(ERS_HERE,"Can't set pgid. ZOMBIE INFESTATION RISK!!!"));
-      }
-      //m_motherInfo->setField(m_MINumActive,m_motherInfo->getIntField(m_MINumActive)+1);
-      GCIncrIntField(m_motherInfo,m_MINumActive,1);
-      m_myChildren[t]=i;
-      m_posPidMap[i]=t;
-    }else{ //forked children
-      m_myPos=i;
-      return doProcessLoop(args,i);
-    }
-  }//Forking loop
-  
-  //char *dummv=0;
-  //int dummc=0;
-  //sleep(300);
-  // try{
-  //   IPCCore::init(dummc,&dummv);
-  //   std::cerr<<ALPUtils::getTimeTag()<<"******************************  IPC INIT SUCCEEDED  ******************************"<<std::endl;
-  // }catch(std::exception &ex){
-  //   std::cerr<<"******************************   ERROR  ******************************"<<std::endl;
-  //   std::cerr<<ALPUtils::getTimeTag()<<"IPC Reinitialization failed for pid="<<m_myPid<<" with "<<ex.what()<<std::endl;
-  //   std::cerr<<"******************************   ERROR  ******************************"<<std::endl;
-  //   std::string errMsg=std::string("IPC Initialization failed with \"")+ex.what()+"\"";
-  //   ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,errMsg.c_str()));
-  //   throw ALPIssues::UnexpectedIssue(ERS_HERE,errMsg.c_str());
-  //   return false;
-  //   //ERS_LOG("IPC Reinitialization failed");
-  // }
-  m_ipcc->initializeIPC(args);
-  ERS_DEBUG(0,"And we are back!");
-  startNanny();
-  startMotherPublisher();
-  try{
-    boost::this_thread::sleep(boost::posix_time::milliseconds(1000));//sleep for given milliseconds  
-  }catch(boost::thread_interrupted &ex){
-  }
-
-  ERS_LOG("--ALP_prepareForRun End. ");
-  if(m_motherInfo->getIntField(m_MINumActive)!=(uint)m_numChildren){
-    ers::warning(ALPIssues::UnexpectedIssue(ERS_HERE,"Some children exited immediately after forking!"));
-    return false;
-  }
-  return true;
-}
-
-bool ALP::process(const std::vector<eformat::ROBFragment<const uint32_t*> >& /*l1r*/, 
-		      hltinterface::HLTResult& /*hltr*/,
-		      const hltinterface::EventId& ){
-  ERS_LOG("Process method is called! This shouldn't have happened!");
-  ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,"Process method called!"));
-  throw ALPIssues::UnexpectedIssue(ERS_HERE,"Process method called!");
-  return false;
-}
-
-bool ALP::stopRun(const boost::property_tree::ptree& args) {
-  //std::cout << "Stopping the run with args..." << std::endl;
-  ERS_LOG("--ALP_stopRun Start. ");
-  ERS_LOG("Stopping the run from the mother process, pid="<<m_myPid);
-  //ERS_INFO("Stopping the run, pid="<<m_myPid);
-  printPtree(args,"stopRun ");
-  if(m_saveConfigOpts){
-   ALPUtils::dump2File("StopRun.xml",args);
-  }
-  stopNanny();
-  //int timeout=args.get("Configuration.ALPApplication.ApplicationTimeout",55);
-  ERS_LOG("Starting terminator thread to kill children in "<<m_FinalizeTimeout<<" seconds");
-  boost::thread *terminator=new boost::thread(&ALP::terminateChildren,this,m_FinalizeTimeout);
-  collectChildExitStatus();
-  m_availableSlots.clear();
-  m_diedChildren.clear();
-  m_posPidMap.clear();
-  m_myChildren.clear();
-  m_exitedChildren.clear();
-  m_childPidMap.clear();
-  terminator->interrupt();
-  terminator->join();
-  delete terminator;
-  terminator=0;
-  bool retVal=m_HLTSteering->stopRun(args);
-
-  //m_dataSource->finalize(args);
-  m_infoService->finalize(args);
-  if(!m_keepNumForks)m_numChildren=m_configTree->get("Configuration.ALPApplication.numForks",4);
-  ERS_LOG("--ALP_stopRun End. returning  "<<(retVal?"True":"False"));
-  return retVal;
-}
-
-void ALP::terminateChildren(int timeOut){
-  m_terminationStarted=false;
-  if(timeOut>0){
-    try{
-      boost::this_thread::sleep(boost::posix_time::seconds(timeOut));
-    }catch(boost::thread_interrupted &ex){
-      //thread is interrupted, means children exited properly
-      return;
-    }
-  }
-  ERS_LOG("Reaping children");
-  std::map<pid_t,int> pidsToKill(m_myChildren);//make a copy
-  m_terminationStarted=true;
-  for(std::map<pid_t,int>::iterator it=pidsToKill.begin();it!=pidsToKill.end();++it){
-    if(::kill(it->first,0)==0){
-      if(::kill(it->first,SIGKILL)!=0){
-	//char buff[200];
-	//strerror_r(errno,buff,200);
-	ERS_LOG("Killing process id "<<it->first<<" failed with error \""<<strerror(errno)<<"\"");
-      }else{
-	GCIncrIntField(m_motherInfo,m_MINumKills,1);
-	GCDecrIntField(m_motherInfo,m_MINumActive,1);
-	// m_motherInfo->setIntField(m_MINumKills,m_motherInfo->getIntField(m_MINumKills)+1);
-	// m_motherInfo->setIntField(m_MINumActive,m_motherInfo->getIntField(m_MINumActive)-1);
-	ERS_LOG("Killed child process "<<it->first);
-      }
-    }
-  }  
-  return;
-}
-
-bool ALP::disconnect(const boost::property_tree::ptree& args) {
-  //std::cout << "Executing disconnect with args..." << std::endl;
-  ERS_LOG("--ALP_stopRun Start");
-  ERS_LOG("Executing disconnect, pid="<<m_myPid);
-  //ERS_INFO("Executing disconnect, pid="<<m_myPid);
-  printPtree(args,"");
-  ERS_LOG("Does this make sense for mother process?!");
-  return m_HLTSteering->disconnect(args);
-  // ::sleep(0.5);
-
-  // return true;
-}
-
-bool ALP::unconfigure(const boost::property_tree::ptree& args) {
-  //std::cout << "Executing unconfigure with args" << std::endl;
-  ERS_LOG("--ALP_unconfigure Start");
-  ERS_LOG("Executing unconfigure, pid="<<m_myPid);
-  printPtree(args,"");
-  if(m_saveConfigOpts){
-    ALPUtils::dump2File("Unconfigure.xml",args);
-  }
-  std::cout<<ALPUtils::getTimeTag()<<"My Pid is "<<m_myPid<<std::endl;
-  //::sleep(0.5);
-  stopMotherPublisher();
-  bool retVal=m_HLTSteering->unconfigure(args);
-  std::cout<<ALPUtils::getTimeTag()<<"Returning "<<(retVal?"True":"False")<<" from unconfigure "<<std::endl;
-  ERS_LOG("--ALP_unconfigure End");
-  return retVal;
-}
-
-bool ALP::publishStatistics(const boost::property_tree::ptree& args) {
-  //std::cout<<"Publish Stats with args"<<std::endl;
-  ERS_LOG("Executing publish stats, pid="<<m_myPid);
-  printPtree(args,"");
-
-  std::cout<<ALPUtils::getTimeTag()<<"My Pid is "<<m_myPid<<std::endl;
-
-  return true;
-}
-
-void ALP::timeOutReached(const boost::property_tree::ptree& args) {
-  //std::cout << "Executing timeOutReached with args..." << std::endl;
-  ERS_LOG("Executing timeOut Reached, pid="<<m_myPid);
-  printPtree(args,"");
-
-}
-
-bool ALP::hltUserCommand(const boost::property_tree::ptree& args) {
-  //std::cout << "Executing hltUserCommand with args..." << std::endl;
-  ERS_LOG("Executing hltUserCommand, pid="<<m_myPid);
-  printPtree(args,"userCommand->");
-  std::string Command=args.get_child("Configuration.COMMANDNAME").data();
-  std::stringstream oss;
-  if(Command=="FORK"){
-    int count=args.get("Configuration.COUNT",1);
-    std::string forkArgs=args.get_child("Configuration.COUNT").data();
-    //m_motherInfo->LastUserCommand=std::vector<std::string>{Command,forkArgs};
-    stopNanny();
-    stopMotherPublisher();
-    // try{
-    //   IPCCore::shutdown();
-    //   std::cerr<<ALPUtils::getTimeTag()<<"******************************  IPC SHUTDOWN SUCCEEDED  ******************************"<<std::endl;
-    // }catch(daq::ipc::NotInitialized &ex){
-    //   std::cerr<<"******************************   ERROR  ******************************"<<std::endl;
-    //   std::cerr<<ALPUtils::getTimeTag()<<"IPC shutdown failed with NotInitialized! reason= "<<ex.what()<<std::endl;
-    //   std::cerr<<"******************************   ERROR  ******************************"<<std::endl;
-      
-    // }catch(daq::ipc::CorbaSystemException &ex){
-    //   std::cerr<<"******************************   ERROR  ******************************"<<std::endl;
-    //   std::cerr<<ALPUtils::getTimeTag()<<"IPC shutdown failed with CorbaSystemException! reason= "<<ex.what()<<std::endl;
-    //   std::cerr<<"******************************   ERROR  ******************************"<<std::endl;
-    // }catch(std::exception &ex){
-    //   std::cerr<<ALPUtils::getTimeTag()<<"Caught unexpected exception"<<std::endl;
-    //   std::string errMsg=std::string("Caught unexpected exception \"")+ex.what()+"\" during IPC Shutdown.!";
-    //   ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,errMsg.c_str()));
-    // 	return false;
-    // }
-    m_ipcc->shutdownIPC(args);
-    for(int i=0;i<count;i++){
-      int pos;
-      if(m_availableSlots.empty()){
-	m_numChildren++;
-	m_motherInfo->setIntField(m_MINumRequested,m_numChildren);
-	// m_motherInfo->setIntField(m_MINumActive,m_motherInfo->getIntField(m_MINumActive)+1);
-	GCIncrIntField(m_motherInfo,m_MINumActive,1);
-	pos=m_numChildren;
-	pid_t t=forkChildren(pos);
-	if(t!=0){//mother 
-	  errno=0;
-	  int spidRet=setpgid(t,m_myPgid);
-	  if(spidRet!=0){
-	    //char buff[200];
-	    //strerror_r(errno,buff,200);
-	    std::string errNo;
-	    if(errno==EACCES){
-	      errNo="EACCESS";
-	    }else if(errno==EINVAL){
-	      errNo="EINVAL";
-	    }else if(errno==EPERM){
-	      errNo="EPERM";
-	    }else if(errno==ESRCH){
-	      errNo="ESRCH";
-	    }else{
-	      errNo="Unexpected error";
-	    }
-	    std::cerr<<ALPUtils::getTimeTag()<<"setpgid failed with "<<spidRet<<" "<<errNo<<std::endl;
-	    oss<<ALPUtils::getTimeTag()<<"Can't set pgid for child "<<pos
-	       <<" pid="<<t<<" setpgid failed with "<<spidRet<<" errNo="<<errNo<<std::endl;
-	    //ers::warning(ALPIssues::UnexpectedIssue(ERS_HERE,"Can't set pgid"));
-	  }
-	  m_myChildren[t]=pos;
-	  m_posPidMap[pos]=t;
-	}else{//children
-	  return doProcessLoop(*m_prepareForRunTree,pos);
-	}
-      }else{// avaliable slots exist
-	pos=m_availableSlots.front();
-	m_availableSlots.pop_front();
-	pid_t t=forkChildren(pos);
-	if(t!=0){//mother 
-	  errno=0;
-	  int spidRet=setpgid(t,m_myPgid);
-	  if(spidRet!=0){
-	    //char buff[200];
-	    //strerror_r(errno,buff,200);
-	    std::string errNo;
-	    if(errno==EACCES){
-	      errNo="EACCESS";
-	    }else if(errno==EINVAL){
-	      errNo="EINVAL";
-	    }else if(errno==EPERM){
-	      errNo="EPERM";
-	    }else if(errno==ESRCH){
-	      errNo="ESRCH";
-	    }else{
-	      errNo="Unexpected error";
-	    }
-	    std::cerr<<ALPUtils::getTimeTag()<<"setpgid failed with "<<spidRet<<" "<<errNo<<std::endl;
-	    oss<<ALPUtils::getTimeTag()<<"Can't set pgid for child "<<pos<<" pid="<<t
-	       <<" setpgid failed with "<<spidRet<<" errno "<<errNo<<std::endl;
-	    //ers::warning(ALPIssues::UnexpectedIssue(ERS_HERE,"Can't set pgid"));
-	  }
-	  m_myChildren[t]=pos;
-	  m_posPidMap[pos]=t;
-	  //m_motherInfo->NumActive++;
-	  GCIncrIntField(m_motherInfo,m_MINumActive,1);
-	}else{//children
-	  return doProcessLoop(*m_prepareForRunTree,pos);
-	}
-      }
-    }
-    if(oss.str().length()>0){
-      ers::warning(ALPIssues::UnexpectedIssue(ERS_HERE,(std::string("Encountered errors during forking ")+oss.str()).c_str()));
-    }
-    // try{
-    //   char *dummv=0;
-    //   int dummc=0;
-    //   IPCCore::init(dummc,&dummv);
-    //   std::cerr<<ALPUtils::getTimeTag()<<"******************************  IPC INIT SUCCEEDED  ******************************"<<std::endl;
-    //   std::cerr.flush();
-    //   //sleep(60);
-    // }catch(std::exception &ex){
-    //   std::cerr<<"******************************   ERROR  ******************************"<<std::endl;
-    //   std::cerr<<ALPUtils::getTimeTag()<<"IPC Reinitialization failed for pid="<<getpid()<<" with "<<ex.what()<<std::endl;
-    //   std::cerr<<"******************************   ERROR  ******************************"<<std::endl;
-    //   std::cerr.flush();
-    // }
-    m_ipcc->initializeIPC(args);
-    startNanny();
-    startMotherPublisher();
-  }else if(Command=="KILL"){
-    std::string childName=args.get_child("Configuration.CHILDNAME").data();
-    std::cout<<ALPUtils::getTimeTag()<<"Old child name =\""<<childName<<"\""<<std::endl;
-    boost::algorithm::trim(childName);
-    std::cout<<ALPUtils::getTimeTag()<<"Trimmed child name =\""<<childName<<"\""<<std::endl;
-    //m_motherInfo->LastUserCommand=std::vector<std::string>{Command,childName};
-    stopNanny();
-    std::map<std::string,pid_t>::iterator it=m_childPidMap.find(childName);
-    if(it!=m_childPidMap.end()){
-      if(::kill(it->second,0)==0){
-	if(::kill(it->second,SIGKILL)!=0){
-	  //char buff[200];
-	  //strerror_r(errno,buff,200);
-	  ERS_LOG("Killing process id "<<it->second<<" failed with error \""<<strerror(errno)<<"\"");
-	}else{
-	  ERS_LOG("Killed child process "<<it->first<<" pid="<<it->second);
-	  // m_motherInfo->NumKills++;
-	  // m_motherInfo->NumActive--;
-	  GCIncrIntField(m_motherInfo,m_MINumKills,1);
-	  GCDecrIntField(m_motherInfo,m_MINumActive,1);
-	  //m_motherInfo->LastExitedChild=childName;
-	  std::map<pid_t,int>::iterator itPid=m_myChildren.find(it->second);
-	  if(itPid!=m_myChildren.end()){
-	    m_availableSlots.push_back(itPid->second);
-	  }
-	  m_myChildren.erase(itPid);
-	  m_childPidMap.erase(it);
-	}
-      }else{
-	ERS_LOG("Child "<<childName<<" with pid "<<it->second<<" don't exist!");
-      }
-    }else{
-      ERS_LOG("Child \""<<childName<<"\" don't exist!");      
-    }
-    startNanny();
-  }else if(Command=="KILLALL"){
-    stopNanny();
-    terminateChildren(0);
-    collectChildExitStatus();
-  }else{
-    std::string arg=args.get_child("Configuration.ARG").data();
-    std::cout<<ALPUtils::getTimeTag()<<"Got Command \""<<Command<<"\" with arguments \""<<arg<<"\""<<std::endl;
-    std::cout<<ALPUtils::getTimeTag()<<"Command transfer is not implemented yet"<<std::endl;
-  }
-  // BOOST_FOREACH(const boost::property_tree::ptree::value_type &v,
-  // 		args.get_child("Configuration")){
-			
-  return true;
-}
-
-bool ALP::doProcessLoop(const boost::property_tree::ptree& args,int childNo){
-  errno=0;
-  int spidRet=setpgid(0,m_myPgid);
-  if(spidRet!=0){
-    //char buff[200];
-    //strerror_r(errno,buff,200);
-    std::string errNo;
-    if(errno==EACCES){
-      errNo="EACCESS";
-    }else if(errno==EINVAL){
-      errNo="EINVAL";
-    }else if(errno==EPERM){
-      errNo="EPERM";
-    }else if(errno==ESRCH){
-      errNo="ESRCH";
-    }else{
-      errNo="Unexpected error";
-    }
-    ERS_LOG("setpgid failed with "<<spidRet<<" "<<errNo);
-    ers::error(ALPIssues::UnexpectedIssue(ERS_HERE,"Can't set pgid! ZOMBIE INFESTATION RISK!"));
-  }
-  ERS_LOG("I am a forked child "<<childNo<<" with pid="<<m_myPid);
-  //ERS_INFO("Dumping something to ers::info from pid "<<m_myPid);      
-  boost::property_tree::ptree conf;
-  conf.put("start_id",childNo);
-  conf.put("stride",m_numChildren);
-  conf.put("appName",m_myName);// used by the PSC
-  conf.put("clientName",m_myName);
-  conf.put("workerId",childNo);//used by PSC
-  conf.put("numberOfWorkers",m_numChildren);// used by PSC
-  if(m_infoService){
-    try{
-      m_infoService->prepareWorker(conf);
-    }catch(ers::Issue &ex){
-      ERS_LOG("InfoService prepareWorker failed");
-      ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,"InfoService failed to complete prepareWorker",ex));
-      return false;
-    }catch(std::exception &ex){
-      ERS_LOG("InfoService prepareWorker failed");
-      ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,"InfoService failed to complete prepareWorker",ex));
-      return false;
-    }
-
-  }
-  ERS_DEBUG(1,"InfoService completed preparation.");
-  if(m_dataSource){
-    //if(!m_dataSource->prepareForRun(args)){
-    try{
-      ERS_DEBUG(1,"Trying prepareForRun for datasource");
-      m_dataSource->prepareForRun(args);
-    }catch(ers::Issue &ex){
-      ERS_LOG("DataSource prepareForRun failed with"<<ex.what());
-      std::string msg="DataSource failed to complete prepareForRun transition with message: ";
-      msg+=ex.what();
-      ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,msg.c_str(),ex));
-      return false;
-    }catch(std::exception &ex){
-      ERS_LOG("DataSource prepareForRun failed with"<<ex.what());
-      std::string msg="DataSource failed to complete prepareForRun transition with message: ";
-      msg+=ex.what();
-      ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,msg.c_str()));
-      return false;
-    }
-    try{
-      ERS_DEBUG(1,"Trying prepareWorker for datasource");
-      m_dataSource->prepareWorker(conf);
-    }catch(ers::Issue &ex){
-      ERS_LOG("DataSource prepareWorker failed with"<<ex.what());
-      std::string msg="DataSource failed to complete prepareWorker transition with message: ";
-      msg+=ex.what();
-      ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,msg.c_str(),ex));
-      return false;
-    }catch(std::exception &ex){
-      ERS_LOG("DataSource prepareWorker failed with"<<ex.what());
-      std::string msg="DataSource failed to complete prepareWorker transition with message: ";
-      msg+=ex.what();
-      ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,msg.c_str()));
-      return false;
-    }
-    ERS_DEBUG(1,"DataSource completed preparation");
-    if(m_HLTSteering){
-      ERS_DEBUG(1,"Trying prepareWorker for PSC");
-      if(!m_HLTSteering->prepareWorker(conf)){
-	ERS_LOG("HLT Steering prepareWorker failed. !");
-	ers::fatal(ALPIssues::TransitionIssue(ERS_HERE,"HLT Steering failed to complete prepareWorker"));
-	return false;
-      }
-      std::vector<eformat::ROBFragment<const uint32_t*> > l1r;
-      hltinterface::HLTResult hltr;
-      hltinterface::EventId evId;
-      evId.globalId=0;
-      evId.lbNumber=0;
-      evId.l1Id=0;
-      uint32_t * fragmentBuff=new uint32_t[hltinterface::HLTResult::DEFAULT_MAX_RESULTSIZE]; //approximately 33MB i.e. 2^25 bytes
-      hltr.fragment_pointer=fragmentBuff;
-      hltr.max_result_size=hltinterface::HLTResult::DEFAULT_MAX_RESULTSIZE;
-      ERS_LOG("--ALP_Starting Processing Loop");
-      std::cerr<<ALPUtils::getTimeTag()<<" Starting processing loop"<<std::endl;
-      m_childInfo->setIntField(m_CINumEvents,0);
-      m_childInfo->setIntField(m_CIAcceptedEvents,0);
-      m_childInfo->setIntField(m_CIRejectedEvents,0);
-      m_childInfo->setIntField(m_CIL1ResultFetchTimeouts,0);
-      m_childInfo->setIntField(m_CISoftTimeouts,0);
-      m_childInfo->setIntField(m_CILongestWaitForL1Result,0);
-      m_childInfo->setIntField(m_CILongestProcessingTime,0);
-      m_childInfo->setFloatField(m_CIAverageAcceptTime,0);
-      m_childInfo->setFloatField(m_CIAverageRejectTime,0);
-      m_childInfo->setFloatField(m_CIAverageProcessingTime,0);
-      m_childInfo->setFloatField(m_CIAverageL1ResultTime,0);
-      m_childInfo->setFloatField(m_CITimePercentInProcessing,0);
-      m_childInfo->setFloatField(m_CITimePercentInAccept,0);
-      m_childInfo->setFloatField(m_CITimePercentInReject,0);
-      m_childInfo->setFloatField(m_CITimePercentInWait,0);
-      m_childInfo->setFloatField(m_CITimePercentInSend,0);
-
-      m_accDuration=std::chrono::milliseconds(0);
-      m_rejDuration=std::chrono::milliseconds(0);
-      m_waitDuration=std::chrono::milliseconds(0);
-      m_sendDuration=std::chrono::milliseconds(0);
-      m_procDuration=std::chrono::milliseconds(0);
-      m_totDuration=std::chrono::milliseconds(0);
-
-      m_accDurationCum=std::chrono::milliseconds(0);
-      m_rejDurationCum=std::chrono::milliseconds(0);
-      m_waitDurationCum=std::chrono::milliseconds(0);
-      m_sendDurationCum=std::chrono::milliseconds(0);
-      m_procDurationCum=std::chrono::milliseconds(0);
-      m_totDurationCum=std::chrono::milliseconds(0);
-
-      m_histos.push_back(new TH1F("L1RequestTiming","L1Result receive times",1000,0.,1000.));
-      m_histos.push_back(new TH1F("AcceptedTiming","Event Accept Duration",1000,0.,4000.));
-      m_histos.push_back(new TH1F("RejectedTiming","Event Reject Duration",1000,0.,4000.));
-      m_histos.push_back(new TH1F("ProcessingTiming","Event Processing Duration",1000,0.,4000.));
-      hltinterface::IInfoRegister::instance()->registerTObject(std::string("ALP"),std::string("L1RequestTime"),m_histos[0]);
-      hltinterface::IInfoRegister::instance()->registerTObject("ALP","AcceptDecisionTime",m_histos[1]);
-      hltinterface::IInfoRegister::instance()->registerTObject("ALP","RejectDecisionTime",m_histos[2]);
-      hltinterface::IInfoRegister::instance()->registerTObject("ALP","TotalProcessingTime",m_histos[3]);
-      m_publisherThread=new boost::thread(&ALP::statsPublisher,this);
-      ERS_LOG("Starting timeoutThread with "<<m_softTimeout/1000<<" seconds to timeout");
-      m_timeoutThread.reset(new std::thread(std::bind(&ALP::runTimer,this)));
-      ERS_LOG("--ALP_Processing Start. ");
-      bool cleanExit=true;
-      std::chrono::time_point<std::chrono::steady_clock> tStart;
-      while(m_processEvents){
-	uint32_t l1id=0;
-	try{
-	  m_timeoutCond.notify_all();
-	  {
-	    std::lock_guard<std::mutex> lock (m_statMutex);
-	    tStart=std::chrono::steady_clock::now();
-	  }
-	  m_dataSource->getL1Result(l1r,l1id,evId.globalId,evId.lbNumber);
-	  std::chrono::time_point<std::chrono::steady_clock> tL1=std::chrono::steady_clock::now();
-	  {
-	    std::lock_guard<std::mutex> lock(m_timeoutMutex);
-	    m_softTOTrigger=true;
-	    m_hardTOTrigger=false;
-	    m_TOTimerStart=tL1;
-	    m_timeoutCond.notify_all();
-	  }
-	  evId.l1Id=l1id;
-	  auto dtime=std::chrono::duration_cast<std::chrono::milliseconds>(tL1-tStart);
-	  {
-	    std::lock_guard<std::mutex> lock(m_statMutex);
-	    m_waitDuration+=dtime;
-	    m_waitDurationCum+=dtime;	    
-	  }
-	  uint deltaT=dtime.count();
-	  m_histos[0]->Fill(deltaT);
-	  HLTPU::ScopedISHelper IInfoHelper(m_lbNum,m_evtNum);
-	  tL1=std::chrono::steady_clock::now();
-	  if(!m_HLTSteering->process(l1r,hltr,evId)){
-	    ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,
-						     "Steering failed in process() method. Exiting!"));
-	    return false;
-	  }
-	  {
-	    std::lock_guard<std::mutex> lock(m_timeoutMutex);
-	    m_softTOTrigger=false;
-	    m_hardTOTrigger=false;
-	    if(m_childInfo->getIntField(m_CILongestWaitForL1Result)<deltaT){
-	      m_childInfo->setIntField(m_CILongestWaitForL1Result,deltaT);
-	    }
-	  }
-	  std::chrono::time_point<std::chrono::steady_clock> tProc=std::chrono::steady_clock::now();
-	  dtime=std::chrono::duration_cast<std::chrono::milliseconds>(tProc-tL1);
-	  deltaT=dtime.count();
-	  bool accept=((hltr.stream_tag.size()>0)?true:false);
-	  tL1=std::chrono::steady_clock::now();
-	  m_dataSource->sendResult(accept,l1id,hltr);
-	  tProc=std::chrono::steady_clock::now();
-	  {
-	    std::lock_guard<std::mutex> lock(m_statMutex);
-	    m_procDuration+=dtime;
-	    m_procDurationCum+=dtime;
-	    m_eventsInInterval++;
-	  }
-	  if(m_childInfo->getIntField(m_CILongestProcessingTime)<deltaT){
-	    m_childInfo->setIntField(m_CILongestProcessingTime,deltaT);
-	  }
-	  if(accept){
-	    // m_childInfo->AverageAcceptTime+=deltaT;
-	    GCIncrIntField(m_childInfo,m_CIAcceptedEvents,1);
-	    m_histos[1]->Fill(deltaT);
-	    {
-	      std::lock_guard<std::mutex> lock(m_statMutex);
-	      m_accDuration+=dtime;
-	      m_accDurationCum+=dtime;
-	      m_acceptedInInterval++;
-	    }
-	  }else{
-	    //m_childInfo->AverageRejectTime+=deltaT;
-	    GCIncrIntField(m_childInfo,m_CIRejectedEvents,1);
-	    m_histos[2]->Fill(deltaT);
-	    {
-	      std::lock_guard<std::mutex> lock(m_statMutex);
-	      m_rejDuration+=dtime;
-	      m_rejDurationCum+=dtime;
-	      m_rejectedInInterval++;
-	    }
-	  }
-	  m_histos[3]->Fill(deltaT);
-	  GCIncrIntField(m_childInfo,m_CINumEvents,1);
-	  dtime=std::chrono::duration_cast<std::chrono::milliseconds>(tProc-tL1);
-	  {
-	    std::lock_guard<std::mutex> lock(m_statMutex); 
-	    m_sendDuration+=dtime;
-	    m_sendDurationCum+=dtime;
-	  }
-	  //std::cerr<<"Result send "<<evtCount<<std::endl;
-	}catch(ALPNS::DSErrors::NoMoreEvents &ex){
-	  ERS_LOG("ALP Caught NoMoreEvents exception: "<<ex.what());
-	  m_processEvents=false;
-	  break;
-	}catch(ALPNS::DSErrors::EventNotReady &ex){
-	  continue;
-	}catch(ALPNS::UnexpectedException &ex){
-	  ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,"Unexpected Exception happened",ex));
-	  m_processEvents=false;
-	  break;
-	}catch(ers::Issue &ex){
-	  ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,"Got an uncaught ERS issue",ex));
-	  m_processEvents=false;
-	  break;
-	}catch(std::exception &ex){
-	  ERS_LOG("ALP Caught an exception in processing loop: "<<ex.what());
-	  m_processEvents=false;
-	  std::string errMsg=std::string("Caught an unexpected exception in processing loop \"")+ex.what()+"\" Exiting!";
-	  ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,errMsg.c_str()));
-	  break;
-	}catch(...){
-	  ERS_LOG("ALP Caught an unexpected non-std exception: ALP Doesn't know this exception. Exiting! ");
-	  std::cerr<<"ALP Caught an unexpected non-std exception: ALP Doesn't know this exception. Check Log files Exiting!"<<std::endl;
-	  m_processEvents=false;
-	  ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,"Caught a non-std exception in processing loop! Check Log files! Exiting!"));
-	  break;
-	}
-	l1r.clear();
-	hltr.trigger_info.clear();
-	hltr.stream_tag.clear();
-	hltr.psc_errors.clear();   
-	hltr.hltResult_robs.clear();
-	{
-	  std::lock_guard<std::mutex> lock(m_statMutex); 
-	  auto tdiff=std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now()-tStart);
-	  m_totDuration+=tdiff;
-	  m_totDurationCum+=tdiff;
-	}
-	if(m_interEventSleep_ms>0){
-	  int sleepDuration=m_interEventSleep_ms;
-	  if(m_interEventSpread_ms>0){
-	    std::random_device rgen;
-	    std::mt19937 rEngine(rgen());//seed with a real number possibly from /dev/urandom 
-	    std::uniform_int_distribution<int> uniform_dist(0,((m_interEventSpread_ms>0)?m_interEventSpread_ms:1000));
-	    sleepDuration+=uniform_dist(rEngine);
-	  }
-	  std::this_thread::sleep_for(std::chrono::milliseconds(sleepDuration));// sleep for given milliseconds to reduce trigger rate
-	}
-      }//end while
-      // do finalization.
-      ERS_LOG("--ALP_Processing Ended. ");
-      {
-	std::lock_guard<std::mutex> lock(m_timeoutMutex);
-	m_timerWork=false;
-	m_softTOTrigger=false;
-	m_hardTOTrigger=false;
-      }
-      m_timeoutCond.notify_all();
-      m_timeoutThread->join();
-      delete[] fragmentBuff;
-      ERS_LOG("Processing loop finished. Finalizing");
-      if(m_termStagger>0){
-	waitForFreeMem(std::min((int)(m_FinalizeTimeout*0.7),m_termStagger));
-      }
-      if(!m_skipFinalize){
-	if(!m_HLTSteering->stopRun(conf)){
-	  ERS_LOG("HLT stopRun failed.");
-	}else{
-	  ERS_LOG("--ALP_stopRun Finished ");
-	  if(!m_skipFinalizeWorker){
-	    if(!m_HLTSteering->finalizeWorker(conf)){
-	      ERS_LOG("HLT Finalize worker failed.");
-	    }
-	    ERS_LOG("--ALP_finalizeWorker Finished ");
-	  }else{
-	    ERS_LOG("--ALP_finalizeWorker Skipped! ");
-	  }
-	}
-	ERS_LOG("--ALP Steering finalization completed");
-	delete m_HLTSteering;
-	ERS_LOG("--ALP Steering deletion completed");
-      }else{
-	ERS_LOG("--ALP_stopRun SKIPPED! ");       
-      }
-      m_dataSource->finalizeWorker(conf);
-      m_dataSource->finalize(conf);
-      delete m_dataSource;
-      ERS_LOG("DataFlow finalization completed.");
-      ERS_LOG("Waiting for last publication.");//need to fix this
-      m_publisherThread->interrupt();
-      m_publisherThread->join();
-      delete m_publisherThread;
-      m_publisherThread=0;
-      ERS_LOG("Publisher thread joined. Shutting down InfoService.");//need to fix this
-      m_infoService->finalizeWorker(conf);
-      m_infoService->finalize(conf);
-      delete m_infoService;
-      m_infoService=0;
-      //_exit(0);
-      //delete m_childInfo;
-      //m_childInfo=0;
-      // for(uint i=0;i<m_histos.size();i++){
-      // 	delete m_histos.at(i);
-      // }
-      m_histos.clear();
-      ERS_LOG("Returning from cildren.");
-      if(m_threadsExist){
-	std::cerr<<ALPUtils::getTimeTag()<<" Threads existed during forking. calling std::_Exit()"<<std::endl;
-	std::_Exit(EXIT_FAILURE);
-      }
-      if(m_exitImmediately){
-	std::cerr<<ALPUtils::getTimeTag()<<" Direct exit requested. Calling std::_Exit()"<<std::endl;
-	std::cerr.flush();
-	std::_Exit(120);	
-      }
-      return cleanExit;
-    }else{
-      ERS_LOG("No HLT Steering defined! Returning false");
-      ers::fatal(ALPIssues::ConfigurationIssue(ERS_HERE,"No HLT Steering defined yet prepareForRun is called!"));
-      return false;
-    }
-  }
-  return true;
-}
-
-bool ALP::prepareWorker(const boost::property_tree::ptree& /*args*/) {
-  ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,"prepareWorker method called!"));
-  return false;
-}
-
-bool ALP::finalizeWorker(const boost::property_tree::ptree& /*args*/) {
-  ers::fatal(ALPIssues::UnexpectedIssue(ERS_HERE,"finalizeWorker method called!"));
-  return true;
-}
-
-pid_t ALP::forkChildren(int pos){
-  if(m_dumpFD)printOpenFDs("mother pre-fork->");
-  if(m_dumpThreads)printTasks("mother pre-fork Tasks(threads)->");
-  m_threadsExist=(countThreads()>1);
-  pid_t t=fork();
-  if(t!=0){// parent process
-    std::cerr<<ALPUtils::getTimeTag()<<"Forked a child with pid "<<t<<std::endl;
-    std::cout<<ALPUtils::getTimeTag()<<"AfterFork"<<std::endl;
-    //m_motherInfo->NumForks++;
-    GCIncrIntField(m_motherInfo,m_MINumKills,1);
-    if(m_dumpFD)printOpenFDs("mother post-fork->");
-    if(m_dumpThreads)printTasks("mother post-fork Tasks(threads)->");
-    const int bufflen=8192;
-    char buff[bufflen];
-    char * TDAQAPPNAME=getenv("TDAQ_APPLICATION_NAME");
-    snprintf(buff,bufflen,"%s-%02d",TDAQAPPNAME,pos);
-    std::cout<<ALPUtils::getTimeTag()<<"Adding \""<<buff<<"\" with pid= "<<t<<std::endl;
-    m_childPidMap[buff]=t;
-    fflush(stdout);
-    fflush(stderr);
-    return t;
-  }else{// child process detached from parent.
-    if(m_dumpFD)printOpenFDs("child pre-redirection->");
-    if(m_dumpThreads)printTasks("child pre-redirection Tasks(threads)->");
-    //char *dummv=0;
-    //int dummc=0;
-    std::cerr<<ALPUtils::getTimeTag()<<"Fork done"<<std::endl;
-    std::cout<<ALPUtils::getTimeTag()<<"Fork done"<<std::endl;
-    m_myPid=getpid();
-    char * TDAQAPPNAME=getenv("TDAQ_APPLICATION_NAME");
-    std::string logsPath=m_childLogPath;
-    //if(logEnv)logsPath=logEnv;
-    auto tnow=std::chrono::system_clock::now();
-    long tepoch=std::chrono::duration_cast<std::chrono::seconds>(tnow.time_since_epoch()).count();
-    const int bufflen=8192;
-    char buff[bufflen];
-    if(logsPath.empty()){
-      logsPath="/tmp";
-    }
-    snprintf(buff,bufflen,"%s:%02d",
-	     TDAQAPPNAME,pos);
-    setenv("TDAQ_APPLICATION_NAME",buff,1);
-    snprintf(buff,bufflen,"%s/%s:%02d-%d-%ld.out",
-	     logsPath.c_str(),TDAQAPPNAME,pos,m_myPid,tepoch);
-    std::cerr<<ALPUtils::getTimeTag()<<"I am the child # "<<pos<<" with pid "<<m_myPid<<". Redirecting stdout to "<<buff<<std::endl;
-    fflush(stdout);
-    freopen(buff,"a",stdout);
-    snprintf(buff,bufflen,"%s/%s:%02d-%d-%ld.err",
-	     logsPath.c_str(),TDAQAPPNAME,pos,m_myPid,tepoch);
-    std::cerr<<ALPUtils::getTimeTag()<<"I am the child # "<<pos<<" with pid "<<m_myPid<<". Redirecting stderr to "<<buff<<std::endl;
-
-    fflush(stderr);
-    freopen(buff,"a",stderr);
-    //sleep(30);
-
-    if(m_dumpFD)printOpenFDs("child post-redirection->");
-    if(m_dumpThreads)printTasks("child post-redirection Tasks(threads)->");
-    // try{
-    //   IPCCore::init(dummc,&dummv);
-    //   std::cerr<<ALPUtils::getTimeTag()<<"******************************  IPC INIT SUCCEEDED  ******************************"<<std::endl;
-    //   std::cerr.flush();
-    //   //sleep(60);
-    // }catch(std::exception &ex){
-    //   std::cerr<<"******************************   ERROR  ******************************"<<std::endl;
-    //   std::cerr<<ALPUtils::getTimeTag()<<"IPC Reinitialization failed for pid="<<getpid()<<" with "<<ex.what()<<std::endl;
-    //   std::cerr<<"******************************   ERROR  ******************************"<<std::endl;
-    //   std::cerr.flush();
-    // }
-    boost::property_tree::ptree args;
-    m_ipcc->initializeIPC(args);
-
-    std::cerr<<ALPUtils::getTimeTag()<<"IPC reinitialization done "<<m_myPid<<std::endl;
-    //printOpenFDs();
-    prctl( PR_SET_PDEATHSIG, SIGTERM );
-    ::signal(SIGCHLD,SIG_DFL);
-    ::signal(SIGKILL,SIG_DFL);
-    ::signal(SIGTERM,SIG_DFL);
-
-    //ERS_LOG("I am the children with, pid="<<m_myPid<<". Redirecting output to logfiles ");
-    //ERS_INFO("I am the children with, pid="<<m_myPid<<". Redirecting output to logfiles ");
-    //char * logEnv=getenv("TDAQ_LOGS_PATH");
-    ERS_LOG("I am the child # "<<pos<<" with, pid="<<m_myPid<<". Redirection is completed");
-    //ERS_INFO("I am the children with, pid="<<m_myPid<<". Redirection is completed");
-    snprintf(buff,bufflen,"%s-%02d",TDAQAPPNAME,pos);
-    m_myName=buff;
-  }
-  return t;
-}
-
-void ALP::doNannyWork(){
-  int count=0;
-  pid_t baby=0;
-  while(m_nannyWork && baby!=-1){
-    errno=0;
-    int retVal=0;
-    baby=waitpid(0,&retVal,WNOHANG);
-    //ERS_LOG("DOING NANNY WORK! baby= "<<baby);
-    if(baby==0){// if all children working sleep 1 seconds
-      try{
-	boost::this_thread::sleep(boost::posix_time::seconds(1));
-      }catch(boost::thread_interrupted &ex){
-	//don't need to sleep anymore
-	if(!m_nannyWork) return;
-      }
-    }else if(baby==-1){//if no child remains
-      //m_motherInfo->NumActive=0;
-      m_motherInfo->setIntField(m_MINumActive,0);
-      if(errno==ECHILD){
-	ERS_LOG("All children are exited. Returning");
-	return;
-      }
-      count++;
-      //char buff[200];
-      //strerror_r(errno,buff,200);
-      ERS_LOG("waitpid returned "<<::strerror(errno));
-      //ERS_INFO("waitpid returned "<<buff);
-      if(count>10)return; //killswitch 
-
-    }else{// something happened to children
-      if(WIFEXITED(retVal)){
-	//should we ask exit status to be 0 in order to catch failures?
-	int exitStat=WEXITSTATUS(retVal);
-	ERS_LOG("Child with PID="<<baby<<" exited normally with status="<<exitStat);
-	// m_motherInfo->NumActive--;	
-	// m_motherInfo->NumExited++;
-	GCIncrIntField(m_motherInfo,m_MINumExited,1);
-	GCDecrIntField(m_motherInfo,m_MINumActive,1);
-	if(exitStat!=0){
-	  char errbuff[200];
-	  snprintf(errbuff,200,"Child pid= %d exited with unexpected return value %d ",baby,exitStat);
-	  ers::warning(ALPIssues::ChildIssue(ERS_HERE, errbuff));
-	  //m_motherInfo->UnexpectedChildExits++;
-	  GCIncrIntField(m_motherInfo,m_MIUnexpectedChildExits,1);
-	}
-	std::map<pid_t,int>::iterator it=m_myChildren.find(baby);
-	if(it!=m_myChildren.end()){
-	  m_availableSlots.push_back(it->second);
-	  // const int bufflen=8192;
-	  // char buff[bufflen];
-	  // char * TDAQAPPNAME=getenv("TDAQ_APPLICATION_NAME");
-	  // snprintf(buff,bufflen,"%s-%02d",TDAQAPPNAME,it->second);
-	  // m_motherInfo->LastExitedChild=buff;
-	  m_myChildren.erase(it);// remove it from the map
-	}
-      }
-      if(WIFSIGNALED(retVal)){
-	int exitStat=WTERMSIG(retVal);
-	ERS_LOG("Child with PID="<<baby<<" exited with a signal="<<WTERMSIG(retVal));
-	// m_motherInfo->NumActive--;	
-	// m_motherInfo->NumExited++;
-	GCIncrIntField(m_motherInfo,m_MINumExited,1);
-	GCDecrIntField(m_motherInfo,m_MINumActive,1);
-
-	if(exitStat!=0){
-	  char errbuff[200];
-	  snprintf(errbuff,200,"Child pid= %d exited with signal  %d ",baby,exitStat);
-	  // m_motherInfo->UnexpectedChildExits++;
-	  GCIncrIntField(m_motherInfo,m_MIUnexpectedChildExits,1);
-	  ers::warning(ALPIssues::ChildIssue(ERS_HERE, errbuff));
-	}
-	// std::map<pid_t,int>::iterator it=m_myChildren.find(baby);
-	// if(it!=m_myChildren.end()){
-	//   char buff[200];
-	//   snprintf(buff,200,"%s-%02d",m_myName.c_str(),it->second);
-	//   m_diedChildren[std::string(buff)]=it->second;
-	//   m_availableSlots.push_back(it->second);
-	//   m_myChildren.erase(it);// remove it from the map
-	// }
-	//TAKE ACTION
-	//Is it safe to fork here?
-      }
-      if(WIFSTOPPED(retVal)){
-	ERS_LOG("Child with PID="<<baby<<" stopped by a signal="<<WSTOPSIG(retVal));
-	char errbuff[200];
-	snprintf(errbuff,200,"Child pid= %d stopped",baby);
-	ers::warning(ALPIssues::ChildIssue(ERS_HERE, errbuff));
-	// std::map<pid_t,int>::iterator it=m_myChildren.find(baby);
-	// if(it!=m_myChildren.end())m_myChildren.erase(it);// remove it from the map
-	//TAKE ACTION
-	//Is it safe to fork here?
-      }
-    }
-  }
-}
-
-void ALP::collectChildExitStatus(){
-  int count=0;
-  pid_t baby=0;
-  while(baby!=-1){
-    errno=0;
-    int retVal=0;
-    baby=waitpid(0,&retVal,WNOHANG);
-    if(baby==0){// if all children working sleep 1 seconds
-      try{
-	boost::this_thread::sleep(boost::posix_time::milliseconds(500));
-      }catch(boost::thread_interrupted &ex){
-      }
-    }else if(baby==-1){//if no child remains
-      if(errno==ECHILD){
-	ERS_LOG("All children are exited. Returning");
-	return;
-      }
-      count++;
-      if(count>10){
-	ERS_LOG("Returning because of killswitch");
-	return; //killswitch 
-      }
-    }else{// something happened to children
-      if(WIFEXITED(retVal)){
-	//should we ask exit status to be 0 in order to catch failures?
-	int exitStat=WEXITSTATUS(retVal);
-	if(exitStat && !m_terminationStarted){
-	  char errbuff[200];
-	  snprintf(errbuff,200,"Child pid= %d exited with unexpected return value %d ",baby,exitStat);
-	  ers::warning(ALPIssues::ChildIssue(ERS_HERE,errbuff ));
-	}
-	ERS_LOG("Child with PID="<<baby<<" exited with status="<<exitStat);
-	std::map<pid_t,int>::iterator it=m_myChildren.find(baby);
-	if(it!=m_myChildren.end()){
-	  m_availableSlots.push_back(it->second);
-	  m_myChildren.erase(it);// remove it from the map
-	}
-      }
-      if(WIFSIGNALED(retVal)){
-	int exitStat=WTERMSIG(retVal);
-	if(exitStat && !m_terminationStarted){
-	  char errbuff[200];
-	  snprintf(errbuff,200,"Child pid= %d exited with unexpected return value %d ",baby,exitStat);
-	  ers::warning(ALPIssues::ChildIssue(ERS_HERE,errbuff ));
-	}
-	ERS_LOG("Child with PID="<<baby<<" exited with a signal="<<WTERMSIG(retVal));
-	// std::map<pid_t,int>::iterator it=m_myChildren.find(baby);
-	// if(it!=m_myChildren.end()){
-	//   m_availableSlots.push_back(it->second);
-	//   m_myChildren.erase(it);// remove it from the map
-	// }
-	//TAKE ACTION
-	//Is it safe to fork here?
-      }
-      if(WIFSTOPPED(retVal)){
-	ERS_LOG("Child with PID="<<baby<<" stopped by a signal="<<WSTOPSIG(retVal));
-	//TAKE ACTION
-	//Is it safe to fork here?
-      }
-    }
-  }
-}
-
-void ALP::printPtree(const boost::property_tree::ptree& args, std::string level){
-  boost::property_tree::ptree::const_iterator it,itend=args.end();
-  level+=" ";
-  for(it=args.begin();it!=itend;++it){
-    std::string val(it->second.get_value<std::string>());
-    boost::algorithm::trim(val);
-    std::cout<<level<<it->first<<" : "<<val<<std::endl;
-    printPtree(it->second,level);
-  }
-}
-
-void ALP::startNanny(){
-  if(m_nannyThread)return;
-  m_nannyWork=true;
-  ERS_LOG("STARTING NANNY THREAD -- Mother process");
-  m_nannyThread=new boost::thread(&ALP::doNannyWork,this);
-}
-
-void ALP::stopNanny(){
-  m_nannyWork=false;
-  if(!m_nannyThread)return;
-  ERS_LOG("STOPPING NANNY THREAD -- Mother process");
-  m_nannyThread->interrupt();
-  //::sleep(1.5);
-  m_nannyThread->join();
-  delete m_nannyThread;
-  m_nannyThread=0;
-}
-
-void ALP::statsPublisher(){
-  // char * tmp = getenv("TDAQ_PARTITION");
-  // IPCPartition *m_part=0;
-  // ERS_LOG("Starting IS Publishing");
-  // if(tmp){
-  //   ERS_LOG("Using partition "<<tmp<<" server "<<m_ISSName<<" with object name "<<m_myName<<".PU_ChildInfo");
-  //   try{
-  //     m_part=new IPCPartition(tmp);
-  //   }catch(std::exception &ex){
-  //     ERS_LOG("Can't create partition object "<<ex.what());
-  //   }
-  // }
-  // if(m_part){
-  //   ISInfoDictionary id(*m_part);
-  //   std::string objName=m_ISSName+"."+m_myName+".PU_ChildInfo";
-  //   boost::chrono::steady_clock::time_point now=boost::chrono::steady_clock::now();
-  //   boost::chrono::seconds timeFromEpoch=
-  //     boost::chrono::duration_cast<boost::chrono::seconds>(now.time_since_epoch());    
-  //   auto toNext=m_publishInterval-(timeFromEpoch.count()%m_publishInterval);
-  //   auto sleepDuration=boost::chrono::seconds(m_publishInterval);
-  //   auto pubTime=now+boost::chrono::seconds(toNext);
-  //   try{
-  //     boost::this_thread::sleep_until(pubTime);
-  //   }catch(boost::thread_interrupted &ex){
-
-  //   }
-  //   try{
-  //     {
-  // 	std::lock_guard<std::mutex>(m_statMutex);
-  // 	if(m_eventsInInterval){
-  // 	  double ievts=1.0/m_eventsInInterval;
-  // 	  m_childInfo->setFloatField(m_CIAverageL1ResultTime,m_waitDuration.count()*ievts);
-  // 	  m_childInfo->setFloatField(m_CIAverageProcessingTime,m_procDuration.count()*ievts);
-  // 	}
-  // 	if(m_acceptedInInterval){
-  // 	  m_childInfo->setFloatField(m_CIAverageAcceptTime,m_accDuration.count()/m_acceptedInInterval);
-  // 	}
-  // 	if(m_rejectedInInterval){
-  // 	  m_childInfo->setFloatField(m_CIAverageRejectTime,m_rejDuration.count()/m_rejectedInInterval);
-  // 	}
-  // 	if(m_totDuration.count()){
-  // 	  double invDur=1./m_totDuration.count();
-  // 	  m_childInfo->setFloatField(m_CITimePercentInProcessing,m_procDuration.count()*invDur);
-  // 	  m_childInfo->setFloatField(m_CITimePercentInAccept,m_accDuration.count()*invDur);
-  // 	  m_childInfo->setFloatField(m_CITimePercentInReject,m_rejDuration.count()*invDur);
-  // 	  m_childInfo->setFloatField(m_CITimePercentInWait,m_waitDuration.count()*invDur);
-  // 	  m_childInfo->setFloatField(m_CITimePercentInSend,m_sendDuration.count()*invDur);
-  // 	}
-  // 	m_accDuration=std::chrono::milliseconds(0);
-  // 	m_rejDuration=std::chrono::milliseconds(0);
-  // 	m_waitDuration=std::chrono::milliseconds(0);
-  // 	m_sendDuration=std::chrono::milliseconds(0);
-  // 	m_procDuration=std::chrono::milliseconds(0);
-  // 	m_totDuration=std::chrono::milliseconds(0);
-  // 	m_eventsInInterval=0;
-  // 	m_acceptedInInterval=0;
-  // 	m_rejectedInInterval=0;
-  // 	m_childInfo->setIntField(m_CILongestProcessingTime,0);
-  //     }
-  //     //id.checkin(objName,*m_childInfo);
-  //   }catch(daq::is::Exception &ex){
-  //     ERS_LOG("Caught exception "<<ex.what()<<" in first check-in");
-  //   }
-  //   pubTime+=sleepDuration;
-  //   while(m_processEvents){
-  //     try{
-  // 	boost::this_thread::sleep_until(pubTime);
-  // 	pubTime+=sleepDuration;
-  //     }catch(boost::thread_interrupted &ex){
-  // 	ERS_LOG("Publisher thread sleep is interrupted");
-  // 	auto nextPoint=
-  // 	  boost::chrono::duration_cast<boost::chrono::milliseconds>(boost::chrono::steady_clock::now().time_since_epoch());    
-  // 	auto toNext=m_publishInterval*1000-(nextPoint.count()%(m_publishInterval*1000));
-  // 	pubTime+=boost::chrono::milliseconds(toNext);
-  //     }
-  //     try{
-  // 	{
-  // 	  std::lock_guard<std::mutex>(m_statMutex);	  
-  // 	  if(m_eventsInInterval){
-  // 	    double ievts=1.0/m_eventsInInterval;
-  // 	    m_childInfo->setFloatField(m_CIAverageL1ResultTime,m_waitDuration.count()*ievts);
-  // 	    m_childInfo->setFloatField(m_CIAverageProcessingTime,m_procDuration.count()*ievts);
-  // 	  }
-  // 	  if(m_acceptedInInterval){
-  // 	    m_childInfo->setFloatField(m_CIAverageAcceptTime,m_accDuration.count()/m_acceptedInInterval);
-  // 	  }
-  // 	  if(m_rejectedInInterval){
-  // 	    m_childInfo->setFloatField(m_CIAverageRejectTime,m_rejDuration.count()/m_rejectedInInterval);
-  // 	  }
-  // 	  if(m_totDuration.count()){
-  // 	    double invDur=1./(double)m_totDuration.count();
-  // 	    m_childInfo->setFloatField(m_CITimePercentInProcessing,m_procDuration.count()*invDur);
-  // 	    m_childInfo->setFloatField(m_CITimePercentInAccept,m_accDuration.count()*invDur);
-  // 	    m_childInfo->setFloatField(m_CITimePercentInReject,m_rejDuration.count()*invDur);
-  // 	    m_childInfo->setFloatField(m_CITimePercentInWait,m_waitDuration.count()*invDur);
-  // 	    m_childInfo->setFloatField(m_CITimePercentInSend,m_sendDuration.count()*invDur);
-  // 	  }
-  // 	  m_accDuration=std::chrono::milliseconds(0);
-  // 	  m_rejDuration=std::chrono::milliseconds(0);
-  // 	  m_waitDuration=std::chrono::milliseconds(0);
-  // 	  m_sendDuration=std::chrono::milliseconds(0);
-  // 	  m_procDuration=std::chrono::milliseconds(0);
-  // 	  m_totDuration=std::chrono::milliseconds(0);
-  // 	  m_eventsInInterval=0;
-  // 	  m_acceptedInInterval=0;
-  // 	  m_rejectedInInterval=0;
-  // 	  m_childInfo->setIntField(m_CILongestProcessingTime,0);
-  // 	}
-  // 	//id.checkin(objName,*m_childInfo);
-  //     }catch(daq::is::Exception &ex){
-  // 	ERS_LOG("Caught exception "<<ex.what()<<" while stats publication");
-  //     }
-  //   }
-  // }else{
-  //   ERS_LOG("Can't get partition object");
-  // }
-  // delete m_part;
-}
-
-void ALP::printOpenFDs(const std::string &header=""){
-  DIR *dir;
-  struct dirent *ent;
-  pid_t mypid=getpid();
-  if ((dir = opendir ("/proc/self/fd/")) != NULL) {
-    /* print all the files and directories within directory */
-    std::cout<<ALPUtils::getTimeTag()<<header<<" "<<"List of open FDs (one will be due to this call) pid="<<getpid()<<std::endl;
-    while ((ent = readdir (dir)) != NULL) {
-      std::string name(ent->d_name);
-      if(name=="."||name=="..") continue;
-      std::string typ;
-      if(ent->d_type==DT_BLK){
-	typ="BLOCK";
-      }else if(ent->d_type==DT_CHR){
-	typ="CHARACTER";
-      }else if(ent->d_type==DT_DIR){
-	typ="DIR";
-      }else if(ent->d_type==DT_FIFO){
-	typ="FIFO";
-      }else if(ent->d_type==DT_LNK){
-	typ="LINK";
-	char buf[2001];
-	std::string path="/proc/self/fd/"+name;
-	int len=readlink(path.c_str(),buf,2000);
-	if(len>0){
-	  buf[len]='\0';
-	  typ+=" -> "+std::string(buf);
-	}
-      }else if(ent->d_type==DT_REG){
-	typ="FILE";
-      }else if(ent->d_type==DT_SOCK){
-	typ="SOCKET";
-      }else if(ent->d_type==DT_UNKNOWN){
-	typ="UNKNOWN";
-      }
-      std::cout<<header<<" "<<mypid<<" "<<name<<" type="<<typ<<std::endl;
-    }
-    closedir (dir);
-  } else {
-    /* could not open directory */
-    perror ("");
-    std::cerr<<"Can't open /proc/self/fd"<<std::endl;
-    //return EXIT_FAILURE;
-  }
-}
-
-void ALP::printTasks(const std::string &header=""){
-  DIR *dir;
-  struct dirent *ent;
-  pid_t mypid=getpid();
-  if ((dir = opendir ("/proc/self/task/")) != NULL) {
-    /* print all the files and directories within directory */
-    std::cout<<ALPUtils::getTimeTag()<<header<<" "<<"List of open FDs (one will be due to this call) pid="<<getpid()<<std::endl;
-    while ((ent = readdir (dir)) != NULL) {
-      std::string name(ent->d_name);
-      if(name=="."||name=="..") continue;
-      std::string typ;
-      if(ent->d_type==DT_BLK){
-	typ="BLOCK";
-      }else if(ent->d_type==DT_CHR){
-	typ="CHARACTER";
-      }else if(ent->d_type==DT_DIR){
-	typ="DIR";
-      }else if(ent->d_type==DT_FIFO){
-	typ="FIFO";
-      }else if(ent->d_type==DT_LNK){
-	typ="LINK";
-	char buf[2001];
-	std::string path="/proc/self/task/"+name;
-	int len=readlink(path.c_str(),buf,2000);
-	if(len>0){
-	  buf[len]='\0';
-	  typ+=" -> "+std::string(buf);
-	}
-      }else if(ent->d_type==DT_REG){
-	typ="FILE";
-      }else if(ent->d_type==DT_SOCK){
-	typ="SOCKET";
-      }else if(ent->d_type==DT_UNKNOWN){
-	typ="UNKNOWN";
-      }
-      std::cout<<header<<" "<<mypid<<" "<<" threadPID= "<<name<<" type="<<typ<<std::endl;
-    }
-    closedir (dir);
-  } else {
-    /* could not open directory */
-    perror ("");
-    std::cerr<<"Can't open /proc/self/task"<<std::endl;
-    //return EXIT_FAILURE;
-  }
-}
- 
- int ALP::countThreads(){
-   DIR *dir;
-   struct dirent *ent;
-   int nThreads=0;
-   pid_t mypid=getpid();
-   if ((dir = opendir ("/proc/self/task/")) != NULL) {
-     while ((ent = readdir (dir)) != NULL) {
-       std::string name(ent->d_name);
-       if(name=="."||name=="..") continue;
-       std::string typ;
-       if(ent->d_type==DT_BLK){
-	 typ="BLOCK";
-       }else if(ent->d_type==DT_CHR){
-	 typ="CHARACTER";
-       }else if(ent->d_type==DT_DIR){
-	 typ="DIR";
-       }else if(ent->d_type==DT_FIFO){
-	 typ="FIFO";
-       }else if(ent->d_type==DT_LNK){
-	 typ="LINK";
-	 char buf[2001];
-	 std::string path="/proc/self/task/"+name;
-	 int len=readlink(path.c_str(),buf,2000);
-	 if(len>0){
-	   buf[len]='\0';
-	   typ+=" -> "+std::string(buf);
-	 }
-       }else if(ent->d_type==DT_REG){
-	 typ="FILE";
-       }else if(ent->d_type==DT_SOCK){
-	 typ="SOCKET";
-       }else if(ent->d_type==DT_UNKNOWN){
-	 typ="UNKNOWN";
-       }
-       int currPid=0;
-       try{
-	 currPid=std::stoi(name);
-       }catch(std::exception &ex){
-	 
-       }
-       if(mypid!=currPid){
-	 nThreads++;
-       }
-     }
-     closedir (dir);
-     return nThreads;
-   } else {
-     /* could not open directory */
-     perror ("");
-     std::cerr<<"Can't open /proc/self/task"<<std::endl;
-     return -1;
-   }
-   return nThreads;
- }
-
-// void ALP::publishMotherInfo(std::shared_ptr<ISInfoDictionary> dict,const std::string& name){
-//   try{
-//     //dict->checkin(name,*m_motherInfo);
-//     m_lastPublish=boost::chrono::steady_clock::now();
-//   }catch(daq::is::Exception &ex){
-//     ERS_LOG("Caught exception "<<ex.what()<<" while Object deletion and creation");
-//   }
-// }
-
-void ALP::startMotherPublisher(){
-  
-  if(m_motherPublisher)return;
-  m_publisherWork=true;
-  ERS_LOG("Starting MotherInfo publisher thread");
-  m_motherPublisher=new boost::thread(&ALP::doMotherPublication,this);
-}
-
-void ALP::stopMotherPublisher(){
-  m_publisherWork=false;
-  if(!m_motherPublisher)return;
-  ERS_LOG("Stopping MotherInfo publisher thread");
-  m_motherPublisher->interrupt();
-  //::sleep(1.5);
-  m_motherPublisher->join();
-  delete m_motherPublisher;
-  m_motherPublisher=0;
-  std::this_thread::sleep_for(std::chrono::milliseconds(500));// wait for potential ipc operations
-}
-
-void ALP::doMotherPublication(){
-  // char * tmp = getenv("TDAQ_PARTITION");
-  // std::shared_ptr<IPCPartition> part;
-  // std::shared_ptr<ISInfoDictionary> id;
-  // std::string objName=m_ISSName+"."+m_myName+".PU_MotherInfo";
-  // ERS_LOG("Starting Mother IS Publishing");
-
-  // if(tmp){
-  //   ERS_LOG("Using partition "<<tmp<<" server "<<m_ISSName<<" with object name "<<m_myName<<".PU_MotherInfo");
-  //   try{
-  //     part=std::make_shared<IPCPartition>(tmp);
-  //   }catch(std::exception &ex){
-  //     ERS_LOG("Can't create partition object "<<ex.what());
-  //   }
-  // }
-  // if(part){
-  //   id=std::make_shared<ISInfoDictionary>(*part);
-  // }
-
-  // boost::chrono::steady_clock::time_point now=boost::chrono::steady_clock::now();
-  // boost::chrono::seconds timeFromEpoch=boost::chrono::duration_cast<boost::chrono::seconds>(now.time_since_epoch());
-  // boost::chrono::seconds timeFromLast=timeFromEpoch-boost::chrono::duration_cast<boost::chrono::seconds>(m_lastPublish.time_since_epoch());
-
-  // auto toNext=m_publishInterval-(timeFromEpoch.count()%m_publishInterval);
-  // if((timeFromLast.count()>m_publishInterval)&&(toNext>m_publishInterval*0.5)){// we missed some publications
-  //   publishMotherInfo(id,objName);
-  // }
-  // int64_t numPublishes=timeFromEpoch.count()/m_publishInterval+1;
-  // boost::chrono::steady_clock::time_point nextPublish(boost::chrono::seconds(numPublishes*m_publishInterval));
-  // while(m_publisherWork){
-  //   try{
-  //     boost::this_thread::sleep_until(nextPublish);
-  //   }catch(boost::thread_interrupted &ex){
-  //     //don't need to sleep anymore
-  //     if(!m_publisherWork) return;
-  //   }
-  //   publishMotherInfo(id,objName);
-  //   nextPublish+=boost::chrono::seconds(m_publishInterval);
-  // }
-
-}
-
-void ALP::softTimeout(){
-  ERS_LOG("Called softTimeout Evt= "<<m_evtNum<<", LB= "<<m_lbNum);
-  boost::property_tree::ptree a;
-  a.put("StartTime_s",std::chrono::duration_cast<std::chrono::seconds>(m_TOTimerStart.time_since_epoch()).count());
-  m_HLTSteering->timeOutReached(a);
-  m_softTOTrigger=false;
-  m_hardTOTrigger=false;
-  GCIncrIntField(m_childInfo,m_CISoftTimeouts,1);
-}
-
-void ALP::hardTimeout(){
-  ERS_LOG("Called hardTimeout This shouldn't have happened Evt="<<m_evtNum<<", LB="<<m_lbNum);
-  //  std::exit(3);
-  m_hardTOTrigger=false;
-}
-
-void ALP::runTimer(){
-  auto softDuration=std::chrono::milliseconds(m_softTimeout);
-  auto hardDuration=std::chrono::milliseconds(m_hardTimeout);
-  std::unique_lock<std::mutex> lock(m_timeoutMutex);
-  while(m_timerWork){
-    m_timeoutCond.wait_for(lock,std::chrono::seconds(1));
-    auto now=std::chrono::steady_clock::now();
-    if(m_softTOTrigger && (now>m_TOTimerStart+softDuration)){
-      softTimeout();
-    }
-    if(m_hardTOTrigger && (now>m_TOTimerStart+hardDuration)){
-      hardTimeout();
-    }
-  }
-}
-
-void ALP::waitForFreeMem(int maxSleep){
-  if(m_myPos==0)return;
-  if(maxSleep<=0)return;
-  auto twait=std::chrono::steady_clock::now()+std::chrono::seconds(maxSleep);
-  char buff[1000];
-  std::ifstream selfMem("/proc/self/statm/");
-  std::string line;
-  std::getline(selfMem,line);
-  long pageSize=sysconf(_SC_PAGESIZE);
-  if(pageSize<1){
-    ERS_LOG("Couldn't get page size. Errno was ="<<errno<< ". Assuming Pagesize= 4096. ");
-    errno=0;
-    pageSize=4096;
-  }
-  unsigned int vmTot,vmRss,vmShare,vmText,vmLib,vmData,vmDirty;
-  
-  sscanf(line.c_str(),"%u %u %u %u %u %u %u",&vmTot,&vmRss,&vmShare,&vmText,&vmLib,&vmData,&vmDirty);
-  selfMem.close();
-  vmTot*=pageSize;
-  vmRss*=pageSize;
-  std::set<int> activeSiblings;
-
-  while(std::chrono::steady_clock::now()<twait){
-    try{
-      std::ifstream meminfo("/proc/meminfo");
-      std::getline(meminfo,line);//MemTotal
-      unsigned int memTotal=0,memFree=0,memAvail=0;
-      sscanf(line.c_str(),"%s: %u kB",buff,&memTotal);
-      std::getline(meminfo,line);//MemTotal
-      sscanf(line.c_str(),"%s: %u kB",buff,&memFree);
-      std::getline(meminfo,line);//MemTotal
-      sscanf(line.c_str(),"%s: %u kB",buff,&memAvail);
-      meminfo.close();
-      for(auto it:m_posPidMap){// check siblings
-	if(kill(it.second,0)==-1){// process is missing
-	  errno=0;
-	  if(activeSiblings.find(it.first)!=activeSiblings.end()){//process was not there before either
-	    activeSiblings.erase(activeSiblings.find(it.first));//take it out
-	  }
-	}else{// process is active
-	  activeSiblings.insert(it.first);
-	}
-      }
-      if(activeSiblings.size()==0)break;
-      if(memAvail-(vmRss*activeSiblings.size())>vmRss){//there is enough space for at least one more process
-	break;
-      }
-      std::this_thread::sleep_for(std::chrono::milliseconds(1000));// wait for other processes
-    }catch(std::exception &ex){
-      ERS_LOG("Failed reading proc memory information. "<<ex.what());
-      break;
-    }
-  }
-}
diff --git a/Trigger/ALP/src/DataSourceExceptions.cxx b/Trigger/ALP/src/DataSourceExceptions.cxx
deleted file mode 100644
index 1c5e9a6a4409f181652e881307fa8e8855bf1831..0000000000000000000000000000000000000000
--- a/Trigger/ALP/src/DataSourceExceptions.cxx
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-
-Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-Author: Sami Kama 2017
-*/
-
-#include <stdexcept>
-#include <string>
-#include "ALP/DataSourceExceptions.h"
-
-namespace ALPNS{
-  namespace DSErrors{
-    EventNotReady::EventNotReady()noexcept :m_msg("Event Not Ready!"){}
-    EventNotReady::EventNotReady(const std::string &m)noexcept{
-      m_msg=std::string("Event Not Ready: "+m);
-    }
-    const char * EventNotReady::what() const noexcept {
-      return m_msg.c_str();
-    }
-    EventNotReady::EventNotReady(const EventNotReady &rhs) noexcept {m_msg=rhs.m_msg;}
-    EventNotReady& EventNotReady::operator=(const EventNotReady &rhs) noexcept{m_msg=rhs.m_msg;return *this;}
-    EventNotReady::~EventNotReady()noexcept {}
-
-    NoMoreEvents::NoMoreEvents() noexcept :m_msg("No More Events"){}
-    NoMoreEvents::NoMoreEvents(const std::string &m) noexcept{
-      m_msg=std::string("No more events available "+m);
-    }
-    const char * NoMoreEvents::what() const noexcept {
-      return m_msg.c_str();
-    }
-    NoMoreEvents::NoMoreEvents(const NoMoreEvents &rhs) noexcept {m_msg=rhs.m_msg;}
-    NoMoreEvents& NoMoreEvents::operator=(const NoMoreEvents &rhs) noexcept{m_msg=rhs.m_msg;return *this;}
-    NoMoreEvents::~NoMoreEvents()noexcept {}
-
-    CommunicationError::CommunicationError() noexcept :m_msg("Communication Error") {}
-    CommunicationError::CommunicationError(const std::string &m) noexcept {
-      m_msg=std::string("Communication Error: "+m);
-    }
-    const char * CommunicationError::what() const noexcept {
-      return m_msg.c_str();
-    }
-    CommunicationError::CommunicationError(const CommunicationError &rhs) noexcept {m_msg=rhs.m_msg;}
-    CommunicationError& CommunicationError::operator=(const CommunicationError &rhs) noexcept{m_msg=rhs.m_msg;return *this;}
-    CommunicationError::~CommunicationError() noexcept {}
-
-  }//namespace DSErrors
-  //common errors
-  BadConfig::BadConfig() noexcept :m_msg("Bad Configuration") {}
-  BadConfig::BadConfig(const std::string &m) noexcept {
-    m_msg=std::string("Bad Configuration  "+m);
-  }
-  const char * BadConfig::what() const noexcept {
-    return m_msg.c_str();
-  }
-  BadConfig::BadConfig(const BadConfig &rhs) noexcept {m_msg=rhs.m_msg;}
-  BadConfig& BadConfig::operator=(const BadConfig &rhs) noexcept{m_msg=rhs.m_msg;return *this;}
-  BadConfig::~BadConfig() noexcept {}
-
-  NonexistentLib::NonexistentLib() noexcept : m_msg("Nonexistent library!") {}
-  NonexistentLib::NonexistentLib(const std::string &m) noexcept {
-    m_msg=std::string("Non-Existent Library  "+m);
-  }
-  const char * NonexistentLib::what() const noexcept {
-    return m_msg.c_str();
-  }
-  NonexistentLib::NonexistentLib(const NonexistentLib &rhs) noexcept {m_msg=rhs.m_msg;}
-  NonexistentLib& NonexistentLib::operator=(const NonexistentLib &rhs) noexcept{m_msg=rhs.m_msg;return *this;}
-
-  NonexistentLib::~NonexistentLib() noexcept {}
-  UnexpectedException::UnexpectedException() noexcept:m_msg("Unexpected Exception") {}
-  UnexpectedException::UnexpectedException(const std::string &m) noexcept {
-    m_msg=std::string("Unexpected Exception "+m);
-  }
-  const char * UnexpectedException::what() const noexcept {
-    return m_msg.c_str();
-  }
-  UnexpectedException::UnexpectedException(const UnexpectedException &rhs) noexcept {m_msg=rhs.m_msg;}
-  UnexpectedException& UnexpectedException::operator=(const UnexpectedException &rhs) noexcept{m_msg=rhs.m_msg;return *this;}
-  UnexpectedException::~UnexpectedException() noexcept {}
-}
diff --git a/Trigger/ALP/src/FileDataSource.cxx b/Trigger/ALP/src/FileDataSource.cxx
deleted file mode 100644
index b47cca480a4e4190ba3637e0dc759f0a91814438..0000000000000000000000000000000000000000
--- a/Trigger/ALP/src/FileDataSource.cxx
+++ /dev/null
@@ -1,485 +0,0 @@
-/*
-
-Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-Author: Sami Kama 2017
-*/
-
-#include "ALP/FileDataSource.h"
-#include <algorithm>
-#include <unordered_set>
-#include "ers/ers.h"
-//#include "eformat/FullEventFragment.h"
-#include "eformat/eformat.h"
-#include "eformat/write/eformat.h"
-#include "eformat/index.h"
-#include "eformat/SourceIdentifier.h"
-#include "eformat/FullEventFragmentNoTemplates.h"
-#include "EventStorage/DataReader.h"
-#include "EventStorage/pickDataReader.h"
-#include "EventStorage/DataWriter.h"
-#include "ALP/DataSourceExceptions.h"
-
-const std::unordered_set<uint32_t> L1R_ROBS =
-{
-  0x7300a8, 0x7300a9, 0x7300aa, 0x7300ab, // TDAQ_CALO_CLUSTER_PROC_ROI ROBs
-  0x7500ac, 0x7500ad,                     // TDAQ_CALO_JET_PROC_ROI ROBs
-  0x760001,                               // TDAQ_MUON_CTP_INTERFACE ROB
-  0x770001,                               // TDAQ_CTP ROB
-  0x910081, 0x910082,  0x910091, 0x910092  // TDAQ_CALO_TOPO_PROC ROBs
-};
-
-ALPNS::FileDataSource::~FileDataSource(){
-  delete m_currReader;
-  delete m_currEvent;
-  delete m_IDmap;
-  delete[] m_blob;
-  delete m_l1r;
-  delete m_collectedRobs;
-}
-
-ALPNS::FileDataSource::FileDataSource(){
-  m_stride=0;
-  m_currEventInFile=0;
-  m_currFile=-1;
-  m_start=1;
-  m_currReader=0;
-  m_currEvent=0;
-  m_loopFiles=false;
-  m_blob=0;
-  m_fileNames=new std::vector<std::string>();
-  m_IDmap=new std::unordered_map<uint32_t, const uint32_t*>(); ///< The ID <-> ROB map
-  m_l1r=new std::vector<eformat::ROBFragment<const uint32_t*> >(); ///< The LVL1 result
-  m_collectedRobs=new std::set<uint32_t>();
-  m_comp=eformat::UNCOMPRESSED;
-  m_compLevel=2;
-  DataCollector::instance(this);
-}
-
-bool ALPNS::FileDataSource::configure(const boost::property_tree::ptree &pt){
-  const boost::property_tree::ptree& args=pt.get_child("Configuration.ALPApplication.DataSource.HLTFileDataSource");
-  ERS_LOG("Configuring FileDataSource");
-  m_start=args.get("start_id",1);
-  m_stride=args.get("stride",1);
-  m_currFile=args.get("fileOffset",-1);
-  m_loopFiles=(args.get("loopOverFiles","false")!="false");
-  m_nMaxEvents=args.get("numEvents",-1);
-  try{
-    auto of=args.get_child("outputFileName");
-    m_outFileName=std::string(of.data());
-    ERS_LOG("Output file name "<<m_outFileName);
-  }catch(boost::property_tree::ptree_bad_path &ex){
-    ERS_DEBUG(1,"Output file name is not specified");
-    ERS_LOG("Failed to get outputFileName");
-  }
-  try{
-    auto of=args.get_child("compressionFormat");
-    std::string ctype(of.data());
-    if(ctype=="ZLIB")m_comp=eformat::ZLIB;
-    m_compLevel=args.get("compressionLevel",2);
-  }catch(boost::property_tree::ptree_bad_path &ex){
-    ERS_DEBUG(1,"Compression is not specified");
-    ERS_LOG("Failed to get Compression information");
-  }
-
-  m_runParams=std::make_unique<EventStorage::run_parameters_record>();
-  m_runParams->run_number = 1234123412;
-  m_runParams->max_events = 0;
-  m_runParams->rec_enable = 0;
-  m_runParams->trigger_type = 0;
-  m_runParams->detector_mask_LS = 0;
-  m_runParams->detector_mask_MS = 0;
-  m_runParams->beam_type = 0;
-  m_runParams->beam_energy = 0;
-
-  std::pair<boost::property_tree::ptree::const_assoc_iterator, 
-    boost::property_tree::ptree::const_assoc_iterator> r(args.get_child("fileList").equal_range("file"));
-  for (boost::property_tree::ptree::const_assoc_iterator it(r.first); it != r.second; ++it) {
-    m_fileNames->push_back(it->second.get_value<std::string>());
-    ERS_LOG(" Adding file "+it->second.get_value<std::string>());
-  }
-  if(m_fileNames->size()==0){
-    ERS_LOG("No input files specified");
-    return false;
-  }
-  //open the first file
-  return true;
-}
-
-bool ALPNS::FileDataSource::prepareForRun(const boost::property_tree::ptree& /*args*/){
-  return true;
-}
-
-uint32_t ALPNS::FileDataSource::collect(
-     std::vector<hltinterface::DCM_ROBInfo>& data,
-     const uint32_t lvl1_id, const std::vector<uint32_t>& ids){
-  data.reserve(ids.size());
-  for (std::vector<uint32_t>::const_iterator 
-	 it = ids.begin(); it != ids.end(); ++it) {
-    auto comp = m_IDmap->find(*it);
-    if (comp == m_IDmap->end()) {
-      char buff[400];
-      snprintf(buff,400,"Event with LVL1 id=%u does NOT contain ROB 0x%08x",lvl1_id,*it);
-      // boost::format msg("Event with LVL1 id=%lu does NOT contain ROB 0x%08x");
-      // msg % lvl1_id % *it;
-      ERS_DEBUG(1, buff);
-      continue;
-    }
-    //this will create a copy of the ROBFragment, but so what?
-    eformat::ROBFragment<const uint32_t*> cf(comp->second);
-    data.emplace_back(cf,true,std::chrono::steady_clock::now(),
-					     std::chrono::steady_clock::now());
-    m_collectedRobs->insert(*it);
-  }
-  ERS_DEBUG(1, "Request with LVL1 id. " << lvl1_id 
-	    << " had requests for " << ids.size()
-	    << " ROBs and got " << data.size() << " fragments.");
-  return data.size();
-}
-
-uint32_t ALPNS::FileDataSource::collect(
-					std::vector<hltinterface::DCM_ROBInfo>& data,
-					uint32_t lvl1_id){
-  ERS_DEBUG(1,"Called collect with "<<lvl1_id);  
-  auto id=m_IDmap->begin(),idend=m_IDmap->end();
-  for(;id!=idend;++id){
-    if(m_collectedRobs->find(id->first)!=m_collectedRobs->end()){
-      eformat::ROBFragment<const uint32_t*> cf(id->second);
-      data.push_back(hltinterface::DCM_ROBInfo(cf,true,std::chrono::steady_clock::now(),std::chrono::steady_clock::now()));
-      m_collectedRobs->insert(id->first);
-    }
-  }
-  ERS_DEBUG(1,"returning "<<data.size()<<" fragments");
-  return data.size();
-}
-
-bool ALPNS::FileDataSource::skipEvents(uint num){
-  for(uint i=0;i<num;i++){
-    uint32_t *evt=getNextEvent();
-    delete evt;
-  }
-  return true;
-}
-
-uint32_t* ALPNS::FileDataSource::getNextEvent(){
-  char *buff;
-  unsigned int size=0;
-  int error_code=m_currReader->getData(size,&buff);
-  while (error_code == DRWAIT) {
-    usleep(500000);
-    ERS_INFO("[FileDataSource] Waiting for more data.");
-    error_code = m_currReader->getData(size, &buff);
-  }
-  if (error_code == DRNOOK) {
-    ERS_INFO("[FileDataSource] Reading of data NOT OK!");
-    delete buff;
-    return 0;
-  }
-  if (error_code == DROK) {
-    ERS_DEBUG(1, "[FileDataSource] Event OK");
-  }
-  uint32_t *blob=reinterpret_cast<uint32_t*>(buff);
-  ERS_LOG("READ a new event");
-  return blob;
-}
-
-void ALPNS::FileDataSource::getL1Result(std::vector<eformat::ROBFragment<const uint32_t*> > &l1r,
-					uint32_t &lvl1_id,
-					uint64_t &gid, 
-					uint64_t &lumiBlock){
-
-  delete[] m_blob;
-  delete m_currEvent;
-  m_currEvent=0;
-  m_blob=0;
-  m_collectedRobs->clear();
-  m_IDmap->clear();
-  m_l1r->resize(0);//keep the buffer;
-  if((m_nMaxEvents>0) && (m_nEvents>=m_nEventsToRead)){
-    throw ALPNS::DSErrors::NoMoreEvents("Event count reached");
-    return;
-  }
-  uint eventsInFile=m_currReader->eventsInFile();
-  //read gid and lumiblock from file and fill it in here
-  gid=0;
-  lumiBlock=0;
-
-  if(m_currEventInFile+m_stride<eventsInFile){
-    unsigned int target=m_currEventInFile+m_stride-1;
-    while(m_currEventInFile<target){//skip events
-      m_blob=getNextEvent();
-      m_currEventInFile++;
-      delete[] m_blob;
-    }
-    m_blob=getNextEvent();
-    m_currEventInFile++;
-  }else{
-    int newoffset=m_currEventInFile+m_stride-eventsInFile;
-    if(nextFile()){
-      eventsInFile=m_currReader->eventsInFile();
-      if(eventsInFile>(uint)newoffset){
-	if(newoffset>0){
-	  skipEvents(newoffset-1);
-	}
-	m_blob=getNextEvent();
-	m_currEventInFile=newoffset;
-      }else{
-	lvl1_id=0;
-	throw ALPNS::DSErrors::NoMoreEvents("File don't contain enough events");
-	//throwexception
-	return;
-      }
-    }else{
-      lvl1_id=0;
-      //throw exception
-      throw ALPNS::DSErrors::NoMoreEvents("Can't open next file");
-      return;
-    }
-  }
-  if(!m_blob){
-      throw ALPNS::DSErrors::NoMoreEvents("Can't read anymore events!");
-  }
-  m_nEvents++;
-  m_currEvent=new eformat::read::FullEventFragment(m_blob);
-  // Build a subdetector based table-of-contents of this event
-  lvl1_id=m_currEvent->lvl1_id();
-  gid=m_currEvent->global_id();
-  lumiBlock=m_currEvent->lumi_block();
-  ERS_LOG("READ EVENT l1="<<lvl1_id<<" gid= "<<gid<<" LB= "<<lumiBlock<<" count= "<<m_nEvents<<"/"<<m_nEventsToRead);
-  //  std::map<eformat::SubDetector, std::vector<const uint32_t*> > sd_toc;
-  std::map<uint32_t, const uint32_t* > sd_toc;
-  eformat::helper::build_toc(*m_currEvent, sd_toc);
-
-  for(auto it = sd_toc.begin(); it != sd_toc.end(); ++it) {
-    auto sourceId=eformat::helper::SourceIdentifier(it->first);
-    auto subId=sourceId.subdetector_id();
-    switch (subId) {
-      case eformat::TDAQ_BEAM_CRATE:
-      case eformat::TDAQ_SFI:
-      case eformat::TDAQ_SFO:
-      case eformat::TDAQ_LVL2:
-      case eformat::TDAQ_HLT:
-      case eformat::OTHER:
-        //we ignore these
-        break;
-      default:
-	auto robId=sourceId.simple_code();
-	// char bb[100];
-	// snprintf(bb,100,"0x%x",robId);
-	// ERS_LOG("Running for ROBId "<<bb);
-	if((subId==eformat::TDAQ_CALO_FEAT_EXTRACT_ROI)||
-	   (L1R_ROBS.find(robId)!=L1R_ROBS.end())
-	  ){
-	  // ERS_LOG("Found RobID "<<robId);
-	  m_l1r->emplace_back(it->second);
-	  l1r.emplace_back(it->second);
-	}else{
-        //these, we include in our internal data map for fast access
-	  eformat::ROBFragment<const uint32_t*> rob(it->second);
-	  auto mit =  m_IDmap->find(rob.source_id());
-	  //if I already have an entry there...
-	  if (mit != m_IDmap->end()) {
-	    ERS_DEBUG(1,"Duplicate ROBS in file. Ignoring");
-	  }else{
-	    m_IDmap->operator[](rob.source_id()) = it->second;
-	    
-	  }
-	}
-	break;
-    }
-  }
-  ERS_DEBUG(1,"returning l1id="<<lvl1_id);
-}
-  
-void ALPNS::FileDataSource::reserveROBData(const uint32_t /*lvl1_id*/, 
-					   const std::vector<uint32_t>& /*ids*/){
-  ERS_LOG("Called reserveROBData ");
-}
-
-
-void ALPNS::FileDataSource::sendResult(const bool accept,
-					const uint32_t l1id, 
-					const hltinterface::HLTResult& res){
-  ERS_LOG("Got result for l1id="<<l1id<< (accept?" ACCEPT ":" REJECT "));
-  if(!m_writer)return;
-  if(accept){
-    if (res.stream_tag.size()==0){
-      ERS_LOG("Event is accepted but stream tags are empty!");
-      return;
-    }
-    try{
-      eformat::ROBFragment<const uint32_t*>(res.fragment_pointer).check(); 
-    }catch(ers::Issue& iss){
-      ERS_LOG("Invalid HLT result fragment"<<iss.what());
-      return;
-    }
-    eformat::write::FullEventFragment newEvent;
-    newEvent.copy_header(m_currEvent->start());
-    //set compression type
-    newEvent.compression_type(m_comp);
-    newEvent.compression_level(m_compLevel);
-    newEvent.lvl2_trigger_info(0,nullptr);
-    // check if there are L1 simulation bits
-    if(res.l1Simul_robs.size()){
-      newEvent.lvl1_trigger_info(res.l1Triggers.size(),&(res.l1Triggers[0]));
-    }
-    // set hlt result bits
-    if(res.trigger_info.size()){
-      newEvent.hlt_info(res.trigger_info.size(),&(res.trigger_info[0]));
-    }
-    //check stream tags
-    //this needs to be changed for multi-stream output.
-    uint32_t* streamtag=nullptr;
-    if(res.stream_tag.size()){
-      auto size=eformat::helper::size_word(res.stream_tag);
-      streamtag=new uint32_t[size];
-      eformat::helper::encode(res.stream_tag,size,streamtag);
-      newEvent.stream_tag(size,streamtag);
-    }
-    std::vector<eformat::read::ROBFragment> currRobs;
-    m_currEvent->robs(currRobs);
-    
-    std::set<uint32_t> robset;
-    std::set<eformat::SubDetector> detset;
-    for(const auto &t:res.stream_tag){
-      if(t.robs.empty()&& t.dets.empty()){
-	robset.clear();
-	detset.clear();
-	break;
-      }else{
-	std::copy(std::begin(t.robs), std::end(t.robs), 
-		  std::inserter(robset,std::begin(robset)));
-	std::copy(std::begin(t.dets), std::end(t.dets), 
-		  std::inserter(detset,std::begin(detset)));
-      }
-    }
-    std::vector<const uint32_t*> newRobs;
-    newRobs.reserve(currRobs.size()+res.hltResult_robs.size()+res.l1Simul_robs.size());
-    //copy old robs
-    std::set<uint32_t> l1Overrides;
-    for(const auto & r : res.l1Simul_robs){
-      l1Overrides.insert(r.source_id());
-    }
-    for(const auto& r:currRobs){
-      auto sId=r.source_id();
-      auto subId=eformat::helper::SourceIdentifier{sId}.subdetector_id();
-      if((subId!=eformat::TDAQ_HLT)&&(subId!=eformat::TDAQ_LVL2)){//filter HLT and L2 results
-	if(robset.empty()&&detset.empty()){
-	  if(l1Overrides.find(sId)==l1Overrides.end()){//don't copy l1 results if simulated exists
-	    newRobs.push_back(r.start());
-	  }
-	}else{
-	  if(robset.find(sId)!=robset.end()||
-	     detset.find(subId)!=detset.end()){
-	    if(l1Overrides.find(sId)==l1Overrides.end()){
-	      newRobs.push_back(r.start());
-	    }
-	  }
-	}
-      }
-    }
-    //append l1 results to the new robs. This would work iff
-    // L1 results are unique
-    for(const auto& r:res.l1Simul_robs){
-      newRobs.push_back(r.start());
-    }
-
-    //copy new robs
-    for(const auto& r:res.hltResult_robs){
-      auto sId=r.source_id();
-      auto subId=eformat::helper::SourceIdentifier{sId}.subdetector_id();
-      if(robset.empty()&&detset.empty()){
-	newRobs.push_back(r.start());
-      }else{
-	if(robset.find(sId)!=robset.end()||
-	   detset.find(subId)!=detset.end()){
-	  newRobs.push_back(r.start());
-	}
-      } 
-    }
-    //do I need to do that?
-    std::vector<eformat::write::ROBFragment> robs2write;
-    robs2write.reserve(newRobs.size());
-    for(size_t t=0;t<newRobs.size();t++){
-      robs2write.emplace_back(newRobs[t]);
-      newEvent.append(&(robs2write.back()));
-    }
-    //compression happens here
-    const eformat::write::node_t* top=newEvent.bind();
-    auto finalSize=newEvent.size_word();
-    uint32_t* finalEvent=new uint32_t[finalSize];
-    auto res=eformat::write::copy(*top,finalEvent,finalSize);
-    if(res!=finalSize){
-      ERS_LOG("ERROR Event serialization failed. l1id= "<<l1id);
-      delete[] finalEvent;
-      delete[] streamtag;
-      return;
-    }
-    auto wres=m_writer->putData(finalSize,finalEvent);
-    if(wres){
-      ERS_LOG("Writing event failed");
-    }
-    delete[] finalEvent;
-    delete[] streamtag;
-    
-  }
-}
-
-bool ALPNS::FileDataSource::finalize(const boost::property_tree::ptree& /*args*/){
-  return true;
-}
-
-bool ALPNS::FileDataSource::nextFile(){
-  if(m_currFile<(int)m_fileNames->size()){
-    if(m_currReader){
-      delete m_currReader;
-      m_currReader=0;
-    }
-    m_currFile++;
-    ERS_LOG("Openning file "<<m_fileNames->at(m_currFile));
-    m_currReader=pickDataReader(m_fileNames->at(m_currFile));
-    if(!m_currReader){
-      ERS_LOG("Failed to open file \""<<m_fileNames->at(m_currFile)<<"\" good() call= "<<m_currReader->good()); 
-      if(m_loopFiles&&m_currFile>=(int)(m_fileNames->size()))m_currFile=-1;
-      return false;
-    }
-    ERS_DEBUG(1,"Opened file \""<<m_fileNames->at(m_currFile)<<"\" good() call= "<<m_currReader->good()); 
-    if(m_loopFiles&&m_currFile>=((int)(m_fileNames->size())))m_currFile=-1;
-    return true;
-  }
-  ERS_DEBUG(1,"m_currFile="<<m_currFile<<", m_fileNames->size()="<<m_fileNames->size());
-  return false;
-}
-
-bool ALPNS::FileDataSource::prepareWorker(const boost::property_tree::ptree& args){
-  nextFile();
-  m_start=args.get("start_id",1);
-  m_stride=args.get("stride",1);
-  //return true;
-  if(m_start>1){
-    skipEvents(m_start-1);
-  }
-  m_nEventsToRead=m_nMaxEvents/m_stride;
-  if((m_nMaxEvents%m_stride)>=(m_start)){
-    m_nEventsToRead++;
-  }
-  m_nEvents=0;
-  if(!m_outFileName.empty()){
-    char buff[2000];
-    snprintf(buff,2000,"%s_Child-%03d",m_outFileName.c_str(),m_start);
-    ERS_LOG("Opening outputfile "<<buff);
-    m_writer=std::make_unique<EventStorage::DataWriter>(std::string("."),//use work Directory right now
-							std::string(buff),
-							*m_runParams,
-							std::vector<std::string>(),
-							1);
-    m_writer->setMaxFileMB(2000);
-  }
-  ERS_LOG("Prepare Worker done m_start="<<m_start<<" stride="<<m_stride);
-
-  return true;
-}
-
-bool ALPNS::FileDataSource::finalizeWorker(const boost::property_tree::ptree& /*args*/){
-  return true;
-}
diff --git a/Trigger/ALP/src/PluginLoader.cxx b/Trigger/ALP/src/PluginLoader.cxx
deleted file mode 100644
index 5aeffeca1d3997d790e3664594beb8e36c8a83a7..0000000000000000000000000000000000000000
--- a/Trigger/ALP/src/PluginLoader.cxx
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-
-Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-Author: Sami Kama 2017
-*/
-
-// Class to manage the library loading.
-//Author: Sami Kama
-
-#include "ALP/PluginLoader.h"
-
-std::unique_ptr<std::map<std::string,std::vector<std::string> > > ALPNS::PluginLoader::m_units;
-std::unique_ptr<std::map<std::string,std::shared_ptr<void > > > ALPNS::PluginLoader::m_libHandles;
-
-bool ALPNS::PluginLoader::addPlugin(const std::string &unitName,const std::vector<std::string> &libList){
-  if(!m_units){
-    m_units.reset(new std::map<std::string,std::vector<std::string> > ());
-  }
-  if(!m_libHandles){
-    m_libHandles.reset(new std::map<std::string,std::shared_ptr<void > >  );
-  }
-  auto res=m_units->insert(std::make_pair(unitName,libList));
-  if(res.second){
-    char* err(0);
-    for(const auto &l:libList){
-      dlerror();
-      if(m_libHandles->find(l)!=m_libHandles->end())continue;
-      void* handle=dlopen(l.c_str(),RTLD_LAZY|RTLD_GLOBAL);
-      if(!handle){
-	err=dlerror();
-	std::cerr<<"Plugin "<<unitName<<" opening library "
-		 <<l <<" failed with "<<err<<std::endl;
-      }else{
-	auto s=std::shared_ptr<void>(handle,ALPNS::LibUnloader(l));
-	m_libHandles->insert(std::make_pair(l,s));
-      }
-    }
-  }
-  return res.second;
-}
-
-std::shared_ptr<void> ALPNS::PluginLoader::getHandle(const std::string& libName){
-  if(!m_libHandles){
-    m_libHandles.reset(new std::map<std::string,std::shared_ptr<void > > ());
-  }
-  if(!m_units){
-    m_units.reset(new std::map<std::string,std::vector<std::string> > ());
-  }
-  auto it=m_libHandles->find(libName);
-  if(it!=m_libHandles->end()){
-    return it->second;
-  }
-  return std::shared_ptr<void>();
-}
-
-std::shared_ptr<ALPNS::Plugin> ALPNS::PluginLoader::get(const std::string& pluginName){
-  auto it =m_units->find(pluginName);
-  if (it!=m_units->end()){
-    return std::make_shared<ALPNS::Plugin>(it->second);
-  }
-  return std::shared_ptr<ALPNS::Plugin>(0);
-}
-
diff --git a/Trigger/ALP/src/alpfactory.cxx b/Trigger/ALP/src/alpfactory.cxx
deleted file mode 100644
index f43d9939772e970192b05274e277e671e63de553..0000000000000000000000000000000000000000
--- a/Trigger/ALP/src/alpfactory.cxx
+++ /dev/null
@@ -1,17 +0,0 @@
-// Dear emacs, this is -*- c++ -*-
-/*
-
-Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-Author: Sami Kama 2017
-*/
-#include "ALP/ALP.h"
-
-extern "C" hltinterface::HLTInterface* create_interface(){
-  return new ALP();
-}
-
-extern "C" void destroy_interface(hltinterface::HLTInterface* i){
-  auto h=dynamic_cast<ALP*>(i);
-  delete h;
-}
diff --git a/Trigger/ALP/src/fileds_factory.cxx b/Trigger/ALP/src/fileds_factory.cxx
deleted file mode 100644
index 1a116ce0fe6125c100e88e76a51cd9214869d57b..0000000000000000000000000000000000000000
--- a/Trigger/ALP/src/fileds_factory.cxx
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
-
-Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-Author: Sami Kama 2017
-*/
-#include "ALP/FileDataSource.h"
-
-extern "C" hltinterface::DataSource* create_hltmp_datasource(){
-  return new ALPNS::FileDataSource();
-}
-
-extern "C" void destroy_hltmp_datasource(hltinterface::DataSource* i){
-  ALPNS::FileDataSource* k=reinterpret_cast<ALPNS::FileDataSource*>(i);
-  delete k;
-}
diff --git a/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigCaloClusterMaker.cxx b/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigCaloClusterMaker.cxx
index 72775eb2c48c5248d8f2eb1740f0cdec0f2853f0..01a172ae87ea6ec485f0fd14901345fdf8ae8187 100755
--- a/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigCaloClusterMaker.cxx
+++ b/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigCaloClusterMaker.cxx
@@ -242,10 +242,13 @@ HLT::ErrorCode TrigCaloClusterMaker::hltExecute(const HLT::TriggerElement* input
     persKey     = (m_pTrigCaloQuality->getPersistencyFlag() ? name() : "TrigCaloClusterMaker");
     persKeyLink = persKey + "_Link";
   }
+#ifndef NDEBUG
+  if ( msgLvl() <= MSG::DEBUG ) {
   msg() << MSG::DEBUG << "CaloClusterContainer is stored with key  = " << persKey << endmsg;
   msg() << MSG::DEBUG << "CaloCellLinkContainer is stored with key = " << persKeyLink << endmsg;
+  }
+#endif
 
-  //  msg() << MSG::DEBUG << store()->dump() << endmsg;
   sc = getUniqueKey( m_pCaloClusterContainer, clusterCollKey, persKey );
   if (sc != HLT::OK) {
     msg() << MSG::DEBUG << "Could not retrieve the cluster collection key" << endmsg;
@@ -258,7 +261,6 @@ HLT::ErrorCode TrigCaloClusterMaker::hltExecute(const HLT::TriggerElement* input
     return HLT::TOOL_FAILURE;
   }
 
-  //xAOD::CaloClusterAuxContainer aux;
   xAOD::CaloClusterTrigAuxContainer aux;
   m_pCaloClusterContainer->setStore (&aux);
   
@@ -298,9 +300,14 @@ HLT::ErrorCode TrigCaloClusterMaker::hltExecute(const HLT::TriggerElement* input
     if ( (clproc->name()).find("trigslw") != std::string::npos ) isSW=true;
     if ( clproc->execute(m_pCaloClusterContainer).isFailure() ) {
       msg() << MSG::ERROR << "Error executing tool " << m_clusterMakerNames[index] << endmsg;
-    } else {
-      msg() << MSG::DEBUG << "Executed tool " << m_clusterMakerNames[index] << endmsg;
+    } 
+#ifndef NDEBUG
+    else {
+      if ( msgLvl() <= MSG::DEBUG ) {
+         msg() << MSG::DEBUG << "Executed tool " << m_clusterMakerNames[index] << endmsg;
+      }
     }
+#endif
     if (timerSvc()) m_timer[3+index]->stop();
 
     ++index;
@@ -351,9 +358,14 @@ HLT::ErrorCode TrigCaloClusterMaker::hltExecute(const HLT::TriggerElement* input
       if ( (*itrcct)->execute(cl).isFailure() ) {
         msg() << MSG::ERROR << "Error executing correction tool " <<  m_clusterCorrectionNames[index] << endmsg;
         return HLT::TOOL_FAILURE;
-      } else {
-	msg() << MSG::DEBUG << "Executed correction tool " << m_clusterCorrectionNames[index] << endmsg;
+      } 
+#ifndef NDEBUG
+      else {
+        if ( msgLvl() <= MSG::DEBUG ) {
+	  msg() << MSG::DEBUG << "Executed correction tool " << m_clusterCorrectionNames[index] << endmsg;
+        }
       }
+#endif
       } // Check conditions
     }
     if (timerSvc()) m_timer[3+index+m_clusterMakerPointers.size()]->stop();
@@ -409,8 +421,10 @@ HLT::ErrorCode TrigCaloClusterMaker::hltExecute(const HLT::TriggerElement* input
 #endif
   
   // record and lock the Clusters Container with the new EDM helper... 
-  if ( !CaloClusterStoreHelper::finalizeClusters( store(), m_pCaloClusterContainer,
-                                                  clusterCollKey, msg() ).isSuccess() ) {
+  bool status = CaloClusterStoreHelper::finalizeClusters( store(), m_pCaloClusterContainer,
+                                                        clusterCollKey, msg()).isSuccess();
+  
+  if ( !status ) {  
     msg() << MSG::ERROR << "recording CaloClusterContainer with key <" << clusterCollKey << "> failed" << endmsg;
     return HLT::TOOL_FAILURE;
   } else {
@@ -420,8 +434,9 @@ HLT::ErrorCode TrigCaloClusterMaker::hltExecute(const HLT::TriggerElement* input
   
   // Build the "uses" relation for the outputTE to the cell container
   std::string aliasKey = "";
+  status = (reAttachFeature(outputTE, m_pCaloClusterContainer, aliasKey, persKey )!=HLT::OK);
 
-  if (reAttachFeature(outputTE, m_pCaloClusterContainer, aliasKey, persKey ) != HLT::OK) {
+  if (status) {
     msg() << MSG::ERROR
 	  << "Write of RoI Cluster Container into outputTE failed"
 	  << endmsg;
@@ -436,7 +451,8 @@ HLT::ErrorCode TrigCaloClusterMaker::hltExecute(const HLT::TriggerElement* input
     msg() << MSG::WARNING << "cannot get CaloClusterCellLinkContainer (not return FAILURE) " << endmsg;
   }
   else {
-    if (reAttachFeature(outputTE, pCaloCellLinkContainer, aliasKey, persKeyLink ) != HLT::OK) {
+    status = (reAttachFeature(outputTE, pCaloCellLinkContainer, aliasKey, persKeyLink ) != HLT::OK); 
+    if (status) {
       msg() << MSG::ERROR
 	    << "Write of RoI CellLink Container into outputTE failed"
 	    << endmsg;
diff --git a/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigL1FCALTTSumFex.cxx b/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigL1FCALTTSumFex.cxx
index 940c632e720ea0ca303debdda6809321b368af5a..f1a11a8494920b75d688dcfc9ad625cef32bca1f 100644
--- a/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigL1FCALTTSumFex.cxx
+++ b/Trigger/TrigAlgorithms/TrigCaloRec/src/TrigL1FCALTTSumFex.cxx
@@ -64,7 +64,7 @@ HLT::ErrorCode TrigL1FCALTTSumFex::hltExecute(
        const xAOD::TriggerTower* tt = container->at(i);
        double etaTower = tt->eta();
        count_all++;
-       if ( std::abs(etaTower) < 3.1 ) continue;
+       if ( fabsf(etaTower) < 3.1 ) continue;
        count_fcal++;
        if ( etaTower > 0 ) {
 	if ( etaTower < eta_min_pos ) eta_min_pos = etaTower;
diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/CMakeLists.txt b/Trigger/TrigAlgorithms/TrigFastTrackFinder/CMakeLists.txt
index 43e6f51cf3f07361b299dce10e9cb542b6c3700f..838690142958403262c5ac073ba545fa98b98718 100644
--- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/CMakeLists.txt
+++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/CMakeLists.txt
@@ -13,13 +13,14 @@ atlas_depends_on_subdirs( PUBLIC
                           Trigger/TrigEvent/TrigSteeringEvent
                           Trigger/TrigSteer/TrigInterfaces
                           Trigger/TrigTools/TrigInDetPattRecoTools
+
                           PRIVATE
                           Control/AthenaBaseComps
                           Control/StoreGate
                           DetectorDescription/IRegionSelector
-                          InnerDetector/InDetConditions/InDetBeamSpotService
                           InnerDetector/InDetDetDescr/InDetIdentifier
                           InnerDetector/InDetRecEvent/InDetPrepRawData
+                          InnerDetector/InDetConditions/BeamSpotConditionsData
                           InnerDetector/InDetRecEvent/InDetRIO_OnTrack
                           InnerDetector/InDetRecEvent/SiSpacePointsSeed
                           InnerDetector/InDetRecTools/InDetRecToolInterfaces
diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx b/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx
index 9072c392ffa61c63c4e93f3393b21204fef326c4..d78aca08cd0674a17b28aded3a5557d926529563 100644
--- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx
+++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx
@@ -48,8 +48,6 @@
 
 #include "TrigInDetEvent/TrigSiSpacePointBase.h"
 
-#include "InDetBeamSpotService/IBeamCondSvc.h"
-
 #include "InDetIdentifier/SCT_ID.h"
 #include "InDetIdentifier/PixelID.h" 
 
@@ -93,7 +91,6 @@ TrigFastTrackFinder::TrigFastTrackFinder(const std::string& name, ISvcLocator* p
   m_ftkRefit(false),
   m_useBeamSpot(true),
   m_nfreeCut(5), 
-  m_iBeamCondSvc(nullptr),
   m_nTracks(0),
   m_nPixSPsInRoI(0),
   m_nSCTSPsInRoI(0),
@@ -255,7 +252,6 @@ TrigFastTrackFinder::TrigFastTrackFinder(const std::string& name, ISvcLocator* p
   declareMonitoredStdContainer("hit_PIXEndCapL3PhiResidual",m_pixResPhiECL3);
   declareMonitoredStdContainer("hit_PIXEndCapL3EtaResidual",m_pixResEtaECL3);
 
-  
 }
 
 //--------------------------------------------------------------------------
@@ -305,10 +301,10 @@ HLT::ErrorCode TrigFastTrackFinder::hltInitialize() {
     ATH_MSG_DEBUG(" TrigFastTrackFinder : MinHits set to " << m_minHits);
     
     if (m_useBeamSpot) {
-      StatusCode scBS = service("BeamCondSvc", m_iBeamCondSvc);
-      if (scBS.isFailure() || m_iBeamCondSvc == 0) {
-	m_iBeamCondSvc = 0;
-	ATH_MSG_WARNING("Could not retrieve Beam Conditions Service. ");
+      auto sc = m_beamSpotKey.initialize();
+      if(sc.isFailure()) {
+         ATH_MSG_ERROR("Error initializing beamspot info");
+         return HLT::BAD_JOB_SETUP;
       }
     }
     
@@ -499,7 +495,7 @@ StatusCode TrigFastTrackFinder::findTracks(const TrigRoiDescriptor& roi,
 
   m_shift_x=0.0;
   m_shift_y=0.0;
-  if(m_useBeamSpot && m_iBeamCondSvc) {
+  if(m_useBeamSpot) {
     getBeamSpot();
 
   }
@@ -1058,13 +1054,14 @@ void TrigFastTrackFinder::assignTripletBarCodes(const std::vector<TrigInDetTripl
 }
 
 void TrigFastTrackFinder::getBeamSpot() {
-  m_vertex = m_iBeamCondSvc->beamPos();
+  SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
+  m_vertex = beamSpotHandle->beamPos();
   ATH_MSG_VERBOSE("Beam spot position " << m_vertex);
   double xVTX = m_vertex.x();
   double yVTX = m_vertex.y();
   double zVTX = m_vertex.z();
-  double tiltXZ = m_iBeamCondSvc->beamTilt(0);
-  double tiltYZ = m_iBeamCondSvc->beamTilt(1);
+  double tiltXZ = beamSpotHandle->beamTilt(0);
+  double tiltYZ = beamSpotHandle->beamTilt(1);
   m_shift_x = xVTX - tiltXZ*zVTX;//correction for tilt
   m_shift_y = yVTX - tiltYZ*zVTX;//correction for tilt
   ATH_MSG_VERBOSE("Beam center position:  " << m_shift_x <<"  "<< m_shift_y);
diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.h b/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.h
index bb8d03fbb04419562e07df9f6d7258c4f080ae4f..75e0611b5bdac408d18473cc33db26c8adcab875 100644
--- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.h
+++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.h
@@ -24,7 +24,7 @@
 
 #include "GaudiKernel/ToolHandle.h"
 #include "TrigInterfaces/FexAlgo.h"
-
+#include "BeamSpotConditionsData/BeamSpotData.h"
 
 #include "TrkEventPrimitives/ParticleHypothesis.h"
 
@@ -56,8 +56,6 @@ class IFTK_DataProviderSvc;
 class TrigL2LayerSetLUT;
 class TrigSpacePointStorage;
 class TrigInDetTriplet;
-class IBeamCondSvc;
-//class EventID;
 class PixelID;
 class SCT_ID;
 class AtlasDetectorID;
@@ -154,8 +152,8 @@ protected:
  
   // Reconstructed tracks 
 
-  IBeamCondSvc* m_iBeamCondSvc;
-  
+  SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
+
   // Data members for monitoring
 
   int m_nTracks;
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MdtDataPreparator.h b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MdtDataPreparator.h
index 98964798fb3b59def3d556a9e2ae741759e4b966..c572d1402cd40c3e38fad0ba354b0cd66c8d532f 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MdtDataPreparator.h
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MdtDataPreparator.h
@@ -29,7 +29,8 @@
 #include "TrigL2MuonSA/RpcFitResult.h"
 #include "TrigL2MuonSA/TgcFitResult.h"
 
-#include "MuonMDT_Cabling/MuonMDT_CablingSvc.h"
+#include "MuonCablingData/MuonMDT_CablingMap.h"
+#include "StoreGate/ReadCondHandleKey.h"
 
 #include "MuonPrepRawData/MuonPrepDataContainer.h"
 
@@ -130,10 +131,7 @@ namespace TrigL2MuonSA {
     ToolHandle<Muon::IMuonRawDataProviderTool>  m_mdtRawDataProvider;
     //ToolHandle<Muon::IMuonRawDataProviderTool>  m_mdtRawDataProvider {
     // 	this, "MDT_RawDataProvider", "Muon::MDT_RawDataProviderTool", "MDTRawDataProviderTool"};
-    
-    // Cabling
-    ServiceHandle<MuonMDT_CablingSvc> m_mdtCabling;
-    
+        
     // Geometry Services
     const MuonGM::MuonDetectorManager* m_muonMgr;
     const MuonGM::MdtReadoutElement* m_mdtReadout;
@@ -171,6 +169,8 @@ namespace TrigL2MuonSA {
     int  m_BMGid;
     std::map<Identifier, std::vector<Identifier> > m_DeadChannels;
 
+    SG::ReadCondHandleKey<MuonMDT_CablingMap> m_readKey{this, "ReadKey", "MuonMDT_CablingMap", "Key of MuonMDT_CablingMap"};
+
   };
 
 } // namespace TrigL2MuonSA
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MdtDataPreparator.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MdtDataPreparator.cxx
index 36cae716dbf700138c29abd97dbad5a7f68599cf..fc2898a5a19c15944a9f5aa70e1d7ed1607dd8e4 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MdtDataPreparator.cxx
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MdtDataPreparator.cxx
@@ -58,7 +58,6 @@ TrigL2MuonSA::MdtDataPreparator::MdtDataPreparator(const std::string& type,
    m_storeGateSvc( "StoreGateSvc", name ),
    m_activeStore( "ActiveStoreSvc", name ), 
    m_mdtRawDataProvider("Muon::MDT_RawDataProviderTool"), 
-   m_mdtCabling("MuonMDT_CablingSvc", name), 
    m_regionSelector("RegSelSvc", name ), 
    m_robDataProvider("ROBDataProviderSvc", name), 
    m_recMuonRoIUtils(),
@@ -120,9 +119,7 @@ StatusCode TrigL2MuonSA::MdtDataPreparator::initialize()
    ATH_CHECK( m_mdtRegionDefiner.retrieve() );
    ATH_MSG_DEBUG("Retrieved service " << m_mdtRegionDefiner);
 
-   // initialize the NEW cabling service
-   ATH_CHECK( m_mdtCabling.retrieve());
-   ATH_MSG_DEBUG("Retrieved the new cabling service ");
+   ATH_CHECK( m_readKey.initialize() );
    
    // retrieve the mdtidhelper
    ServiceHandle<StoreGateSvc> detStore("DetectorStore", name());
@@ -290,12 +287,19 @@ StatusCode TrigL2MuonSA::MdtDataPreparator::getMdtHits(const LVL1::RecMuonRoI*
     ATH_MSG_DEBUG("size of the hashids in getMdtHits " << mdtHashList.size());
     
     if (roi) delete roi;
+
+    SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey};
+    const MuonMDT_CablingMap* readCdo{*readHandle};
+    if(readCdo==nullptr){
+      ATH_MSG_ERROR("Null pointer to the read conditions object");
+      return StatusCode::FAILURE;
+    }
     
     bool redundant;
     for(int hash_iter=0; hash_iter<(int)mdtHashList.size(); hash_iter++){
       redundant = false;
       
-      uint32_t newROBId = m_mdtCabling->getROBId(mdtHashList[hash_iter]);
+      uint32_t newROBId = readCdo->getROBId(mdtHashList[hash_iter]);
       
       for (int rob_iter=0; rob_iter<(int)v_robIds.size(); rob_iter++){
 	if(newROBId == v_robIds[rob_iter])
@@ -525,13 +529,14 @@ bool TrigL2MuonSA::MdtDataPreparator::decodeMdtCsm(const MdtCsm* csm,
    unsigned short int MrodId      = csm->MrodId();
    unsigned short int LinkId      = csm->CsmId();
 
-   MuonMDT_CablingMap* cablingMap = m_mdtCabling->getCablingMap();
-   if (!cablingMap) {
-     ATH_MSG_DEBUG("Null pointer to MuonMDT_CablingMap");
+   SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey};
+   const MuonMDT_CablingMap* readCdo{*readHandle};
+   if(readCdo==nullptr){
+     ATH_MSG_ERROR("Null pointer to the read conditions object");
      return true;
    }
 
-   MdtSubdetectorMap* subdetectorMap = cablingMap->getSubdetectorMap(SubsystemId);
+   MdtSubdetectorMap* subdetectorMap = readCdo->getSubdetectorMap(SubsystemId);
    if (!subdetectorMap) {
      ATH_MSG_DEBUG("Null pointer to MdtSubdetectorMap");
      return true;
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/TrigDataAccess.h b/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/TrigDataAccess.h
index 73cd40cfa24bd41516c410abbc61ffc09922e84b..f041077695018a63bad7f5f5045bd29f27158113 100755
--- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/TrigDataAccess.h
+++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/TrigDataAccess.h
@@ -407,6 +407,7 @@ private:
   TileL2Container* m_drawcoll;
   /** Either use one calo layer at a time, or do all of it */
   bool m_loadAllSamplings;
+  /** new Tile ROD schema (2017) */
   /** error reporting */
   uint32_t m_error;
   /** mbts cached */
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/phiutils.h b/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/phiutils.h
index 0b255cbd9342b36f6b1d6314f59cfe454c00297f..9ea68075ff38bce3244a7f195aabd2bb54dc0144 100644
--- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/phiutils.h
+++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/TrigT2CaloCommon/phiutils.h
@@ -1,10 +1,12 @@
 // emacs: this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 //
 //   @file    phiutils.h        
 //
 //                   
 //  
-//   Copyright (C) 2014 M.Sutton (sutt@cern.ch)    
 //
 //   $Id: phiutils.h, v0.0   Sun 30 Mar 2014 16:12:42 CEST sutt $
 
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigDataAccess.cxx b/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigDataAccess.cxx
index 9064f093cdfab6ee19b8694d4abca4500794ca61..eef84f213de86dc22fa6171e414f9e29b0af6b35 100755
--- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigDataAccess.cxx
+++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/src/TrigDataAccess.cxx
@@ -216,7 +216,7 @@ StatusCode TrigDataAccess::beginRunHandle(IOVSVC_CALLBACK_ARGS){
           m_selfcalem = new LArTT_Selector<LArCellCont>(m_roiMap,m_larcell);
         }
 	m_tilecell = new TileCellCont();
-        m_tilecell->setHashIdToROD( m_tiledecoder->getHid2reHLT() );
+	m_tilecell->setHashIdToROD( m_tiledecoder->getHid2reHLT() );
         if ( (m_tilecell->initialize()).isFailure() ){
 	      ATH_MSG_FATAL("Could not init tilecell");
         }
diff --git a/Trigger/TrigAnalysis/TrigBunchCrossingTool/CMakeLists.txt b/Trigger/TrigAnalysis/TrigBunchCrossingTool/CMakeLists.txt
index 779452524cec38768c21e87bdaf26ca047a530d7..b222103933873c31229e67f82bae0c9f97639ec4 100644
--- a/Trigger/TrigAnalysis/TrigBunchCrossingTool/CMakeLists.txt
+++ b/Trigger/TrigAnalysis/TrigBunchCrossingTool/CMakeLists.txt
@@ -81,7 +81,8 @@ atlas_add_test( ut_web_bunch_tool_test
    Root/count_bunch_neighbors.cxx
    INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
    LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools xAODEventInfo xAODTrigger
-   TrigConfL1Data )
+   TrigConfL1Data
+   PROPERTIES TIMEOUT 300 )
 
 # Install files from the package:
 atlas_install_headers( TrigBunchCrossingTool )
diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx
index 6541f5b27442df412a6dce1eaf1fc182101b2a13..ebe4de8402ca662e3ad20d130c4c2099b67c7f48 100644
--- a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx
+++ b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx
@@ -1587,7 +1587,9 @@ void AnalysisConfig_Ntuple::loop() {
 		
 		std::vector<TIDA::Track>& tracks = offline->rois()[iroi].tracks();
 		
-		size_t Noffline = tracks.size();
+		/// may well put the reporting back in, so leaving this 
+		/// this in place  
+		//  size_t Noffline = tracks.size();
 
 		for ( std::vector<TIDA::Track>::iterator it=tracks.begin() ; it<tracks.end() ; ) {
 		  bool inc = true;
@@ -1616,7 +1618,9 @@ void AnalysisConfig_Ntuple::loop() {
 		  if ( inc ) it++;
 		}
 		
-		//  m_provider->msg(MSG::INFO) << "TIDA::Roi offline track reduction: " << Noffline << " -> " << tracks.size() << endmsg;
+		/// may well put the reporting back in, so leaving this 
+		/// this in place  		
+		//  m_provider->msg(MSG::DEBUG) << "TIDA::Roi offline track reduction: " << Noffline << " -> " << tracks.size() << endmsg;
 		
 	      }
 	     
diff --git a/Trigger/TrigFTK/FastTrackSimWrap/FastTrackSimWrap/DumpSp.h b/Trigger/TrigFTK/FastTrackSimWrap/FastTrackSimWrap/DumpSp.h
index 6382bbd5d5fb5860ebd60662ae496bb276cdc7b2..3c03d351d55e0362bd3729b5ad187b84f3577fac 100644
--- a/Trigger/TrigFTK/FastTrackSimWrap/FastTrackSimWrap/DumpSp.h
+++ b/Trigger/TrigFTK/FastTrackSimWrap/FastTrackSimWrap/DumpSp.h
@@ -50,7 +50,7 @@
 #include "TrkTrackSummaryTool/TrackSummaryTool.h"
 #include "TrkToolInterfaces/ITrackHoleSearchTool.h"
 #include "InDetPrepRawData/SiClusterContainer.h"
-
+#include "BeamSpotConditionsData/BeamSpotData.h"
 #include "InDetCondServices/ISiLorentzAngleTool.h"
 
 class AtlasDetectorID;
@@ -59,7 +59,6 @@ class ITruthParameters;
 class TruthSelector; 
 class PixelID; 
 class SCT_ID;
-class IBeamCondSvc;
 class EventID;
 
 namespace InDetDD {
@@ -148,7 +147,7 @@ private:
   //#endif
   // ToolHandle<Trk::ITrackHoleSearchTool>     m_holeSearchTool;
 
-  ServiceHandle<IBeamCondSvc>               m_beamCondSvc;
+  SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
 
   SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"};
 
diff --git a/Trigger/TrigFTK/FastTrackSimWrap/share/FastTrackSimRegionalWrap_Tower22IBL3D_HWModeID2_jobOptions.py b/Trigger/TrigFTK/FastTrackSimWrap/share/FastTrackSimRegionalWrap_Tower22IBL3D_HWModeID2_jobOptions.py
index 57df2c95747d2094c115752310ff6322b4bf0e05..1fdb4541a8254ceee482313c24030fe7b0121397 100644
--- a/Trigger/TrigFTK/FastTrackSimWrap/share/FastTrackSimRegionalWrap_Tower22IBL3D_HWModeID2_jobOptions.py
+++ b/Trigger/TrigFTK/FastTrackSimWrap/share/FastTrackSimRegionalWrap_Tower22IBL3D_HWModeID2_jobOptions.py
@@ -44,13 +44,15 @@ wrapper.PixelClusteringMode = 101
 wrapper.Ibl3DRealistic = False
 wrapper.SctClustering = True
 wrapper.Clustering = True
+wrapper.EmulateDF = True
 
 ####wrapper.GetOffline = True
 wrapper.GetOffline = False
 
-### Tower 22 ROD list, see slide 53 of https://indico.cern.ch/event/712049/contributions/2924263/attachments/1622355/2581965/ftk_intro_session.pdf 
-wrapper.pixRodIds = ['0x111750', '0x112521', '0x112559', '0x130149', '0x111710', '0x130146', '0x140103', '0x140093']
-wrapper.sctRodIds = ['0x220100', '0x220101', '0x220102', '0x220103']
+### EnhancedSlice22 ROD ID list, see:
+### https://its.cern.ch/jira/browse/FTKSIM-107?focusedCommentId=2350985&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-2350985
+wrapper.pixRodIds = ['0x140103','0x111750','0x112521','0x112559','0x140093','0x130149','0x111710','0x130146'] 
+wrapper.sctRodIds = ['0x220100','0x220103','0x220101','0x220102']
 
 theJob += wrapper
 
diff --git a/Trigger/TrigFTK/FastTrackSimWrap/src/DumpSp.cxx b/Trigger/TrigFTK/FastTrackSimWrap/src/DumpSp.cxx
index 630a564a7c92d481dc59eb6bf8128941e635b575..6101514c1956f85e346430f55744fbcfc1cdfe38 100644
--- a/Trigger/TrigFTK/FastTrackSimWrap/src/DumpSp.cxx
+++ b/Trigger/TrigFTK/FastTrackSimWrap/src/DumpSp.cxx
@@ -109,7 +109,7 @@
 #include "GeneratorObjects/McEventCollection.h"
 
 #include "InDetReadoutGeometry/PixelDetectorManager.h"
-#include "InDetBeamSpotService/IBeamCondSvc.h"
+
 
 #include "EventPrimitives/EventPrimitivesHelpers.h"
 
@@ -132,7 +132,6 @@ DumpSp::DumpSp(const string& name, ISvcLocator* pSvcLocator)
   , m_trigDecTool("Trig::TrigDecisionTool/TrigDecisionTool")
   , m_pixelCondSummarySvc("PixelConditionsSummarySvc",name)
   // , m_holeSearchTool( "InDetHoleSearchTool" )
-  , m_beamCondSvc("BeamCondSvc",name)
   , m_pixelClustersName( "PixelClusters" )
   , m_sctClustersName( "SCT_Clusters" )
   , m_pixelSpacePointsName( "PixelSpacePoints" )
@@ -178,7 +177,6 @@ DumpSp::DumpSp(const string& name, ISvcLocator* pSvcLocator)
   declareProperty("tracksTruthName"  ,        m_tracksTruthName);  
   declareProperty("TruthToTrackTool" ,        m_truthToTrack);
   // declareProperty("HoleSearch" ,             m_holeSearchTool);
-  declareProperty("beamCondSvc" ,             m_beamCondSvc);
   declareProperty("dumpMBTSInfo" ,            m_dumpMBTSInfo , "Dump X fields to output containing MBTS trigger info" );
   declareProperty("useOfflineTrackSelectorTool" , m_useOfflineTrackSelectorTool);
   declareProperty("outputBeamSpotToWrapper" , m_outputBeamSpotToWrapper);
@@ -311,13 +309,7 @@ DumpSp::initialize()
     m_oflraw->push( boost::iostreams::file_sink(m_outFileNameRawHits) ); // open the file
   }
 
-  // jordan's code for the beamline
-  if ( m_beamCondSvc.retrieve().isFailure() && ( m_outputBeamSpotToWrapper || !m_useSimpleCuts ) ) {
-    ATH_MSG_FATAL("Failed to retrieve service " << m_beamCondSvc);
-    return StatusCode::FAILURE;
-  } else {
-    ATH_MSG_INFO("Retrieved service " << m_beamCondSvc);
-  }
+  ATH_CHECK(m_beamSpotKey.initialize());
 
   ATH_CHECK(m_pixelLorentzAngleTool.retrieve());
   ATH_CHECK(m_sctLorentzAngleTool.retrieve());
@@ -597,8 +589,9 @@ DumpSp::dump_truth() const
       float truth_d0corr = track_truth_d0-( primaryVtx.y()*cos(track_truth_phi)-primaryVtx.x()*sin(track_truth_phi) );
       float truth_zvertex = 0.;
       if ( !m_useSimpleCuts ) {  // determine d0_corr based on beam position from BeamCondSvc
-        truth_d0corr = track_truth_d0-( m_beamCondSvc->beamPos().y()*cos(track_truth_phi)-m_beamCondSvc->beamPos().x()*sin(track_truth_phi) );
-        truth_zvertex = m_beamCondSvc->beamPos().z();
+        SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
+        truth_d0corr = track_truth_d0-( beamSpotHandle->beamPos().y()*cos(track_truth_phi)-beamSpotHandle->beamPos().x()*sin(track_truth_phi) );
+        truth_zvertex = beamSpotHandle->beamPos().z();
         if ( showd0corrSuccess ) {
           ATH_MSG_DEBUG( "Beamspot from BeamCondSvc used to determine cuts in dump_truth()");
           showd0corrSuccess = false;
@@ -1810,15 +1803,16 @@ void
 DumpSp::dump_beamspot() const
 {
   if ( m_outputBeamSpotToWrapper ) { // output beam spot to wrapper
-    (*m_oflraw) << "V\t" << m_beamCondSvc->beamPos().x() << "\t" 
-              << m_beamCondSvc->beamPos().y() << "\t"
-              << m_beamCondSvc->beamPos().z() << "\t"
-              << m_beamCondSvc->beamSigma(0) << "\t"
-              << m_beamCondSvc->beamSigma(1) << "\t"
-              << m_beamCondSvc->beamSigma(2) << "\t"
-              << m_beamCondSvc->beamSigmaXY() << "\t" 
-              << m_beamCondSvc->beamTilt(0) << "\t"
-              << m_beamCondSvc->beamTilt(1) << "\n";
+    SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
+    (*m_oflraw) << "V\t" << beamSpotHandle->beamPos().x() << "\t" 
+              << beamSpotHandle->beamPos().y() << "\t"
+              << beamSpotHandle->beamPos().z() << "\t"
+              << beamSpotHandle->beamSigma(0) << "\t"
+              << beamSpotHandle->beamSigma(1) << "\t"
+              << beamSpotHandle->beamSigma(2) << "\t"
+              << beamSpotHandle->beamSigmaXY() << "\t" 
+              << beamSpotHandle->beamTilt(0) << "\t"
+              << beamSpotHandle->beamTilt(1) << "\n";
   }
 }
 
diff --git a/Trigger/TrigFTK/TrigFTKSim/CMakeLists.txt b/Trigger/TrigFTK/TrigFTKSim/CMakeLists.txt
index 54340959ed37dbd1593126d69c6577f8e9c3b967..1d24a83e9dbf73331ecc39cdc7bea431ea3ffeaa 100644
--- a/Trigger/TrigFTK/TrigFTKSim/CMakeLists.txt
+++ b/Trigger/TrigFTK/TrigFTKSim/CMakeLists.txt
@@ -12,6 +12,7 @@ atlas_depends_on_subdirs( PUBLIC
                           Control/StoreGate
                           GaudiKernel
                           InnerDetector/InDetConditions/InDetBeamSpotService
+                          InnerDetector/InDetConditions/BeamSpotConditionsData
                           InnerDetector/InDetConditions/InDetConditionsSummaryService
                           InnerDetector/InDetDetDescr/InDetIdentifier
                           InnerDetector/InDetDetDescr/InDetReadoutGeometry
diff --git a/Trigger/TrigFTK/TrigFTKSim/TrigFTKSim/FTK_SGHitInput.h b/Trigger/TrigFTK/TrigFTKSim/TrigFTKSim/FTK_SGHitInput.h
index 526b318f55c519494e3b63e487d7795f0b8faae3..27d79463d63109f3991ff2711ff917766faf52e2 100644
--- a/Trigger/TrigFTK/TrigFTKSim/TrigFTKSim/FTK_SGHitInput.h
+++ b/Trigger/TrigFTK/TrigFTKSim/TrigFTKSim/FTK_SGHitInput.h
@@ -32,7 +32,6 @@
 #include "TrkToolInterfaces/ITrackHoleSearchTool.h"
 #include "TrkExInterfaces/IExtrapolator.h"
 #include "TrkParameters/TrackParameters.h"
-#include "InDetBeamSpotService/IBeamCondSvc.h"
 #include "InDetCondServices/ISiLorentzAngleTool.h"
 #include "InDetReadoutGeometry/SiDetectorElementCollection.h"
 #include "StoreGate/StoreGateSvc.h"
@@ -40,7 +39,7 @@
 #include "StoreGate/ReadCondHandleKey.h"
 #include "HepPDT/ParticleDataTable.hh"
 #include "HepPDT/ParticleData.hh"
-
+#include "BeamSpotConditionsData/BeamSpotData.h"
 #include "InDetPrepRawData/SiClusterContainer.h"
 
 #include <boost/iostreams/filtering_stream.hpp>
@@ -87,7 +86,7 @@ private:
 
   ToolHandle<Trk::IExtrapolator> m_extrapolator;
   ToolHandle<ISiLorentzAngleTool> m_pixelLorentzAngleTool{this, "LorentzAngleTool", "SiLorentzAngleTool/PixelLorentzAngleTool", "Tool to retreive Lorentz angle"};
-  ServiceHandle<IBeamCondSvc> m_beamSpotSvc;
+  SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
 
   SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"};
 
diff --git a/Trigger/TrigFTK/TrigFTKSim/scripts/TrigFTKSMUn_Tower22_tf.py b/Trigger/TrigFTK/TrigFTKSim/scripts/TrigFTKSMUn_Tower22_tf.py
index 98cf35347e3b08afa8f7fee2506bc022c9da72ba..c53c904054b3489943da166c627e15a0feff4430 100755
--- a/Trigger/TrigFTK/TrigFTKSim/scripts/TrigFTKSMUn_Tower22_tf.py
+++ b/Trigger/TrigFTK/TrigFTKSim/scripts/TrigFTKSMUn_Tower22_tf.py
@@ -98,7 +98,6 @@ def getTransform():
             outData=['NTUP_FTK'],
             runtimeRunargs={
                 'inputNTUP_FTKTMPFile': "['tmp.NTUP_FTKTMP']",
-                'inputNTUP_FTKIPFile' : "['OUT.NTUP_FTKIP.root']",
                 'MergeFromTowers': True,
                 'FirstRegion': 0,
                 'NBanks': 1,
diff --git a/Trigger/TrigFTK/TrigFTKSim/src/FTK_SGHitInput.cxx b/Trigger/TrigFTK/TrigFTKSim/src/FTK_SGHitInput.cxx
index 74c0cf301e753dc2973ae97fa20876e55a9a973b..b703ce1e81ed8663570074e519cb8467202f8fd8 100644
--- a/Trigger/TrigFTK/TrigFTKSim/src/FTK_SGHitInput.cxx
+++ b/Trigger/TrigFTK/TrigFTKSim/src/FTK_SGHitInput.cxx
@@ -61,7 +61,6 @@ FTK_SGHitInput::FTK_SGHitInput(const std::string& algname, const std::string &na
   m_log( msgSvc() , name ),
   m_truthToTrack( "Trk::TruthToTrack/InDetTruthToTrack" ),
   m_extrapolator( "Trk::Extrapolator/AtlasExtrapolator" ),
-  m_beamSpotSvc( "BeamCondSvc" , name ),
   m_pixelClustersName( "PixelClusters" ),
   m_sctClustersName( "SCT_Clusters" ),
   m_pixelSpacePointsName( "PixelSpacePoints" ),
@@ -91,7 +90,7 @@ FTK_SGHitInput::FTK_SGHitInput(const std::string& algname, const std::string &na
   declareProperty("tracksTruthName"         , m_tracksTruthName);
   declareProperty("TruthToTrackTool"        , m_truthToTrack);
   declareProperty("Extrapolator"            , m_extrapolator);
-  declareProperty("BeamCondSvc"             , m_beamSpotSvc);
+  declareProperty("BeamCondKey"             , m_beamSpotKey);
   declareProperty("useOfflineTrackSelectorTool" , m_useOfflineTrackSelectorTool);
   declareProperty("outputBeamSpotToWrapper"	, m_outputBeamSpotToWrapper);
   declareProperty("useSimpleCuts"		, m_useSimpleCuts);
@@ -130,11 +129,11 @@ StatusCode FTK_SGHitInput::initialize(){
 
   ATH_CHECK(m_pixelLorentzAngleTool.retrieve());
 
-  if( m_beamSpotSvc.retrieve().isFailure() ) {
-    m_log << MSG::FATAL << m_beamSpotSvc << " beam spot service not found" << endmsg;
+  if( m_beamSpotKey.initialize().isFailure() ) {
+    m_log << MSG::FATAL << m_beamSpotKey << " beam spot handle not found" << endmsg;
     return StatusCode::FAILURE;
   } else {
-    m_log << MSG::INFO << m_beamSpotSvc << " retrieved" << endmsg;
+    m_log << MSG::INFO << m_beamSpotKey << " retrieved" << endmsg;
   }
 
   if( service("DetectorStore",m_detStore).isFailure() ) {
@@ -946,7 +945,8 @@ FTK_SGHitInput::read_truth_tracks()
 	persf = Trk::PerigeeSurface(origin);
       }
       else {
-	persf = m_beamSpotSvc->beamPos();
+        SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
+	persf = beamSpotHandle->beamPos();
       }
 
       const Trk::TrackParameters* tP = m_extrapolator->extrapolate(cParameters, persf, Trk::anyDirection, false);
diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/CMakeLists.txt b/Trigger/TrigHypothesis/TrigBjetHypo/CMakeLists.txt
index b51c4d80f97af520adc92ac67624f696f0035486..bf799b86d98211fc7f73059e6bd330b747323d36 100644
--- a/Trigger/TrigHypothesis/TrigBjetHypo/CMakeLists.txt
+++ b/Trigger/TrigHypothesis/TrigBjetHypo/CMakeLists.txt
@@ -17,6 +17,7 @@ atlas_depends_on_subdirs( PUBLIC
                           Trigger/TrigEvent/TrigInDetEvent
                           Trigger/TrigSteer/TrigInterfaces
                           Trigger/TrigTools/TrigTrackJetFinderTool
+                          InnerDetector/InDetConditions/BeamSpotConditionsData
                           PRIVATE
                           Control/AthContainers
                           DetectorDescription/GeoPrimitives
diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetFex.h b/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetFex.h
index 46a65656659d9e3b796b7994bdcd7502df919de5..ac6b64d8741ee27d3d5146e8070360f27b2b2aa3 100755
--- a/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetFex.h
+++ b/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetFex.h
@@ -25,7 +25,7 @@
 
 #include "TrigTrackJetFinderTool/ITrigTrackJetFinderTool.h"
 #include "VxSecVertex/VxSecVertexInfo.h"
-
+#include "BeamSpotConditionsData/BeamSpotData.h"
 
 
 class MsgStream;
@@ -298,6 +298,8 @@ class TrigBjetFex: public HLT::FexAlgo {
 
   /** @brief necessary for calibration constants for BjetProbability */
   std::vector<float> m_par_0_MC, m_par_1_MC, m_par_0_DT, m_par_1_DT;
+
+  SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
 };
 
 #endif
diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetHypo.h b/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetHypo.h
index 418d17a88c782e1dd698169e3d16d4db96298ac6..a2644cfcbd70d0d246d8c485946cd43f787be570 100755
--- a/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetHypo.h
+++ b/Trigger/TrigHypothesis/TrigBjetHypo/TrigBjetHypo/TrigBjetHypo.h
@@ -16,7 +16,7 @@
 #define TRIGBJETHYPO_H
 
 #include "TrigInterfaces/HypoAlgo.h"
-
+#include "BeamSpotConditionsData/BeamSpotData.h"
 
 class TrigEFBjetContainer;
 class TrigTimerSvc;
@@ -97,7 +97,7 @@ class TrigBjetHypo : public HLT::HypoAlgo {
 
   /** @brief Cut counter. */
   int m_cutCounter;
-
+  SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
 };
 
 #endif
diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetFex.cxx b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetFex.cxx
index 7d9d044b2801cfb5f12e4055a4247daf7b0ab1e6..ee78e8b1018992699c21d3c6e595b21545222c2b 100755
--- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetFex.cxx
+++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetFex.cxx
@@ -30,7 +30,6 @@
 
 #include "TrigParticle/TrigEFBjetContainer.h"
 
-#include "InDetBeamSpotService/IBeamCondSvc.h"
 
 #include "TrigInDetEvent/TrigVertex.h"
 
@@ -355,8 +354,10 @@ HLT::ErrorCode TrigBjetFex::hltInitialize() {
     m_tuningLikelihoodSV = new TuningLikelihood(&m_sizeSV[0], &m_bSV[0], &m_uSV[0], m_sizeSV.size()); 
     m_trigBjetTagger->fillLikelihoodMap("SVTX", m_tuningLikelihoodSV);
 
+    if(m_beamSpotKey.initialize().isFailure()) return HLT::BAD_JOB_SETUP;
+
     // Retrieve TrigTrackJetFinder tool
-        StatusCode sc = m_trackJetFinderTool.retrieve();
+    StatusCode sc = m_trackJetFinderTool.retrieve();
     if(sc.isFailure()) {
       msg() << MSG::FATAL << "Failed to locate tool " << m_trackJetFinderTool << endmsg;
       return HLT::BAD_JOB_SETUP;
@@ -903,11 +904,9 @@ HLT::ErrorCode TrigBjetFex::hltExecute(const HLT::TriggerElement* /*inputTE*/, H
   // -----------------------------------
   // Retrieve beamspot information
   // -----------------------------------
-  IBeamCondSvc* iBeamCondSvc; 
-  StatusCode sc = service("BeamCondSvc", iBeamCondSvc);
+  SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
 
-  if (sc.isFailure() || iBeamCondSvc == 0) {
-    iBeamCondSvc = 0;
+  if (!beamSpotHandle.isValid()) {
 
     if (msgLvl() <= MSG::WARNING)
       msg() << MSG::WARNING << "Could not retrieve Beam Conditions Service. " << endmsg;
@@ -915,9 +914,9 @@ HLT::ErrorCode TrigBjetFex::hltExecute(const HLT::TriggerElement* /*inputTE*/, H
   } 
   else {
     
-    Amg::Vector3D beamSpot = iBeamCondSvc->beamPos();
+    Amg::Vector3D beamSpot = beamSpotHandle->beamPos();
     
-    int beamSpotBitMap = iBeamCondSvc->beamStatus();
+    int beamSpotBitMap = beamSpotHandle->beamStatus();
     
     // Check if beam spot is from online algorithms
     int beamSpotStatus = ((beamSpotBitMap & 0x4) == 0x4);
@@ -927,13 +926,13 @@ HLT::ErrorCode TrigBjetFex::hltExecute(const HLT::TriggerElement* /*inputTE*/, H
       beamSpotStatus = ((beamSpotBitMap & 0x3) == 0x3);
     
     ATH_MSG_DEBUG( "Beam spot from service: x=" << beamSpot.x() << ", y=" << beamSpot.y() << ", z=" << beamSpot.z() 
-		   << ", tiltXZ=" << iBeamCondSvc->beamTilt(0) << ", tiltYZ=" << iBeamCondSvc->beamTilt(1) 
-		   << ", sigmaX=" << iBeamCondSvc->beamSigma(0) << ", sigmaY=" << iBeamCondSvc->beamSigma(1) << ", sigmaZ=" << iBeamCondSvc->beamSigma(2) 
+		   << ", tiltXZ=" << beamSpotHandle->beamTilt(0) << ", tiltYZ=" << beamSpotHandle->beamTilt(1) 
+		   << ", sigmaX=" << beamSpotHandle->beamSigma(0) << ", sigmaY=" << beamSpotHandle->beamSigma(1) << ", sigmaZ=" << beamSpotHandle->beamSigma(2) 
 		   << ", status=" << beamSpotStatus );
     
     m_trigBjetPrmVtxInfo->setBeamSpot(beamSpot.x(), beamSpot.y(), beamSpot.z());
-    m_trigBjetPrmVtxInfo->setBeamSpotTilt(iBeamCondSvc->beamTilt(0), iBeamCondSvc->beamTilt(1));
-    m_trigBjetPrmVtxInfo->setBeamSpotWidth(iBeamCondSvc->beamSigma(0), iBeamCondSvc->beamSigma(1), iBeamCondSvc->beamSigma(2));
+    m_trigBjetPrmVtxInfo->setBeamSpotTilt(beamSpotHandle->beamTilt(0), beamSpotHandle->beamTilt(1));
+    m_trigBjetPrmVtxInfo->setBeamSpotWidth(beamSpotHandle->beamSigma(0), beamSpotHandle->beamSigma(1), beamSpotHandle->beamSigma(2));
     m_trigBjetPrmVtxInfo->setBeamSpotStatus(beamSpotStatus);
 
     ATH_MSG_DEBUG( *m_trigBjetPrmVtxInfo );
diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypo.cxx b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypo.cxx
index fa0071c50dae9d93fc4cb1bbc5a447aa180c8e0e..1a8775a079a70316bdd4326d2d72389f9f5d47c3 100755
--- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypo.cxx
+++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypo.cxx
@@ -18,8 +18,6 @@
 
 #include "xAODTrigger/TrigPassBits.h"
 
-#include "InDetBeamSpotService/IBeamCondSvc.h"
-
 #include "xAODBTagging/BTaggingAuxContainer.h"
 #include "xAODBTagging/BTaggingContainer.h"
 #include "xAODBTagging/BTagging.h"
@@ -81,7 +79,7 @@ HLT::ErrorCode TrigBjetHypo::hltInitialize() {
   if (m_xcutCHI2   != -20) ATH_MSG_DEBUG( " CutXCHI2  = "  << m_xcutCHI2 );
   if (m_xcutIP3D   != -20) ATH_MSG_DEBUG( " CutXIP3D  = "  << m_xcutIP3D );
   if (m_xcutIP2D   != -20) ATH_MSG_DEBUG( " CutXIP2D  = "  << m_xcutIP2D );
-
+  if(m_beamSpotKey.initialize().isFailure()) return HLT::BAD_JOB_SETUP;
   return HLT::OK;
 }
 
@@ -105,10 +103,9 @@ HLT::ErrorCode TrigBjetHypo::hltExecute(const HLT::TriggerElement* outputTE, boo
   // Retrieve beamspot information 
   if (m_useBeamSpotFlag) {
 
-    IBeamCondSvc* iBeamCondSvc; 
-    StatusCode sc = service("BeamCondSvc", iBeamCondSvc);
+    SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
     
-    if (sc.isFailure() || iBeamCondSvc == 0) {
+    if ( !beamSpotHandle.isValid() ) {
       
       if (msgLvl() <= MSG::WARNING)
 	msg() << MSG::WARNING << "Could not retrieve Beam Conditions Service. " << endmsg;
@@ -116,7 +113,7 @@ HLT::ErrorCode TrigBjetHypo::hltExecute(const HLT::TriggerElement* outputTE, boo
     } else {
 
       int beamSpotStatus = 0;
-      int beamSpotBitMap = iBeamCondSvc->beamStatus();    
+      int beamSpotBitMap = beamSpotHandle->beamStatus();    
 
       beamSpotStatus = ((beamSpotBitMap & 0x4) == 0x4);  
       if (beamSpotStatus) beamSpotStatus = ((beamSpotBitMap & 0x3) == 0x3);
diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.cxx b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.cxx
index 912209de98e63cd067e7122ea78a0986b3d7a0ca..cbf19b41912b8647521043a1edd463d0f994b5fe 100755
--- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.cxx
+++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.cxx
@@ -15,7 +15,6 @@
 #include "DecisionHandling/HLTIdentifier.h"
 
 #include "TrigBjetHypoTool.h"
-#include "InDetBeamSpotService/IBeamCondSvc.h"
 #include "AthenaMonitoring/MonitoredScope.h"
 
 
@@ -47,7 +46,7 @@ StatusCode TrigBjetHypoTool::initialize()  {
   // =====================================
   if ( retrieveTool( "Monitoring Tool",m_monTool ).isFailure() ) return StatusCode::FAILURE;
   // =====================================
-
+  if(m_beamSpotKey.initialize().isFailure()) return StatusCode::FAILURE;
   ATH_MSG_DEBUG( "Tool configured for chain/id: " << m_id  );
   return StatusCode::SUCCESS;
 }
@@ -77,18 +76,16 @@ bool TrigBjetHypoTool::decide(  const xAOD::BTagging* bTag, const TrigRoiDescrip
 
   // Retrieve beamspot information - check if this is going to be changed
   if (m_useBeamSpotFlag) {
-
-    IBeamCondSvc* iBeamCondSvc; 
-    StatusCode sc = service("BeamCondSvc", iBeamCondSvc);
+    SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
     
-    if (sc.isFailure() || iBeamCondSvc == 0) {
+    if (!beamSpotHandle.isValid()) {
       
       ATH_MSG_WARNING(  "Could not retrieve Beam Conditions Service. "  );
       
     } else {
 
       int beamSpotStatus = 0;
-      int beamSpotBitMap = iBeamCondSvc->beamStatus();    
+      int beamSpotBitMap = beamSpotHandle->beamStatus();    
 
       beamSpotStatus = ((beamSpotBitMap & 0x4) == 0x4);  
       if (beamSpotStatus) beamSpotStatus = ((beamSpotBitMap & 0x3) == 0x3);
diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.h b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.h
index 550a64e002a1db69243882adc29e735612f6d48d..98a503483124138af3d71c3071e6b91b8483e927 100755
--- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.h
+++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetHypoTool.h
@@ -29,7 +29,7 @@
 #include "DecisionHandling/HLTIdentifier.h"
 #include "DecisionHandling/TrigCompositeUtils.h"
 #include "AthenaBaseComps/AthAlgTool.h" 
-
+#include "BeamSpotConditionsData/BeamSpotData.h"
 
 //Not sure if these are needed, thus commeneted
 /* class TrigEFBjetContainer; */
@@ -114,7 +114,7 @@ class TrigBjetHypoTool : virtual public ::AthAlgTool {
   /** @brief DeclareProperty: to monitor method used to perform the cut. */
   //  float m_monitorMethod;
   PublicToolHandle< GenericMonitoringTool > m_monTool { this, "MonTool", "GenericMonitoringTool/MonTool", "Monitoring tool" };
-
+  SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
 };
 
 inline const InterfaceID& TrigBjetHypoTool::interfaceID()
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/CMakeLists.txt b/Trigger/TrigHypothesis/TrigBphysHypo/CMakeLists.txt
index 7731d9fcdbf93fab4c4a8d51dd4ed8faab4eee86..797033735e85aaa3dbca3ebf92c066cb1180411a 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/CMakeLists.txt
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/CMakeLists.txt
@@ -23,6 +23,7 @@ atlas_depends_on_subdirs( PRIVATE
                           Event/xAOD/xAODTrigger
                           GaudiKernel
                           Generators/GeneratorObjects
+                          InnerDetector/InDetConditions/BeamSpotConditionsData
                           InnerDetector/InDetConditions/InDetBeamSpotService
                           Reconstruction/Particle
                           Tracking/TrkEvent/TrkParameters
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.cxx
index 63b879352ce00970611cb7080f31c77d54a098fc..c8ec3160720608782da325d271eda40af325b80f 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.cxx
@@ -28,7 +28,6 @@
 
 #include "xAODTrigMuon/L2StandAloneMuon.h"
 
-#include "InDetBeamSpotService/IBeamCondSvc.h"
 
 /////////////////////////////////////////////////////////////////// 
 // Public methods: 
@@ -49,7 +48,6 @@ TrigBphysHelperUtilsTool::TrigBphysHelperUtilsTool( const std::string& type,
   // 
   //declareProperty( "Property", m_nProperty );
     declareProperty("VertexFitterTool", m_fitterSvc);
-
 }
 
 // Destructor
@@ -72,7 +70,10 @@ StatusCode TrigBphysHelperUtilsTool::initialize()
         }
         m_VKVFitter = dynamic_cast<Trk::TrkVKalVrtFitter*>(&(*m_fitterSvc));
     }
-
+  if(m_beamSpotKey.initialize().isFailure()){
+    msg() << MSG::ERROR << "Beamspot error" << endmsg;
+    return StatusCode::FAILURE;
+  }
   return StatusCode::SUCCESS;
 }
 
@@ -646,14 +647,14 @@ void TrigBphysHelperUtilsTool::setBeamlineDisplacement(xAOD::TrigBphys* bphys,
         return;
     }
     
-    IBeamCondSvc* iBeamCondSvc;
     Amg::Vector3D beamSpot(0.,0.,0.);
-    if ( service("BeamCondSvc", iBeamCondSvc).isFailure() || iBeamCondSvc == 0)
+    SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
+    if ( !beamSpotHandle.isValid() )
     {
         msg() << MSG::DEBUG<< "Could not retrieve Beam Conditions Service. " << endmsg;
     }else {
-        beamSpot = iBeamCondSvc->beamPos();
-        int beamSpotBitMap = iBeamCondSvc->beamStatus();
+        beamSpot = beamSpotHandle->beamPos();
+        int beamSpotBitMap = beamSpotHandle->beamStatus();
         //* Check if beam spot is from online algorithms *//
         int beamSpotStatus = ((beamSpotBitMap & 0x4) == 0x4);
         if(msg().level() <= MSG::DEBUG) msg() << MSG::DEBUG << "  beamSpotBitMap= "<< beamSpotBitMap<<" beamSpotStatus= "<<beamSpotStatus<<endmsg;
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.h
index 323ebe16255926646214ae5e811ecdfe0df1ed83..58dcbef2e68a32fdf8e15440106e823ab23e851a 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.h
@@ -24,6 +24,7 @@
 #include "xAODTrigBphys/TrigBphys.h"
 #include "TrkVKalVrtFitter/TrkVKalVrtFitter.h"
 #include "xAODTracking/TrackParticleContainer.h"
+#include "BeamSpotConditionsData/BeamSpotData.h"
 
 // Forward declaration
 namespace Trk {
@@ -123,7 +124,7 @@ class TrigBphysHelperUtilsTool: virtual public ::AthAlgTool
     // tools
     ToolHandle < Trk::IVertexFitter  >       m_fitterSvc;
     Trk::TrkVKalVrtFitter*              m_VKVFitter;
-
+    SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
     const double m_massMuon;
 };
 
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.cxx
index 0bfb281f29bf2ea3df8f542fa60927bba7b49342..be205b8c03223599d719997c708618f3e59abe23 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.cxx
@@ -79,7 +79,6 @@ TrigEFBMuMuHypo::TrigEFBMuMuHypo(const std::string & name, ISvcLocator* pSvcLoca
   declareMonitoredVariable("CutCounter",   m_mon_cutCounter);
   declareMonitoredVariable("MuMumass",     m_mon_MuMumass  );
 
-
 }
 
 TrigEFBMuMuHypo::~TrigEFBMuMuHypo()
@@ -99,7 +98,10 @@ HLT::ErrorCode TrigEFBMuMuHypo::hltInitialize()
     msg() << MSG::DEBUG << "ApplyUpperMassCut         = " << m_ApplyupperMassCut << endmsg;
 
   }
-
+  if(m_beamSpotKey.initialize().isFailure()){
+    msg() << MSG::ERROR << "Beamspot error" << endmsg;
+    return HLT::BAD_JOB_SETUP;
+  }
   m_lastEvent = -1;
   m_lastEventPassed = -1;
   m_countTotalEvents =0;
@@ -220,20 +222,20 @@ HLT::ErrorCode TrigEFBMuMuHypo::hltExecute(const HLT::TriggerElement* outputTE,
   }
 
 // Beam spot                                                                                                                            
-   IBeamCondSvc* iBeamCondSvc;   
+   SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
     //JW EDM   HepGeom::Point3D<double> m_beamSpot_CLHEP;
     Amg::Vector3D beamSpot(0.,0.,0.);
-    if ( service("BeamCondSvc", iBeamCondSvc).isFailure() || iBeamCondSvc == 0)                                                       
-       { msg() << MSG::DEBUG<< "Could not retrieve Beam Conditions Service. " << endmsg;                                                     
-       }else {                                                                                                                              
-          beamSpot = iBeamCondSvc->beamPos();
-          int beamSpotBitMap = iBeamCondSvc->beamStatus();                                                                          
-//* Check if beam spot is from online algorithms *//                                                                                  
+    if ( !beamSpotHandle.isValid() )                                                       
+       { msg() << MSG::DEBUG<< "Could not retrieve Beam Conditions Service. " << endmsg;
+       }else {
+          beamSpot = beamSpotHandle->beamPos();
+          int beamSpotBitMap = beamSpotHandle->beamStatus();
+//* Check if beam spot is from online algorithms *//
           int beamSpotStatus = ((beamSpotBitMap & 0x4) == 0x4);                                                                        
           if(msgLvl() <= MSG::DEBUG) msg() << MSG::DEBUG << "  beamSpotBitMap= "<< beamSpotBitMap<<" beamSpotStatus= "<<beamSpotStatus<<endmsg;               
 //std::cout<<" BBBBBBB:  beamSpot.x()= "<< beamSpot.x()<<" beamSpot.y()= "<<beamSpot.y()<<std::endl;               
-       }                                                                                                                                       
-                                                
+       }
+
 
   m_mon_cutCounter = 0;
   //TrigPassBits *bits = HLT::makeTrigPassBits(trigBphysColl);
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.h
index db30c189236c88156e457da5c36f9ec80bcbf756..51d1186dff539d439ef497aee734e843b116b1eb 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.h
@@ -29,7 +29,7 @@
 
 #include "TrigParticle/TrigEFBphys.h"
 #include "TrigParticle/TrigEFBphysContainer.h"
-
+#include "BeamSpotConditionsData/BeamSpotData.h"
 #include "TrigBphysHypo/Constants.h"
 
 class TrigEFBMuMuHypo: public HLT::HypoAlgo  {
@@ -73,7 +73,7 @@ class TrigEFBMuMuHypo: public HLT::HypoAlgo  {
 
   int m_mon_cutCounter;
   double m_mon_MuMumass;
-  
+  SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
 };
 
 #endif
diff --git a/Trigger/TrigHypothesis/TrigCaloHypo/TrigCaloHypo/TrigEFCaloHypoNoise.h b/Trigger/TrigHypothesis/TrigCaloHypo/TrigCaloHypo/TrigEFCaloHypoNoise.h
index 9953194ea4dfaf58796553c320037964810c69ee..98e1a23977faa623920a2426d71039f0b7e32870 100755
--- a/Trigger/TrigHypothesis/TrigCaloHypo/TrigCaloHypo/TrigEFCaloHypoNoise.h
+++ b/Trigger/TrigHypothesis/TrigCaloHypo/TrigCaloHypo/TrigEFCaloHypoNoise.h
@@ -79,6 +79,14 @@ class TrigEFCaloHypoNoise : public HLT::HypoAlgo {
   long int m_publishTime;
 
   ToolHandle<ILArNoisyROTool> m_noisyROTool;
+  // helpers to define what is to be used to save events
+  bool m_badFEBFlaggedPartitions;
+  bool m_satTightFlaggedPartitions;
+  bool m_mNBLooseFlaggedPartitions;
+  bool m_mNBTightFlaggedPartitions;
+  bool m_mNBTight_PsVetoFlaggedPartitions;
+  unsigned int m_mask;
+
   SG::ReadCondHandleKey<LArBadFebCont> m_knownBadFEBsVecKey {this, "BadFEBsKey", "LArKnownBadFEBs", "key to read the known Bad FEBs"};
   SG::ReadCondHandleKey<LArBadFebCont> m_knownMNBFEBsVecKey {this, "MNBFEBsKey", "LArKnownMNBFEBs", "key to read the known MNB FEBs"};
   std::set<unsigned int> m_knownBadFEBs;
diff --git a/Trigger/TrigHypothesis/TrigCaloHypo/python/TrigCaloHypoConfig.py b/Trigger/TrigHypothesis/TrigCaloHypo/python/TrigCaloHypoConfig.py
index af7da55f3cd97588d2e06685d26462555b94d429..0f06f58d6e0aae4b921ec7b14d21205e2d1e99fa 100644
--- a/Trigger/TrigHypothesis/TrigCaloHypo/python/TrigCaloHypoConfig.py
+++ b/Trigger/TrigHypothesis/TrigCaloHypo/python/TrigCaloHypoConfig.py
@@ -4,11 +4,13 @@
 from AthenaCommon.SystemOfUnits import GeV
 from TrigCaloHypo.TrigCaloHypoConf import TrigEFCaloHypoNoise
 from LArCellRec.LArCellRecConf import LArNoisyROTool
+from LArBadChannelTool.LArBadChannelToolConf import LArBadChanTool
+from IOVDbSvc.CondDB import conddb
+from AthenaCommon.AppMgr import ServiceMgr as svcMgr
 
 from LArCabling.LArCablingAccess import LArOnOffIdMapping
 LArOnOffIdMapping()
 
-
 class EFCaloHypoNoiseConfig (TrigEFCaloHypoNoise):
     __slots__ = []
     def __init__(self, name = "EFCaloHypoNoiseConfig",ef_thr=20*GeV,etaMin=0,etaMax=10):
@@ -16,7 +18,34 @@ class EFCaloHypoNoiseConfig (TrigEFCaloHypoNoise):
 
         self.Etcut = ef_thr
         self.BadFEBCut=3
-        theLArNoisyROTool=LArNoisyROTool(SaturatedCellTightCut=20,MNBLooseCut=5,MNBTightCut=17)
+        if 'COMP200' not in conddb.GetInstance() and not conddb.isMC:
+           if not hasattr(svcMgr.ToolSvc, "KnownBADFEBsTool"):
+              theBadFebTool=LArBadChanTool("KnownBADFEBsTool")
+              theBadFebTool.CoolMissingFEBsFolder="/LAR/BadChannels/KnownBADFEBs"
+              havefolder=False
+              for fld in conddb.iovdbsvc.Folders:
+                 if "KnownBADFEBs" in fld: havefolder=True
+              pass
+              if not havefolder:
+                 conddb.addFolder("LAR_ONL","/LAR/BadChannels/KnownBADFEBs")   
+              svcMgr.ToolSvc+=theBadFebTool
+           else:
+              theBadFebTool=svcMgr.ToolSvc.KnownBADFEBsTool
+           if not hasattr(svcMgr.ToolSvc, "KnownMNBFEBsTool"):
+              theMNBFebTool=LArBadChanTool("KnownMNBFEBsTool")
+              theMNBFebTool.CoolMissingFEBsFolder="/LAR/BadChannels/KnownMNBFEBs"
+              havefolder=False
+              for fld in conddb.iovdbsvc.Folders:
+                 if "KnownMNBFEBs" in fld: havefolder=True
+              pass
+              if not havefolder:
+                 conddb.addFolder("LAR_ONL","/LAR/BadChannels/KnownMNBFEBs")   
+              svcMgr.ToolSvc+=theMNBFebTool
+           else:
+              theMNBFebTool=svcMgr.ToolSvc.KnownMNBFEBsTool
+           theLArNoisyROTool=LArNoisyROTool(SaturatedCellTightCut=20,MNBLooseCut=5,MNBTightCut=17,KnownBADFEBsTool=theBadFebTool,KnownMNBFEBsTool=theMNBFebTool)
+        else:   
+           theLArNoisyROTool=LArNoisyROTool(SaturatedCellTightCut=20,MNBLooseCut=5,MNBTightCut=17)
         self.NoiseTool = theLArNoisyROTool
 
 from TrigCaloHypo.TrigCaloHypoConf import TrigL2JetHypo
diff --git a/Trigger/TrigHypothesis/TrigCaloHypo/src/TrigEFCaloHypoNoise.cxx b/Trigger/TrigHypothesis/TrigCaloHypo/src/TrigEFCaloHypoNoise.cxx
index 057cc0e0b59dd5db56b8d7c188d204d9c5a02b45..ac0836911b1fba2aaf4b3ed0006757e1f19e2ddb 100755
--- a/Trigger/TrigHypothesis/TrigCaloHypo/src/TrigEFCaloHypoNoise.cxx
+++ b/Trigger/TrigHypothesis/TrigCaloHypo/src/TrigEFCaloHypoNoise.cxx
@@ -49,6 +49,11 @@ TrigEFCaloHypoNoise::TrigEFCaloHypoNoise(const std::string& name, ISvcLocator* p
   declareProperty( "BadFEBCut", m_MinBadFEB=5 );
   declareProperty( "TimeToClear", m_timeTagPosToClear=300);
   declareProperty( "ISPublishTime", m_publishTime=180);
+  declareProperty( "BadFEBFlaggedPartitions", m_badFEBFlaggedPartitions=true);
+  declareProperty( "SatTightFlaggedPartitions", m_satTightFlaggedPartitions=true);
+  declareProperty( "MNBLooseFlaggedPartitions", m_mNBLooseFlaggedPartitions=true);
+  declareProperty( "MNBTightFlaggedPartitions", m_mNBTightFlaggedPartitions=true);
+  declareProperty( "MNBTight_PsVetoFlaggedPartitions", m_mNBTight_PsVetoFlaggedPartitions=true);
 
 }
 
@@ -111,6 +116,15 @@ HLT::ErrorCode TrigEFCaloHypoNoise::hltInitialize()
           m_isInterface = false;
       }
   } // if cfact
+
+  // create mask
+  m_mask = 0x0;
+  if ( m_badFEBFlaggedPartitions ) m_mask|=0x1;
+  if ( m_satTightFlaggedPartitions ) m_mask|=0x2;
+  if ( m_mNBLooseFlaggedPartitions ) m_mask|=0x10;
+  if ( m_mNBTightFlaggedPartitions ) m_mask|=0x20;
+  if ( m_mNBTight_PsVetoFlaggedPartitions ) m_mask|=0x40;
+  msg() << MSG::DEBUG << "using a mask to selec events : " << std::hex << m_mask << std::dec << endmsg;
   
   return HLT::OK;
   
diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/TrigEgammaHypo/TrigEFElectronHypo.h b/Trigger/TrigHypothesis/TrigEgammaHypo/TrigEgammaHypo/TrigEFElectronHypo.h
index 049d85ff7aaafcd4a90813bc1de984802011c6b8..4ea1c16af180e3266dffea04bf79e77294150b2f 100755
--- a/Trigger/TrigHypothesis/TrigEgammaHypo/TrigEgammaHypo/TrigEFElectronHypo.h
+++ b/Trigger/TrigHypothesis/TrigEgammaHypo/TrigEgammaHypo/TrigEFElectronHypo.h
@@ -77,9 +77,6 @@ class TrigEFElectronHypo : public HLT::HypoAlgo {
   HLT::ErrorCode hltExecute(const HLT::TriggerElement* outputTE, bool& pass);
   HLT::ErrorCode hltStart();
 
-  /** Find the impact parameter by extrapolating to either the beam spot or (0,0) **/
-  double findImpact(const xAOD::TrackParticle* track) const;//AT: copied from Offline
-
  private:
 
   // define the properties:
@@ -143,8 +140,7 @@ class TrigEFElectronHypo : public HLT::HypoAlgo {
   TrigTimer* m_timerPIDTool;
 
   Amg::Vector3D m_primaryVertex; //AT Jan 2010  
-  /** @brief Tool handle for track extrapolation to vertex */   	   	 
-  ToolHandle< Reco::ITrackToVertex > m_trackToVertexTool; //AT Jan 2010
+
 
   void prepareMonitoringVars();
 
diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigEFElectronHypo.cxx b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigEFElectronHypo.cxx
index f6e83a1c62a5f237a568bacd71ffe1db23e7b20f..385d034a0459dacf5a35576051fc7b3e97b8325d 100755
--- a/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigEFElectronHypo.cxx
+++ b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigEFElectronHypo.cxx
@@ -17,7 +17,6 @@
 // Removing checks for showershape checks, track particle checks
 // Assume that electrons must have this information
 //
-#include <list>
 #include <iterator>
 #include <sstream>
 #include <map>
@@ -36,7 +35,6 @@
 #include "xAODEgamma/Egamma.h"
 #include "xAODEgammaCnv/xAODElectronMonFuncs.h"
 #include "VxVertex/RecVertex.h"
-#include "ITrackToVertex/ITrackToVertex.h"
 #include "TrigTimeAlgs/TrigTimerSvc.h"
 #include "PATCore/AcceptData.h"
 #include "xAODTrigger/TrigPassBits.h"
@@ -58,9 +56,7 @@ TrigEFElectronHypo::TrigEFElectronHypo(const std::string& name,
 				   ISvcLocator* pSvcLocator):
     HLT::HypoAlgo(name, pSvcLocator),
     m_lumiBlockMuTool("LumiBlockMuTool/LumiBlockMuTool"),
-    m_primaryVertex(Amg::Vector3D()), 
-    m_trackToVertexTool("Reco::TrackToVertex")
-  
+    m_primaryVertex(Amg::Vector3D())  
 {
   declareProperty("AcceptAll",      m_acceptAll=true);
   declareProperty("CaloCutsOnly", m_caloCutsOnly);
@@ -76,10 +72,6 @@ TrigEFElectronHypo::TrigEFElectronHypo(const std::string& name,
   declareProperty("AthenaElectronLHIDSelectorToolName", m_athElectronLHIDSelectorToolName="");
   declareProperty("UseAthenaElectronLHIDSelectorTool", m_useAthElectronLHIDSelector=false);
   
-  //Tool for track extrapolation to vertex  	  
-  declareProperty("trackToVertexTool", m_trackToVertexTool,  
-		  "Tool for track extrapolation to vertex"); 
-
   /** Luminosity tool */
   declareProperty("LuminosityTool", m_lumiBlockMuTool, "Luminosity Tool");
   
@@ -224,15 +216,6 @@ HLT::ErrorCode TrigEFElectronHypo::hltInitialize()
   if (timerSvc())
     m_totalTimer = addTimer("TrigEFElectronHypoTot");  
 
- 
-  //retrieving TrackToVertex:    
-  if ( m_trackToVertexTool.retrieve().isFailure() ) {  
-      ATH_MSG_ERROR("Failed to retrieve tool " << m_trackToVertexTool);
-      return HLT::BAD_JOB_SETUP;  
-  } else {  
-    ATH_MSG_DEBUG("Retrieved tool " << m_trackToVertexTool);
-  }
-
   //-------------------------------------------------------------------------------
   // Use egammaElectronCutIDTool to run the Offline isEM Buildre in the Hypo.
   // The egammaElectronCutIDToolName runs the Electron Selecton only.
@@ -814,33 +797,3 @@ HLT::ErrorCode TrigEFElectronHypo::hltExecute(const HLT::TriggerElement* outputT
   return HLT::OK;
 }
 
-
-// ==============================================================
-double TrigEFElectronHypo::findImpact(const xAOD::TrackParticle* track) const
-{
-  //
-  // recalculate transverse impact parameter
-  // in case no Vertex is provided by the user,
-  // beam position will be used if available
-  //
-
-  double trackD0 = -9999.;
-  // protection against bad pointers
-  if (track==0) return -9999.;
-  
-  // use beam spot
-  const Trk::Perigee* perigee =
-    m_trackToVertexTool->perigeeAtBeamspot(*track);
-  
-  if (perigee==0) {
-    if(msgLvl() <= MSG::WARNING) msg() << MSG::WARNING <<"No perigee using beam spot; no d0 calculation"<<endmsg;    
-    perigee = m_trackToVertexTool->perigeeAtVertex(*track, m_primaryVertex);    
-  }
-
-  // destroy object
-  if (perigee!=0)
-    trackD0 = perigee->parameters()[Trk::d0];
-  delete perigee;
-
-  return trackD0; 
-} 
diff --git a/Trigger/TrigHypothesis/TrigEgammaMuonCombHypo/src/TrigEFElectronMuonAngleFexAlgo.cxx b/Trigger/TrigHypothesis/TrigEgammaMuonCombHypo/src/TrigEFElectronMuonAngleFexAlgo.cxx
index f42294fe9220b04606e24acef08de065bb75c33b..66d688063c5544f49bf9c7020f381ed66f07a15a 100755
--- a/Trigger/TrigHypothesis/TrigEgammaMuonCombHypo/src/TrigEFElectronMuonAngleFexAlgo.cxx
+++ b/Trigger/TrigHypothesis/TrigEgammaMuonCombHypo/src/TrigEFElectronMuonAngleFexAlgo.cxx
@@ -494,7 +494,7 @@ HLT::ErrorCode TrigEFElectronMuonAngleFexAlgo::hltExecute(HLT::TEConstVec& /*inp
 			<< endmsg;
 			}
 		}
-		
+		auto bsData = m_trackToVertexTool->GetBeamSpotData(Gaudi::Hive::currentContext());
 		ElectronMuonTopoInfoContainer::iterator egMuTopoInfo;
 		for ( egMuTopoInfo = m_egMuTopoColl->begin(); egMuTopoInfo != m_egMuTopoColl->end(); ++egMuTopoInfo ) {
 			if((*egMuTopoInfo)==0) continue;
@@ -527,9 +527,9 @@ HLT::ErrorCode TrigEFElectronMuonAngleFexAlgo::hltExecute(HLT::TEConstVec& /*inp
 			if ( msgLvl() <= MSG::DEBUG )
 				msg() << MSG::DEBUG  << "Muon track at " << m_muon << " was matched to TrkParticle from collection no. " << iColl << " at address " << muonTP << endmsg;
 			
-			const Trk::Perigee* perigeeEL =   m_trackToVertexTool->perigeeAtBeamspot(*m_electron);
+			const Trk::Perigee* perigeeEL =   m_trackToVertexTool->perigeeAtBeamspot(*m_electron, bsData);
 	   
-			const Trk::Perigee* perigeeMU =   m_trackToVertexTool->perigeeAtBeamspot(*muonTP);
+			const Trk::Perigee* perigeeMU =   m_trackToVertexTool->perigeeAtBeamspot(*muonTP, bsData);
 		    
 		   
 			
diff --git a/Trigger/TrigSteer/TrigOutputHandling/CMakeLists.txt b/Trigger/TrigSteer/TrigOutputHandling/CMakeLists.txt
index d6bd030b531ae233249fbc299f082a16815353db..890570e4e28162540dccaf83131139395ab0d5d9 100644
--- a/Trigger/TrigSteer/TrigOutputHandling/CMakeLists.txt
+++ b/Trigger/TrigSteer/TrigOutputHandling/CMakeLists.txt
@@ -45,4 +45,5 @@ atlas_add_test( void_record_test
       AthLinks AthenaKernel StoreGateLib GaudiKernel TestTools xAODCore 
       ENVIRONMENT "JOBOPTSEARCHPATH=${CMAKE_CURRENT_SOURCE_DIR}/share"
       POST_EXEC_SCRIPT nopost.sh     
+      PROPERTIES TIMEOUT 300
        )
diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx
index 9227980a99949bb92189aab4bd34aa3ed0e80955..65b2f51448895e8a70ccdb6485434b333305b323 100644
--- a/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx
+++ b/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx
@@ -10,14 +10,28 @@ StreamTagMakerTool::StreamTagMakerTool( const std::string& type, const std::stri
 
 StreamTagMakerTool::~StreamTagMakerTool() {}
 
-StatusCode StreamTagMakerTool::initialize() {  
-  // decode mapping
+StatusCode StreamTagMakerTool::initialize() {
   ATH_CHECK( m_finalChainDecisions.initialize() );
+  // decode mapping - temporary solution for testing
   for ( auto& chainAndStream: m_chainToStreamProperty ) {
-    struct { std::string chain, stream; } conf { chainAndStream.first, chainAndStream.second };    
+    struct { std::string chain, stream; } conf { chainAndStream.first, chainAndStream.second };
     ATH_MSG_DEBUG( "Chain " << conf.chain << " accepts events to stream " << conf.stream );
-    m_mapping[ HLT::Identifier( conf.chain ) ] = eformat::helper::StreamTag( conf.stream, "physics", true );
-    
+    // find subdets
+    std::set<eformat::SubDetector> dets;
+    const auto itSubDetMap = m_streamSubDets.value().find(conf.stream);
+    if (itSubDetMap != m_streamSubDets.value().cend()) {
+      for (const uint32_t detid : itSubDetMap->second)
+        dets.insert(static_cast<eformat::SubDetector>(detid & 0xFF)); // cast from uint32_t
+    }
+    // find robs
+    std::set<uint32_t> robs;
+    const auto itRobsMap = m_streamRobs.value().find(conf.stream);
+    if (itRobsMap != m_streamRobs.value().cend()) {
+      for (const uint32_t robid : itRobsMap->second)
+        robs.insert(robid);
+    }
+    // create the stream tag
+    m_mapping[ HLT::Identifier( conf.chain ) ] = eformat::helper::StreamTag( conf.stream, "physics", true, robs, dets );
   }
 
   return StatusCode::SUCCESS;
@@ -29,14 +43,14 @@ StatusCode StreamTagMakerTool::finalize() {
 
 
 StatusCode StreamTagMakerTool::fill( HLT::HLTResultMT& resultToFill ) const {
-  // obtain chain decisions, 
+  // obtain chain decisions,
   auto chainsHandle = SG::makeHandle( m_finalChainDecisions );
 
   // for each accepted chain lookup the map of chainID -> ST
   for ( TrigCompositeUtils::DecisionID chain: TrigCompositeUtils::decisionIDs( chainsHandle->at( 0 )) ) {
     auto mappingIter = m_mapping.find( chain );
     // each chain has to have stream
-    if( mappingIter == m_mapping.end() ) { 
+    if( mappingIter == m_mapping.end() ) {
       ATH_MSG_ERROR("Each chain has to have stream associated whereas the " << HLT::Identifier( chain ) << " does not" );
       return StatusCode::FAILURE;
     }
@@ -44,5 +58,5 @@ StatusCode StreamTagMakerTool::fill( HLT::HLTResultMT& resultToFill ) const {
   }
 
   ATH_MSG_DEBUG("Number of streams for event " <<  resultToFill.getStreamTags().size() );
-  return StatusCode::SUCCESS;  
+  return StatusCode::SUCCESS;
 }
diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.h b/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.h
index d3e42b474bb1753f983b6d3719429c587550173c..3debf49a80cdb107ce3a2a05787137b081a7d303 100644
--- a/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.h
+++ b/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.h
@@ -10,6 +10,7 @@
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "TrigOutputHandling/HLTResultMTMakerTool.h"
 #include "DecisionHandling/TrigCompositeUtils.h"
+#include "Gaudi/Parsers/Factory.h" // needed to declare less common Property types
 #include "eformat/StreamTag.h"
 
 /**
@@ -29,7 +30,9 @@ public:
 private:
   SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer> m_finalChainDecisions { this, "ChainDecisions", "UNDEFINED", "Container with final chain decisions"  }; 
 
-  Gaudi::Property<std::map<std::string, std::string>> m_chainToStreamProperty { this, "ChainToStream", {}, "Mapping from the chain name to string name, (temporary solution, will be replaced)"};
+  Gaudi::Property<std::map<std::string, std::string>> m_chainToStreamProperty { this, "ChainToStream", {}, "Mapping from the chain name to string name (temporary solution, will be replaced)"};
+  Gaudi::Property<std::map<std::string, std::vector<uint32_t>>> m_streamSubDets { this, "StreamSubDets", {}, "Mapping from the stream name to subdetector IDs (temporary solution, will be replaced)"};
+  Gaudi::Property<std::map<std::string, std::vector<uint32_t>>> m_streamRobs { this, "StreamRobs", {}, "Mapping from the stream name to ROB IDs (temporary solution, will be replaced)"};
 
   typedef std::map< TrigCompositeUtils::DecisionID, eformat::helper::StreamTag> ChainToStreamMap;
   ChainToStreamMap m_mapping;
diff --git a/Trigger/TrigT1/L1Common/python/__init__.py b/Trigger/TrigT1/L1Common/python/__init__.py
index 74583d364ec2ca794156596c7254d9b234a940c6..10eda52d21555e116affa250b4cc4c7110c820f1 100644
--- a/Trigger/TrigT1/L1Common/python/__init__.py
+++ b/Trigger/TrigT1/L1Common/python/__init__.py
@@ -1,2 +1,2 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
diff --git a/Trigger/TrigT1/L1Common/schema/L1Specifications.xml b/Trigger/TrigT1/L1Common/schema/L1Specifications.xml
index 19196b019c02956bf73db4f8ca559745e139c3b7..16cfc3676b4fb6fc2f154ab14ad2bfd0ac767b73 100644
--- a/Trigger/TrigT1/L1Common/schema/L1Specifications.xml
+++ b/Trigger/TrigT1/L1Common/schema/L1Specifications.xml
@@ -388,7 +388,7 @@
     <CTSpec ns='v1'>
         <name>"MBTSSI_cable"</name> 
         <type>u16_mult</type>
-        <value>2, 9, 2, 0, 11, 1, 9, 3, 0, 11, 1</value>
+        <value>2, 9, 2, 0, 15, 1, 9, 3, 0, 15, 1</value>
         <comment>"number of cables, slot, connector, start, stop"</comment>
     </CTSpec>
 
diff --git a/Trigger/TrigT1/L1Common/scripts/XMLtoHeader.py b/Trigger/TrigT1/L1Common/scripts/XMLtoHeader.py
index 028c1148dd413feff77103397ad325d290bc741d..c294b1daf3b9781e2b8372cdbadc383af0af3c79 100644
--- a/Trigger/TrigT1/L1Common/scripts/XMLtoHeader.py
+++ b/Trigger/TrigT1/L1Common/scripts/XMLtoHeader.py
@@ -1,6 +1,6 @@
 #!/usr/bin/python
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 import os.path
 import sys
 import getopt
diff --git a/Trigger/TrigT1/L1CommonCore/L1CommonCore/CTPdataformatVersion.h b/Trigger/TrigT1/L1CommonCore/L1CommonCore/CTPdataformatVersion.h
index fbb3de24e2b56acc63d1733092d4ccf00454a5cd..26f756eb0577df9964950abc10a40055c4e6cb4a 100644
--- a/Trigger/TrigT1/L1CommonCore/L1CommonCore/CTPdataformatVersion.h
+++ b/Trigger/TrigT1/L1CommonCore/L1CommonCore/CTPdataformatVersion.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #pragma message( "The package L1CommonCore is obsolete and will be removed" )
diff --git a/Trigger/TrigT1/TrigT1BCM/TrigT1BCM/TrigT1BCM.h b/Trigger/TrigT1/TrigT1BCM/TrigT1BCM/TrigT1BCM.h
index feaee5bd694934051548d03bc87d9591b6755eea..8ac64a02162324c44eea3f6e03ce974e6d411a3a 100644
--- a/Trigger/TrigT1/TrigT1BCM/TrigT1BCM/TrigT1BCM.h
+++ b/Trigger/TrigT1/TrigT1BCM/TrigT1BCM/TrigT1BCM.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIG_T1_BCM_H
diff --git a/Trigger/TrigT1/TrigT1BCM/src/TrigT1BCM.cxx b/Trigger/TrigT1/TrigT1BCM/src/TrigT1BCM.cxx
index 4e54e3f326db632f23cff25ee54afb937b4eb28f..0ee162c4b1a1237dac6ca73175d2d67fe6d1a817 100644
--- a/Trigger/TrigT1/TrigT1BCM/src/TrigT1BCM.cxx
+++ b/Trigger/TrigT1/TrigT1BCM/src/TrigT1BCM.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <stdint.h>
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/python/TrigT1CTMonitoringConfig.py b/Trigger/TrigT1/TrigT1CTMonitoring/python/TrigT1CTMonitoringConfig.py
index 931fb0937fa9e0e5340ac40efdf864d21e3f5c93..74e6486a037cf2d37a514c0e372fae63aea7f0d8 100644
--- a/Trigger/TrigT1/TrigT1CTMonitoring/python/TrigT1CTMonitoringConfig.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/python/TrigT1CTMonitoringConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 ## get a handle to the ApplicationManager
 from AthenaCommon.AppMgr import theApp
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CheckItemDeadtimes.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CheckItemDeadtimes.py
index 9f5a60c16dcd4e998a3c1c1fe43908c3fb5f1a59..5e8e49f0551ac8279bd006d4e7696aeb89aefe7d 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CheckItemDeadtimes.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CheckItemDeadtimes.py
@@ -1,6 +1,6 @@
 #!/bin/env python
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 import os, sys, getopt, math
 import CoolHelper
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CoolHelper.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CoolHelper.py
index 4d5a3274533c04bda33af6e87a603259845f2058..d48768a855093a4c9450efcfff70a1494c934e23 100644
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CoolHelper.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/CoolHelper.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 import sys
 from PyCool import cool,coral
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/GetItemOutput.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/GetItemOutput.py
index 1945d37be74464e18498c6eb145ee84ae56aed82..3862015a5362756e828a29b790114da5bb6685d2 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/GetItemOutput.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/GetItemOutput.py
@@ -1,6 +1,6 @@
 #!/bin/env python
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 import os, sys, getopt, math
 import CoolHelper
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadLumiBcid.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadLumiBcid.py
index 346f7d12d71cadaed90046431bac93793eb73527..db881d089ba216df4aae0bdff09fd103aaf8f769 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadLumiBcid.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadLumiBcid.py
@@ -1,6 +1,6 @@
 #!/bin/env python
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 import sys,getopt,os, math
 from PyCool import cool,coral
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadPbmCounters.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadPbmCounters.py
index ea4d7fb7926e2f87f35c26014e2ce19d2d0594ec..13cd7c051a0d115852ba6dd9959170dc519b2d8d 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadPbmCounters.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ReadPbmCounters.py
@@ -1,6 +1,6 @@
 #!/bin/env python
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 import sys,getopt,os, math
 from PyCool import cool,coral
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_plot.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_plot.py
index 3a35c9176ab8214944d019f5911371cea63759d7..7aac9cc05a7d3a3acba5a2d04e4362bc8c8b27c4 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_plot.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_plot.py
@@ -1,6 +1,6 @@
 #!/bin/env python2.5
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 #
 # L1CT crew, Johan.Lundberg@cern.ch, CERN, 2009
 
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_reader.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_reader.py
index da4c12eae738f03b8bd0e340bc410b0aac5fbaad..9689b7eb864c1a56214f36f23ed25a42e220e00d 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_reader.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_cool_reader.py
@@ -1,6 +1,6 @@
 #!/bin/env python
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 #
 # Level 1 Central Trigger crew,
 # Johan.Lundberg@cern.ch, CERN, 2009
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_py.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_py.py
index 9a701e2d20ffb21f4e1da0f57188ed3a0bb3e5a1..340444fbc06cc1777a1fa4ca403fc05bc2fc0daa 100644
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_py.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/busy_py.py
@@ -1,6 +1,6 @@
 #!/bin/env python2.5
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 #
 # Level 1 Central Trigger crew,
 # Johan.Lundberg@cern.ch, CERN, 2009
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/check_ctp_deadtime.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/check_ctp_deadtime.py
index 16bc6fcb038c0443ea4663d64d841f017982e7a7..dee806db49a91de85bbe13a08f1db38386032d3e 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/check_ctp_deadtime.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/check_ctp_deadtime.py
@@ -1,6 +1,6 @@
 #!/bin/env python
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 import sys,getopt,os
 from PyCool import cool,coral
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_plot_lvl1rates.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_plot_lvl1rates.py
index 09247d941260ce2eb4f388aa8e3e3c6c3d5302e9..eec6f4ccd7a7534ec32d6c7a8593ba7aec71fc1f 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_plot_lvl1rates.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_plot_lvl1rates.py
@@ -1,6 +1,6 @@
 #!/bin/env python2.5
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 #
 # L1CT crew, Johan.Lundberg@cern.ch, CERN, 2010
 #
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_livetime.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_livetime.py
index 600fe9f6af846c6a9e4d82083340b6be97b87c95..f0c8498ff371403237fb534d27cccc256e1041e2 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_livetime.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_livetime.py
@@ -1,6 +1,6 @@
 #!/bin/env python
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 # TODO: check for overflows of counters!
 # TODO: option to print out counters instead of rates
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates.py
index e3bd3a4f469028f7abcc816a4fec9c0e56db5bd6..7317016330cf8f8bf089954531086b093f8adc0c 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates.py
@@ -1,6 +1,6 @@
 #!/bin/env python
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 # TODO: check for overflows of counters!
 # TODO: option to print out counters instead of rates
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates_get_lumi.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates_get_lumi.py
index a08ef9320e24016059b12d2b314bef78ba27fe6d..0cd70e61172501d2b72dca8719a9024df589a53a 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates_get_lumi.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/cool_read_lvl1rates_get_lumi.py
@@ -1,6 +1,6 @@
 #!/bin/env python
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 # TODO: check for overflows of counters!
 # TODO: option to print out counters instead of rates
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_plot.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_plot.py
index b6a18e3abde9f84690f22ce49cc05ef83c6908e1..7d72e1fd5a0153db84c2b6db320c6c71fc965617 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_plot.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_plot.py
@@ -1,6 +1,6 @@
 #!/bin/env python2.5
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 #
 # L1CT crew, Johan.Lundberg@cern.ch, CERN, 2009
 
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_reader.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_reader.py
index 5684dcf1f14175f552836dfed88fe23c1516bb92..7afd526a0161b9ec8d22f6f0f6bcd5f5e7123392 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_reader.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_cool_reader.py
@@ -1,6 +1,6 @@
 #!/bin/env python2.5
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 #
 # Level 1 Central Trigger crew,
 # Johan.Lundberg@cern.ch, CERN, 2009
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_py.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_py.py
index 74b770a1a6425c7fcf67d18c917a15e033d0ab1a..9718896b4a457c18c28dd17d2d0411666ad53372 100644
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_py.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_py.py
@@ -1,6 +1,6 @@
 #!/bin/env python2.5
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 #
 # Level 1 Central Trigger crew,
 # Johan.Lundberg@cern.ch, CERN, 2009
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_readconfig.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_readconfig.py
index f433caf668ba138ed8c8929dddff3024e343866b..6c34427bb0dcf23b6e16b132ff46e7549b981b4c 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_readconfig.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpin_readconfig.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python2.5
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 #!/bin/env python2.5
 #
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_plot.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_plot.py
index 3b9cca0a59c092569aab3a3d90c0b32a678ecf7e..ab7844b4ca4c4577bde7d599d938d9b19250060a 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_plot.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_plot.py
@@ -1,6 +1,6 @@
 #!/bin/env python2.5
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 #
 # L1CT crew, Johan.Lundberg@cern.ch, CERN, 2009
 
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_reader.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_reader.py
index 08f526b42a09d2e6cd5d87e6d76f66f579655998..37e6bebbe6de026d37de1033fcede8a3b2ad8721 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_reader.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_cool_reader.py
@@ -1,6 +1,6 @@
 #!/bin/env python2.5
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 #
 # Level 1 Central Trigger crew,
 # Johan.Lundberg@cern.ch, CERN, 2009
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_py.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_py.py
index 65d028d1900d3d72f57329082cd47c1331bee9cc..42ae2fa47a27ec3affad4a647620a0e4320e6db8 100644
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_py.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/ctpmon_py.py
@@ -1,6 +1,6 @@
 #!/bin/env python2.5
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 #
 # Level 1 Central Trigger crew,
 # Johan.Lundberg@cern.ch, CERN, 2009
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/fillLVL1histograms.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/fillLVL1histograms.py
index b587f10ff5e79728da4e0cc68468564ca786076e..193e730c7e72fa25f2d3e35a0ba7a7053f75515f 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/fillLVL1histograms.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/fillLVL1histograms.py
@@ -1,6 +1,6 @@
 #!/bin/env python
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 # set the folder description for the trigger schema (not set by default)
 
 import sys,getopt,os
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_RunStatus.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_RunStatus.py
index 82c51b71f1fa80e5d4f4b56485550987766cb961..f8a86ae41794303168e6103043ffdb252a4be818 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_RunStatus.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_RunStatus.py
@@ -1,6 +1,6 @@
 #!/bin/env python2.5
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 ##
 ## Central Trigger Crew, Johan Lundberg, 2009
 #
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_lb2time.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_lb2time.py
index 443e015f2dc9317cd1a225edcb084b74c2225c13..bddb61ae3ca876be5d59d002b22752a352aa96a2 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_lb2time.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_lb2time.py
@@ -1,6 +1,6 @@
 #!/bin/env python2.5
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 #
 # Level 1 Central Trigger crew,
 # Johan.Lundberg@cern.ch, CERN, 2009
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_read_counter_conf.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_read_counter_conf.py
index c50e01fa9ded33e05a41b0d57c3e56907cca26b3..3924bc02d38ce0932fe47ffec7bd6b927133d12d 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_read_counter_conf.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_read_counter_conf.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python2.5
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 #!/bin/env python2.5
 #
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_runNr.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_runNr.py
index a6566e0b88a4cebce39026de425a5a8b3a3b5b08..3fb5176c12a8d502ffd156a89c21fb4e4ef37421 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_runNr.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ct_runNr.py
@@ -1,6 +1,6 @@
 #!/bin/env python2.5
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 ##
 ## Central Trigger Crew, Johan Lundberg, 2009
 #
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ctpy.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ctpy.py
index 45711ea62f58d46e426830b2f9e0fa3ec3df19d8..b81bdfec0e14b2c1c8c6379153ca7b719c1e90a0 100644
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ctpy.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/l1ctpy.py
@@ -1,6 +1,6 @@
 #!/bin/env python2.5
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 #
 # Level 1 Central Trigger crew,
 # Johan.Lundberg@cern.ch, CERN, 2009
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/read_bunchgroups.py b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/read_bunchgroups.py
index 014d72772fbbfd96b02c772f267863c1b6ebd315..9e046a1044f4cc9a1f9b4e52501d0f588f91d6b3 100755
--- a/Trigger/TrigT1/TrigT1CTMonitoring/scripts/read_bunchgroups.py
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/scripts/read_bunchgroups.py
@@ -1,6 +1,6 @@
 #!/bin/env python
 
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 import sys,getopt,os
 from PyCool import cool,coral
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.cxx b/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.cxx
index 393d6735bb1a214a85747833d67c58c44d4673dc..a96097d02bd81bbec320087412dabd77be331d01 100644
--- a/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.cxx
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /// Gaudi includes
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.h b/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.h
index 984bac770cdcdf6ac5d5a8766ce044a306c81d38..850741fe7d7f40bd31a3051146881284141cc9c8 100644
--- a/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.h
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/src/BSMonitoring.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1_CTMONITORING_BSMONITORING_H
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.cxx b/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.cxx
index ab65afc805e49fba230d5a2925b218cdfe5f485d..84ba68154b1702e0741e7501a57a6263e71a919b 100644
--- a/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.cxx
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // STL includes:
diff --git a/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.h b/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.h
index 248e1d5eac194eb58524fb81ad4f9c6b2e8e6b27..705cb4aa6842ec1269a65a44ee928002dcd517f8 100644
--- a/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.h
+++ b/Trigger/TrigT1/TrigT1CTMonitoring/src/DeriveSimulationInputs.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1CTMONITORING_DERIVESIMULATIONINPUTS_H
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/BunchGroupTrigger.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/BunchGroupTrigger.h
index a075545bcfc05a6af5361efbc3fcf91544741ac3..06f70f36d9d0b71bd13b5af395c63993980c6533 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/BunchGroupTrigger.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/BunchGroupTrigger.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1CTP_BUNCH_GROUP_TRIGGER_H
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPConstants.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPConstants.h
index b4b98403ee51082c1c6dc89280f9788adcd7a7c1..c2c28ea07f2a314fe1dec4a707a01734acabd052 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPConstants.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPConstants.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPDataDumper.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPDataDumper.h
index 194620516b61be59bba6722903ccb165fb1a2399..6b6ee13bdd9b00ed12f6956d5ef5b06ff5a7cf04 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPDataDumper.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPDataDumper.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPSimulation.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPSimulation.h
index 1a8efae5d2d07d0c681d1447a18fd1cc07524fcb..207568a851c08a1ead38eab24ae2fd8ed629d8d0 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPSimulation.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPSimulation.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItem.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItem.h
index 0c5ba3a76c76f1be0d9805485662e691c6324c0d..70d98fe340c9a52c62a043bf5e1fd598e3fe9df7 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItem.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItem.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItemNode.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItemNode.h
index 1a2ffc1ca139991d0946a4ed24ac2214eee6d60e..3d21f009acb3929677b866dcf08500989e6819ac 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItemNode.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerItemNode.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerThreshold.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerThreshold.h
index 14e0f8bc5d1a77decbc3567942e8b0440721e824..a38508a79b7b0add0cc138d7d9cb67f69dbc2760 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerThreshold.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPTriggerThreshold.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPUtil.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPUtil.h
index 4c265b3b31709b43c7d8e02026eebbf786896c02..0977e0cd3f478b7a098ca387d9553ab37e6193b2 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPUtil.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CTPUtil.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CustomBit.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CustomBit.h
index fad9b8be76ae3ea28889f829c4924b275b0e4498..1ed211e19a5b59e600fc3fa74019bea7b6cf873a 100644
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CustomBit.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/CustomBit.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/EventInfo.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/EventInfo.h
index 6024c1f98192d17a1bae02e45716756a1000753d..08cfed385cfe3cdb636ea1e11bd6d16b8f53598b 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/EventInfo.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/EventInfo.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1CTP_EVENTINFO_H
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ISpecialTrigger.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ISpecialTrigger.h
index 0451dab8a92ceea36407e98f43776911154f9fdc..7fff61f754075020c484bb3f9fb03d7f3c906c8e 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ISpecialTrigger.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ISpecialTrigger.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1CTP_ISPECIAL_TRIGGER_H
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ItemMap.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ItemMap.h
index 4de5e65570434d48ea7ca877d65b523957f63823..190e64f1c9acfdd466b5a13c6b927e8c224f458e 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ItemMap.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ItemMap.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgLogger.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgLogger.h
index 27335d93268c09aa4504f0057334562f0702dfbf..55bcaa610095d42fa01f6cf540b1a9cde0472ec4 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgLogger.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgLogger.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1CTP_MSGLOGGER_H
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgWriter.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgWriter.h
index ffe7912a1a7949b507a19b3d72e82ac4891de4f7..35f1c1f00e8e01b94f0bd59d2d369528ca34051e 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgWriter.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/MsgWriter.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1CTP_MSGWRITER_H
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/PrescaledClockTrigger.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/PrescaledClockTrigger.h
index ef76bac1843fd5b0b0e5e195ae5be6831d97771a..6488c87406f4c53e8505989023e53fd118225b71 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/PrescaledClockTrigger.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/PrescaledClockTrigger.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1CTP_PRESCALED_CLOCK_TRIGGER_H
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/RandomTrigger.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/RandomTrigger.h
index 835684ff8727ac0b404b5c857ea5274b4e6dc1d5..0788d4f3100af4a6ebecb8c3827dca07ba4ce004 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/RandomTrigger.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/RandomTrigger.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1CTP_RANDOM_TRIGGER_H
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ResultBuilder.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ResultBuilder.h
index 8042cfead0f599b7b176623c05f81b9ddd374b7d..28aa9c214e3cd991c9f4457f70a9da6f6809c038 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ResultBuilder.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ResultBuilder.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/SpecialTrigger.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/SpecialTrigger.h
index a748c2b712a18c9e0495957a568b7874eca6e7a0..b5036cd5d0509b0254c381a93a1e92db3c32d499 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/SpecialTrigger.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/SpecialTrigger.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1CTP_SPECIAL_TRIGGER_H
diff --git a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ThresholdMap.h b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ThresholdMap.h
index 9f0e04cf83a4cd094955494816514c6edb7a8fdc..169cf5efe62ea64b0f50e1a53ebc2fb02fea07b5 100755
--- a/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ThresholdMap.h
+++ b/Trigger/TrigT1/TrigT1CTP/TrigT1CTP/ThresholdMap.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/doc/packagedoc.h b/Trigger/TrigT1/TrigT1CTP/doc/packagedoc.h
index 95c2e65b7136a161862e4b090e890befb789fd13..c4a3af78178f418d4d270bd0b2f2f6407bba4ce9 100644
--- a/Trigger/TrigT1/TrigT1CTP/doc/packagedoc.h
+++ b/Trigger/TrigT1/TrigT1CTP/doc/packagedoc.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPAlgorithmConfig.py b/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPAlgorithmConfig.py
index 108dd5f3531f0e63e493289545f61e579b24209a..fb8ab68c1502933bd502adae19903c5ca3ab9ba1 100755
--- a/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPAlgorithmConfig.py
+++ b/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPAlgorithmConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 ## get a handle to the default top-level algorithm sequence
 from AthenaCommon.AlgSequence import AlgSequence
diff --git a/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPConfig.py b/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPConfig.py
index 7a377c7490f92fa1be0d50e5524ebb5ec49d6074..3dbfcce895319355cc7deb6061f45e23dcbb5356 100755
--- a/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPConfig.py
+++ b/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 
 from TrigT1CTP.TrigT1CTPConf import *
diff --git a/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPMonitoring.py b/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPMonitoring.py
index f4e63f7b82b693902294b09645a29fc4a9ee30ce..055a168211b9425f20ed92345e51b088fb65bb71 100644
--- a/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPMonitoring.py
+++ b/Trigger/TrigT1/TrigT1CTP/python/TrigT1CTPMonitoring.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 from TrigMonitorBase.TrigGenericMonitoringToolConfig import defineHistogram, TrigGenericMonitoringToolConfig
 
diff --git a/Trigger/TrigT1/TrigT1CTP/python/__init__.py b/Trigger/TrigT1/TrigT1CTP/python/__init__.py
index 4be847f2362e42aceef1ec4bf9c26ead3734b124..a06fe23f11180c418edab295e19512ef9b1bcc8d 100755
--- a/Trigger/TrigT1/TrigT1CTP/python/__init__.py
+++ b/Trigger/TrigT1/TrigT1CTP/python/__init__.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 #
 # $Id: __init__.py,v 1.4 2008-06-10 13:48:37 efeld Exp $
diff --git a/Trigger/TrigT1/TrigT1CTP/src/BunchGroupTrigger.cxx b/Trigger/TrigT1/TrigT1CTP/src/BunchGroupTrigger.cxx
index f37598542d0623d71fc3309c53a38e4b91e1c3c0..1eac40d958e0596f02a1414e06c714725386afc8 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/BunchGroupTrigger.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/BunchGroupTrigger.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CTP/BunchGroupTrigger.h"
diff --git a/Trigger/TrigT1/TrigT1CTP/src/CTPConstants.cxx b/Trigger/TrigT1/TrigT1CTP/src/CTPConstants.cxx
index d08cd7297605591341950c4448f5d4162a6acfbd..0be2fb746310851998b9f4ab5db85f0ad6a743b7 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/CTPConstants.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/CTPConstants.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/src/CTPDataDumper.cxx b/Trigger/TrigT1/TrigT1CTP/src/CTPDataDumper.cxx
index 2a2d38f071e242a0b9138601b57408e007a26d7f..53e0173335215760a899a47e8da61872e84fe7d0 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/CTPDataDumper.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/CTPDataDumper.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/src/CTPSimulation.cxx b/Trigger/TrigT1/TrigT1CTP/src/CTPSimulation.cxx
index 56a9dc823006e23f27315f2911af1c3faf25fb7d..84aefde472f8f45fa5ad0376fb24fff12ef425bc 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/CTPSimulation.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/CTPSimulation.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // STL includes:
diff --git a/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItem.cxx b/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItem.cxx
index 38907a1d54d690b0587ada0cb9a65eeb052e88e5..beab386acb39f6106ded24da0060496daedc686a 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItem.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItem.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItemNode.cxx b/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItemNode.cxx
index ddf8a31c49a1a6c68bf8992ad59ef365778e2db4..976bd6e964a3ba3c67be2d53f222ede35dd29009 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItemNode.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerItemNode.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <cassert>
diff --git a/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerThreshold.cxx b/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerThreshold.cxx
index fef7a55154232b51bbf98f7f62b8557330595602..b54a11726d121b44c4bb0b96ceafbbc0d6c63619 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerThreshold.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/CTPTriggerThreshold.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/src/CTPUtil.cxx b/Trigger/TrigT1/TrigT1CTP/src/CTPUtil.cxx
index 3781ab340583b3197a051bc46393dc21638e8873..0c39ac29c5348cf840a62e0e0abfec6d187d85b4 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/CTPUtil.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/CTPUtil.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/src/CustomBit.cxx b/Trigger/TrigT1/TrigT1CTP/src/CustomBit.cxx
index 2917a586fd057badbe6eff95b19037fa92f8d22b..01af8dd4e09af80e48501a050779a24b0e6c0b37 100644
--- a/Trigger/TrigT1/TrigT1CTP/src/CustomBit.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/CustomBit.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/src/EventInfo.cxx b/Trigger/TrigT1/TrigT1CTP/src/EventInfo.cxx
index 23b8654433a4ba5ded1c18e662594b5cbdb9b638..7b14e7182575c11953be7788998f2c0697b2233c 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/EventInfo.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/EventInfo.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/src/ItemMap.cxx b/Trigger/TrigT1/TrigT1CTP/src/ItemMap.cxx
index 498f0daf5bd1145c6f4ca89e5b284caadccff7cd..2d7ce375ec549cdf2aecba5a80747407ec8b802a 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/ItemMap.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/ItemMap.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/src/MsgLogger.cxx b/Trigger/TrigT1/TrigT1CTP/src/MsgLogger.cxx
index 31ce6c142150d7172e172b35c96788e3066f8585..f8ca0ad3698413038c5f0d0195e98b7eb711cb06 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/MsgLogger.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/MsgLogger.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/src/MsgWriter.cxx b/Trigger/TrigT1/TrigT1CTP/src/MsgWriter.cxx
index 17d5c504f0e8ab38e6a794bc9e3e304f4f097dd7..6fe0ab253c07f5b9296af0f6ad0d9eb294ecbac2 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/MsgWriter.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/MsgWriter.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/src/PrescaledClockTrigger.cxx b/Trigger/TrigT1/TrigT1CTP/src/PrescaledClockTrigger.cxx
index c0d592f07ab1db8ce9bd69304d3c0acbf73fe23a..344f88086da30c63fc53803a2dbbf6267b885bbd 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/PrescaledClockTrigger.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/PrescaledClockTrigger.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/src/RandomTrigger.cxx b/Trigger/TrigT1/TrigT1CTP/src/RandomTrigger.cxx
index 9616abad5ed2a6984d13be64a5c1ada5a27de29f..fadf9b16842ffed5dd8749dd5667b5a83c360266 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/RandomTrigger.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/RandomTrigger.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/src/ResultBuilder.cxx b/Trigger/TrigT1/TrigT1CTP/src/ResultBuilder.cxx
index 621142d74bad9874ea6d24c5c49d30a2d7b9618e..d21739c6c72d3cfa440ab8860287138fd2c211f6 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/ResultBuilder.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/ResultBuilder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CTP/src/SpecialTrigger.cxx b/Trigger/TrigT1/TrigT1CTP/src/SpecialTrigger.cxx
index d5bfbde344bf79bb46cfbeb45f68ca44abd88355..cc1ba5cbacfea9ef97c098c360f8e46d003231cf 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/SpecialTrigger.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/SpecialTrigger.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CTP/SpecialTrigger.h"
diff --git a/Trigger/TrigT1/TrigT1CTP/src/ThresholdMap.cxx b/Trigger/TrigT1/TrigT1CTP/src/ThresholdMap.cxx
index b31fc4d9273871d4b5cdaabe00688707683a1b6d..3ca545def376d9bcacad2ba9b099655510893c48 100755
--- a/Trigger/TrigT1/TrigT1CTP/src/ThresholdMap.cxx
+++ b/Trigger/TrigT1/TrigT1CTP/src/ThresholdMap.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1CaloSim/TrigT1CaloSim/OverlayTTL1.h b/Trigger/TrigT1/TrigT1CaloSim/TrigT1CaloSim/OverlayTTL1.h
index f369e6041aedf94dc1a7a53a547a243c7d2c77ec..70ba0b2c7cccbfe0dfc23aa642554ba97b0264e7 100644
--- a/Trigger/TrigT1/TrigT1CaloSim/TrigT1CaloSim/OverlayTTL1.h
+++ b/Trigger/TrigT1/TrigT1CaloSim/TrigT1CaloSim/OverlayTTL1.h
@@ -68,16 +68,19 @@ private:
   SG::ReadHandleKey<LArTTL1Container> m_bkgEmTTL1Key{this,"BkgEmTTL1Key","OriginalEvent_SG+LArTTL1EM","ReadHandleKey for Background Input EM LArTTL1Container"};
   SG::ReadHandleKey<LArTTL1Container> m_bkgHadTTL1Key{this,"BkgHadTTL1Key","OriginalEvent_SG+LArTTL1HAD","ReadHandleKey for Background Input Had LArTTL1Container"};
   SG::ReadHandleKey<TileTTL1Container> m_bkgTileTTL1Key{this,"BkgTileTTL1Key","OriginalEvent_SG+TileTTL1Cnt","ReadHandleKey for Background Input TileTTL1Container"};
+  SG::ReadHandleKey<TileTTL1Container> m_bkgTileMBTSTTL1Key{this,"BkgTileMBTSTTL1Key","OriginalEvent_SG+TileTTL1MBTS","ReadHandleKey for Background Input MBTS TileTTL1Container"};
 
   // locations of signal TTL1 data
   SG::ReadHandleKey<LArTTL1Container> m_signalEmTTL1Key{this,"SignalEmTTL1Key","BkgEvent_0_SG+LArTTL1EM","ReadHandleKey for Signal Input EM LArTTL1Container"};
   SG::ReadHandleKey<LArTTL1Container> m_signalHadTTL1Key{this,"SignalHadTTL1Key","BkgEvent_0_SG+LArTTL1HAD","ReadHandleKey for Signal Input Had LArTTL1Container"};
   SG::ReadHandleKey<TileTTL1Container> m_signalTileTTL1Key{this,"SignalTileTTL1Key","BkgEvent_0_SG+TileTTL1Cnt","ReadHandleKey for Signal Input TileTTL1Container"};
+  SG::ReadHandleKey<TileTTL1Container> m_signalTileMBTSTTL1Key{this,"SignalTileMBTSTTL1Key","BkgEvent_0_SG+TileTTL1MBTS","ReadHandleKey for Signal Input MBTS TileTTL1Container"};
 
   // locations of output TTL1 data
   SG::WriteHandleKey<LArTTL1Container> m_outputEmTTL1Key{this,"OutputEmTTL1Key","StoreGateSvc+LArTTL1EM","WriteHandleKey for Output EM LArTTL1Container"};
   SG::WriteHandleKey<LArTTL1Container> m_outputHadTTL1Key{this,"OutputHadTTL1Key","StoreGateSvc+LArTTL1HAD","WriteHandleKey for Output Had LArTTL1Container"};
   SG::WriteHandleKey<TileTTL1Container> m_outputTileTTL1Key{this,"OutputTileTTL1Key","StoreGateSvc+TileTTL1Cnt","WriteHandleKey for Output TileTTL1Container"};
+  SG::WriteHandleKey<TileTTL1Container> m_outputTileMBTSTTL1Key{this,"OutputTileMBTSTTL1Key","StoreGateSvc+TileTTL1MBTS","WriteHandleKey for Output MBTS TileTTL1Container"};
 
   /** overlay amplitudes from other TTL1 */
   void groupLArTowers(SG::ReadHandle<LArTTL1Container>& towers, std::map<Identifier, std::vector<const LArTTL1*>> &towerMap) const;
@@ -85,7 +88,7 @@ private:
 
   /** specialised overlay functions */
   StatusCode overlayLArTTL1(const SG::ReadHandleKey<LArTTL1Container> &bkgKey, const SG::ReadHandleKey<LArTTL1Container> &signalKey, const SG::WriteHandleKey<LArTTL1Container> &outputKey, const std::string &label);
-  StatusCode overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Container> &bkgKey, const SG::ReadHandleKey<TileTTL1Container> &signalKey, const SG::WriteHandleKey<TileTTL1Container> &outputKey);
+  StatusCode overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Container> &bkgKey, const SG::ReadHandleKey<TileTTL1Container> &signalKey, const SG::WriteHandleKey<TileTTL1Container> &outputKey, const std::string &label);
 };
 
 } // namespace LVL1
diff --git a/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py b/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py
index 015c45f76e5f8ce310455f20c9783dc1c676f34a..541858b2cebf366945492e80a19e3a5ec8cadc8c 100644
--- a/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py
+++ b/Trigger/TrigT1/TrigT1CaloSim/python/OverlayTTL1Config.py
@@ -5,9 +5,6 @@ from AthenaCommon import CfgMgr
 def getTTL1Overlay(name="OverlayTTL1", **kwargs):
     from OverlayCommonAlgs.OverlayFlags import overlayFlags
 
-    # Tile TTL1 overlay is currently not needed as Tile trigger towers are created from the overlaid container
-    enableTileTTL1Overlay = False
-
     kwargs.setdefault("BkgEmTTL1Key", overlayFlags.dataStore() + "+LArTTL1EM");
     kwargs.setdefault("SignalEmTTL1Key", overlayFlags.evtStore() + "+LArTTL1EM");
     kwargs.setdefault("OutputEmTTL1Key", overlayFlags.outputStore() + "+LArTTL1EM");
@@ -16,13 +13,12 @@ def getTTL1Overlay(name="OverlayTTL1", **kwargs):
     kwargs.setdefault("SignalHadTTL1Key", overlayFlags.evtStore() + "+LArTTL1HAD");
     kwargs.setdefault("OutputHadTTL1Key", overlayFlags.outputStore() + "+LArTTL1HAD");
 
-    if enableTileTTL1Overlay:
-        kwargs.setdefault("BkgTileTTL1Key", overlayFlags.dataStore() + "+TileTTL1Cnt");
-        kwargs.setdefault("SignalTileTTL1Key", overlayFlags.evtStore() + "+TileTTL1Cnt");
-        kwargs.setdefault("OutputTileTTL1Key", overlayFlags.outputStore() + "+TileTTL1Cnt");
-    else:
-        kwargs.setdefault("BkgTileTTL1Key", "");
-        kwargs.setdefault("SignalTileTTL1Key", "");
-        kwargs.setdefault("OutputTileTTL1Key", "");
+    kwargs.setdefault("BkgTileTTL1Key", overlayFlags.dataStore() + "+TileTTL1Cnt");
+    kwargs.setdefault("SignalTileTTL1Key", overlayFlags.evtStore() + "+TileTTL1Cnt");
+    kwargs.setdefault("OutputTileTTL1Key", overlayFlags.outputStore() + "+TileTTL1Cnt");
+
+    kwargs.setdefault("BkgTileMBTSTTL1Key", overlayFlags.dataStore() + "+TileTTL1MBTS");
+    kwargs.setdefault("SignalTileMBTSTTL1Key", overlayFlags.evtStore() + "+TileTTL1MBTS");
+    kwargs.setdefault("OutputTileMBTSTTL1Key", overlayFlags.outputStore() + "+TileTTL1MBTS");
 
     return CfgMgr.LVL1__OverlayTTL1(name, **kwargs)
diff --git a/Trigger/TrigT1/TrigT1CaloSim/src/OverlayTTL1.cxx b/Trigger/TrigT1/TrigT1CaloSim/src/OverlayTTL1.cxx
index 5e2d74fcad98bd11493380bb58286021a3118d57..a641309a9614863db947b26e70ddee725a8d623b 100644
--- a/Trigger/TrigT1/TrigT1CaloSim/src/OverlayTTL1.cxx
+++ b/Trigger/TrigT1/TrigT1CaloSim/src/OverlayTTL1.cxx
@@ -23,7 +23,7 @@ StatusCode OverlayTTL1::initialize()
 {
   ATH_MSG_DEBUG("Initialising");
 
-  // StoreGate keys
+  // StoreGate keys for LAr
   ATH_CHECK( m_bkgEmTTL1Key.initialize() );
   ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_bkgEmTTL1Key);
   ATH_CHECK( m_bkgHadTTL1Key.initialize() );
@@ -37,13 +37,19 @@ StatusCode OverlayTTL1::initialize()
   ATH_CHECK( m_outputHadTTL1Key.initialize() );
   ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_outputHadTTL1Key);
 
-  // Tile can be disabled
-  ATH_CHECK( m_bkgTileTTL1Key.initialize(!m_bkgTileTTL1Key.key().empty()) );
+  // StoreGate keys for Tile
+  ATH_CHECK( m_bkgTileTTL1Key.initialize() );
   ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_bkgTileTTL1Key);
-  ATH_CHECK( m_signalTileTTL1Key.initialize(!m_signalTileTTL1Key.key().empty()) );
+  ATH_CHECK( m_bkgTileMBTSTTL1Key.initialize() );
+  ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_bkgTileMBTSTTL1Key);
+  ATH_CHECK( m_signalTileTTL1Key.initialize() );
   ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_signalTileTTL1Key);
-  ATH_CHECK( m_outputTileTTL1Key.initialize(!m_outputTileTTL1Key.key().empty()) );
+  ATH_CHECK( m_signalTileMBTSTTL1Key.initialize() );
+  ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_signalTileMBTSTTL1Key);
+  ATH_CHECK( m_outputTileTTL1Key.initialize() );
   ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_outputTileTTL1Key);
+  ATH_CHECK( m_outputTileMBTSTTL1Key.initialize() );
+  ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_outputTileMBTSTTL1Key);
 
   return StatusCode::SUCCESS;
 }
@@ -54,9 +60,8 @@ StatusCode OverlayTTL1::execute()
   ATH_CHECK( overlayLArTTL1(m_bkgEmTTL1Key, m_signalEmTTL1Key, m_outputEmTTL1Key, "EM") );
   ATH_CHECK( overlayLArTTL1(m_bkgHadTTL1Key, m_signalHadTTL1Key, m_outputHadTTL1Key, "Hadronic") );
 
-  if (!m_outputTileTTL1Key.key().empty()) {
-    ATH_CHECK( overlayTileTTL1(m_bkgTileTTL1Key, m_signalTileTTL1Key, m_outputTileTTL1Key) );
-  }
+  ATH_CHECK( overlayTileTTL1(m_bkgTileTTL1Key, m_signalTileTTL1Key, m_outputTileTTL1Key, "") );
+  ATH_CHECK( overlayTileTTL1(m_bkgTileMBTSTTL1Key, m_signalTileMBTSTTL1Key, m_outputTileMBTSTTL1Key, "MBTS") );
 
   return StatusCode::SUCCESS;
 }
@@ -178,7 +183,7 @@ StatusCode OverlayTTL1::overlayLArTTL1(const SG::ReadHandleKey<LArTTL1Container>
   return StatusCode::SUCCESS;
 }
 
-StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Container> &bkgKey, const SG::ReadHandleKey<TileTTL1Container> &signalKey, const SG::WriteHandleKey<TileTTL1Container> &outputKey)
+StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Container> &bkgKey, const SG::ReadHandleKey<TileTTL1Container> &signalKey, const SG::WriteHandleKey<TileTTL1Container> &outputKey, const std::string &label)
 {
   // setup map
   std::map<Identifier, std::vector<const TileTTL1*>> towerMap;
@@ -186,7 +191,7 @@ StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Containe
   // Find Tile towers in TES
   SG::ReadHandle<TileTTL1Container> bkgTowers(bkgKey);
   if (!bkgTowers.isValid()) {
-    ATH_MSG_ERROR("Could not get background TileTTL1Container container " << bkgTowers.name() << " from store " << bkgTowers.store());
+    ATH_MSG_ERROR("Could not get background " << label << " TileTTL1Container container " << bkgTowers.name() << " from store " << bkgTowers.store());
     return StatusCode::FAILURE;
   }
 
@@ -194,7 +199,7 @@ StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Containe
   /// So here we retrieve those, match them up and sum their amplitudes
   SG::ReadHandle<TileTTL1Container> signalTowers(signalKey);
   if (!signalTowers.isValid()) {
-    ATH_MSG_ERROR("Could not get signal TileTTL1Container container " << signalTowers.name() << " from store " << signalTowers.store());
+    ATH_MSG_ERROR("Could not get signal " << label << " TileTTL1Container container " << signalTowers.name() << " from store " << signalTowers.store());
     return StatusCode::FAILURE;
   }
 
@@ -205,7 +210,7 @@ StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Containe
   SG::WriteHandle<TileTTL1Container> outputContainer(outputKey);
   // Register the TTL1 container in the TES
   ATH_CHECK( outputContainer.record(std::make_unique<TileTTL1Container>()) );
-  ATH_MSG_DEBUG( "Output TileTTL1Container registered successfully (" << outputKey.key() << ")" );
+  ATH_MSG_DEBUG( "Output " << label << " TileTTL1Container registered successfully (" << outputKey.key() << ")" );
 
   // Then the process Tile TTL1 collection
   for (std::map<Identifier, std::vector<const TileTTL1*>>::iterator itMap = towerMap.begin(); itMap != towerMap.end(); ++itMap) {
@@ -217,7 +222,7 @@ StatusCode OverlayTTL1::overlayTileTTL1(const SG::ReadHandleKey<TileTTL1Containe
       if (mergedAmps.size() == 0) mergedAmps = (*it)->fsamples();
       else {
         std::vector<float> amps = (*it)->fsamples();
-        if (amps.size() != mergedAmps.size()) ATH_MSG_WARNING("Tile vectors have different lengths: " << amps.size() << ", " << mergedAmps.size()); 
+        if (amps.size() != mergedAmps.size()) ATH_MSG_WARNING("Tile " << label << " vectors have different lengths: " << amps.size() << ", " << mergedAmps.size()); 
         else for (unsigned int i = 0; i < amps.size(); ++i) mergedAmps[i] += amps[i];     
       }
     }
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.cxx
index b7277feb59c7e184f2f318e8b28f29ad38fef283..2918d71d770e0341feed35e4e7f6a65556066411 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.h
index 52984913a0538cdfc1aed7016b55b3db036ab9ee..24a2df3e1e9de9adc4a04852d9f53631e7f9e748 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMCPHitsCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.cxx
index 72e5bd60793b62a82988b395eede82b2b7469a53..b9edeb443ea560be2b83465712f7f32b39fde359 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.h
index 9deb75e80c5500f5b87c8ce65629d67d4116cb7b..c57fad3d0e5245337b86683cc9561b9704dba4a8 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMEtSumsCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.cxx
index dd74f6c1d907b66825d9f9c5acad10ac1121a1df..9a5f04fde4feb9ebb53d002bd975af7a5261bc7b 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.h
index 078f1ace1edde363c1d5a22fe7eb1012b023f4e7..861729471ca7838d85858b5146571c33a8143bfc 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMJetHitsCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.cxx
index 16809081b94e120aa0bf7a590f800fcb16207076..c735340621f275aa16f4896c3a91c1c62574782f 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.h
index 369d7b741e125b70f31cabbe92293b524c11b139..e6069bb2a28aa8022e0f200a7d47adb55103405f 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMMRoICnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.cxx
index 0c58f9da53ab217fa8525723b6fd3ded47d67719..818fd2825e0d87d25b0fdb88e173d5ddbe3e4d59 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.h
index d670739b79e71b93e72e4eb0cb7c00467bdb0bf8..50341bf347d09cb0c05ee4e0a75e5a0e3be03914 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPHitsCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.cxx
index d135e56cb52164c65b30f5ad8bb4fd6c69c2d270..fc9e17b348e7b2cbaa6539ff004e33ee99d5916e 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.h
index 6201e8a3edf5ab94883fd09b993d0b45217a78ab..4ce671c54d29c9ee3f34db22425987b863d6ae14 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXCPTobCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.cxx
index 6935116d0f184c214b82d699f2e2b7bb98b4806f..3a59d61506fa3a92b72491307b3e35d7919b5c0a 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.h
index 987e579b0c33c74c011c9fdd3a2b18adbb08f972..476db70e565e028529b5daad12875041f6c593fa 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXEtSumsCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.cxx
index 9f26a223f6059edb94fdbf843793ca70c76e6498..2c0c9b4d2947f46bc4f5bb6626d1744427a9c6d6 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.h
index c80918b48423e33df25406941016297257d97060..8a585292967aee7426498ac91e12a5d418ce3bf0 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetHitsCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.cxx
index 6c43f9f66e2c5eca26292f35523bd0868152b9f5..1cc4b8f3c158d63c3102c11d4b5bc823699b28ef 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.h
index c71e09d83677eafbaa0cc6711227ba745efd960c..d4dd9643b0db85267b80c59bd66600cae12ada4f 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXJetTobCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.cxx
index 13fbd106fcc264a342b17af4499548ea7abe63a7..34de049b3f897d401c0b544fdda2221ce6b962f6 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.h
index d603c74cf317e7cdd91fee73fe9536db371532a5..0a08261f9ce6a48ae45f628d9b88b74fbd90fa52 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CMXRoICnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.cxx
index bab4346292c0d7aa168a4e84e4424e2612042dbe..53da59042cf9a3852b69b892c140133366fc2e93 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.h
index 34d04eca5676fbf60b063b04c44b6707559fda67..ee0f545e984ffd64ca23f15a8939f0dfb4e92684 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMHitsCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.cxx
index 1270553c4bd97abbdb8fa1b6796562b9764ac74e..2e1509922ad14d9b1046539dd58c604da1999b30 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.h
index e2880197ffc8c4ad96bc81641c674cc487a2ce86..cc03fbc3ee9051c27b17b2408b92833b3f1034c7 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMRoICollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.cxx
index b11d0c24a8d85b16fa79e2252481842270fd10a9..1526ec5792d1a2b638cddb576ade23410ce4e37c 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.h
index 8242a053210b70808b1499d3a828cc6ad9e27562..f001f973067de22604cf23587ad46e206e6f276c 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTobRoICollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.cxx
index 909a77d70c788352ab45e749434859b9b7dc10af..96fb207c3278b6efe382f8f55abbd1f8d5069257 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.h
index 4d107c15578c7aa185413a85688fcbcf506099dc..584d7e3caca87a29639ee7a208633c0689d2653c 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CPMTowerCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.cxx
index 9e336d3065240af5c6c73603f1bf27a3f73c90c6..ca4ff0f73ee4c30f27c3e534f510e2d24b0eb35c 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.h
index 60ea8949bcac4f329c3b1d43d72edc797171aacb..75f5634be0f5e9ad9faa139043d1e4950c5a8447 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/CTP_RDOCnv.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1EVENTATHENAPOOL_CTP_RDOCNV_H
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.cxx
index 45fe8c6643f30a90984b3f66e3bcc02b540af417..3f28f7530ba2b84e1286cd44c4597cb6688bbe97 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.h
index ce21a8a2279533b0390643446742074509060ea9..9f35b83ab93b13e706156b2ff2e0052ebc3d2d6d 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMEtSumsCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.cxx
index 8f99e9ac7ebc374fccbeee79bbb20d2d29d88d8c..473aaa19fa8a3bf9c639d533db6c4a86b7b9461f 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.h
index b32842c5f0fd205cb8cc5d2144a7153b1310b689..5b55426f1f47b5d92115fe617a5495c99efd5150 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMHitsCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.cxx
index d30cc1c80e52c0e2aba083c7dc72752fdbfa2e75..1fe3e548caafbd5a0307e817f260f5f039783c46 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.h
index 8f86a0543af5defe59c0dcc77501be4a95f96817..b123bf6bd3ade9e9a3a9c80d6c95dc6fa4a9c113 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMRoICollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.cxx
index 84480ba005f9bc52e51fc8bc5a23e1bf09bacdf0..15208fd44d506720dfd56e61329b84edf49b5ad1 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.h
index caed626a5a4b3205dca8ba9534ccc4039c024a2b..9f252883de0ee86687e13bd7d8dc503a72e1d6b3 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JEMTobRoICollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.cxx
index 920c859ba7f221579cb30aea1c06c0d7f64067df..3b7baa1cb70953d8a0547e3d31817c6dba6e6991 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.h
index f46e83bf3b8d31a3f0eabe640288126b0b15b456..d5d939b3a08962a6bb086fc3392893e4c71e2082 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/JetElementCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.cxx
index 97ad8333c4b3f4109b7e0c0c326337dfba7716cc..c98ef284f0bb96eaf4b86ca5370d81bdc95dab15 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.h
index 2aa8faa805077fc7b1dbb5e65807375f235bff6e..5f82e428c671cd1c580f0934da9e8172c9b0b603 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/MuCTPI_RDOCnv.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1EVENTATHENAPOOL_MUCTPI_RDOCNV_H
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.cxx
index 3c2e22db1da239425739554c89b3e87e968a9eef..ce70c5d27c7ac4dc6fdee2dc61167e9e8931972f 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.h
index a39cfed6c5011acb5be63cf804314b36197231ce..52115025163e7366b3c0b6bcb40f5c84450ca992 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RODHeaderCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.cxx
index 15a67492c2d92f79f211eeab608ca9c3fdf02adf..dcdbdf56d803f711ddfc165888c6967ff1fa2983 100755
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.h
index a07e959890e184e539af226f27381bef127517bf..b384f1aac16c1c150a40c0a5d9426ac8bd496363 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/RoIBResultCnv.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1EVENTATHENAPOOL_ROIBRESULTCNV_H
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.cxx b/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.cxx
index 9364831243110f12d2cfc8a9f191f4882c4a49b4..c18aa0a81641ea2d9ad1039b7a2670518a53caff 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.h b/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.h
index ceba4b85b273864b733a4b227746d1ccd77701b0..31ee17252b740f8f19e1ea06a62bba2e1c153c48 100644
--- a/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.h
+++ b/Trigger/TrigT1/TrigT1EventAthenaPool/src/TriggerTowerCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCnv_p1.h
index fdf655571520e7c093ccbdeb9a2956cb6f570189..1e28e980c4a1d8ee7b769d94fbb43e7e64ff986d 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCnv_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CMMCPHitsCnv_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMMCPHitsCnv_p1_H
 #define CMMCPHitsCnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_p1.h
index c3b36303fd6b56643ba4fc99fd48408402ff06aa..dc209ab219d1c2a91121ab543db970c96ae6bd8a 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMMCPHitsCollectionCNV_P1_H
 #define CMMCPHitsCollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_tlp1.h
index 5db25a498cb4135c75e0d6f7a3b95c37b304df20..9d26bf9b9b1a6ed71c710b3191ea0f131dc8246a 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMMCPHitsCollectionCNV_TLP1_H
 #define CMMCPHitsCollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_p1.h
index 2ab8026e187a0f80ef8c818f0066a4cf4abe8aae..fa7696f79972f58caeae7609dcf6310c292f5be1 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMMCPHitsCOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_CMMCPHitsCOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_tlp1.h
index 8b10e6c033d942551e744bc871de62df239f30e0..7ffdbd8eb9a84c82e5a865744842fd4683ca516e 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHitsCollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMMCPHitsCOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_CMMCPHitsCOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHits_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHits_p1.h
index 069216076369510fd2e56ca30972c67dd9527a2f..0652f9917b76880fc28b404e40b77d1e28488462 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHits_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMCPHits_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CMMCPHits_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMMCPHits_p1_H
 #define CMMCPHits_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCnv_p1.h
index 8ec957ba690b38332fdd658f6aa5675d342969ff..44a740a9e6705cbca2ece21f8b013c62e58deda2 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCnv_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CMMEtSumsCnv_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMMEtSumsCnv_p1_H
 #define CMMEtSumsCnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_p1.h
index 802ba747e16a7f161afe2463e0d9544cbd2f43fd..30ee4c0a383bb24f08415178191449c2978b9032 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMMEtSumsCollectionCNV_P1_H
 #define CMMEtSumsCollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_tlp1.h
index f4416210b1137ec9519d63dca60b2c326153b86f..444deb00cf417008a1cb57eca4e85abe60fafa97 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMMEtSumsCollectionCNV_TLP1_H
 #define CMMEtSumsCollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_p1.h
index 37525936af5447faedeeb95bc8b73a1a112ab8b7..7495045929ae2847db90fbdb0a4a42e610516890 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMMEtSumsCOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_CMMEtSumsCOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_tlp1.h
index 6915d213aea08efb0217fc3d0b43acbd1d59ba64..ecd38cf43eb9a19cb097252303e9b65aef2d6c8e 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSumsCollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMMEtSumsCOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_CMMEtSumsCOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSums_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSums_p1.h
index 2330029cf5b97b7c388b9eef1bad07ab6ff4fa3e..cfe3f3a7810bfb463c2c3a8fc204158e2bd3f659 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSums_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMEtSums_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CMMEtSums_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMMEtSums_p1_H
 #define CMMEtSums_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCnv_p1.h
index 0a39703e8574fdc299bd5b7d74ae3fdfb4884d48..058c8083159178098dff92d78a845d6dfd6e1fe4 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCnv_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CMMJetHitsCnv_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMMJetHitsCnv_p1_H
 #define CMMJetHitsCnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_p1.h
index e6c6b888742daf9c47e9999cd8b032a7db18cb86..e9139c7e12aa08c36e2b9349f558ed744d8f442c 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMMJetHitsCollectionCNV_P1_H
 #define CMMJetHitsCollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_tlp1.h
index 05764235ff33c43637f6f66ba3bb059a7d434175..cf862b30f552c381ee9e610a221815c1ee044335 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMMJetHitsCollectionCNV_TLP1_H
 #define CMMJetHitsCollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_p1.h
index f40051c8bf3add503d255c7dbe05ecbd869b6b0e..138816300f12b56ab41982115e3d105dd3b42847 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMMJetHitsCOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_CMMJetHitsCOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_tlp1.h
index 929bdfe13e200f79db33be7e1a3024b01013c236..d36815900b7b925c05acc09830b5d05f4ca59a02 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHitsCollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMMJetHitsCOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_CMMJetHitsCOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHits_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHits_p1.h
index be1754b044c73493441652e6993d142fa739bfe0..9c7848051e353a3194b5664bc7fbf3029276ebab 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHits_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMJetHits_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CMMJetHits_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMMJetHits_p1_H
 #define CMMJetHits_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoICnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoICnv_p1.h
index e8df984fd0a211e1b731a63ccacbdc3591d0d6eb..db30f9dc5c3a306c38c0792a40dd91f5a2dd063b 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoICnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoICnv_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CMMRoICnv_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMMRoICnv_p1_H
 #define CMMRoICnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoI_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoI_p1.h
index a5b7eea7da2bd850fb098a5abe661f2789ec3198..c5dba5e02a0055a3cc87445676e2d412549adb1e 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoI_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMMRoI_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CMMRoI_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMMRoI_p1_H
 #define CMMRoI_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCnv_p1.h
index 89f19fcb84e7ea210a17ab42c1abf220cb336f1f..0e4724f252be506f723cc2ed426c68faecc79fbe 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCnv_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CMXCPHitsCnv_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMXCPHitsCnv_p1_H
 #define CMXCPHitsCnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_p1.h
index 0b13cc6ad19821da57b4b33bbfcf5ec420e9d7f2..a9c435211ffde1987b6a6c5f69c22d677e2225be 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMXCPHitsCollectionCNV_P1_H
 #define CMXCPHitsCollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_tlp1.h
index caca869d818302f9ee35f64a9a95f9216feabb6a..20778cffd7682c95cab2fb3975f1e58478d42312 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMXCPHitsCollectionCNV_TLP1_H
 #define CMXCPHitsCollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_p1.h
index 97e97ec06c3f4a5af68c92279c8b48ffbc1763bb..e7a9304b8d69eb30e533bf2d4bc463aa8d222d99 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMXCPHitsCOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_CMXCPHitsCOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_tlp1.h
index 05259f29a6c72a33cff994ab82255714d1321873..a8d8842937a1b38cef6f8a19b9190df9225c04ab 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHitsCollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMXCPHitsCOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_CMXCPHitsCOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHits_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHits_p1.h
index 0e3a53fa0c70a1d5335d17dcae1afb1d2264178b..ea4d80e24c65b4ccffd1dfad51c6cdbcc2e847b7 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHits_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPHits_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CMXCPHits_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMXCPHits_p1_H
 #define CMXCPHits_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCnv_p1.h
index bd3fbea16d517de7fe111f9eccf88b2edb488a00..474b6877af1d7de6619e6c6f80922f1627d97754 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCnv_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CMXCPTobCnv_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMXCPTobCnv_p1_H
 #define CMXCPTobCnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_p1.h
index 0553e0178c2863317ef00a9b55e28146f2db03d4..1b40b6916731b02fc24220b6d7f3d18b73c3ae24 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMXCPTobCollectionCNV_P1_H
 #define CMXCPTobCollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_tlp1.h
index 76c748b63b99d69dd667c4e76d3dad586324979c..9bcb2ebd613b465f50d0ceb142394e3ae307cfec 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMXCPTobCollectionCNV_TLP1_H
 #define CMXCPTobCollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_p1.h
index f125cea7eb1b9e9954f46c8e9333e88296aa4e43..4a139ca6ad7e7bc6723675756a85f0d09e9f70cf 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMXCPTobCOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_CMXCPTobCOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_tlp1.h
index 6cc0b9db3b71a0a40ad0acfd08fc1421db48958a..62a2094b49ccf669b7d7579efaa6e473fc6052c0 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTobCollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMXCPTobCOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_CMXCPTobCOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTob_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTob_p1.h
index ed5bdff70c19e9f696f6f5052a8b3e1e481e35c6..4ab0a8f7b4c8483a412785b7d453e13158552566 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTob_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXCPTob_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CMXCPTob_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMXCPTob_p1_H
 #define CMXCPTob_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCnv_p1.h
index b938e5df6eecd8025cc0763aa095001951e475aa..35564821396cd0607d607b421fdb4eb47dc113ad 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCnv_p1.h
@@ -1,12 +1,7 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMXEtSumsCnv_p1_H
 #define CMXEtSumsCnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_p1.h
index 5d15b206b46ba06c8b4c612d8eff66bf0954a952..02e162d84a2e5e4aac8b26792fbc27efd573f39b 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMXEtSumsCollectionCNV_P1_H
 #define CMXEtSumsCollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_tlp1.h
index ebfd6a9d0b56e484ec9c8e39c1f362ef216d83e5..0b2860eb0055c58ba618ca5b33a156e4e8467eba 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMXEtSumsCollectionCNV_TLP1_H
 #define CMXEtSumsCollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_p1.h
index c831daf0e49cb4ef4e02d66db85f17d8860dcd53..5dd862a4de1b73d9ca2bd01cb70dcd7e718fe288 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMXEtSumsCOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_CMXEtSumsCOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_tlp1.h
index 92859fe1cef6ce6a3bda33d93cce835ed7044520..ab3db19301618519bd54504d6eb7e0f4dd6317c0 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSumsCollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMXEtSumsCOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_CMXEtSumsCOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSums_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSums_p1.h
index b6aa089ef8c896749a1e4bb3ae0d5d8f80a9f772..978e0d180bbc4249da2998f84e6cf8a898c13aff 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSums_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXEtSums_p1.h
@@ -1,12 +1,7 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMXEtSums_p1_H
 #define CMXEtSums_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCnv_p1.h
index 7decc2ca749b7a2b8ccdad1d03886713eb8ce5f0..e6b0348f9adb977701870b498eabedada67dc0d9 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCnv_p1.h
@@ -1,12 +1,7 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMXJetHitsCnv_p1_H
 #define CMXJetHitsCnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_p1.h
index bd6dd159183084c31e15255a6570fb8a953cc25b..5257f37b5cc23d7594af411d0fcd26db6a0dd700 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMXJetHitsCollectionCNV_P1_H
 #define CMXJetHitsCollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_tlp1.h
index d8323734e3a8f0030d56fd8b794e0821844aada2..d9c729a22d11af80c7072abd6be194165bfaf3b1 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMXJetHitsCollectionCNV_TLP1_H
 #define CMXJetHitsCollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_p1.h
index 0e63d7f3c579db42be455e1317d18565849124d9..920906cf71c73ce487dec891a026b63b996a1a12 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMXJetHitsCOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_CMXJetHitsCOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_tlp1.h
index 04622891f1cb9781d2bf3ee106252ce5a55ffeaa..f9c21d0f9bd0842a7334fa023c4298e5e9d85ef8 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHitsCollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMXJetHitsCOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_CMXJetHitsCOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHits_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHits_p1.h
index 1628470093a78e0ad0fc8014e24fa3489fd259c8..bbd5dcb92c1aba2073f527b6ad4be1b79feafa03 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHits_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetHits_p1.h
@@ -1,12 +1,7 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMXJetHits_p1_H
 #define CMXJetHits_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCnv_p1.h
index ad28bd693d3322f8ec32f6bb2a29eda433a4152e..3480809d8bc856377bff66cca19e337dba5de0c0 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCnv_p1.h
@@ -1,12 +1,7 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMXJetTobCnv_p1_H
 #define CMXJetTobCnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_p1.h
index 0fce30224a7bc657dfe639bf0948b2ee9898ff59..6538976cb3f3a6b9b6513844fb67183ccb5a679a 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMXJetTobCollectionCNV_P1_H
 #define CMXJetTobCollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_tlp1.h
index 640d1325cce19048ca3b1b345f524fef1fa2f55d..134da7b886d43c83b5b62715165b97edd6154fa3 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CMXJetTobCollectionCNV_TLP1_H
 #define CMXJetTobCollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_p1.h
index caf5945f2aa92f5f6d522d8bab43aa90f18b22f9..421c786cd2cf201197c84a116d8e86440dee3f21 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMXJetTobCOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_CMXJetTobCOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_tlp1.h
index ccd2e29b1cd8c29a8f2d09a3de035af7cf2a434c..c11b9506a44f061d1d5c2a74d45365d5149bb4c0 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTobCollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CMXJetTobCOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_CMXJetTobCOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTob_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTob_p1.h
index fa4d0e22f5600c52eab151bfd7560916a15ec0ce..451ba157184fea17759196c53769e6dfc632407d 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTob_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXJetTob_p1.h
@@ -1,12 +1,7 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMXJetTob_p1_H
 #define CMXJetTob_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoICnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoICnv_p1.h
index 393c32d3b2d566373bad18d0234353350143e5bd..0ed83ad3b93009e2c136d8d4144102708a865f52 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoICnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoICnv_p1.h
@@ -1,12 +1,7 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMXRoICnv_p1_H
 #define CMXRoICnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoI_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoI_p1.h
index c2b6584c09f379af90d7beafce1fe82e78e5ee45..5bc7cfc8477ddfe01f1b721dcadd9db1de69f2cf 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoI_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CMXRoI_p1.h
@@ -1,12 +1,7 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CMXRoI_p1_H
 #define CMXRoI_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCnv_p1.h
index bffc9c440616e73c3f9e85bafa9c3ed00e13136d..39ad3c809567aab5398d5ffe54c40d006365b3c5 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCnv_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CPMHitsCnv_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CPMHitsCnv_p1_H
 #define CPMHitsCnv_p1_H 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_p1.h
index 3d0a3333d7cf6d45f3cd7c8c2f33517d587df587..7a472d7d2458f4237a94391d4b0d37598ecf784e 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CPMHitsCollectionCNV_P1_H
 #define CPMHitsCollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_tlp1.h
index 5acd0bc9b629369402c5c2fc8178a7f2c4c82905..48e9293ae060e7cde7f6c9670ec7c2c1f99b5587 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CPMHitsCollectionCNV_TLP1_H
 #define CPMHitsCollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_p1.h
index b12226744b292bcdf7485ba968582bbe8cbe155b..65ed9f47cace857f84868c3e8d5d4f225e3b0e52 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CPMHITSCOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_CPMHITSCOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_tlp1.h
index 7ce67cc5ac57d14f70670356bb5a49a197eb9e7b..bc7d4681d27ae0fc501b2fb4eaaba53c820f07a8 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHitsCollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CPMHITSCOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_CPMHITSCOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHits_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHits_p1.h
index 643649f4aa64740ebac9e52d0ef91237da8e6737..4d2b825e3c483826974c26d8da7bdeb1abac851b 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHits_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMHits_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CPMHits_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CPMHits_p1_H
 #define CPMHits_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICnv_p1.h
index afa98394431a19b7435b2a6a986bc8bf7ec10ef4..0132286b80f79f28de534fbbdc0bf6e13962aa7c 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICnv_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CPMRoICnv_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CPMRoICnv_p1_H
 #define CPMRoICnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_p1.h
index d845a21b9787efd9420ecb3cb1362734b413bdd0..0cb8733e06a92ad3a4b033b4b3dcaf7828a6adcb 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CPMRoICollectionCNV_P1_H
 #define CPMRoICollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_tlp1.h
index ae010443be133a5b188a06d63aa79c411b2cc1e1..e85b3035d2b68b8d0b7ef89c8693fcf853be83d4 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CPMRoICollectionCNV_TLP1_H
 #define CPMRoICollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_p1.h
index 960ddf8da870a5ccb917aa86db14d4f46067ab49..33365e34bfb65b012a348c419256dbdacdc492c4 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CPMRoICOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_CPMRoICOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_tlp1.h
index c27fdac6124117cdcb1b63fcf7615732d23f9ba9..69a35b66927efd208936425c519767b0619a8001 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoICollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CPMRoICOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_CPMRoICOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoI_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoI_p1.h
index ecd44ce1170aad7030266b346bfe1e0b6d9062e9..245696c637fdd4b69c9b9c4679b15706e7e12abe 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoI_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMRoI_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CPMRoI_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CPMRoI_p1_H
 #define CPMRoI_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICnv_p1.h
index 2e73ff801194e9cb79c321387757bc0ad9d636cd..8c4e7654c79da0e07fb142b3b0e20834219312af 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICnv_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CPMTobRoICnv_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CPMTobRoICnv_p1_H
 #define CPMTobRoICnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_p1.h
index 298e9d2e98ace6a5141ac37708589fd1dc1b39c9..2177ae3d0a4b66694c9f1bd606f8184de4ab7eb1 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CPMTobRoICollectionCNV_P1_H
 #define CPMTobRoICollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_tlp1.h
index c7a8e6c1ec4bc151f74e63a68876d1d3df1f5370..f9be95504120469cc09d9249ef453e206eb4e1c4 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CPMTobRoICollectionCNV_TLP1_H
 #define CPMTobRoICollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_p1.h
index b852397f79b16e8aafc0d5bb9460ad48f77b0f61..6da9c77c4594ad43d4ae07f2c391341b81b2c7f3 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CPMTobRoICOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_CPMTobRoICOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_tlp1.h
index 32c164b4d05ba65a0840d40cdf6446159c5e25e3..944d6f58388a39333e123e5504ecc4b955913fb0 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoICollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CPMTobRoICOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_CPMTobRoICOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoI_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoI_p1.h
index 709f98155507f0eb76ce0c1683f95f2a77c7afa9..77c0e867b27fe2ad50982dae01d7d509a3aa27b0 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoI_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTobRoI_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CPMTobRoI_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CPMTobRoI_p1_H
 #define CPMTobRoI_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCnv_p1.h
index ba244cc77277cfe918cfa621abfca8447e972442..168dcffc7b84ba2b5c0a6703d9baf3b5c2c6d17c 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CPMTowerCNV_P1_H
 #define CPMTowerCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_p1.h
index 5d4c1b52eb0ed6db31518233c0ae8100c3ae4e41..35dbf92c0958e3708aae89b82c4b0666d9e85912 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CPMTowerCollectionCNV_P1_H
 #define CPMTowerCollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_tlp1.h
index f782740d39a4227d795da9a89232ea68646799cf..21ba39c41e94120dca3fbdce7ebf80b360fea957 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef CPMTowerCollectionCNV_TLP1_H
 #define CPMTowerCollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_p1.h
index d3bb5f1292c592e0b0eea05fbe7735a1985d7958..2ff4ed45b12b8961de38d6f6af0444e5f92da80a 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CPMTowerCOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_CPMTowerCOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_tlp1.h
index 1633b87e205aa850cac37ecf14748e149e77a5c3..03e701699cdc4a080d5b2388509f5a2d258cf520 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTowerCollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_CPMTowerCOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_CPMTowerCOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTower_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTower_p1.h
index 64d52254ade5673c216f7a50daf85a8154a4018b..4c448f8e899c15af66677f6eb65af28df46df07d 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTower_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CPMTower_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           CPMTower_p1.h  -  description
  //                              -------------------
  //    begin                : 29/11/2007
- //    copyright            : (C) 2007 by Alan Watson
  //    email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef CPMTower_P1_H
 #define CPMTower_P1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p1.h
index 869e23782ab0dbe3ac0fbf752f0228b2d90e05c5..0c27e50b4c86e2dd4cf62d1c4087490009f02b01 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p1.h
@@ -1,5 +1,8 @@
 // Dear emacs, this is -*- c++ -*-
 #ifndef TRIGT1EVENTTPCNV_CTP_RDOCNV_P1_H
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #define TRIGT1EVENTTPCNV_CTP_RDOCNV_P1_H
 
 // Gaudi/Athena include(s):
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p2.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p2.h
index a939f79c343244670c9841f6b62425ffe719f2c6..0801fb67547770bd7b0a2badcf5a732463cabc57 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p2.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDOCnv_p2.h
@@ -1,5 +1,8 @@
 // Dear emacs, this is -*- c++ -*-
 #ifndef TRIGT1EVENTTPCNV_CTP_RDOCNV_P2_H
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #define TRIGT1EVENTTPCNV_CTP_RDOCNV_P2_H
 
 // Gaudi/Athena include(s):
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p1.h
index e37939739e8873bcae84ce153e53d0d6f98ebfd6..384592482906ddc3fa14efe4561a93a27e61e785 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p1.h
@@ -1,5 +1,8 @@
 // Dear emacs, this is -*- c++ -*-
 #ifndef TRIGT1EVENTTPCNV_CTP_RDO_P1_H
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #define TRIGT1EVENTTPCNV_CTP_RDO_P1_H
 
 // System include(s):
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p2.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p2.h
index 0c24e9108626add98864ebc8319f937e1eff6afe..21015760e93c7ba757a2c6ce023ab35eae77329d 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p2.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/CTP_RDO_p2.h
@@ -1,5 +1,8 @@
 // Dear emacs, this is -*- c++ -*-
 #ifndef TRIGT1EVENTTPCNV_CTP_RDO_P2_H
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #define TRIGT1EVENTTPCNV_CTP_RDO_P2_H
 
 // System include(s):
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCnv_p1.h
index c1672058f3b639ea6004dd6e048d1eb40103bb49..24abed705a272a81acabbc9958cc048e7ea26a08 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCnv_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           JEMEtSumsCnv_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef JEMEtSumsCnv_p1_H
 #define JEMEtSumsCnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_p1.h
index b8411f12978d633617582bcef64c4fb695fc697b..0b64c1d29798e96cff2c8efcdb50b5c8cfcd5ac8 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef JEMEtSumsCollectionCNV_P1_H
 #define JEMEtSumsCollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_tlp1.h
index 283cf11f899cccb2b5f8b3078dbaa72259808450..f1732fb4d94139108a74de1baf815dd3acde1027 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef JEMEtSumsCollectionCNV_TLP1_H
 #define JEMEtSumsCollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_p1.h
index 4f36ad06fa163493a0c94abfd8ecca5f5eea1d08..b9570cf1dd07119dceeac04baa22ce0945e74d3c 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_JEMEtSumsCOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_JEMEtSumsCOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_tlp1.h
index 5cae03022b4d5bcbdaf9abbf2f3601e6a9ed4735..1eee196fb41c49ee5581164f2b5b05649828a77f 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSumsCollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_JEMEtSumsCOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_JEMEtSumsCOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSums_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSums_p1.h
index ad42fdbf8f5bd79084778c9a02027c4bf21cf7af..568e751c6f6f24724b7703df21fc90b82e0277f7 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSums_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMEtSums_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           JEMEtSums_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef JEMEtSums_p1_H
 #define JEMEtSums_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCnv_p1.h
index 58e01295e56c052b3c0c2be49bdb4ea4c37b7b86..5d9af3d3873cbd5790b0f36f4078e4ece114a903 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCnv_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           JEMHitsCnv_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef JEMHitsCnv_p1_H
 #define JEMHitsCnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_p1.h
index c15eb878deca852ec8b9bb995250f32ee5a317b8..706bc5fa414792c1d4299567aca1d7c016345296 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef JEMHitsCollectionCNV_P1_H
 #define JEMHitsCollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_tlp1.h
index b7993933e26fdd3d098792dbd480a79edce51526..f6df584958d22315ae6f00a051c7d5b5cdb0fe7a 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef JEMHitsCollectionCNV_TLP1_H
 #define JEMHitsCollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_p1.h
index 856a5da88dfbd05b74d488c1c241674e5d63397b..4620b8fb910eae80fd5fb996b4b40bcc33de4876 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_JEMHitsCOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_JEMHitsCOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_tlp1.h
index c947d9c1a96bd6acba0693f1defcc386fded406c..1a3d3992cbcc705f4eea34688ae20b690d57b6ef 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHitsCollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_JEMHitsCOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_JEMHitsCOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHits_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHits_p1.h
index fa33d74a187f32fb15e2a1ec5d4a2410540e56ad..d5316517d3a971693e2ae982da23af5ef6a3c170 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHits_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMHits_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           JEMHits_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef JEMHits_p1_H
 #define JEMHits_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICnv_p1.h
index aaa2d3b6be6c87147f4f7ea02470f71ccd95572a..35087f45e0cc9b0c2036d6d7646d1bdafa7ce046 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICnv_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           JEMRoICnv_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef JEMRoICnv_p1_H
 #define JEMRoICnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_p1.h
index 84dcd98f438969a0dd385236677a112f56a37217..6227c78e861f4f8aab6be4fc7eaa952302ba6ae3 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef JEMRoICollectionCNV_P1_H
 #define JEMRoICollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_tlp1.h
index df91e09fdb1969e8b17d0bf8c5212da2f84b571e..27c50f073bede0496fbec5b7b4cf7056a4b3c23c 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef JEMRoICollectionCNV_TLP1_H
 #define JEMRoICollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_p1.h
index 5df1bb45e7f9fba8ad9c22c0585bee0284c95e2f..9d036121b8230b05f8e05ffbccabaadc62d190a4 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_JEMRoICOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_JEMRoICOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_tlp1.h
index 50b687acd5ddb9b891e467b2fbef3a5856b374ed..367e3de5de0e8e67f8837bc76662d431a6fe24d2 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoICollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_JEMRoICOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_JEMRoICOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoI_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoI_p1.h
index 6d936812972b7b3e0db562d126c7f03c5f43ce17..d248474ceb879848e1d80e746694536c36e51597 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoI_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMRoI_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           JEMRoI_p1.h  -  description
  //                              -------------------
  //     begin                : 21 04 2008
- //     copyright            : (C) 2008 by Alan Watson
  //     email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef JEMRoI_p1_H
 #define JEMRoI_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICnv_p1.h
index db137ca93fe2484b3164864a577d72531660237a..ebec2b7fe875146dcfcaf9a81ab97d96ef263f0e 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICnv_p1.h
@@ -1,12 +1,7 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef JEMTobRoICnv_p1_H
 #define JEMTobRoICnv_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_p1.h
index 7c5de188dba76047dc5624ef8c1751f741146872..583700dbe696b6e44f1bb300c41c44654414973c 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef JEMTobRoICollectionCNV_P1_H
 #define JEMTobRoICollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_tlp1.h
index 0aaa0bb74b8b8d33aadb34b7189e0d4340b8c331..56cea72d709bdedc8a511486fd27669240fcf731 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef JEMTobRoICollectionCNV_TLP1_H
 #define JEMTobRoICollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_p1.h
index 9f706a01892499acbb5be4417c9dad32ca978df9..b83d1b885e7ea2701647d60cd4959ac1747fbadc 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_JEMTobRoICOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_JEMTobRoICOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_tlp1.h
index c79a99082b7e2eb9fb3f3ae4340c47dfd9fda7e8..a975ab8f65f8a930b849d876235bd7da98b66d4c 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoICollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_JEMTobRoICOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_JEMTobRoICOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoI_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoI_p1.h
index cad73983514c9f3cbd572ccf70bea8a04c0829be..2e63ac4023705778c502a29161c26ccf4e711928 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoI_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JEMTobRoI_p1.h
@@ -1,12 +1,7 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef JEMTobRoI_p1_H
 #define JEMTobRoI_p1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCnv_p1.h
index 2b04a6bb43b54f04fe005cda498751d48c9fb96b..3c0c27015874a4f5d60fb7a5c9060abc5e498f70 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef JetElementCNV_P1_H
 #define JetElementCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_p1.h
index 4836d1b6f4bc8c31790df9b3235ae64a9899e45c..33edbfbd9ebbac249588c21f00bf9b7e801d32d9 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef JetElementCollectionCNV_P1_H
 #define JetElementCollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_tlp1.h
index 373b1df3d1bdf26fa23c3def5550409aad8e18f8..09f20d7ba7c2b8afe7eb82e62a8df32f7524eef9 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef JetElementCollectionCNV_TLP1_H
 #define JetElementCollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_p1.h
index 6651a6f137ed32ce459932ff9fb40ca041bbcedc..c89ad20ac80f5776e810e86cbabb5c976abcc676 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_JETELEMENTCOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_JETELEMENTCOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_tlp1.h
index 090ffbaeff18fa56aa437f90251c517c5fb917f8..33c506dd1233fed917fed6263b0dc4febcc2e75f 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElementCollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_JETELEMENTCOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_JETELEMENTCOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElement_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElement_p1.h
index cfe78df9275f8753a71094ffe8ddeb0b16611c94..aca5ce665bed0a353ce4091cbf837667d4eada18 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElement_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/JetElement_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           JetElement_p1.h  -  description
  //                              -------------------
  //    begin                : 29/11/2007
- //    copyright            : (C) 2007 by Alan Watson
  //    email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef JETELEMENT_P1_H
 #define JETELEMENT_P1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDOCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDOCnv_p1.h
index c395c5a01685bdbe897470b58fb7812094e79938..900009f954f3b6a7678fdf1228a02a227cb5c02d 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDOCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDOCnv_p1.h
@@ -1,5 +1,8 @@
 // Dear emacs, this is -*- c++ -*-
 #ifndef TRIGT1EVENTTPCNV_MUCTPI_RDOCNV_P1_H
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #define TRIGT1EVENTTPCNV_MUCTPI_RDOCNV_P1_H
 
 // Gaudi/Athena include(s):
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDO_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDO_p1.h
index b5e86f0f30621dfce39dd2e6d9131e30d3d95dd3..865544661a230ae16d31f3785bf223783cae7a2a 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDO_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPI_RDO_p1.h
@@ -1,5 +1,8 @@
 // Dear emacs, this is -*- c++ -*-
 #ifndef TRIGT1EVENTTPCNV_MUCTPI_RDO_P1_H
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #define TRIGT1EVENTTPCNV_MUCTPI_RDO_P1_H
 
 // System include(s):
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCnv_p1.h
index ea765980e98f4e4b9ddd9ec2bddeac3804eafa9b..f73e30ba389c667cb1dc823e6eb4aa42dd1b489c 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef RODHeaderCNV_P1_H
 #define RODHeaderCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_p1.h
index 06596c3d2c830d61e5b34af4156dcf613a45f307..62f0ff2a09179539ebb2902bc85269a941256081 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef RODHeaderCollectionCNV_P1_H
 #define RODHeaderCollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_tlp1.h
index 1730079db7889323775eee381e09c3f6261918de..e43f44e1d49079054b130a514406b76898315e25 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef RODHeaderCollectionCNV_TLP1_H
 #define RODHeaderCollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_p1.h
index 3192ccc8cc629f2f2f48b61e13cee12c05147440..290d502776cde9d3f1ba29df1f16d388e27a0ee8 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_RODHeaderCOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_RODHeaderCOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_tlp1.h
index a518638602079d3f3b33ddf40f45c03e6452233e..a823cebccc848099c8ff3503ac7d75666df298ef 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeaderCollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_RODHeaderCOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_RODHeaderCOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeader_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeader_p1.h
index 9c2d110bf179d2005beced32c9f1db41dd0ba214..cc927399725d3feac2b8273011a0a4175fb8c429 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeader_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RODHeader_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           RODHeader_p1.h  -  description
  //                              -------------------
  //    begin                : 29/11/2007
- //    copyright            : (C) 2007 by Alan Watson
  //    email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef RODHeader_P1_H
 #define RODHeader_P1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResultCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResultCnv_p1.h
index 5e32569e777396fe4cd33ee6d45f5bd1748c43d9..4a9004e1dfc4c2f23c1ccd5b3234b3e5bfcbb5eb 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResultCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResultCnv_p1.h
@@ -1,5 +1,8 @@
 // Dear emacs, this is -*- c++ -*-
 #ifndef TRIGT1EVENTTPCNV_ROIBRESULTCNV_P1_H
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #define TRIGT1EVENTTPCNV_ROIBRESULTCNV_P1_H
 
 // Gaudi/Athena include(s):
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResult_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResult_p1.h
index 5481621a788ac9d7f3d5c67722395455bdd43fcf..514c55b9c9f45712cd9ce53e0c0a76917f2822cd 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResult_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/RoIBResult_p1.h
@@ -1,5 +1,8 @@
 // Dear emacs, this is -*- c++ -*-
 #ifndef TRIGT1EVENTTPCNV_ROIBRESULT_P1_H
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #define TRIGT1EVENTTPCNV_ROIBRESULT_P1_H
 
 // System include(s):
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/SubSysResult_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/SubSysResult_p1.h
index c3b35544218168a89fb036987e10ade900856bf1..b1e9cd7c394a676046458e9d18d57590fc971c8a 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/SubSysResult_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/SubSysResult_p1.h
@@ -1,5 +1,8 @@
 // Dear emacs, this is -*- c++ -*-
 #ifndef TRIGT1EVENTTPCNV_SUBSYSRESULT_P1_H
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #define TRIGT1EVENTTPCNV_SUBSYSRESULT_P1_H
 
 // System include(s):
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TrigT1EventTPCnvDict.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TrigT1EventTPCnvDict.h
index 46b329a07ac8d505f01a8a2351656a0e84fb21d3..bf3ae483e708c24fdf9c6b9a4fea6e803f99ad75 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TrigT1EventTPCnvDict.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TrigT1EventTPCnvDict.h
@@ -1,5 +1,8 @@
 // Dear emacs, this is -*- c++ -*-
 #ifndef TRIGT1EVENTTPCNV_TRIGT1EVENTTPCNVDICT_H
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #define TRIGT1EVENTTPCNV_TRIGT1EVENTTPCNVDICT_H
 
 //
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCnv_p1.h
index ac115320d630e69977d446f5b663a7543c70b521..79df17401b0e9715e897ed803d908be073215383 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TriggerTowerCNV_P1_H
 #define TriggerTowerCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_p1.h
index 6db0579bd19cb8d8a06ea0ff2aef861daa80252b..bf3fa6d957ed0998eecf0ca708ace84476ad6465 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TriggerTowerCollectionCNV_P1_H
 #define TriggerTowerCollectionCNV_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_tlp1.h
index a56b9a2b9b2a755f81fbd42ee8ff50f76195f5d8..c2d2cfdbf304baa97f83c193d5181a7591d1deff 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollectionCnv_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TriggerTowerCollectionCNV_TLP1_H
 #define TriggerTowerCollectionCNV_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_p1.h
index fb2c14dcfcf71632df4eabed214e72b098e6c08e..2aea35c263ee59728b5aab0334c6f1a0f02b5de4 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_p1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_TRIGGERTOWERCOLLECTION_P1_H
 #define TRIGT1EVENTTPCNV_TRIGGERTOWERCOLLECTION_P1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_tlp1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_tlp1.h
index 2408f416c278d3f43780877a9031b6f79e97771d..3cb19d00a1038ff119e781919b4378bca6b309ae 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_tlp1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTowerCollection_tlp1.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1EVENTTPCNV_TRIGGERTOWERCOLLECTION_TLP1_H
 #define TRIGT1EVENTTPCNV_TRIGGERTOWERCOLLECTION_TLP1_H
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTower_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTower_p1.h
index 36778dc3325fc7ba1e4a811c5145cd3d77ad1824..5d317cc03a74af9dc02f9c3bb8e4cbc2e1d936de 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTower_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/TriggerTower_p1.h
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
  //***************************************************************************
  //                           TriggerTower_p1.h  -  description
  //                              -------------------
  //    begin                : 29/11/2007
- //    copyright            : (C) 2007 by Alan Watson
  //    email                : Alan.Watson@cern.ch
  //  ***************************************************************************/
   
- //***************************************************************************
- //  *                                                                         *
- //  *   This program is free software; you can redistribute it and/or modify  *
-  // *   it under the terms of the GNU General Public License as published by  *
-//   *   the Free Software Foundation; either version 2 of the License, or     *
- //  *   (at your option) any later version.                                   *
- //  *                                                                         *
- //  ***************************************************************************/
   
 #ifndef TRIGGERTOWER_P1_H
 #define TRIGGERTOWER_P1_H
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCnv_p1.cxx
index 58881adccdfc42e9eaf150c385ac35ef8f4b547d..59bd5e8d5c18b529ed29e87089b0217ec9c5af89 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/CMMCPHits.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCollectionCnv_tlp1.cxx
index 18ad852895732a8ccb329dd462af9765a1d36a19..dc367afd742783aa62c4cf329715ca70bb7a6133 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMCPHitsCollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCnv_p1.cxx
index 8b59b5be7d0f93ef6995d9f6c638869bd953fa33..4cd8e7a783bb6e4f496121747cbe31b69f8ec4d3 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/CMMEtSums.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCollectionCnv_tlp1.cxx
index 3766bbb28588f3d3502951a7dab325b21d89ce87..0c62ab4ce3d816534f1c97cd6b2df91ed3edd903 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMEtSumsCollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCnv_p1.cxx
index 0efe4c3d16b250b160abbf2657593ba040eafa8a..74cc4b2c8b798d58aa92d5cd99018be663cb9225 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/CMMJetHits.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCollectionCnv_tlp1.cxx
index 9efd154a4586f6572d3640981c7af50684a853bf..208b457ac48a771b282523bcb6630d0430594582 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMJetHitsCollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMRoICnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMRoICnv_p1.cxx
index dbb00b7614f5b56da8600383a4203d2bb31a957d..82b6d8998c71fcf298596e50c32784b19d6be984 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMRoICnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMMRoICnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/CMMRoI.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCnv_p1.cxx
index 7b8425de53a6884fb09ed8c94e66f754cb2a98b1..4b0310955d8ac44fe7b6668ae7f73ade2f9541a0 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/CMXCPHits.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCollectionCnv_tlp1.cxx
index b4758b02fac6cf6745aad6d5312e1e47c7264380..450d0c01984c6d6b73c4c52cd1631cd6957145df 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPHitsCollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCnv_p1.cxx
index ed502e2340e5a647e00fdd21279de68fc379e135..3b7997cf9ab68d7fd859671adc7b0a369147c32d 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/CMXCPTob.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCollectionCnv_tlp1.cxx
index 18ddb524dd21b5f5315bcc942d8f9bcae61087d5..601394b8751a1bdccd4c56586ecbcdeaf9618e20 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXCPTobCollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCnv_p1.cxx
index 2365cce2b1f9e7361ef6385cbb5fd45414d702d3..875cf53b4566ecb4a5f08e761dc0d1a35b9aa44f 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/CMXEtSums.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCollectionCnv_tlp1.cxx
index c5015007951cf908283b20dc944c28aa70b03ba5..9fa9c19959aebeab59f3baa26847b8df82c69c58 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXEtSumsCollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCnv_p1.cxx
index 545aa41dedb689469c3151bf9952f9efe5913526..9aea2bfb1ab3b45305bf9f70f422b8d4307bff44 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/CMXJetHits.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCollectionCnv_tlp1.cxx
index af54d49aa0f2a35098b6ba501e53ce483f06a1d2..a7416caf55d69e4b1918d91f59fa69821321f8b7 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetHitsCollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCnv_p1.cxx
index 6e217eecbaedc94a0b1a975e32a24e12a8eedae6..965413b030c65aad1c40a3680cdafb6cbe73c940 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/CMXJetTob.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCollectionCnv_tlp1.cxx
index 2c5982c6b5578e05dd76c2ce3b4ff60f5eb7a612..f6e28c9386d99ad8041eb1fa366094b83fd8eacf 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXJetTobCollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXRoICnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXRoICnv_p1.cxx
index 4afd032b3de118879479faae549f990f4a6a89eb..f4c5d36c2b26cb843d7ac59246aba744b7c62d04 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXRoICnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CMXRoICnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/CMXRoI.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCnv_p1.cxx
index 009fa7e68544900d96581665bd5d9d51c51d47b3..5e6b0d462aa6ffac0cd0bd94af8fa002f849cbd1 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/CPMHits.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCollectionCnv_tlp1.cxx
index 526c04ebfc6cdf35d3b7d77b610acb6f7e3a832b..28cf553e4105723d53e909657861b219d2d117a2 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMHitsCollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICnv_p1.cxx
index 8a68ddfb1b05c97cb288cbda0c838c3e36b4a2c1..da138b5f257576fc5928983d39ddec280bd3042a 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/CPMRoI.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICollectionCnv_tlp1.cxx
index e985a207d5ac034ed7c884503812ca68a6927288..50b137794488e2cd718f6e2501610510d7645414 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMRoICollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICnv_p1.cxx
index 62150031ba5cc4f84303750a51bde71b90fee4d8..c71e67fb51eb8af466941d3c4889dfbb3a95cd69 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/CPMTobRoI.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICollectionCnv_tlp1.cxx
index d61c9fa247a7593aeced0c8d9913d4c8f34fa284..f5f7edfeec7fb3d8a298e53afc8deba6959e473e 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTobRoICollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCnv_p1.cxx
index b5942e2a3d346648c2097ca91ffa4f582dd01e7a..a070c4d3f0917e7af5545db270a9fdc8db6dbec7 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/CPMTower.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCollectionCnv_tlp1.cxx
index d024ff07e279cad78ccf0045ff24e4d4ce484916..f434d9ef09b966132d2d56357e2cf0636281017b 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CPMTowerCollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p1.cxx
index f2feb842847167cfe23eb261044dd8f2f2ba462f..896315e435dbb6b3215b2cbf4de01f9cc264bb11 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p2.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p2.cxx
index 9da284fe7cc83e1a4a849e95589e448f1461a06c..892d442f91a6658c1fdd0287b85806ab1e9cac6b 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p2.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/CTP_RDOCnv_p2.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCnv_p1.cxx
index a697b1da549db42ea3d46568237d9d153c4414a6..e7d4dad3b884439e65ee5a69021385b2ed565e80 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/JEMEtSums.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCollectionCnv_tlp1.cxx
index e837a93c21972a1b086b9bf9349abec3e4786c49..0f3260c849e036ab358e6fefbd16a21b326f80d6 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMEtSumsCollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCnv_p1.cxx
index 835b875f0592d18d438c02e52662dadf31d54cac..d47cefce95969eb783835d7ac0f95c599b6f8732 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/JEMHits.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCollectionCnv_tlp1.cxx
index 1bbbc32dacb1d38537f51cf45790e3205e39ab7e..8733dcb968ad4f55fc1f2e6de557c9a71cac741d 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMHitsCollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICnv_p1.cxx
index aa7b78a531d3cf095da9db5b53152b15c6a5ce89..9cffff1a94fd68c49110dfdb05bad1a03cd20097 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/JEMRoI.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICollectionCnv_tlp1.cxx
index b27d5a122b07d19f32ad627b690f9ca6c2cf09d2..d3f8d719a60dfa18978b35b199bdec7dbf610b6b 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMRoICollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICnv_p1.cxx
index 933ac3c8c87df02b612a6009fe0c6d27de21eac4..119827d1bb7c921f71932da6d18c114f0db7060f 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/JEMTobRoI.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICollectionCnv_tlp1.cxx
index 84e6ee20344542916ef017a45a9bc4f52f575d1d..ae45941e6c96d228112093045ba29be66abfa40c 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JEMTobRoICollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCnv_p1.cxx
index 52c4c1e53e5f8ca34fef05620bfeb039b23d64fc..acd9640d18a2c672ce2576b52abedf2c6ac2fe0f 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/JetElement.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCollectionCnv_tlp1.cxx
index 8e67a9962b6447e2a14794332a59ed9aacdf1790..02800606d8534d2f252cd8496233c07a90b6819f 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/JetElementCollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/MuCTPI_RDOCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/MuCTPI_RDOCnv_p1.cxx
index 0642641d36e164a599b54ca7d8e639d9c7b35fd7..65172cd1b157825c934d5d35bfb276c494a087e5 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/MuCTPI_RDOCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/MuCTPI_RDOCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCnv_p1.cxx
index 326825e98db11f150f0cebefe8cdd0cd7d684dd7..bab2479f311a2b6c97d1050a20996036152b555f 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/RODHeader.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCollectionCnv_tlp1.cxx
index a19ea0ad495ee755db3d57199faf4bd6048882b2..cddb0ea4254abe1e24f3037eff9618090dc53b10 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/RODHeaderCollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/RoIBResultCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/RoIBResultCnv_p1.cxx
index 85c4c5f855e3bc76071b0ffe54ae6d8bad77518a..0226d83941b2cc0d74b8975512cae38f63575852 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/RoIBResultCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/RoIBResultCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/TrigT1EventTPCnv.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/TrigT1EventTPCnv.cxx
index 1f5a67f88271f094068e21568915f8f33551e06b..a688db8e90360956a7ac7e3e400d782421c705d9 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/TrigT1EventTPCnv.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/TrigT1EventTPCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // generate the T/P converter entries
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCnv_p1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCnv_p1.cxx
index d730fbedd1ddf1e17a2a1d7930f3baa0285c0fa2..3c7b39985b5a2ffda910f26901cd90cf3d686705 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCnv_p1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCnv_p1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1CaloEvent/TriggerTower.h"
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCollectionCnv_tlp1.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCollectionCnv_tlp1.cxx
index 6a9dd3cdba81f08df5ba28ec1078f5d25a6dc9a8..225a92e9511d07be76fcab7927471ad492338853 100755
--- a/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCollectionCnv_tlp1.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/src/TriggerTowerCollectionCnv_tlp1.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMCPHitsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMCPHitsCnv_p1_test.cxx
index 8c9c2eab8b3100ca779fdd58d5a1b02eac174cc4..34cfa0b16ef301da3a902036e70362a6bcb86398 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMCPHitsCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMCPHitsCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMEtSumsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMEtSumsCnv_p1_test.cxx
index 517dd34e8713953ab870b37145b8fa14e8f1c8ed..da4a7a3f66628fc4887e641ee523cf30c1a4706f 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMEtSumsCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMEtSumsCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMJetHitsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMJetHitsCnv_p1_test.cxx
index 91447db2a7773dad6b5aa9d13122e50e6c69e28f..942d5e0ba05f3c51b60d31902a8c83547c6c2806 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMJetHitsCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMJetHitsCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMRoICnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMRoICnv_p1_test.cxx
index e5ab9081198fc01ec504f01845c99ac4b47e7c6d..f6ac7b14d2939211bda55888c9f6f2b203c3efbf 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMRoICnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMMRoICnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPHitsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPHitsCnv_p1_test.cxx
index 195d014656f0abdece73c1abfcfe848dc05b4e2f..c8ef9ffa7236cd023a9d1ef2bd0be121177051c8 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPHitsCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPHitsCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPTobCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPTobCnv_p1_test.cxx
index 8f44e1b00b465522861e2fcfa1469a93dcbaec71..b3f23cea56314850e5ee4425c663acb2ca2dc7c2 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPTobCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXCPTobCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXEtSumsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXEtSumsCnv_p1_test.cxx
index 60a2271c50570e4462487b3883af93ec730e8c8a..5be002758dd5a95247a224f3664e45e552a1a020 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXEtSumsCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXEtSumsCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetHitsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetHitsCnv_p1_test.cxx
index 9c936a0c2af4ccd7c0728d16a9920da9c7690b38..73c9bb9474172f951b89a025c3e27a8e3dac7f9c 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetHitsCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetHitsCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetTobCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetTobCnv_p1_test.cxx
index 43456a0b27baa33cc0557f3f9d6651cd0789cc49..80cc7233f3e792f3f27215d61818cb32f00ed14d 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetTobCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXJetTobCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXRoICnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXRoICnv_p1_test.cxx
index 603713d6ea6c1ab321dc08aef94daf1d5a64a99f..c246ccdf4e25541dfc6f6839c5a5c338c6602343 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXRoICnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CMXRoICnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMHitsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMHitsCnv_p1_test.cxx
index c027388cd459f6d8c4ad37f6910ef131cb1fe8ff..6161f8076d0e06ae272c07cb45e6cec458f613e9 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMHitsCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMHitsCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMRoICnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMRoICnv_p1_test.cxx
index dec5c610df95fbfa71c767a68acc7824f990ad77..399d2fa96d712b6227ed63877790769f01476e8f 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMRoICnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMRoICnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTobRoICnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTobRoICnv_p1_test.cxx
index 65d0505c847bb96fb74785f156dd26d43cbc3ccf..22a499e0c763a21587f7796fd832f1bf77c12a3d 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTobRoICnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTobRoICnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTowerCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTowerCnv_p1_test.cxx
index f7b4e7a6a7557f0727f676168909988305e67350..8707985c18a78a8bf45dd16c7fdb47dc6429c4d7 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTowerCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CPMTowerCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p1_test.cxx
index 926c1a26b0276e4fa9d3ff42412204fdb7336eaf..a18bfaf0868f541e4347b1039ebc3ba79b896072 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p2_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p2_test.cxx
index 412d2377ae4e03ce0129b3403f7e55f265016d46..d1c417ba4c16e309bedb2697a520a5719822af80 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p2_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/CTP_RDOCnv_p2_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMEtSumsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMEtSumsCnv_p1_test.cxx
index dab09e192d0192c3d14a7ec3a797452b229861f8..d0038b0e8863393e003a83509e05a3c927e53b41 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMEtSumsCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMEtSumsCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMHitsCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMHitsCnv_p1_test.cxx
index 46fa6733ac0648969e12c6eb70420ccce41f9631..6e09a1e8e15e3b89b40d061d21a9eaa462b8ac64 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMHitsCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMHitsCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMRoICnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMRoICnv_p1_test.cxx
index b72af47bc3db3b9619ee8c80f7a409b10a5f913c..2c5d838d38889fb67cda6dd7af3b8087e4058fcc 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMRoICnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMRoICnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMTobRoICnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMTobRoICnv_p1_test.cxx
index c0b75c5a0659e1670e9450e79bff4f436d02bc1d..77f915f15a8f1c82c2fab4bc23d52c7f1b7d3ab7 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMTobRoICnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/JEMTobRoICnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/JetElementCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/JetElementCnv_p1_test.cxx
index bb797bc6211aaffb76347c2cd2d71d5022179c48..7feb3c5c3d8aab1bae357bb12abc32b6e033e54b 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/JetElementCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/JetElementCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/MuCTPI_RDOCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/MuCTPI_RDOCnv_p1_test.cxx
index 9200426d342858f126e6c63ac515a6e96dc9db91..96fd198802df2ff4c87c304d70e589f9a1032fe7 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/MuCTPI_RDOCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/MuCTPI_RDOCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/RODHeaderCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/RODHeaderCnv_p1_test.cxx
index db9cd11a5b84425b4010adaf0d5999b7a534e256..7302667746e8db584965b64cb072ef1eb0f5b53d 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/RODHeaderCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/RODHeaderCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/RoIBResultCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/RoIBResultCnv_p1_test.cxx
index 2e65f2cfa490babc041f30097452af4c05fdf890..3fa54bda98a230d39043207f1066082aeb2bff91 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/RoIBResultCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/RoIBResultCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/test/TriggerTowerCnv_p1_test.cxx b/Trigger/TrigT1/TrigT1EventTPCnv/test/TriggerTowerCnv_p1_test.cxx
index 926d1c78040f3b00c5a54e4df913149068bcfb95..e1e15573d6ea9174a4ca5e0057f8cfdbbdf832f8 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/test/TriggerTowerCnv_p1_test.cxx
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/test/TriggerTowerCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BcmCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BcmCTP.h
index 711ee88122368637866241e9a8397c4e1e9992cb..c093f08509f50f5bb7a34f8ee195d2c94091271d 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BcmCTP.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BcmCTP.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_BCM_CTP_H
 #define TRIGT1INTERFACES_BCM_CTP_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BitOp.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BitOp.h
index 320752903c37a231d58306418f84c659dd3ce3d1..8ef62e588906eaf8368db0ef56d44b65c8268202 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BitOp.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BitOp.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_BITOP_H
 #define TRIGT1INTERFACES_BITOP_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BptxCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BptxCTP.h
index 58122b13d86e64df2d3551b7d3479a4063088a44..b0305c51f1255074d8350a9f7d6e2928ecf45a11 100755
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BptxCTP.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/BptxCTP.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_BPTX_CTP_H
 #define TRIGT1INTERFACES_BPTX_CTP_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CPRoIDecoder.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CPRoIDecoder.h
index 14b0df7f321d4e367f9c30ae62f08f398ab89979..6a8411527998c577d446079277bb691e547bcb34 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CPRoIDecoder.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CPRoIDecoder.h
@@ -1,20 +1,14 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          CPRoIDecoder.h  -  description
                             -------------------
    begin                : Fri Apr 19 2002
-   copyright            : (C) 2002 by E.Moyse
    email                : moyse@ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 #ifndef TRIGT1INTERFACES_CPROIDECODER_H
 #define TRIGT1INTERFACES_CPROIDECODER_H
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CTPSLink.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CTPSLink.h
index c82efa12ebc055a2d43d1ad1d0c0df6ba2250a7d..cab3b7165446ef3f06c3df8f89ba6ebdc55fd654 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CTPSLink.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CTPSLink.h
@@ -1,5 +1,8 @@
 // Dear emacs, this is -*- c++ -*-
 #ifndef TRIGT1INTERFACES_CTPSLINK_H
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #define TRIGT1INTERFACES_CTPSLINK_H
 
 // std include(s):
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Coordinate.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Coordinate.h
index 00f5285ee05ad478acc91aa397dcd25df9532dd0..bd3fc94a31fcd49fc941aa12ae614ebf82da0fd9 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Coordinate.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Coordinate.h
@@ -1,20 +1,14 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          Coordinate.h  -  description
                             -------------------
    begin                : 28/02/2002
-   copyright            : (C) 2002 by moyse
    email                : e.moyse@qmul.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 #ifndef TRIGT1INTERFACES_COORDINATE_H
 #define TRIGT1INTERFACES_COORDINATE_H
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CoordinateRange.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CoordinateRange.h
index ba66d9c422b6ba22f10d5180a6277ed383257ec5..ee78f281f594bef70e5f59726fbde65b9ce74091 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CoordinateRange.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/CoordinateRange.h
@@ -1,20 +1,14 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          CoordinateRange.h  -  description
                             -------------------
    begin                : 28/02/2002
-   copyright            : (C) 2002 by moyse
    email                : e.moyse@qmul.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 #ifndef TRIGT1INTERFACES_COORDINATERANGE_H
 #define TRIGT1INTERFACES_COORDINATERANGE_H
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EmTauCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EmTauCTP.h
index e62434b7fe8245a84332054898ccb5aaa33d72f2..edd5967fa57a620ce1ae0def7ceb93423780fe29 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EmTauCTP.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EmTauCTP.h
@@ -1,20 +1,14 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          EmTauCTP.h  -  description
                             -------------------
    begin                : Friday May 05 2002
-   copyright            : (C) 2002 by moyse
    email                : e.moyse@qmul.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 #ifndef TRIGT1INTERFACES_EMTAUCTP_H
 #define TRIGT1INTERFACES_EMTAUCTP_H
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EnergyCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EnergyCTP.h
index b68a364fbeed1534445470cb1adf39406356a505..ae7967f68e4bd9dc0308b37802432fe8c96f4b2f 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EnergyCTP.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/EnergyCTP.h
@@ -1,21 +1,14 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          EnergyCTP.h  -  description
                             -------------------
    begin                : Friday May 05 2002
-   copyright            : (C) 2002 by moyse
    email                : e.moyse@qmul.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #ifndef TRIGT1INTERFACES_ENERGYCTP_H
 #define TRIGT1INTERFACES_ENERGYCTP_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/FrontPanelCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/FrontPanelCTP.h
index 885e94c813483faa7988d092074daf152ff54c80..0cb450e6521687e0360a654e9a27a1b8c4d8adae 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/FrontPanelCTP.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/FrontPanelCTP.h
@@ -1,5 +1,8 @@
 ///////////////////////// -*- C++ -*- /////////////////////////////
 // FrontPanelCTP.h 
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 // Header file for class FrontPanelCTP
 // Author: S.Binet<binet@cern.ch>
 /////////////////////////////////////////////////////////////////// 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/IMuctpiSimTool.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/IMuctpiSimTool.h
index aa5b68521b63ce1faf3b0bb1889b533f988f7739..8382c3e071e06f0ee933e5cae103a65e058e7099 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/IMuctpiSimTool.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/IMuctpiSimTool.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TrigT1Muctpi_IMuctpiSimTool
 #define TrigT1Muctpi_IMuctpiSimTool
 
@@ -26,7 +29,7 @@ namespace LVL1MUCTPI {
       *  \param inputEvent reference to the inputEvent
       */
 
-     virtual StatusCode fillMuCTPIL1Topo(LVL1::MuCTPIL1Topo & ) const = 0;
+     virtual StatusCode fillMuCTPIL1Topo(LVL1::MuCTPIL1Topo &, int bcidOffset=0) const = 0;
 
   };
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JEPRoIDecoder.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JEPRoIDecoder.h
index 389a08447117e0fa6016af7a514075c24c0582c7..e90fb62c17287df0dcebce1174175fbbb5dd13c5 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JEPRoIDecoder.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JEPRoIDecoder.h
@@ -1,20 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          JEPRoIDecoder.h  -  description
                             -------------------
    begin                : Fri Apr 19 2002
-   copyright            : (C) 2002 by E.Moyse
    email                : moyse@ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #ifndef TRIGT1INTERFACES_JEPROIDECODER_H
 #define TRIGT1INTERFACES_JEPROIDECODER_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetCTP.h
index 4db6ad273b339351f644b18ce387c1909271ae3c..c11c38277a7a994fb4b8a93fe97f05877acb315a 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetCTP.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetCTP.h
@@ -1,20 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          JetCTP.h  -  description
                             -------------------
    begin                : Friday May 05 2002
-   copyright            : (C) 2002 by moyse
    email                : e.moyse@qmul.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #ifndef TRIGT1INTERFACES_JETCTP_H
 #define TRIGT1INTERFACES_JETCTP_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetEtRoIDecoder.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetEtRoIDecoder.h
index 8ffe3d17ac97156676452da49cb2f902260e9f96..9d3f6a23fa530a867fd64ac85e3d238f581b580b 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetEtRoIDecoder.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/JetEtRoIDecoder.h
@@ -1,20 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          JetEtRoIDecoder.h  -  description
                             -------------------
    begin                : Fri Apr 19 2002
-   copyright            : (C) 2002 by E.Moyse
    email                : moyse@ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #ifndef TRIGT1INTERFACES_JETETROIDECODER_H
 #define TRIGT1INTERFACES_JETETROIDECODER_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/L1METvalue.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/L1METvalue.h
index 576decd35b34f1c38ba049171fcacb57bba5e917..77f0e5a6f450c938429cb034e115dd00b3cb83cd 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/L1METvalue.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/L1METvalue.h
@@ -1,19 +1,12 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                           L1MET.h  -  description
                              -------------------
     begin                : 19-10-2007
-    copyright            : (C) 2007 Alan Watson
     email                : Alan.Watson@cern.ch
  ***************************************************************************/
-
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
                                                                                 
 #ifndef L1METvalue_H
 #define L1METvalue_H
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/LucidCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/LucidCTP.h
index 6f7e0c64eebf6bdeb76c9c11a413aa774052599c..319f8cd56e81c7144281dedb1fc7ae081386d4ce 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/LucidCTP.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/LucidCTP.h
@@ -1,5 +1,8 @@
 // Dear emacs, this is -*- c++ -*-
 #ifndef TRIGT1INTERFACES_LUCID_CTP_H
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #define TRIGT1INTERFACES_LUCID_CTP_H
 
 #include <stdint.h>
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuBarrelSectorLogicData.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuBarrelSectorLogicData.h
index a2d40c266bdc8900df6f6d8f274136234c01cc96..ed06cab29c5ffb23df451bd4b9ef6eec8caf5405 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuBarrelSectorLogicData.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuBarrelSectorLogicData.h
@@ -1,5 +1,8 @@
 // Dear emacs, this is -*- c++ -*-
 #ifndef TRIGT1INTERFACES_LVL1MUBARRELSECTORLOGICDATA_H
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #define TRIGT1INTERFACES_LVL1MUBARRELSECTORLOGICDATA_H
 
 // System include(s):
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuCTPIInput.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuCTPIInput.h
index ef5cb66c9608bf5ca672c378ff7322899d19dbc8..9b83381eecad5a19f9c89636018891e2790d63d0 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuCTPIInput.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuCTPIInput.h
@@ -1,5 +1,8 @@
 // Dear emacs, this is -*- c++ -*-
 #ifndef TRIGT1INTERFACES_LVL1MUCTPIINPUT_H
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #define TRIGT1INTERFACES_LVL1MUCTPIINPUT_H
 
 // System include(s):
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuEndcapSectorLogicData.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuEndcapSectorLogicData.h
index 1bd750ae6167039ec9909007da68e60ca568364a..abfae10efe8a0303d5142b7b18ad967647bfddfb 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuEndcapSectorLogicData.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuEndcapSectorLogicData.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_LVL1MUENDCAPSECTORLOGICDATA_H
 #define TRIGT1INTERFACES_LVL1MUENDCAPSECTORLOGICDATA_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuForwardSectorLogicData.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuForwardSectorLogicData.h
index 63d50ecd50b2a41fb8433623492bba9ae1ecc2b9..8d34d722c87e9acd14675c3026df468bc0832ea0 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuForwardSectorLogicData.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuForwardSectorLogicData.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_LVL1MUFORWARDSECTORLOGICDATA_H
 #define TRIGT1INTERFACES_LVL1MUFORWARDSECTORLOGICDATA_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuSectorLogicData.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuSectorLogicData.h
index 3abf9ef857a9769dbd693110662783c4196dd440..76de787350d3533b99ee70b2f87089ad3baf96a4 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuSectorLogicData.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Lvl1MuSectorLogicData.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_LVL1MUSECTORLOGICDATA_H
 #define TRIGT1INTERFACES_LVL1MUSECTORLOGICDATA_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MbtsCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MbtsCTP.h
index e4f23d6b474bf9de95d90878458a069e3cbc9306..0eb3b8a377018ad0c7abfd477b359bf70e989421 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MbtsCTP.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MbtsCTP.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_MBTS_CTP_H
 #define TRIGT1INTERFACES_MBTS_CTP_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPICTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPICTP.h
index 42c8c1249ba96b1d7166e762e8dd122fb0f3a31f..050f7fab7f3389c98f69950bc6afec0b64b8f3d9 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPICTP.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPICTP.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_MUCTPICTP_H
 #define TRIGT1INTERFACES_MUCTPICTP_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1Topo.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1Topo.h
index 36c49a381ddd0823c44e758955299fe777fb718f..610d9c20aaa270f47af87a96486c5c2d4da78232 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1Topo.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1Topo.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_MUCTPIL1TOPO_H
 #define TRIGT1INTERFACES_MUCTPIL1TOPO_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1TopoCandidate.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1TopoCandidate.h
index 6c72ed690d32918d2a9ae316071b101716d075aa..f7743521fca39df1789a1308c83a005b51a188bc 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1TopoCandidate.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIL1TopoCandidate.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_MUCTPIL1TOPOCANDIDATE_H
 #define TRIGT1INTERFACES_MUCTPIL1TOPOCANDIDATE_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIToRoIBSLink.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIToRoIBSLink.h
index abc319c073bc5be80d88a3800449620d8095d165..e9f8179f61ded2de108c57286ffda7cbf5d18c39 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIToRoIBSLink.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/MuCTPIToRoIBSLink.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_MUCTPITOROIBSLINK_H
 #define TRIGT1INTERFACES_MUCTPITOROIBSLINK_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/NimCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/NimCTP.h
index 9200bc93f0e48d5e20120890a3a9625062219f0f..ee13896b155ad16ecfc19cf1217c20ec918b2a52 100755
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/NimCTP.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/NimCTP.h
@@ -1,20 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          NimCTP.h  -  description
                             -------------------
    begin                : August 2010
-   copyright            : (C) 2002 by dobson
    email                : eleanor.dobson@cern.ch
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #ifndef TRIGT1INTERFACES_NIMCTP_H
 #define TRIGT1INTERFACES_NIMCTP_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/PhiRange.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/PhiRange.h
index 812c4f482a1248bb67f3fae33d1df0c235513d40..b9e6ce2a4c3a36e1233214b5992bce79d964f08e 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/PhiRange.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/PhiRange.h
@@ -1,20 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          Range.h  -  description
                             -------------------
    begin                : 28/02/2002
-   copyright            : (C) 2002 by moyse
    email                : e.moyse@qmul.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #ifndef TRIGT1INTERFACES_PHIRANGE_H
 #define TRIGT1INTERFACES_PHIRANGE_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Range.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Range.h
index 213983baffa2e01661fcefc3a33bf246abcbb9d5..f413ca52739cc591a8214fc32ca6964f258ac1c3 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Range.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/Range.h
@@ -1,20 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          Range.h  -  description
                             -------------------
    begin                : 28/02/2002
-   copyright            : (C) 2002 by moyse
    email                : e.moyse@qmul.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #ifndef TRIGT1INTERFACES_RANGE_H
 #define TRIGT1INTERFACES_RANGE_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEmTauRoI.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEmTauRoI.h
index 1e710687bf2aa983366b15dff1601a96f740100b..b2b47c1dfc14900946e8e3ee84ad94afd02ff873 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEmTauRoI.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEmTauRoI.h
@@ -1,21 +1,15 @@
 // Dear emacs, this is -*- c++ -*-
 // $Id: RecEmTauRoI.h 782811 2016-11-07 17:20:40Z smh $
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          RecEmTauRoI.h  -  description
                             -------------------
    begin                : Mon Jan 22 2001
-   copyright            : (C) 2001 by moyse
    email                : moyse@heppch.ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 #ifndef TRIGT1INTERFACES_RECEMTAUROI_H
 #define TRIGT1INTERFACES_RECEMTAUROI_H
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEnergyRoI.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEnergyRoI.h
index 91374b66b5faaf31b0d998605bf6f000b9f11ac8..ef6d0f5cb967ea46051d75158cf7dc61e2fd5e72 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEnergyRoI.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecEnergyRoI.h
@@ -1,22 +1,15 @@
 // Dear emacs, this is -*- c++ -*-
 // $Id: RecEnergyRoI.h 782811 2016-11-07 17:20:40Z smh $
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          RecEnergyRoI.h  -  description
                             -------------------
    begin                : Mon Jan 22 2001
-   copyright            : (C) 2001 by moyse
    email                : moyse@heppch.ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #ifndef TRIGT1INTERFACES_RECENERGYROI_H
 #define TRIGT1INTERFACES_RECENERGYROI_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetEtRoI.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetEtRoI.h
index b25859f5d94b7e063ce13b0c591830a1eba66734..a308ecc0d997e22079bd7952d446f3138bcf61da 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetEtRoI.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetEtRoI.h
@@ -1,22 +1,15 @@
 // Dear emacs, this is -*- c++ -*-
 // $Id: RecJetEtRoI.h 782811 2016-11-07 17:20:40Z smh $
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          RecJetEtRoI.h  -  description
                             -------------------
    begin                : Mon Jan 22 2001
-   copyright            : (C) 2001 by moyse
    email                : moyse@heppch.ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #ifndef TRIGT1INTERFACES_RECJETETROI_H
 #define TRIGT1INTERFACES_RECJETETROI_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetRoI.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetRoI.h
index 283bbfa5689b8430b0a64246b36e6363e5fc4f87..b17667f83b08fd7627cc3c6c0ced1cd579ff2a8b 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetRoI.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecJetRoI.h
@@ -1,22 +1,15 @@
 // Dear emacs, this is -*- c++ -*-
 // $Id: RecJetRoI.h 782811 2016-11-07 17:20:40Z smh $
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          RecJetRoI.h  -  description
                             -------------------
    begin                : Mon Jan 22 2001
-   copyright            : (C) 2001 by moyse
    email                : moyse@heppch.ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #ifndef TRIGT1INTERFACES_RECJETTROI_H
 #define TRIGT1INTERFACES_RECJETTROI_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoI.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoI.h
index 0c312544e4b93df9a8b878ef17616c95dff66065..2a688a5df0abe372cac65bdbee82ba5ced911ab4 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoI.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoI.h
@@ -1,22 +1,15 @@
 // Dear emacs, this is -*- c++ -*-
 // $Id: RecMuonRoI.h 782811 2016-11-07 17:20:40Z smh $
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                           RecMuonRoI.h  -  description
                              -------------------
     begin                : Tue Feb 25 2003
-    copyright            : (C) 2003 by wengler
     email                : Thorsten Wengler
  ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #ifndef TRIGT1INTERFACES_RECMUONROI_H
 #define TRIGT1INTERFACES_RECMUONROI_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoiSvc.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoiSvc.h
index b46c9c0db273ed0b9ca6d01a5fed97817b58ae51..0d44820308d837d868a31dae697087c6bd4ac467 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoiSvc.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecMuonRoiSvc.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_RECMUONROISVC_H
 #define TRIGT1INTERFACES_RECMUONROISVC_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecRoI.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecRoI.h
index 95298c5d79be24033043f439cd553366116e5065..522c654f84a525887849eccd03a65af45479b8e8 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecRoI.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RecRoI.h
@@ -1,20 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          RecRoi.h  -  description
                             -------------------
    begin                : Fri Oct 4 2002
-   copyright            : (C) 2002 by moyse
    email                : edward.moyse@cern.ch
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #ifndef TRIGT1INTERFACES_RECROI_H
 #define TRIGT1INTERFACES_RECROI_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIDecoder.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIDecoder.h
index 8a4910ade8fbd4d00a7d73e1704d15bbb2f2dc54..6535cbb9314a3f0b7ae640fa8f1d27d22c8275f6 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIDecoder.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIDecoder.h
@@ -1,22 +1,15 @@
 // Dear emacs, this is -*- c++ -*-
 // $Id: RoIDecoder.h 187728 2009-05-27 16:18:06Z krasznaa $
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                           RoIDecoder.h  -  description
                              -------------------
     begin                : Fri Apr 19 2002
-    copyright            : (C) 2002 by E.Moyse
     email                : moyse@ph.qmw.ac.uk
  ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #ifndef TRIGT1INTERFACES_ROIDECODER_H
 #define TRIGT1INTERFACES_ROIDECODER_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIFormatUpdater.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIFormatUpdater.h
index 156e63b149a66f4a155cb99af934a3fb90dadc55..c90daf46cc24fbd62196e6b03c38876d277378e0 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIFormatUpdater.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/RoIFormatUpdater.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_ROIFORMATUPDATER_H
 #define TRIGT1INTERFACES_ROIFORMATUPDATER_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/SlinkWord.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/SlinkWord.h
index 842e3c697bdabb280bcf881811ec23866b36adeb..cabc9be938c79fa3109a842592a7cdaad94b9e20 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/SlinkWord.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/SlinkWord.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_SLINKWORD_H
 #define TRIGT1INTERFACES_SLINKWORD_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMConst.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMConst.h
index d43c4ba6e6f77d78d4b43fa286ef0f99ca01401c..ab3f7060c76bcc84c899344e0d533c18091e7a10 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMConst.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMConst.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /****************************************************
  *
  * TMConst contains constants relevant to all the L1 trigger. There
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMUtil.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMUtil.h
index 7db3aa8ff064d7a4ef73217e944155aad46b60b0..accd3b0766a870c9ad8ca0e545eb36ec72e0b243 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMUtil.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TMUtil.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_TMUTIL_H
 #define TRIGT1INTERFACES_TMUTIL_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CTPDefs.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CTPDefs.h
index 9d6e323e874d10f5c7e39a0f4a9db129ddc5f47c..90c1a3c71b1ab16f4b71e544b33ccf9d495c006c 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CTPDefs.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CTPDefs.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
 #ifndef TRIGT1INTERFACES_TRIGT1CTPDEFS_H
 #define TRIGT1INTERFACES_TRIGT1CTPDEFS_H
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CaloDefs.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CaloDefs.h
index 936435a587dad5d36a258e215e9c5a23df9b186f..2b5ae2235d4ac55cbc9a3f4c2f47935e0d403bce 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CaloDefs.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1CaloDefs.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 //==============================================================================
 // $Id: TrigT1CaloDefs.h 632038 2014-11-28 19:27:49Z amazurov $
 //==============================================================================
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1InterfacesDict.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1InterfacesDict.h
index dd91ebe85d6b4d0952470d7c4ebcbccdc62fb7d6..882606fb958f23a30ff12334ed1ed036f96f59e8 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1InterfacesDict.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1InterfacesDict.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
 #ifndef TRIGT1INTERFACES_TRIGT1INTERFACESDICT_H
 #define TRIGT1INTERFACES_TRIGT1INTERFACESDICT_H
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1Interfaces_ClassDEF.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1Interfaces_ClassDEF.h
index 9fad1578a77f7983efae83117d1c378256e5c4d8..a1e104f9cd77cbac0bc1f730de919327defb99f1 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1Interfaces_ClassDEF.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1Interfaces_ClassDEF.h
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TrigT1Interfaces_ClassDEF_H
 #define TrigT1Interfaces_ClassDEF_H
 //Put here the CLASS_DEF macros for the STL containers you put in StoreGate
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1StoreGateKeys.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1StoreGateKeys.h
index 48ae00039a7589bf4f520af40ce2d8b682a37159..489542295927aee4be5efdaea9cd298d11c76c53 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1StoreGateKeys.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrigT1StoreGateKeys.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_TRIGT1STOREGATEKEYS_H
 #define TRIGT1INTERFACES_TRIGT1STOREGATEKEYS_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TriggerTypeWord.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TriggerTypeWord.h
index f73c726e06c5407b020eb448198d1794cf520dea..6c08668375d8a6cd2297401c6b4c4c5d3047d503 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TriggerTypeWord.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TriggerTypeWord.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_TRIGGERTYPEWORD_H
 #define TRIGT1INTERFACES_TRIGGERTYPEWORD_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrtCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrtCTP.h
index 7c6538b891b31385902583b20bb91263856046a8..8f32a1aba526f7eb3bd7712fa9633f1a9dcdb347 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrtCTP.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/TrtCTP.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_TRT_CTP_H
 #define TRIGT1INTERFACES_TRT_CTP_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/ZdcCTP.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/ZdcCTP.h
index 74a716c11a7d9c0b60f97317c62067fd5253342a..9ebb09870f6fceafb789d161524b4ad78d796d6b 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/ZdcCTP.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/ZdcCTP.h
@@ -1,4 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #ifndef TRIGT1INTERFACES_ZDC_CTP_H
 #define TRIGT1INTERFACES_ZDC_CTP_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/iRecCoordRoI.h b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/iRecCoordRoI.h
index edb9d18a88caa28ff55849500a800117220fa1e2..b22be68336bd99994d09540e88a689dc9fe9f2c1 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/iRecCoordRoI.h
+++ b/Trigger/TrigT1/TrigT1Interfaces/TrigT1Interfaces/iRecCoordRoI.h
@@ -1,21 +1,14 @@
 // Dear emacs, this is -*- c++ -*-
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          iRecCoordRoi.h  -  description
                             -------------------
    begin                : Tue Aug 12 2003
-   copyright            : (C) 2003 by emoyse
    email                : edward.moyse@cern.ch
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #ifndef TRIGT1INTERFACES_IRECCOORDROI_H
 #define TRIGT1INTERFACES_IRECCOORDROI_H
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/BcmCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/BcmCTP.cxx
index 82ee56c35d645d293082df71a9b2a7ab2c3b60aa..9ee738caa24747c74ff720b62815464068c48c83 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/BcmCTP.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/BcmCTP.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #include "TrigT1Interfaces/BcmCTP.h"
 
 // STL includes(s):
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/BitOp.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/BitOp.cxx
index 11583cbb1c1f5b77752153a88d990c81aa391824..6dead27e1cbcd76114cb66c4e10947a4251667c1 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/BitOp.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/BitOp.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
 #include <string>
 #include <algorithm>
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/BptxCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/BptxCTP.cxx
index b10fe803242c3d434331dcbd3e27ed9ff6bd05be..9b6e1db279545fc95837f970a6c98910b07cd75f 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/BptxCTP.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/BptxCTP.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #include "TrigT1Interfaces/BptxCTP.h"
 
 // STL includes(s):
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/CPRoIDecoder.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/CPRoIDecoder.cxx
index c30372241de15d9ed8773b5295a046080cced3c7..476e339c917518c94ac33720830cc1969c926440 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/CPRoIDecoder.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/CPRoIDecoder.cxx
@@ -1,20 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          CPRoIDecoder.cxx  -  description
                             -------------------
    begin                : Fri Apr 19 2002
-   copyright            : (C) 2002 by E.Moyse
    email                : moyse@ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #include <cmath>
 #include <iostream>
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/CTPSLink.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/CTPSLink.cxx
index 97e883a399c57a39aa60c8374a104ce4f8095943..2d3cf57869082cfed6e35a6278fceec932b570d8 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/CTPSLink.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/CTPSLink.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
 #include "TrigT1Interfaces/CTPSLink.h"
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/Coordinate.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/Coordinate.cxx
index 44e52b2af06ddd722996446c4157f9d71b690593..5a41447dc4d49a6f0c9121477b6d41c635da9a20 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/Coordinate.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/Coordinate.cxx
@@ -1,8 +1,10 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          Coordinate.cxx  -  description
                             -------------------
    begin                : 26/02/2002
-   copyright            : (C) 2002 by moyse
    email                : e.moyse@qmul.ac.uk
 ***************************************************************************/
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/CoordinateRange.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/CoordinateRange.cxx
index 52314990b4612c02b1760e985dea6906b74b29c2..4bf3383ed2b69fa38e3588102d1663f73f31216e 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/CoordinateRange.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/CoordinateRange.cxx
@@ -1,8 +1,10 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          CoordinateRange.cxx  -  description
                             -------------------
    begin                : 26/02/2002
-   copyright            : (C) 2002 by moyse
    email                : e.moyse@qmul.ac.uk
 ***************************************************************************/
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/EmTauCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/EmTauCTP.cxx
index c5c3d36d68f54d97ddba5ca150216e0ccaac3fc5..4cae6c897c2d91040d53bc2f8328387039b45fe5 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/EmTauCTP.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/EmTauCTP.cxx
@@ -1,19 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          EmTauCTP.cxx  -  description
                             -------------------
    begin                : Mon Jan 22 2001
-   copyright            : (C) 2001 by moyse
    email                : moyse@heppch.ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 #include "TrigT1Interfaces/EmTauCTP.h"
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/EnergyCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/EnergyCTP.cxx
index 1169d88b6f91958fe717c4c8dc0efd01345381c3..5d71270d57ed2b6ab2c42f5c7032657a19205fd7 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/EnergyCTP.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/EnergyCTP.cxx
@@ -1,20 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          EnergyCTP.cxx  -  description
                             -------------------
    begin                : Mon Jan 22 2001
-   copyright            : (C) 2001 by moyse
    email                : moyse@heppch.ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #include "TrigT1Interfaces/EnergyCTP.h"
 
 namespace LVL1 {
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/FrontPanelCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/FrontPanelCTP.cxx
index edb049aa9f1d2904302bea676fd29c2776c87f73..a325430b035591c0f3d1b44971a54b87b91ba6ec 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/FrontPanelCTP.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/FrontPanelCTP.cxx
@@ -1,5 +1,8 @@
 ///////////////////////// -*- C++ -*- /////////////////////////////
 // FrontPanelCTP.cxx 
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 // Implementation file for class FrontPanelCTP
 // Author: S.Binet<binet@cern.ch>
 /////////////////////////////////////////////////////////////////// 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/JEPRoIDecoder.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/JEPRoIDecoder.cxx
index e50775721d7d94529725a8078bfd7986e97e7e40..3db7a968c2a22378e0a5c0eabd751fed96594a0f 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/JEPRoIDecoder.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/JEPRoIDecoder.cxx
@@ -1,19 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          JEPRoIDecoder.cxx  -  description
                             -------------------
    begin                : Fri Apr 19 2002
-   copyright            : (C) 2002 by E.Moyse
    email                : moyse@ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 #include <cmath>
 #include <iostream>
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/JetCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/JetCTP.cxx
index 316662cdeadcf9d3b2efda7d2de313054599006a..94118829167df5b08c1f893b8fa26f77c109efff 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/JetCTP.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/JetCTP.cxx
@@ -1,19 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          JetCTP.cxx  -  description
                             -------------------
    begin                : Mon Jan 22 2001
-   copyright            : (C) 2001 by moyse
    email                : moyse@heppch.ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 #include "TrigT1Interfaces/JetCTP.h"
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/JetEtRoIDecoder.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/JetEtRoIDecoder.cxx
index af9e080bbec6087114bf6def621371d782b846ca..a9faa0d10f47477b2f676fd7c62ae8c62fac04eb 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/JetEtRoIDecoder.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/JetEtRoIDecoder.cxx
@@ -1,19 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          JetEtRoIDecoder.cxx  -  description
                             -------------------
    begin                : Fri Apr 19 2002
-   copyright            : (C) 2002 by E.Moyse
    email                : moyse@ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 #include <cmath>
 #include <iostream>
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/L1METvalue.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/L1METvalue.cxx
index 5dceaa7c8d010b8c700b2a55b787d139a941a287..cea80dcd89e586f8b99dc4beffdede236c5dcb01 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/L1METvalue.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/L1METvalue.cxx
@@ -1,8 +1,10 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                           L1METvalue.cxx  -  description
                              -------------------
     begin                : 19-10-2007
-    copyright            : (C) 2007 Alan Watson
     email                : Alan.Watson@cern.ch
  
     A simple set of functions to calculate ETmiss at the precision available
@@ -17,14 +19,6 @@
     value.
  ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 #include "TrigT1Interfaces/L1METvalue.h"
 #include <cmath>
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/LucidCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/LucidCTP.cxx
index 268ff4499bfb27f6be108efa12acd92da215d5a6..1166f528aa40a65384f96506d02586a210d9df6f 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/LucidCTP.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/LucidCTP.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #include "TrigT1Interfaces/LucidCTP.h"
 
 #include <sstream>
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuBarrelSectorLogicData.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuBarrelSectorLogicData.cxx
index d592362bc6b84e3ce5309d8f34955f2a6e5dc2a1..189f2ff1006d120552818505165b32afc7d690e9 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuBarrelSectorLogicData.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuBarrelSectorLogicData.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #include <iomanip>
 #include <iostream>
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuCTPIInput.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuCTPIInput.cxx
index 3284dab96219c3b5f923c2f5b09efac85af2b454..7c57a93ad4d15654f5070bc38bed553217e0c097 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuCTPIInput.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuCTPIInput.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
 #include <iostream>
 #include <iomanip>
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuEndcapSectorLogicData.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuEndcapSectorLogicData.cxx
index 53143b9ca863e45fee4cdf37d0768c50ecc39eef..5e3b916967631f6cd31118bcda21d0e34508732b 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuEndcapSectorLogicData.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuEndcapSectorLogicData.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
 #include <iomanip>
 #include <iostream>
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuForwardSectorLogicData.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuForwardSectorLogicData.cxx
index 32097b0d4c1fe7d05f435ee494d49194670909f1..1aea6fa51194453fdf74e4dc217d82e6b9efd40b 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuForwardSectorLogicData.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuForwardSectorLogicData.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #include <iomanip>
 #include <iostream>
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuSectorLogicData.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuSectorLogicData.cxx
index 6a26f9b03f6d3d70681b80b4c33ef1f2488e979b..37d8a4e611da2fad1508a41157ecf87db93ad4e4 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuSectorLogicData.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/Lvl1MuSectorLogicData.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
 #include <cstdio>
 #include <iostream>
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/MbtsCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/MbtsCTP.cxx
index 4d5a7d5fd58fc5243ad86107ec4b3cffbcac5133..d9e919f43f6263588e951effd51b2e937561e6b8 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/MbtsCTP.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/MbtsCTP.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #include "TrigT1Interfaces/MbtsCTP.h"
 
 // STL includes(s):
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPICTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPICTP.cxx
index 18819cb9df2ca2adc80c38989e887cca24ad8667..094f9e987e87b1cba1611b4ef1bfdfdae93c7f07 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPICTP.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPICTP.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
 #include "TrigT1Interfaces/MuCTPICTP.h"
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1Topo.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1Topo.cxx
index e34afd06d7f392e5fb9c17076b55fb5b4af8f532..040504058a0022598fec7bbf1456dd16b179774a 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1Topo.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1Topo.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
 #include "TrigT1Interfaces/MuCTPIL1Topo.h"
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1TopoCandidate.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1TopoCandidate.cxx
index 22f5ef962910d2c00f5faf31107143092e763d86..81f3c0e58bc1938b3acf404cf614c4762b287a93 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1TopoCandidate.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIL1TopoCandidate.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
 #include "TrigT1Interfaces/MuCTPIL1TopoCandidate.h"
 #include <iostream> 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIToRoIBSLink.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIToRoIBSLink.cxx
index 6b43463e00672a85d6bd142fb8c3b9b7cd3b15e8..25198d228f3482515b76fbdc33182502f259d078 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIToRoIBSLink.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/MuCTPIToRoIBSLink.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #include "TrigT1Interfaces/MuCTPIToRoIBSLink.h"
 
 namespace L1MUINT {
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/NimCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/NimCTP.cxx
index b15e888f39f1ed9eed313516963ebe3d31929886..3a99d12ad05655388e49e21a319288a4980217e3 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/NimCTP.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/NimCTP.cxx
@@ -1,19 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          NimCTP.cxx  -  description
                             -------------------
    begin                : Mon Jan 22 2001
-   copyright            : (C) 2010 by dobson
    email                : eleanor.dobson@cern.ch
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 #include "TrigT1Interfaces/NimCTP.h"
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/PhiRange.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/PhiRange.cxx
index 466e44fd9abbb0438ac1d9f9237b9a9d2ec7d083..f82d1328871c953515ad6c2afbe06c78a686ab69 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/PhiRange.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/PhiRange.cxx
@@ -1,8 +1,10 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          PhiRange.cxx  -  description
                             -------------------
    begin                : 26/02/2002
-   copyright            : (C) 2002 by moyse
    email                : e.moyse@qmul.ac.uk
 ***************************************************************************/
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/Range.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/Range.cxx
index f4be88a28515de4f01781b092020e223eb808858..2d4de1344fa89d123e347eecbc64654fa56dc20d 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/Range.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/Range.cxx
@@ -1,8 +1,10 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                          Range.cxx  -  description
                             -------------------
    begin                : 26/02/2002
-   copyright            : (C) 2002 by moyse
    email                : e.moyse@qmul.ac.uk
 ***************************************************************************/
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RecEmTauRoI.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RecEmTauRoI.cxx
index 5783053826cc594f0daddbd8d8d513d0657a9bf8..b86338e0a3902eaf5cde0f48f4dcdcc9698ce506 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/RecEmTauRoI.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/RecEmTauRoI.cxx
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 // $Id: RecEmTauRoI.cxx 796120 2017-02-08 03:20:47Z ssnyder $
 /***************************************************************************
                         RecEmTauRoI.cxx  -  description
                            -------------------
   begin                : Mon Jan 22 2001
-  copyright            : (C) 2001 by moyse
   email                : moyse@heppch.ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 // STL include(s):
 #include <cmath>
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RecEnergyRoI.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RecEnergyRoI.cxx
index 6ec8ae52449aef898251caf18456e108344b8c87..e6c13aba14123a6a38fa3659dc8572c7aa767b7b 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/RecEnergyRoI.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/RecEnergyRoI.cxx
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 // $Id: RecEnergyRoI.cxx 342657 2011-01-28 23:42:18Z watsona $
 /***************************************************************************
                          RecEnergyRoI.cxx  -  description
                             -------------------
    begin                : Mon Jan 22 2001
-   copyright            : (C) 2001 by moyse
    email                : moyse@heppch.ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 // Trigger config includes:
 #include "TrigConfL1Data/L1DataDef.h"
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RecJetEtRoI.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RecJetEtRoI.cxx
index 597cbbbe94998515b7bd7d3e18a9a1453150e960..0fd17bfb0931f3871e28ab73631a2f9b63c02759 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/RecJetEtRoI.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/RecJetEtRoI.cxx
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 // $Id: RecJetEtRoI.cxx 187728 2009-05-27 16:18:06Z krasznaa $
 /***************************************************************************
                          RecJetEtRoI.cxx  -  description
                             -------------------
    begin                : Mon Jan 22 2001
-   copyright            : (C) 2001 by moyse
    email                : moyse@heppch.ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 // Local include(s):
 #include "TrigT1Interfaces/RecJetEtRoI.h"
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RecJetRoI.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RecJetRoI.cxx
index 7062fad126db8607649ae6bfcb7f2693845787d1..c4d5d646617119e20578bdc7a6ef4736d008769e 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/RecJetRoI.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/RecJetRoI.cxx
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 // $Id: RecJetRoI.cxx 796120 2017-02-08 03:20:47Z ssnyder $
 /***************************************************************************
                          RecJetRoI.cxx  -  description
                             -------------------
    begin                : Mon Jan 22 2001
-   copyright            : (C) 2001 by moyse
    email                : moyse@heppch.ph.qmw.ac.uk
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 // STL include(s):
 #include <cmath>
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RecMuonRoI.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RecMuonRoI.cxx
index 9002058e2da7f3945f22989215edcce6fec81946..f88a32149a51c41e5b098deda08e19082cf41eba 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/RecMuonRoI.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/RecMuonRoI.cxx
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 // $Id: RecMuonRoI.cxx 364688 2011-05-09 16:58:25Z krasznaa $
 /***************************************************************************
                          RecMuonRoI.cxx  -  description
                             -------------------
    begin                : Tue Feb 25 2003
-   copyright            : (C) 2003 by wengler
    email                : Thorsten.Wengler
 ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 // STL include(s):
 #include <iomanip>
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RecRoI.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RecRoI.cxx
index f1074fef9f9cb984241c3838bf60ccd32066a4f4..058f4647d555c3920a1d7d59547551dfb85b8cf3 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/RecRoI.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/RecRoI.cxx
@@ -1,19 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                           RecRoi.cxx  -  description
                              -------------------
     begin                : Fri Oct 4 2002
-    copyright            : (C) 2002 by moyse
     email                : moyse@zanzibar
  ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 #include "TrigT1Interfaces/RecRoI.h"
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RoIDecoder.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RoIDecoder.cxx
index 9ea5e1128b9de23a01703cd066ab929aee52da3d..fa19e6fa58d75da23b893e936a9225e2f71ce39e 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/RoIDecoder.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/RoIDecoder.cxx
@@ -1,20 +1,14 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 // $Id: RoIDecoder.cxx 187728 2009-05-27 16:18:06Z krasznaa $
 /***************************************************************************
                           RoIDecoder.cxx  -  description
                              -------------------
     begin                : Fri Apr 19 2002
-    copyright            : (C) 2002 by E.Moyse
     email                : moyse@ph.qmw.ac.uk
  ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 
 #ifndef  TRIGGERSPACE
 // running in Athena
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/RoIFormatUpdater.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/RoIFormatUpdater.cxx
index a7a6ecc284f9cdb4888046a4357402cd8c60590c..2082995440335e6ef37630220640c3cbcfb1aedf 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/RoIFormatUpdater.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/RoIFormatUpdater.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /* **********************************************************
 *
 * Quick and dirty hack to work around fact that there is no RoI
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/SlinkWord.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/SlinkWord.cxx
index 6b12bc532f779a9b83ba5ee3257998f5c9c2af72..770ee88d8189d2d567d1db0ad8b3a85f646f0c39 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/SlinkWord.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/SlinkWord.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
 #include "TrigT1Interfaces/SlinkWord.h"
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/TMUtil.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/TMUtil.cxx
index 5a4d114975e0a1a4a356083e43ea8f8ee7d451c6..ec4289982d2a6e7db78aaaa03ea1c758aa4a44e7 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/TMUtil.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/TMUtil.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
 #include <sstream>
 #include <cmath>
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CTPDefs.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CTPDefs.cxx
index 29217641bd6103bf63c3f6f78c152087340ba092..976e13a4fa8ef4b8c60f1279de235e451ada797b 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CTPDefs.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CTPDefs.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 
 #include "TrigT1Interfaces/TrigT1CTPDefs.h"
 
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CaloDefs.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CaloDefs.cxx
index a633ff0405b6bbb1fbb85a4de4c9a1b24ee27407..0ea2624a6fe9b24538b96b928d237fe795a6da0e 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CaloDefs.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/TrigT1CaloDefs.cxx
@@ -1,19 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                           TrigT1CaloDefs.cxx  -  description
                              -------------------
     begin                : Mon Apr 22 2002
-    copyright            : (C) 2002 by Edward Moyse
     email                : e.moyse@qmul.ac.uk
  ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
 #ifndef TRIGGERSPACE
 //running in Athena
 #include "TrigT1Interfaces/TrigT1CaloDefs.h"
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/TrtCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/TrtCTP.cxx
index 7aea0be66db518c462ec6f074b065bb2b9714ece..f6db0eb358213cd5bcbe626c4a5203c228b8f036 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/TrtCTP.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/TrtCTP.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #include "TrigT1Interfaces/TrtCTP.h"
 
 // STL includes(s):
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/ZdcCTP.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/ZdcCTP.cxx
index acd03da3541a1b42d06a107e0aa380b6e900dc55..8743d5874a2bbadf500da733b68c64658c0ec292 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/ZdcCTP.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/ZdcCTP.cxx
@@ -1,3 +1,6 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 #include "TrigT1Interfaces/ZdcCTP.h"
 
 // STL includes(s):
diff --git a/Trigger/TrigT1/TrigT1Interfaces/src/iRecCoordRoI.cxx b/Trigger/TrigT1/TrigT1Interfaces/src/iRecCoordRoI.cxx
index 2b3b3048400572af500f1af43275f0dde13f097e..a56186926de4de4be2ff8fd5e3f5c953bc443efb 100644
--- a/Trigger/TrigT1/TrigT1Interfaces/src/iRecCoordRoI.cxx
+++ b/Trigger/TrigT1/TrigT1Interfaces/src/iRecCoordRoI.cxx
@@ -1,20 +1,13 @@
+/*
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+*/
 /***************************************************************************
                           iRecCoordRoi.cxx  -  description
                              -------------------
     begin                : Tue Aug 12 2003
-    copyright            : (C) 2003 by emoyse
     email                : emoyse@pcephc402
  ***************************************************************************/
 
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #include "TrigT1Interfaces/iRecCoordRoI.h"
 
 iRecCoordRoI::iRecCoordRoI(){
diff --git a/Trigger/TrigT1/TrigT1Lucid/TrigT1Lucid/TrigT1Lucid.h b/Trigger/TrigT1/TrigT1Lucid/TrigT1Lucid/TrigT1Lucid.h
index 588e8c78d976da95a0e9ec84de98d281941a79b8..3c63de97fe3ee9c2e4f88c769da975427f02dcc0 100644
--- a/Trigger/TrigT1/TrigT1Lucid/TrigT1Lucid/TrigT1Lucid.h
+++ b/Trigger/TrigT1/TrigT1Lucid/TrigT1Lucid/TrigT1Lucid.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIG_T1_LUCID_H
diff --git a/Trigger/TrigT1/TrigT1Lucid/src/TrigT1Lucid.cxx b/Trigger/TrigT1/TrigT1Lucid/src/TrigT1Lucid.cxx
index 284d0adbbb7ff87f9a6c629261289a085670d600..781562947413e8626dcc913db5238d82cbd4f553 100644
--- a/Trigger/TrigT1/TrigT1Lucid/src/TrigT1Lucid.cxx
+++ b/Trigger/TrigT1/TrigT1Lucid/src/TrigT1Lucid.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1Lucid/TrigT1Lucid.h"
diff --git a/Trigger/TrigT1/TrigT1MBTS/TrigT1MBTS/TrigT1MBTS.h b/Trigger/TrigT1/TrigT1MBTS/TrigT1MBTS/TrigT1MBTS.h
index 39e7c8cb8e6fb5c8c95652b4fb967605ec4dead0..af607858c85f8a1b9297140628b4fc3901931d3c 100644
--- a/Trigger/TrigT1/TrigT1MBTS/TrigT1MBTS/TrigT1MBTS.h
+++ b/Trigger/TrigT1/TrigT1MBTS/TrigT1MBTS/TrigT1MBTS.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1MBTS_H
diff --git a/Trigger/TrigT1/TrigT1MBTS/doc/packagedoc.h b/Trigger/TrigT1/TrigT1MBTS/doc/packagedoc.h
index 7d14c2b9c4292d0f5cdf27f80425683358b4c2df..167b5c79aa992a539532d8b72f9a937c600e34b2 100644
--- a/Trigger/TrigT1/TrigT1MBTS/doc/packagedoc.h
+++ b/Trigger/TrigT1/TrigT1MBTS/doc/packagedoc.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1MBTS/src/TrigT1MBTS.cxx b/Trigger/TrigT1/TrigT1MBTS/src/TrigT1MBTS.cxx
index 69aa43efa4a1119ecfa38606d76490499e857e2f..3bc4692d50cb3a9956690302055a073afbbb4b1d 100644
--- a/Trigger/TrigT1/TrigT1MBTS/src/TrigT1MBTS.cxx
+++ b/Trigger/TrigT1/TrigT1MBTS/src/TrigT1MBTS.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1MBTS/TrigT1MBTS.h"
diff --git a/Trigger/TrigT1/TrigT1Monitoring/doc/packagedoc.h b/Trigger/TrigT1/TrigT1Monitoring/doc/packagedoc.h
index 08269ef3d5412df123ac07fc2818d98a890a739b..5be2b651d5e6100d96ab1f57a4b8dc857193a9f9 100644
--- a/Trigger/TrigT1/TrigT1Monitoring/doc/packagedoc.h
+++ b/Trigger/TrigT1/TrigT1Monitoring/doc/packagedoc.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.cxx b/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.cxx
index 9d549720a64503c0d581165898a2d9412eceaffe..41dd136a8ab6425153b3c3a39285bded6c312f70 100644
--- a/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.cxx
+++ b/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ********************************************************************
diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.h b/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.h
index 1d8eb9188ec94821721a5889afdd39bfe2ad3454..182fc401664498dd8fd68ca98aa3f566f777b6a6 100644
--- a/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.h
+++ b/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ********************************************************************
diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.cxx b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.cxx
index 001076f45a18228aa7fbe41f981c004dcc2321b9..bb78be92bb2ba7d3bb6e730de64c940148b6092c 100755
--- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.cxx
+++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ********************************************************************
diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.h b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.h
index 63eebd7aabb791b9adc538bbedc10327b5f1fea7..9ee5e1f51b031937437b2ad7f07f0d170bbe8509 100755
--- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.h
+++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloCTPMon.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ********************************************************************
diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.cxx b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.cxx
index 1e978bba28055a2248194e0afd741a20ac54978f..3ec28f9fc24f0dde70a2270230477644ce0e7183 100644
--- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.cxx
+++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ********************************************************************
diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.h b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.h
index 5efddd62a812f7c5df9ea91ab19d6c57178ce02b..8dfc7e191285113c13ab8a1549737a71576a67c3 100644
--- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.h
+++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloHVScalesMon.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.cxx b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.cxx
index efbfbdedabb4fd65cd2aeeb125e5acf87c9a4f73..8f0e33e0f6f085bb5852084e026b15d7f074a06a 100755
--- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.cxx
+++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.cxx
@@ -1,18 +1,7 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-// ********************************************************************
-//
-// NAME:        L1CaloL1TopoMon.cxx
-// PACKAGE:     TrigT1CaloMonitoring
-//
-// AUTHOR:      Joergen Sjoelin (sjolin@fysik.su.se)
-//
-// DESCRIPTION: Monitoring of L1Calo --> L1Topo transmission
-//
-// ********************************************************************
-
 #include <map>
 #include <utility>
 #include <set>
@@ -25,6 +14,9 @@
 #include "GaudiKernel/MsgStream.h"
 #include "GaudiKernel/StatusCode.h"
 
+#include "EventInfo/EventID.h"
+#include "EventInfo/EventInfo.h"
+
 #include "LWHists/LWHist.h"
 #include "LWHists/TH1F_LW.h"
 #include "LWHists/TH2F_LW.h"
@@ -89,7 +81,7 @@ L1CaloL1TopoMon::L1CaloL1TopoMon( const std::string & type,
     m_configSvc("TrigConf::TrigConfigSvc/TrigConfigSvc", name),
     m_errorTool("LVL1::TrigT1CaloMonErrorTool/TrigT1CaloMonErrorTool"),
     m_histTool("LVL1::TrigT1CaloLWHistogramTool/TrigT1CaloLWHistogramTool"),
-    m_debug(false), m_histBooked(false),
+    m_debug(false), m_histBooked(false),m_lumiNo(0),
     m_h_l1topo_1d_CMXTobs(0),
     m_h_l1topo_1d_Simulation(0),
     m_h_l1topo_1d_JetTobs_EnergyLg(0),
@@ -98,6 +90,7 @@ L1CaloL1TopoMon::L1CaloL1TopoMon( const std::string & type,
     m_h_l1topo_2d_Tobs_etaPhi_mismatch{},
     m_h_l1topo_2d_Tobs_etaPhi_match{},
     m_h_l1topo_1d_Errors(0),
+    m_h_l1topo_1d_Overflows(0),
     m_h_l1topo_1d_DAQTobs(0),
     m_h_l1topo_1d_DAQJetTobs(0),
     m_h_l1topo_1d_DAQTauTobs(0),
@@ -107,6 +100,7 @@ L1CaloL1TopoMon::L1CaloL1TopoMon( const std::string & type,
     m_h_l1topo_1d_DAQMismatchTriggerBits(0),
     m_h_l1topo_1d_DAQOverflowBits(0),
     m_h_l1topo_1d_ROITobs(0),
+    m_h_l1topo_1d_ErrorsByLumiblock(0),
     m_h_l1topo_2d_ItemsBC{},
     m_h_l1topo_2d_ItemsBC_ratio{}
   
@@ -191,26 +185,40 @@ StatusCode L1CaloL1TopoMon::bookHistogramsRecurrent()
     // book histograms that are only relevant for cosmics data...
   }
 
+  if (newRunFlag() || newLumiBlockFlag()) {
+    const EventInfo *evtInfo = 0;
+    StatusCode sc = evtStore()->retrieve(evtInfo);
+    if (sc.isSuccess()) {
+      m_lumiNo = evtInfo->event_ID()->lumi_block();
+    }
+  }
+
   //if ( newLumiBlockFlag() ) {}
 
   if ( newRunFlag() ) {
 
     MgmtAttr_t attr = ATTRIB_UNMANAGED;
-    MonGroup L1CaloL1Topo( this, m_PathInRootFile, run, attr );
-    MonGroup L1CaloL1TopoEvents( this, m_PathInRootFile, run, attr,
-                                 "", "eventSample" );
+    MonGroup L1CaloL1Topo( this, m_PathInRootFile, run, attr, "", "merge" );
 
     m_histTool->setMonGroup(&L1CaloL1Topo);
 
     m_h_l1topo_1d_Errors =
       m_histTool->book1F("l1topo_1d_Errors",
-			 "L1Topo error summary",
+			 "L1Topo error summary;;Number of Events",
 			 ERROR_BIT::NUMBEROFBITS, 0, ERROR_BIT::NUMBEROFBITS);
+
+    m_h_l1topo_1d_Overflows =
+      m_histTool->book1F("l1topo_1d_Overflow",
+			 "L1Topo overflows;Overflow;Number of Events",1,0,1);
+
     for (int i=0; i<ERROR_BIT::NUMBEROFBITS;++i)
       m_h_l1topo_1d_Errors->GetXaxis()->
 	SetBinLabel(i+1,ERROR_LABELS[i].c_str());
 
-  
+    m_h_l1topo_1d_ErrorsByLumiblock =
+      m_histTool->book1F("l1topo_1d_ErrorsByLumiblock",
+			 "Events with Errors by Lumiblock;"
+			 "Lumi Block;Number of Events",2500,0,2500);
 
     m_h_l1topo_1d_CMXTobs =
       m_histTool->book1F("l1topo_1d_CMXTobs",
@@ -338,33 +346,27 @@ StatusCode L1CaloL1TopoMon::bookHistogramsRecurrent()
 			     std::to_string(i),
 			     std::string("Timing vs "
 					 "Algorithm Number ")+textFPGA[i],
-			     32, i*32, (i+1)*32, 3, -1.5, 1.5);
+			     32, i*32, (i+1)*32, 5, -2.5, 2.5);
       m_h_l1topo_2d_ItemsBC_ratio[i][0] =
 	m_histTool->bookTH2F(std::string("l1topo_2d_ItemsBC_online_ratio")+
 			     std::to_string(i),
 			     std::string("(online) Timing Ratio vs "
 					 "Algorithm Number ")+textFPGA[i],
-			     32, i*32, (i+1)*32, 3, -1.5, 1.5);
+			     32, i*32, (i+1)*32, 5, -2.5, 2.5);
       m_h_l1topo_2d_ItemsBC_ratio[i][1] =
 	m_histTool->bookTH2F(std::string("l1topo_2d_ItemsBC_ratio")+
 			     std::to_string(i),
 			     std::string("Timing Ratio vs "
 					 "Algorithm Number ")+textFPGA[i],
-			     32, i*32, (i+1)*32, 3, -1.5, 1.5);
+			     32, i*32, (i+1)*32, 5, -2.5, 2.5);
     }
 
     // Get L1Topo output bit names from the LVL1 menu thresholds
-    
-    // KW COMMENTING OUT
-    // LABELS ARE CROWDED AND ILLEGIBLE
-    // ALPHANUMERIC LABELS BREAK TIER-0 MERGING (ATR-13604)
-
-    /*std::map<unsigned int, std::string> topoCounterToName;
+    std::map<unsigned int, std::string> topoCounterToName;
     const std::vector<TrigConf::TriggerThreshold*>& thrVec = 
       m_configSvc->thresholdConfig()->
       getThresholdVector(TrigConf::L1DataDef::TOPO);
-    ATH_MSG_INFO("L1Topo bits found in the LVL1 menu = " << thrVec.size());
-    
+    ATH_MSG_DEBUG("L1Topo bits found in the LVL1 menu = " << thrVec.size());
     if (thrVec.size()>0) {
       for (auto thr : thrVec) {
 	if (thr) {
@@ -375,22 +377,24 @@ StatusCode L1CaloL1TopoMon::bookHistogramsRecurrent()
 	else
 	  ATH_MSG_DEBUG("Looping L1Topo bit inactive");
       }
-      ATH_MSG_INFO("L1Topo bits configured in the LVL1 menu = "
-		   << topoCounterToName.size());
+      ATH_MSG_DEBUG("L1Topo bits configured in the LVL1 menu = "
+		    << topoCounterToName.size());
       for (unsigned int binIndex=0; binIndex<128; ++binIndex){ 
+	std::string label(std::to_string(binIndex));
 	auto it = topoCounterToName.find(binIndex);
-	std::string label;
-	if (it != topoCounterToName.end()){ // KW commenting out (labels are crowded & illegible)
-	  label=it->second;
-	}
-	else {
-	  label=std::to_string(binIndex);
-          cout << (binIndex%32+1);
+	if (it != topoCounterToName.end()){
+	  const bool USE_ALPHANUM=true;
+	  if (USE_ALPHANUM && it->second.length()>2) {
+	    label=it->second;
+	    for (uint32_t bc=1; bc<=5; ++bc)
+	      m_h_l1topo_2d_ItemsBC[binIndex/32]->
+		SetBinContent(binIndex%32+1,bc,0.0001); // bins>0 active bins
+	  }
 	}
 	m_h_l1topo_2d_ItemsBC[binIndex/32]->GetXaxis()->
 	  SetBinLabel(binIndex%32+1,label.c_str());
       }
-    }*/
+    }
 
     m_histTool->unsetMonGroup();
     m_histBooked = true;
@@ -414,6 +418,8 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
 
   StatusCode sc = StatusCode::SUCCESS;
 
+  int topo_error=0;
+
   typedef std::tuple<int,int,int,int,int,int> TobKey;
   std::set<TobKey> cmxKeys[TOB_TYPES],topoKeys[TOB_TYPES],
     keyDiff[TOB_TYPES],keyIntersect[TOB_TYPES];
@@ -422,6 +428,7 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
   if (m_errorTool->corrupt() || m_errorTool->robOrUnpackingError()) {
     if (m_debug) msg(MSG::DEBUG) << "Corrupt L1Calo event" << endmsg;
     m_h_l1topo_1d_Errors->Fill(CALO_CONV);
+    topo_error|=(1<<CALO_CONV);
   }
 
   const DataHandle<CTP_RDO> ctpRDO = 0;
@@ -434,38 +441,24 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
     ctp.setRDO(ctpRDO);
     const uint16_t l1aPos = ctpRDO->getL1AcceptBunchPosition();
     const uint32_t bx=ctp.getBunchCrossings().size();
+    const int dbx=bx/2;
     if (l1aPos >= bx) {
       ATH_MSG_INFO( "CTP_RDO gave invalid l1aPos." );
     }
     else {
       ATH_MSG_DEBUG( "CTP l1aPos, size : " << l1aPos << ", " << bx );
       if ( bx>=3 && l1aPos>0) {
-	for (int bc=-1; bc<2; ++bc) {
+	for (int bc=-dbx; bc<=dbx; ++bc) {
 	  const CTP_BC& ctp_bc = ctp.getBunchCrossings().at(l1aPos+bc);
 	  std::bitset<512> tip = ctp_bc.getTIP();
-	  ATH_MSG_VERBOSE( "got CTP TIP bits: " << tip.to_string() );
+	  ATH_MSG_DEBUG( "got CTP TIP bits: " << tip.to_string() );
 	  const unsigned int topoTipStart(384);
 	  const unsigned int nTopoCTPOutputs(128);
-	  for (unsigned int item=0; item<nTopoCTPOutputs; ++item){
-	    int h = (int)item/32;
-	    int binx = m_h_l1topo_2d_ItemsBC[h]->GetXaxis()->FindBin(item);
-	    int biny = m_h_l1topo_2d_ItemsBC[h]->GetYaxis()->FindBin(bc);
-	    if (item == 8 || item == 29 || item == 30 || item == 31
-		|| item == 46 || item == 47 || item == 48 || item == 49
-		|| item == 50 || item == 51 || item == 52 || item == 53
-		|| item == 54 || item == 55 || item == 56 || item == 57
-		|| item == 58 || item == 59 || item == 60 || item == 61
-		|| item == 62 || item == 63 || item == 88 || item == 89
-		|| item == 90 || item == 91 || item == 92 || item == 93
-		|| item == 94 || item == 95 || item == 107 || item == 108) { 
-	      //Sets bin value for algorithms not used in the run
-	      m_h_l1topo_2d_ItemsBC[item/32]->SetBinContent(binx, biny,-200);
-	    } 
-	    else {
-	      //Checks if algorithms fired on event-by-event basis
-	      if (tip.test(item+topoTipStart)) {
-		m_h_l1topo_2d_ItemsBC[item/32]->Fill(item,bc);
-	      }
+	  for (unsigned int item=0; item<nTopoCTPOutputs;++item) {
+	    // Check if algorithms fired
+	    if (tip.test(item+topoTipStart)) {
+	      m_h_l1topo_2d_ItemsBC[item/32]->Fill(item,bc);
+	      ATH_MSG_DEBUG("  Fired (item, bc) =" << item << ", " << bc);
 	    }
 	  }
 	}
@@ -478,7 +471,7 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
   sc = evtStore()->retrieve(cmxcptob);
   if (sc.isFailure() || !cmxcptob) {
     ATH_MSG_DEBUG ("No CMX CP tobs found in TES");
-    //m_h_l1topo_1d_Errors->Fill(NO_CMX_CP);
+    // tot_error|=NO_CMX_CP;
   }   
   else {
     ATH_MSG_DEBUG( "Found CMXCPTobCollection, looping on TOBs ..." );
@@ -506,6 +499,7 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
   if (sc.isFailure() || !cmxtob) {
     ATH_MSG_DEBUG ("No CMX tobs found in TES");
     m_h_l1topo_1d_Errors->Fill(NO_CMX);
+    topo_error|=(1<<NO_CMX);
   }   
   else {
     ATH_MSG_DEBUG( "Found CMXJetTobCollection, looping on TOBs ..." );
@@ -527,8 +521,8 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
   
   // Retrieve L1Topo CTP simulted decision if present
   if (!evtStore()->contains<LVL1::FrontPanelCTP>(m_topoCTPLoc.value())){
-    ATH_MSG_INFO("Could not retrieve LVL1::FrontPanelCTP with key "
-		 << m_topoCTPLoc.value());
+    ATH_MSG_DEBUG("Could not retrieve LVL1::FrontPanelCTP with key "
+		  << m_topoCTPLoc.value());
   }
   else {
     const DataHandle< LVL1::FrontPanelCTP > topoCTP;
@@ -538,16 +532,6 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
     }
     else {
       for(unsigned int i=0; i<32; ++i) {
-	// old scheme
-	//uint32_t mask = 0x1; mask <<= i;
-	//if( (m_topoCTP->cableWord0(0) & mask) != 0 )
-	//	m_h_l1topo_1d_Simulation->Fill(i); // cable 0, clock 0
-	//if( (m_topoCTP->cableWord0(1) & mask) != 0 )
-	//	m_h_l1topo_1d_Simulation->Fill(32 + i); // cable 0, clock 1
-	//if( (m_topoCTP->cableWord1(0) & mask) != 0 )
-	//	m_h_l1topo_1d_Simulation->Fill(64 + i); // cable 1, clock 0
-	//if( (m_topoCTP->cableWord1(1) & mask) != 0 )
-	//	m_h_l1topo_1d_Simulation->Fill(96 + i); // cable 1, clock 1
 	uint64_t topores0=topoCTP->cableWord0(1);
 	topores0<<=32;
 	topores0+=topoCTP->cableWord0(0);
@@ -586,6 +570,7 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
   sc = evtStore()->retrieve(rdos);
   if (sc.isFailure() or 0 == rdos) {
     m_h_l1topo_1d_Errors->Fill(NO_DAQ);
+    topo_error|=(1<<NO_DAQ);
     ATH_MSG_DEBUG ( "Could not retrieve L1Topo DAQ RDO collection "
 		    "from StoreGate" );
   }
@@ -598,6 +583,10 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
     std::vector<uint32_t> daqMuonTobs;
     std::vector<uint32_t> vFibreSizes;
     std::vector<uint32_t> vFibreStatus;
+
+    auto triggerBits = L1Topo::getDecisionAndOverflowBits(*rdos);
+    ATH_MSG_DEBUG( "Trigger  bits from L1Topo RDOs 0b" << triggerBits.first );
+    ATH_MSG_DEBUG( "Overflow bits from L1Topo RDOs 0b" << triggerBits.second );
     
     for (const L1TopoRDO* rdo : *rdos) {
       ATH_MSG_VERBOSE( *rdo );
@@ -607,12 +596,14 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
       if (! errors.empty()){
 	ATH_MSG_WARNING( "Converter errors reported: " << errors );
 	m_h_l1topo_1d_Errors->Fill(DAQ_CONV);
+	topo_error|=(1<<DAQ_CONV);
       }
       const std::vector<uint32_t> cDataWords = rdo->getDataWords();
 
       if ( cDataWords.size() == 0 ) {
         ATH_MSG_DEBUG ( "L1TopoRDO DAQ is empty" );
 	m_h_l1topo_1d_Errors->Fill(NO_DAQ);
+	topo_error|=(1<<NO_DAQ);
       }
 
       // initialise header: beware, this can make a valid-looking header
@@ -626,6 +617,7 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
 	    header = L1Topo::Header(word);
 	    if (header.payload_crc()!=0) {
 	      m_h_l1topo_1d_Errors->Fill(PAYL_CRC);
+	      topo_error|=(1<<PAYL_CRC);
 	    }
 	    i_fpga=(((rdo->getSourceID())>>3)&2)+header.fpga();
 	    break;
@@ -646,8 +638,11 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
 	    auto status = L1Topo::Status(word);
 	    ATH_MSG_WARNING( "fibre overflow: " << status.overflow()
 			     << " fibre crc: " << status.crc() );
-	    if (status.overflow()) m_h_l1topo_1d_Errors->Fill(F_OVERFLOW);
-	    if (status.crc()) m_h_l1topo_1d_Errors->Fill(F_CRC);
+	    if (status.overflow()) m_h_l1topo_1d_Overflows->Fill(0.5);
+	    if (status.crc()) {
+	      m_h_l1topo_1d_Errors->Fill(F_CRC);
+	      topo_error|=(1<<F_CRC);
+	    }
 	    break;
 	  }
 	case L1Topo::BlockTypes::L1TOPO_TOB:
@@ -771,11 +766,13 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
     if (! errors.empty()) {
       ATH_MSG_WARNING( "Converter errors reported: " << errors );
       m_h_l1topo_1d_Errors->Fill(ROI_CONV);
+      topo_error|=(1<<ROI_CONV);
     }
     const std::vector<uint32_t> cDataWords = rdo.getDataWords();
     if ( cDataWords.size() == 0 ) {
       ATH_MSG_DEBUG ( "L1TopoRDO ROI is empty" );
       m_h_l1topo_1d_Errors->Fill(NO_ROI);
+      topo_error|=(1<<NO_ROI);
     }
     for (auto word : cDataWords) {
       switch (L1Topo::blockType(word)) {
@@ -786,8 +783,10 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
         roiTobs.push_back(tob);
         //auto index = L1Topo::triggerBitIndex(rdo.getSourceID(),tob);
         for (unsigned int i = 0; i < 8; ++i) {
-          //m_histTriggerBitsFromROIConv->Fill (index+i,(tob.trigger_bits() >>i)&1);
-          //m_histOverflowBitsFromROIConv->Fill(index+i,(tob.overflow_bits()>>i)&1);
+          //m_histTriggerBitsFromROIConv->
+	  // Fill(index+i,(tob.trigger_bits() >>i)&1);
+          //m_histOverflowBitsFromROIConv->
+	  // Fill(index+i,(tob.overflow_bits()>>i)&1);
         }
         // histogram trigger and overflow bits
         break;
@@ -815,7 +814,10 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
     set_symmetric_difference(cmxKeys[t].begin(),cmxKeys[t].end(),
 			     topoKeys[t].begin(),topoKeys[t].end(),
 			     inserter(keyDiff[t],keyDiff[t].begin()));
-    if (keyDiff[t].size()>0) m_h_l1topo_1d_Errors->Fill(CMX_MATCH);
+    if (keyDiff[t].size()>0) {
+      m_h_l1topo_1d_Errors->Fill(CMX_MATCH);
+      topo_error|=(1<<CMX_MATCH);
+    }
     for (auto& tob : keyDiff[t]) {
       int x,y;
       double eta,phi;
@@ -850,6 +852,10 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
       m_h_l1topo_2d_Tobs_Hitmap_match[t]->Fill(x,y);
     }
   }
+
+  if (topo_error) {
+    m_h_l1topo_1d_ErrorsByLumiblock->Fill(m_lumiNo);
+  }
   
   return StatusCode::SUCCESS;
 }
@@ -858,27 +864,24 @@ StatusCode L1CaloL1TopoMon::fillHistograms()
 StatusCode L1CaloL1TopoMon::procHistograms()
 /*---------------------------------------------------------*/
 {
+  ATH_MSG_DEBUG("Enter procHistograms()");
+
   //if ( endOfLumiBlockFlag() ) { }  
   //if ( endOfRunFlag() ) { }
   
-  if ( endOfLumiBlockFlag() || endOfRunFlag() ) {
-    int eor=(endOfRunFlag() ? 1 : 0);
-    for (int cpu=0; cpu<=3; ++cpu) {
-      for (int item=1; item<=32; ++item) {
-	for (int bc=1; bc<=3; ++bc) {
-	  if (m_h_l1topo_2d_ItemsBC[cpu]->GetBinContent(item,bc)<0);
-	  //m_h_l1topo_2d_ItemsBC_ratio[cpu]->SetBinContent(item,bc,-0.4);
-	  else if (m_h_l1topo_2d_ItemsBC[cpu]->GetBinContent(item,bc)==0)
-	    m_h_l1topo_2d_ItemsBC_ratio[cpu][eor]->SetBinContent(item,bc,0.0001);
-	  else if (bc==2)
-	    m_h_l1topo_2d_ItemsBC_ratio[cpu][eor]->SetBinContent(item,bc,1);
-	  else {
-	    float ratio=m_h_l1topo_2d_ItemsBC[cpu]->
-	      GetBinContent(item,bc)/(float)
-	      m_h_l1topo_2d_ItemsBC[cpu]->GetBinContent(item,2);
-	    m_h_l1topo_2d_ItemsBC_ratio[cpu][eor]->
-	      SetBinContent(item,bc,fmax(0.05,ratio));
-	  }
+  int eor=(endOfRunFlag() ? 1 : 0);
+  for (int cpu=0; cpu<=3; ++cpu) {
+    for (int item=1; item<=32; ++item) {
+      for (int bc=1; bc<=5; ++bc) {
+	if (m_h_l1topo_2d_ItemsBC[cpu]->GetBinContent(item,bc)==0);
+	else if (bc==3)
+	  m_h_l1topo_2d_ItemsBC_ratio[cpu][eor]->SetBinContent(item,bc,1);
+	else {
+	  float binval=m_h_l1topo_2d_ItemsBC[cpu]->GetBinContent(item,bc);
+	  float centerbin=m_h_l1topo_2d_ItemsBC[cpu]->GetBinContent(item,3);
+	  float ratio=(binval<1 || centerbin<1 ? 0 : binval/centerbin);
+	  m_h_l1topo_2d_ItemsBC_ratio[cpu][eor]->
+	    SetBinContent(item,bc,fmax(0.05,ratio));
 	}
       }
     }
diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.h b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.h
index 7db6ce45018fa387242c518eeb1163643d85e9b3..6c9a32461b560200f913ea37c8ca999183818569 100755
--- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.h
+++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloL1TopoMon.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ********************************************************************
@@ -58,14 +58,12 @@ class TrigT1CaloLWHistogramTool;
   virtual StatusCode procHistograms();
 
   enum ERROR_BIT {CALO_CONV=0, NO_CMX, DAQ_CONV, NO_DAQ, ROI_CONV,
-		  NO_ROI, F_OVERFLOW,
-		  F_CRC, PAYL_CRC, CMX_MATCH, NUMBEROFBITS};
+		  NO_ROI, F_CRC, PAYL_CRC, CMX_MATCH, NUMBEROFBITS};
 
   enum TOB_TYPE {JETL_TOB=0, JETS_TOB, TAU_TOB, EM_TOB, MU_TOB};
   
   std::vector<std::string> ERROR_LABELS{"Calo conv","No CMX","DAQ conv",
-      "No DAQ","ROI conv","No ROI","Fibre Overf","Fibre CRC",
-      "Payload CRC","CMX-Topo match"};
+      "No DAQ","ROI conv","No ROI","Fibre CRC","Payload CRC","CMX-Topo match"};
   
  private:
   
@@ -96,6 +94,8 @@ class TrigT1CaloLWHistogramTool;
    bool m_debug;
    /// Histograms booked flag
    bool m_histBooked;
+   /// Current lumiblock
+   unsigned int m_lumiNo;
 
    /** Histos */   
    // Data transmission checks
@@ -108,6 +108,7 @@ class TrigT1CaloLWHistogramTool;
    TH2F_LW* m_h_l1topo_2d_Tobs_etaPhi_mismatch[TOB_TYPES];
    TH2F_LW* m_h_l1topo_2d_Tobs_etaPhi_match[TOB_TYPES];
    TH1F_LW* m_h_l1topo_1d_Errors;
+   TH1F_LW* m_h_l1topo_1d_Overflows;
    TH1F_LW* m_h_l1topo_1d_DAQTobs;
    TH1F_LW* m_h_l1topo_1d_DAQJetTobs;
    TH1F_LW* m_h_l1topo_1d_DAQTauTobs;
@@ -117,8 +118,9 @@ class TrigT1CaloLWHistogramTool;
    TH1F_LW* m_h_l1topo_1d_DAQMismatchTriggerBits;
    TH1F_LW* m_h_l1topo_1d_DAQOverflowBits;
    TH1F_LW* m_h_l1topo_1d_ROITobs;
-   TH2F*    m_h_l1topo_2d_ItemsBC[4];
-   TH2F*    m_h_l1topo_2d_ItemsBC_ratio[4][2];
+   TH1F_LW* m_h_l1topo_1d_ErrorsByLumiblock;
+   TH2F* m_h_l1topo_2d_ItemsBC[4];
+   TH2F* m_h_l1topo_2d_ItemsBC_ratio[4][2];
 };
  
  // ============================================================================
diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.cxx b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.cxx
index 09f379b0ff84abedc25fba1732350ef435783384..7bcb938a72e04559e9a921e99a01a6a09c6723e3 100755
--- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.cxx
+++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ********************************************************************
diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.h b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.h
index 8ec32c00d2d231208b38492d0e7f2b1c7d669652..a92b970fab831da31def5efbc3cb7be4ad6402ce 100755
--- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.h
+++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloLevel2Mon.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ********************************************************************
diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.cxx b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.cxx
index 38f1283bfa9912b72a00b08775d7b1822ca22b85..2c5b603a7ef7ead993d93e17ac2eae5e43a2dd5e 100644
--- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.cxx
+++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ********************************************************************
diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.h b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.h
index a3118b50e97c24e477f3f0040d63ce9c71018a86..073446934e3905e36f6518ea3ab83b3e956e4f71 100644
--- a/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.h
+++ b/Trigger/TrigT1/TrigT1Monitoring/src/L1CaloPMTScoresMon.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Muctpi/doc/packagedoc.h b/Trigger/TrigT1/TrigT1Muctpi/doc/packagedoc.h
index 07abe24b4f3b1c182b6f2073bc8f84d4b370278b..c4a7fe4f532ddefe063c7ad409ae787b57a415cf 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/doc/packagedoc.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/doc/packagedoc.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1Muctpi/python/TrigT1MuctpiAlgorithmConfig.py b/Trigger/TrigT1/TrigT1Muctpi/python/TrigT1MuctpiAlgorithmConfig.py
new file mode 100644
index 0000000000000000000000000000000000000000..92083d42c15a02620f26ac7678c0589a10d31f26
--- /dev/null
+++ b/Trigger/TrigT1/TrigT1Muctpi/python/TrigT1MuctpiAlgorithmConfig.py
@@ -0,0 +1,65 @@
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+
+## get a handle to the default top-level algorithm sequence
+from AthenaCommon.AlgSequence import AlgSequence
+topSequence = AlgSequence()
+## get a handle to the ServiceManager
+from AthenaCommon.AppMgr import ServiceMgr as svcMgr
+## get a handle to the ApplicationManager
+from AthenaCommon.AppMgr import theApp
+
+## to decode the MuCTPI bytestream
+from TrigT1ResultByteStream.TrigT1ResultByteStreamConf import MuCTPIByteStreamTool,RecMuCTPIByteStreamTool
+from TrigT1Muctpi.TrigT1MuctpiConf import CBNTAA_ReadMuCTPI_RDO
+from TrigT1Muctpi.TrigT1MuctpiConf import CBNTAA_ReadMuCTPI_RIO
+from TrigT1Muctpi.TrigT1MuctpiConf import CBNTAA_MuctpiRoI
+
+if not hasattr( svcMgr, "THistSvc" ):
+  from GaudiSvc.GaudiSvcConf import THistSvc
+  svcMgr += THistSvc()
+#svcMgr.THistSvc.Output = ["file1 DATAFILE='HistFile.root' OPT='RECREATE'"];
+
+if not hasattr( theApp.Dlls, "RootHistCnv" ):
+  theApp.Dlls += [ "RootHistCnv" ]
+  theApp.HistogramPersistency = "ROOT"
+
+if not hasattr( svcMgr, "NTupleSvc" ):
+  from GaudiSvc.GaudiSvcConf import NTupleSvc
+  svcMgr += NTupleSvc()
+#svcMgr.NTupleSvc.Output = [ "FILE1 DATAFILE='NtupleFile.root' OPT='NEW'" ]
+
+if not hasattr( topSequence, "CBNT_AthenaAware" ):
+  from CBNT_Athena.CBNT_AthenaConf import *
+  from CBNT_Utils.CBNT_UtilsConf import *
+  CBNT_AthenaAware = CBNT_AthenaAware()
+#  CBNT_AthenaAware.OutputLevel = 2
+  topSequence += CBNT_AthenaAware
+
+if not "CBNTAA_EventInfo" in topSequence.CBNT_AthenaAware.Members :
+  from CBNT_Athena.CBNT_AthenaConf import *
+  from CBNT_Utils.CBNT_UtilsConf import *
+  topSequence.CBNT_AthenaAware.Members += ["CBNTAA_EventInfo"]
+        
+if not "CBNTAA_ReadMuCTPI_RDO" in topSequence.CBNT_AthenaAware.Members :
+  CBNTAA_ReadMuCTPI_RDO = CBNTAA_ReadMuCTPI_RDO()
+  CBNTAA_ReadMuCTPI_RDO.StoreRawData = False
+  topSequence.CBNT_AthenaAware.Members += ["CBNTAA_ReadMuCTPI_RDO"]
+
+if not "CBNTAA_ReadMuCTPI_RIO" in topSequence.CBNT_AthenaAware.Members :
+  topSequence.CBNT_AthenaAware.Members += ["CBNTAA_ReadMuCTPI_RIO"]
+
+if not "CBNTAA_MuctpiRoI" in topSequence.CBNT_AthenaAware.Members :
+  CBNTAA_MuctpiRoI = CBNTAA_MuctpiRoI()
+  #      CBNT_MuctpiRoI.RoISource = "roi"
+  topSequence.CBNT_AthenaAware.Members += ["CBNTAA_MuctpiRoI"]
+
+# print topSequence
+
+# class CBNTAA_Algorithms():
+#   """
+#     Configurable module to setup ntuple-producing algorithms
+#   """
+#   def __init__( self, name = "CBNTAA_Algorithms" ):
+#     #
+#     # CBNT part
+#     #
diff --git a/Trigger/TrigT1/TrigT1Muctpi/python/__init__.py b/Trigger/TrigT1/TrigT1Muctpi/python/__init__.py
index f0cb7ef91c4772555f05b58ccccfcc80f09cda74..670f0c6952edc92e6936e070b3f4cfba4c7004c2 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/python/__init__.py
+++ b/Trigger/TrigT1/TrigT1Muctpi/python/__init__.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 # File: TrigT1Muctpi/__init__.py
 # Author: berge@cern.ch
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.cxx
index bb6060f5bab5883a2b15edba5983a158f571d407..2f59f619c3790499ea6404a73bd4c8d5936804b7 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: L1Muctpi.cxx 794528 2017-01-30 12:36:33Z fwinkl $
@@ -418,7 +418,11 @@ namespace LVL1MUCTPI {
     m_theMuctpi->processData( &mergedInput );      
     // Save the output of the simulation
     CHECK( saveOutput() );
-      
+
+    uint32_t can;
+    std::vector< uint32_t > dataWord;
+    CHECK( updateMuCTPI_RDO(can, dataWord) );
+
     // check the other 4 possible BC offset values in case the input objects tells us there are
     // out of time candidates
 
@@ -433,9 +437,12 @@ namespace LVL1MUCTPI {
 	  m_theMuctpi->processData( &mergedInput, (*it));      
 	  // Save the output of the simulation
 	  CHECK( saveOutput( (*it) ) );	    
+	  uint32_t tmp_can; // this isn't used for anything!
+	  CHECK( updateMuCTPI_RDO(tmp_can, dataWord) );
 	}
       }
     }    
+    CHECK( saveOutput_MuCTPI_RDO(can, dataWord) );
 
     return StatusCode::SUCCESS;
   }
@@ -478,6 +485,11 @@ namespace LVL1MUCTPI {
     // Save the output of the simulation
     CHECK( saveOutput() );
 
+    uint32_t can;
+    std::vector< uint32_t > dataWord;
+    CHECK( updateMuCTPI_RDO(can, dataWord) );
+    CHECK( saveOutput_MuCTPI_RDO(can, dataWord) );
+
     return StatusCode::SUCCESS;
   }
 
@@ -508,6 +520,11 @@ namespace LVL1MUCTPI {
     // Save the output of the simulation
     CHECK( saveOutput() );
 
+    uint32_t can;
+    std::vector< uint32_t > dataWord;
+    CHECK( updateMuCTPI_RDO(can, dataWord) );
+    CHECK( saveOutput_MuCTPI_RDO(can, dataWord) );
+
     return StatusCode::SUCCESS;
   }
 
@@ -579,6 +596,58 @@ namespace LVL1MUCTPI {
     return StatusCode::SUCCESS;
   }
 
+  /**
+   *In order to handle multiple BCID per event, the RDO object needs to be saved only after
+   *all BCID offsets have been processed. This function will update the data word that will
+   *go to the RDO, but won't save the RDO to storegate yet.
+   */
+  StatusCode L1Muctpi::updateMuCTPI_RDO(uint32_t& can, std::vector< uint32_t >& dataWord)
+  {
+    const std::list< unsigned int >& daqData = m_theMuctpi->getDAQData();
+    
+    const int HEADER_SIZE = 9;
+    const int STATUSandTAILER_SIZE = 2 + 3;
+    
+    // size check
+    // payload should contain at least 1 data (Candidate Multiplicity)
+    int payloadSize = daqData.size() - HEADER_SIZE - STATUSandTAILER_SIZE;
+    if( payloadSize < 1 ) {
+      REPORT_ERROR( StatusCode::FAILURE )
+	<< "MIROD didn't provide correct DAQ data";
+      return StatusCode::FAILURE;
+    }
+    
+    // skip header part
+    std::list< unsigned int >::const_iterator itDAQ = daqData.begin();
+    for( int iHead = 0; iHead < HEADER_SIZE; ++iHead ) {
+      ++itDAQ;
+    }
+    
+    // candidate multiplicity
+    can = *itDAQ;
+    ++itDAQ;
+    
+    // data word
+    //std::vector< uint32_t > dataWord;
+    for( int iData = 1; iData < payloadSize; ++iData, ++itDAQ ) {
+      dataWord.push_back( *itDAQ );
+    }
+
+    return StatusCode::SUCCESS;
+  }
+
+  /**
+   *Here we save the actual RDO, after all BCID offsets have been processed
+   */
+  StatusCode L1Muctpi::saveOutput_MuCTPI_RDO(uint32_t& can, std::vector< uint32_t >& dataWord)
+  {
+    MuCTPI_RDO * muCTPI_RDO = new MuCTPI_RDO( can, dataWord );
+    CHECK( evtStore()->record( muCTPI_RDO, m_rdoOutputLocId ) );
+    ATH_MSG_DEBUG( "MuCTPI_RDO object recorded to StoreGate with key: "
+		   << m_rdoOutputLocId );
+    return StatusCode::SUCCESS;
+  }
+
   /**
    * This function is used by all the different execute functions to save the output
    * of the MuCTPI simulation into various objects in StoreGate.
@@ -594,41 +663,43 @@ namespace LVL1MUCTPI {
                      << m_ctpOutputLocId );
 
       // create MuCTPI RDO
-      const std::list< unsigned int >& daqData = m_theMuctpi->getDAQData();
-
-      const int HEADER_SIZE = 9;
-      const int STATUSandTAILER_SIZE = 2 + 3;
-
-      // size check
-      // payload should contain at least 1 data (Candidate Multiplicity)
-      int payloadSize = daqData.size() - HEADER_SIZE - STATUSandTAILER_SIZE;
-      if( payloadSize < 1 ) {
-	REPORT_ERROR( StatusCode::FAILURE )
-	  << "MIROD didn't provide correct DAQ data";
-	return StatusCode::FAILURE;
-      }
-
-      // skip header part
-      std::list< unsigned int >::const_iterator itDAQ = daqData.begin();
-      for( int iHead = 0; iHead < HEADER_SIZE; ++iHead ) {
-	++itDAQ;
-      }
-
-      // candidate multiplicity
-      const uint32_t can = *itDAQ;
-      ++itDAQ;
-
-      // data word
-      std::vector< uint32_t > dataWord;
-      for( int iData = 1; iData < payloadSize; ++iData, ++itDAQ ) {
-	dataWord.push_back( *itDAQ );
-      }
+      // const std::list< unsigned int >& daqData = m_theMuctpi->getDAQData();
+
+      // const int HEADER_SIZE = 9;
+      // const int STATUSandTAILER_SIZE = 2 + 3;
+
+      // // size check
+      // // payload should contain at least 1 data (Candidate Multiplicity)
+      // int payloadSize = daqData.size() - HEADER_SIZE - STATUSandTAILER_SIZE;
+      // if( payloadSize < 1 ) {
+      // 	REPORT_ERROR( StatusCode::FAILURE )
+      // 	  << "MIROD didn't provide correct DAQ data";
+      // 	return StatusCode::FAILURE;
+      // }
+
+      // // skip header part
+      // std::list< unsigned int >::const_iterator itDAQ = daqData.begin();
+      // for( int iHead = 0; iHead < HEADER_SIZE; ++iHead ) {
+      // 	++itDAQ;
+      // }
+
+      // // candidate multiplicity
+      // const uint32_t can = *itDAQ;
+      // ++itDAQ;
+
+      // // data word
+      // std::vector< uint32_t > dataWord;
+      // for( int iData = 1; iData < payloadSize; ++iData, ++itDAQ ) {
+      // 	dataWord.push_back( *itDAQ );
+      // }
 
       // create MuCTPI RDO
-      MuCTPI_RDO * muCTPI_RDO = new MuCTPI_RDO( can, dataWord );
-      CHECK( evtStore()->record( muCTPI_RDO, m_rdoOutputLocId ) );
-      ATH_MSG_DEBUG( "MuCTPI_RDO object recorded to StoreGate with key: "
-                     << m_rdoOutputLocId );
+      // MuCTPI_RDO * muCTPI_RDO = new MuCTPI_RDO( can, dataWord );
+      // std::string rdoOutputLocId = m_rdoOutputLocId;
+      // if (bcidOffset) rdoOutputLocId = m_rdoOutputLocId+std::to_string(bcidOffset);
+      // CHECK( evtStore()->record( muCTPI_RDO, rdoOutputLocId ) );
+      // ATH_MSG_DEBUG( "MuCTPI_RDO object recorded to StoreGate with key: "
+      //                << rdoOutputLocId );
 
       // store RoIB result in interface object and put to StoreGate
       std::list< unsigned int > resultForRoIB = m_theMuctpi->getRoIBData();
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.h b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.h
index 37959254a98e2e824bb43825d9112f45854483ef..f9ab2367a37e25e0c07b90b20b52b02f5a566470 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1Muctpi.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: L1Muctpi.h 681356 2015-07-08 12:17:52Z wengler $
@@ -81,6 +81,10 @@ namespace LVL1MUCTPI {
       StatusCode executeFromRDO();
       /// Validate the muon threshold configuration
       StatusCode validate( const std::vector< TrigConf::TriggerThreshold* >& thresholds ) const;
+      /// Update the data word for the RDO object
+      StatusCode updateMuCTPI_RDO(uint32_t& can, std::vector< uint32_t >& dataWord);
+      /// Save the MuCTPI RDO object
+      StatusCode saveOutput_MuCTPI_RDO(uint32_t& can, std::vector< uint32_t >& dataWord);
       /// Save the outputs of the simulation into StoreGate
       StatusCode saveOutput(int bcidOffset = 0);
 
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.cxx
index 42fcf88dce2cf06a33ba133885adc2068c40ea09..55d8bc366663e6c2ab29e51757b0722cf262ac76 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: L1MuctpiPatGen.cxx 441850 2011-06-06 14:50:52Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.h b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.h
index e4aa30d080394d7cc65b6318b048120c115a1762..2ed6821a02a8559a9e9ad2d46325f49ee13696df 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiPatGen.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: L1MuctpiPatGen.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.cxx
index 64eb31ac8466dfb1ffc4f195769d71230172094d..14563d6919f06af2737a2de07f02b3ab11c4180a 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: L1MuctpiTestReadResults.cxx 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.h b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.h
index 0125fb3664efdacc65026c99e88cb6fecf42c213..61e852a4d178dc324242bb0dcb631fe973370228 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTestReadResults.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: L1MuctpiTestReadResults.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.cxx
index 01718c515d5a401b07aced86282546d489b74187..7d2db622c24a78f050c8b40dc99a80cb2b9d0235 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: L1MuctpiTool.cxx 794528 2017-01-30 12:36:33Z fwinkl $
@@ -30,6 +30,8 @@
 
 // The output object of the simulation
 #include "TrigT1Result/MuCTPI_RDO.h"
+#include "TrigT1Result/MuCTPI_MultiplicityWord_Decoder.h"
+#include "TrigT1Result/MuCTPI_DataWord_Decoder.h"
 
 // Inlcudes for the MuCTPI simulation
 #include "../Algorithms/L1MuctpiTool.h"
@@ -366,63 +368,93 @@ namespace LVL1MUCTPI {
   // algorithm code what to execute. This is essetnially the execute from RDO variant
   // below without the saveOutput call, since we only want part of that routine.
 
-  StatusCode L1MuctpiTool::fillMuCTPIL1Topo(LVL1::MuCTPIL1Topo& l1topoCandidates ) const {
+  StatusCode L1MuctpiTool::fillMuCTPIL1Topo(LVL1::MuCTPIL1Topo& l1topoCandidates, int bcidOffset) const {
     ATH_MSG_DEBUG( "in fillMuCTPIL1Topo()" );
     
     // Retrieve the MuCTPIToRoIBSLink or RoIBResult object from storegate:
     const ROIB::RoIBResult* roibResult {nullptr};
     const L1MUINT::MuCTPIToRoIBSLink* muctpi_slink {nullptr};
+    const MuCTPI_RDO* muctpiRDO = {nullptr};
     
-    if( evtStore()->contains<L1MUINT::MuCTPIToRoIBSLink>( m_roiOutputLocId) ) {
-      CHECK( evtStore()->retrieve( muctpi_slink,  m_roiOutputLocId) );
-    } else if( evtStore()->contains<ROIB::RoIBResult>(m_roibLocation) ) {
-      CHECK( evtStore()->retrieve(roibResult, m_roibLocation) );
-    } else {
-      ATH_MSG_WARNING("Neither a MuCTPIToRoIBSLink with SG key " << m_roibLocation << " nor an RoIBResult were found in the event.");
-      return StatusCode::RECOVERABLE;
+    if(bcidOffset==0) {      
+      if( evtStore()->contains<L1MUINT::MuCTPIToRoIBSLink>( m_roiOutputLocId) ) {
+	CHECK( evtStore()->retrieve( muctpi_slink,  m_roiOutputLocId) );
+      } else if( evtStore()->contains<ROIB::RoIBResult>(m_roibLocation) ) {
+	CHECK( evtStore()->retrieve(roibResult, m_roibLocation) );
+      } else {
+	ATH_MSG_WARNING("Neither a MuCTPIToRoIBSLink with SG key '/Run/L1MuCTPItoRoIBLocation' nor a an RoIBResult were found in the event.");
+	return StatusCode::RECOVERABLE;
+      }
+    }else{
+      CHECK( evtStore()->retrieve( muctpiRDO, m_rdoLocId ) );
+      ATH_MSG_DEBUG( "Retrieved MuCTPI_RDO object from StoreGate" );
     }
     
-    // Extract the RoIs into a vector:
-    std::vector< unsigned int > convertableRoIs;
-
-   if( roibResult ) {
-
-      const std::vector< ROIB::MuCTPIRoI >& rois = roibResult->muCTPIResult().roIVec();
-      ATH_MSG_DEBUG("Filling the input event from RoIBResult. Number of Muon ROIs: " << rois.size() );
-      for( const ROIB::MuCTPIRoI & muonRoI : rois ) {
-	   convertableRoIs.push_back(  muonRoI.roIWord() );
-      }
-   } else if( muctpi_slink ) {
-
-      ATH_MSG_DEBUG("Filling the input event. Number of Muon ROIs: " << muctpi_slink->getMuCTPIToRoIBWords().size() - ROIB::Header::wordsPerHeader - ROIB::Trailer::wordsPerTrailer - 1);
-      unsigned int icnt = 0;
-      for ( unsigned int roiword : muctpi_slink->getMuCTPIToRoIBWords() ) {
-
-         ++icnt;
-         // skip header
-         if ( icnt <= ROIB::Header::wordsPerHeader + 1 )
-            continue;
-
-         // skip trailer
-         if ( icnt > ( muctpi_slink->getMuCTPIToRoIBWords().size() - ROIB::Trailer::wordsPerTrailer ) )
-            continue;
-
-	 // fill RoI into vector
-	 convertableRoIs.push_back(roiword);
-      }
-   }
-
-    // Create the input to the MuCTPI:
+    // Convert output of MUCTPi to input
     LVL1MUONIF::Lvl1MuCTPIInput convertedInput;
-    CHECK( Converter::convertRoIs( convertableRoIs, &convertedInput ) );
 
+    // if reading from ROS data
+    if(muctpiRDO) {
+      
+      //std::cout << "DataWord Decoding" << std::endl;
+      //for(auto dW : muctpiRDO->dataWord()) 
+      //MuCTPI_DataWord_Decoder(dW).dumpData(msg());
+      
+      // Get the BCID of the collision:
+      unsigned int bcid_next = ( ( muctpiRDO->candidateMultiplicity() >> 18 ) & 0x7 ) + bcidOffset;
+      if(bcid_next==8) bcid_next=0;
+      ATH_MSG_DEBUG("Filling the input event from MUCTPI_RDO for bcid = " << bcid_next);
+      
+      // Create the input to the MuCTPI for the +1 BC
+      CHECK( Converter::convertRDO( muctpiRDO->dataWord(), bcid_next, &convertedInput ) );
+      ATH_MSG_DEBUG("Input converted");
+     
+    }
+    // or from RoIB data
+    else{
+      
+      // Extract the RoIs into a vector:
+      std::vector< unsigned int > convertableRoIs;
+      
+      if( roibResult ) {
+	
+	const std::vector< ROIB::MuCTPIRoI >& rois = roibResult->muCTPIResult().roIVec();
+	ATH_MSG_DEBUG("Filling the input event from RoIBResult. Number of Muon ROIs: " << rois.size() );
+	for( const ROIB::MuCTPIRoI & muonRoI : rois ) {
+	  convertableRoIs.push_back(  muonRoI.roIWord() );
+	}
+      } else if( muctpi_slink ) {
+	
+	ATH_MSG_DEBUG("Filling the input event. Number of Muon ROIs: " << muctpi_slink->getMuCTPIToRoIBWords().size() - ROIB::Header::wordsPerHeader - ROIB::Trailer::wordsPerTrailer - 1);
+	unsigned int icnt = 0;
+	for ( unsigned int roiword : muctpi_slink->getMuCTPIToRoIBWords() ) {
+	  
+	  ++icnt;
+	  // skip header
+	  if ( icnt <= ROIB::Header::wordsPerHeader + 1 )
+	    continue;
+	  
+	  // skip trailer
+	  if ( icnt > ( muctpi_slink->getMuCTPIToRoIBWords().size() - ROIB::Trailer::wordsPerTrailer ) )
+	    continue;
+	  
+	  // fill RoI into vector
+	  convertableRoIs.push_back(roiword);
+	}
+      }
+      
+      // Create the input to the MuCTPI:
+      CHECK( Converter::convertRoIs( convertableRoIs, &convertedInput ) );     
+    }
+    
     // process the input with the MuCTPI simulation
+    ATH_MSG_DEBUG("MUCTPI data processing...");
     m_theMuctpi->processData( &convertedInput );
-
+    
     // get outputs for L1Topo 
     ATH_MSG_DEBUG("Getting the output for L1Topo");
     l1topoCandidates = m_theMuctpi->getL1TopoData();
- 
+    
     return StatusCode::SUCCESS;
   }
 
@@ -759,8 +791,8 @@ namespace LVL1MUCTPI {
       CHECK( evtStore()->record( l1topo, m_l1topoOutputLocId ) );
       //      std::cout << "TW: central slice: offset: " <<  bcidOffset << "  location: " << m_l1topoOutputLocId << std::endl;
       //l1topo->print();
-   }
-    
+    }
+
     /// if we have a bcid offset, then just get the topo output and put it on storegate
     if (bcidOffset  != 0) {
       ATH_MSG_DEBUG("Getting the output for L1Topo for BCID slice");
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.h b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.h
index 5c79f85c92d7b37b075a327ba53ae093d1a9dca9..1916095e9b87114988d3e55e23c8f583bbd9502d 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Algorithms/L1MuctpiTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1MUCTPI_L1MUCTPITOOL_H
@@ -33,7 +33,7 @@ namespace LVL1MUCTPI {
 
       virtual StatusCode initialize() override;
 
-      virtual StatusCode fillMuCTPIL1Topo(LVL1::MuCTPIL1Topo& ) const override; 
+      virtual StatusCode fillMuCTPIL1Topo(LVL1::MuCTPIL1Topo&, int bcidOffset=0) const override;
 
       virtual void handle(const Incident&) override;
 
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.cxx
index 53b41de5e82173d30fc9d5863b9e902807fec4a7..db2159ba5c68aeea517c0781f7abb42af3c631de 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: BitOp.cxx 796872 2017-02-13 15:03:25Z fwinkl $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.h
index d75f4ba1e0624926d4ca828431b058c0fe961959..dfbd3cad8cee938ff88c8e4bebff05f778abe254 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/BitOp.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: BitOp.h 796872 2017-02-13 15:03:25Z fwinkl $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Configuration.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Configuration.h
index 6a867bdef73b23a8de0bc31116639c46db14675f..f999a1fda99b757cb8d3ff07d278fd1ad3b4a9cb 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Configuration.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Configuration.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: Configuration.h 515239 2012-08-28 11:39:45Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.cxx
index 1f9e2c3e55fa02e67fc589f64b5c009f34760cce..0b61e6ffb5a84360e2adade8c1e8b5dfe2f30295 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: Converter.cxx 707664 2015-11-13 05:36:00Z ssnyder $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.h
index 3ee7f62922c611bf0e7183a6086920a058e5a72f..3083a78b63ebd7895c03c2bd6dd34059d0968550 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Converter.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: Converter.h 707664 2015-11-13 05:36:00Z ssnyder $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/CorruptedFileException.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/CorruptedFileException.h
index 572478e83ece5bbf9109164ac9d7cabbfc7dc63f..fb68fca4427263bdac8fe7ea18e60d28683643dd 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/CorruptedFileException.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/CorruptedFileException.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: CorruptedFileException.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Detector.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Detector.h
index d5e3e95f9b86ae27ccff800ddc31fa6c62b385e2..a5db3ded440a2d118d36d1dbd5341edd3e4af83f 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Detector.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Detector.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: Detector.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.cxx
index 85e22902d43b5716b76290c1438a46e6e419d3ef..1054f11d4ff7e575dcc1dcbe759639305cf5ca56 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: EventID.cxx 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.h
index 88a59b46c82370251878588e4ec96dce9d5dc447..8cda8df3548b81bd663b42431d5801a0180a650a 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventID.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: EventID.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.cxx
index 686af9cf363cbc883815900ff5a3397555f8ad3a..9f9755d1e1ed018979923c34f6679518180a96f4 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: EventIDSingleton.cxx 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.h
index 9c78eb6e2c36a252cf4c92e649a83229fba2dfcf..a6c0b783aa4c948ccce2552a18d31f7b4ffbf535 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/EventIDSingleton.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: EventIDSingleton.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.cxx
index 53b944e2e3cc1a935132f2374c85b3ccf045dac3..1a0a0e6d0434c5ffb198e8207f90c4f31acba5e4 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: GenTestPattern.cxx 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.h
index 01921b107babd069f7fb5be96ae39256bf68def7..aa8ed7bff7441272529fd33bde3563c6cfb2f94d 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/GenTestPattern.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: GenTestPattern.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.cxx
index 88419beb4f8894de5d2a1e6ceba7af9b2ff8642a..ccf0b3abd72072b8b12b47be76cf73157463059b 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.h
index 2b12b5320e0c2d77cd14dfc2dac6920b20456da1..216888744e61549f7190a6c37ca930c4c8006489 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MioctL1TopoConverter.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1MUCTPI_MIOCTL1TOPOCONVERTER_H
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiBitMasks.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiBitMasks.h
index 26a5ce4534e9572c2e4f7733c37956a44dee9a31..165cd397ad17e00e39c22bc236bdcef6d01f52a0 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiBitMasks.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiBitMasks.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MuctpiBitMasks.h 700318 2015-10-13 14:13:15Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.cxx
index 8576a0fc1a48c5f4d2f384024b55ee96c65a256d..966f410bb0fe3c4b10154aef1f6427daf94ef92c 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MuctpiSim.cxx 726107 2016-02-25 11:04:42Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.h
index 3bff22b7332aea60e2963e9721da3d04556efc40..88e16ec110c7e87e13d0fbf9f849084885ac9cf7 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuctpiSim.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MuctpiSim.h 726107 2016-02-25 11:04:42Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MultiplicityCalcType.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MultiplicityCalcType.h
index 5d0f8ac57e7b980c7d4518b5c8d85d074702a482..ffd3e5b1ba28f9b70f49f76ff448c00a7df756dd 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MultiplicityCalcType.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MultiplicityCalcType.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MultiplicityCalcType.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.cxx
index afebecffb59e7a57a02a3665796e92de10d753dc..f15f5269e497987b044ea0559cb124c9a3dde994 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MuonCandidate.cxx 364083 2011-05-06 09:09:55Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.h
index e42d886911903ad06e6f2981790b0e1f4b3442f6..b0bdad703711928f92b487e3a921b743338ff0de 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/MuonCandidate.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MuonCandidate.h 364083 2011-05-06 09:09:55Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/NoMoreDataException.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/NoMoreDataException.h
index 279dc72d8eadd5ea43f39fea9ff40de4e369c0fa..ac28a540d636d7b504a66b2d23c7305ce38774aa 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/NoMoreDataException.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/NoMoreDataException.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: NoMoreDataException.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.cxx
index c8d7b3444d7d8f334de2f6d648b51c99038a5785..e9950e17b7fcfaa44024a50e698ab2549fb8ab11 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: PtMultiplicitySet.cxx 700318 2015-10-13 14:13:15Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.h
index 76a9496ba3c3a2fad2139a581e71cfdec67bfda5..7967ed12667b9f7148bfe35d0eac042f09dc5111 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/PtMultiplicitySet.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: PtMultiplicitySet.h 364083 2011-05-06 09:09:55Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.cxx
index c456a7d7b7d7dbee21afb2d15dfe1778da23deca..242600bd9c05152561f269be6fcc2325d24da738 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: RandomCandidateRange.cxx 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.h
index 1dea1e1f9213766d34d1d7cf7c5df4c5da0d0c9c..ccd80838cecb6082207b0b34047cc8e8ad9ccb51 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/RandomCandidateRange.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: RandomCandidateRange.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/SectorConstants.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/SectorConstants.h
index 4c0a2f55f09599a9d67527f36594f4793bfe139d..69ad93a2861f90c32566eeeba7410af9c8e66340 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/SectorConstants.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/SectorConstants.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: SectorConstants.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/TestPatternMethods.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/TestPatternMethods.h
index 7f07924c7b07a0e16e6fff310098e1df85f5c15f..370c096b21a27542ed140566f05e1821e3ca5d41 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/TestPatternMethods.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/TestPatternMethods.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: TestPatternMethods.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.cxx
index 1cdc800b3e83f671eaa6f7a69d48b38e9770b38e..bfa2f91f9f5117472a0e57d8ec8249b3a6b52f5d 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: Verifyer.cxx 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.h b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.h
index 572bf46a8a4db7365d5c8810cbdd6ee8d181cb64..bdee2657b0dada13dd19ea71a720894647b5702a 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Common/Verifyer.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: Verifyer.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.cxx
index 38b3da39b4278c9508cf21704790abbb67ff03c4..470acc9c9308a2058c8b6dca86b468f4e2fc06ff 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MsgLogger.cxx 706709 2015-11-09 12:10:23Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.h b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.h
index 8c4d7d4c9dd9605a0998657ef266a51eae67e639..14f5926ef88d6aa8137ed1d4d6b3c437a96b5bc0 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgLogger.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MsgLogger.h 472835 2011-12-06 21:05:16Z stelzer $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgType.h b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgType.h
index c4ce3ca4e129f9de23a1e8f26116d3b1d2be1c1e..35d0d8944884cc21f7dddfe9fac3a9ff8a15a1f7 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgType.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgType.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MsgType.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.cxx
index b3ad8f4acadc1006105ea6b1df9d0994c68564dd..0827d4359aa94f4e16666ad504370f28908e5dd7 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MsgWriter.cxx 796122 2017-02-08 03:23:15Z ssnyder $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.h b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.h
index 1e57575d119105db6414e8bc3ac69dab267eab41..85633c10bd5c620d72728c313bf3deed7252d605 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Logging/MsgWriter.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MsgWriter.h 472835 2011-12-06 21:05:16Z stelzer $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.cxx
index 3dff59d47ee47eab5eaa4b88744cb878c68b7dc5..c2059c03865ddc8ab10c129b268074e59689f1cd 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: Lvl1Mibak.cxx 700318 2015-10-13 14:13:15Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.h
index f99d0a303a4fe27187805be52c326e6fe918e40e..1d6d4e5956ae80cf63e4f407fc68c196605ec7f6 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/Lvl1Mibak.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: Lvl1Mibak.h 701446 2015-10-19 15:19:09Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.cxx
index c7b03aad9c56ce1879f7f227d911144c9535f503..20b03642433d7f6b3472fa21e833f6e8ef3462bb 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MibakStreamEvent.cxx 364083 2011-05-06 09:09:55Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.h
index 03f1e3892291dc7844fd664142df15a93917bad1..123a57d2ad967d5d6df5cd3e1fa0bc7c48ce8446 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mibak/MibakStreamEvent.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MibakStreamEvent.h 364083 2011-05-06 09:09:55Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.cxx
index 4bc0c73fe969a380c874a78ab5d4fc090281ca52..3b0ea7e07a695eda8f15eef6fa54a6e51ab3aa1c 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MictpData.cxx 700318 2015-10-13 14:13:15Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.h
index a7b8a893c706c413e798cb155d5d7773050aa1c5..33226b261796e6c8d9843141b76f52df4312e583 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpData.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MictpData.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.cxx
index 3f8ef563af6f8640d707f7025f28ef26fcc76bd8..72e02e14c35e165957b16a0dcc4e5f43c40f1eca 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MictpModule.cxx 700318 2015-10-13 14:13:15Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.h
index c62d75bf0a2a2d2b170e53fed76d50f154795873..714c155411637a61b2e7d0decd50ced988c82b67 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mictp/MictpModule.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MictpModule.h 364083 2011-05-06 09:09:55Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.cxx
index ddcd064b674012a0352181b9a9024a13584127c3..bd768d4f021f690e3466914e63df645b9a786fdb 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: BarrelSector.cxx 700318 2015-10-13 14:13:15Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.h
index f77cd9d756c7dc3031bd1670bc3de2e9ef01077b..0c4cc483361f4a906c99fb9bbf33d666732d78f5 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/BarrelSector.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: BarrelSector.h 701446 2015-10-19 15:19:09Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.cxx
index 0305eb599fc1eacfff0204c08d1b53c4d27cf409..67a213fbc70ed393048033368cfba0fdf79c837b 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: EndcapSector.cxx 700318 2015-10-13 14:13:15Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.h
index caf1000628ed1e78806b213c98d846c7515661ee..ab132a812f9ace72748c8352056f5c7dfcba2ad4 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EndcapSector.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: EndcapSector.h 701446 2015-10-19 15:19:09Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.cxx
index 044eaa34fc6139b82277639b34775993138bc706..e1150cae32b80f3c9ca9b7ad9e423d2fc0c1734f 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: EventReader.cxx 364083 2011-05-06 09:09:55Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.h
index 12d302502f60acd20fa72e0a25e033e56d3eeff9..d658c26cda75162745bc941440a49b396b49b42c 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReader.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: EventReader.h 364083 2011-05-06 09:09:55Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.cxx
index 30397b09b3390a66469c8d93a14321e468072265..266bfc1602b040b8f5531593314e593e822b2500 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: EventReaderFactory.cxx 472835 2011-12-06 21:05:16Z stelzer $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.h
index c95f697c530d58c5ce9a12a6e4501c8bade35db4..3d3ee2c3f4e9b0315c9e42b4ffc8200f20627e87 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventReaderFactory.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: EventReaderFactory.h 364083 2011-05-06 09:09:55Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventSource.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventSource.h
index 90b4a53d0daae1ea8e58332e632f032c07da034f..f85f383a9d70bd6fc982cd135a86d42a629454cb 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventSource.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/EventSource.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: EventSource.h 364083 2011-05-06 09:09:55Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.cxx
index 8891431c41eeab19b957b94dc38eeda27fb3eda7..59c06a3ac6f7f61e9768919a6d792cbff76fdadb 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: ExclusiveMultStrategy.cxx 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.h
index b724bd17494d098433466d6aa31e9ddec49dd41e..0e4121cc6774f86238ecbb1ee54b40e588022c46 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ExclusiveMultStrategy.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: ExclusiveMultStrategy.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.cxx
index 7d6eba03a30d79ce257a6da642a93da296f638ea..46212e6d72b75fb0e18134983e03d7409777d7da 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: ForwardSector.cxx 700318 2015-10-13 14:13:15Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.h
index 0557028f5794a9165e7bc921a1b0d99b575bca69..9b207807a667eaf64602a5c69fb362e30f41d7e2 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/ForwardSector.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: ForwardSector.h 701446 2015-10-19 15:19:09Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.cxx
index 76d268578ba3988f15b8e119ba8df40b471c2854..7ec0237d80d6d32cddf06fc5bfb00cd5a0bc2bac 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: InclusiveMultStrategy.cxx 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.h
index 9527b0dfaa69f7bbc281178536d112f4b9f660c5..03af50641a5925987d821654109104d3460bbd93 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/InclusiveMultStrategy.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: InclusiveMultStrategy.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.cxx
index 2d0771e015cedb667f26f4abd12b638ade50b658..842763a65db7e6eab090015eb24e5d4370ed1e8b 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTBBOverlapCalculator.cxx 650693 2015-03-01 16:53:48Z masato $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.h
index 9030b9a24a8d413c5df7727048624c0f505e5e50..3e715c5c890ff02fafbce45d092280213159b41e 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBBOverlapCalculator.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTBBOverlapCalculator.h 701446 2015-10-19 15:19:09Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.cxx
index af3bc64f1de0104230fa430962443e2bf4100159..be79f6bd3a88dd094bd4269647112f722ad7d3b6 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTBEOverlapCalculator.cxx 650693 2015-03-01 16:53:48Z masato $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.h
index 12cb614d106cc1c323f66063bfeb4daa1b4b4529..bbdabbf29c03eec2c72a0652d5331b6411bdf550 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTBEOverlapCalculator.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTBEOverlapCalculator.h 701446 2015-10-19 15:19:09Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.cxx
index 9cb3bb3511d14fe2e4e759608b7eec5078ac9b27..812c668ee60a2e352913b3c8cbace372d0942f99 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTEEOverlapCalculator.cxx 650693 2015-03-01 16:53:48Z masato $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.h
index b6d78de022ac704fefffe4663bf1dc442ce9d7a4..246c7dc7961879837897c011d6d77929cfb3085a 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEEOverlapCalculator.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTEEOverlapCalculator.h 701446 2015-10-19 15:19:09Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.cxx
index e2b5fccf8fb0731f335d51317c862c3afcb325a8..66a40c20b4d1147709ac619776417d962cecb3ee 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTEFOverlapCalculator.cxx 650693 2015-03-01 16:53:48Z masato $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.h
index bbcd1efeaf0b0054c16a38e18da8f7b8db8bc4d4..20fee67d586458c058a4b3677070a62d212f0ec3 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTEFOverlapCalculator.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTEFOverlapCalculator.h 701446 2015-10-19 15:19:09Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.cxx
index d34b3d86981b9fb7dfd3fc43b4cb89ef3f0f5184..049f710c0f42c658067d49710dc066f058c9e51a 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTFFOverlapCalculator.cxx 650693 2015-03-01 16:53:48Z masato $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.h
index 68ac208b5b427b536b2c73edaa2cda1ae20b1138..e7a4f4730a5b3b509aaa8db557cf4a060f0f8ee3 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTFFOverlapCalculator.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTFFOverlapCalculator.h 701446 2015-10-19 15:19:09Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.cxx
index abdb2edbb6fa938cdbeb75b48b581744f6db1df4..52ea42ae88dc42124f633871a58040d22d76755d 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTMultiplicityCalculator.cxx 650693 2015-03-01 16:53:48Z masato $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.h
index 23d847cfebf3380ce291dbdff0763eba74bf8a80..7a2b6cb84aa98b8ee7527f500f2e152433add44a 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTMultiplicityCalculator.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTMultiplicityCalculator.h 701446 2015-10-19 15:19:09Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.cxx
index 9f6d22922f343c1511c74c118b6e6a779fef266f..a5bdad7bf840c3d49777771e981526c2a04a7c99 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTOverlapCalculatorBase.cxx 448474 2011-07-13 09:01:48Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.h
index f9614592e413f062d6c32bbd7763b8cb0dfc78a8..79b659be4733be8caacba68977bea0a08c0a1b92 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTOverlapCalculatorBase.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTOverlapCalculatorBase.h 707664 2015-11-13 05:36:00Z ssnyder $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.cxx
index 0c50af3351c2bb927ca917954bfd6a0f8cb33ee4..d46b6b9d1d8b0fafab9a2984c7307048f75313d3 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTStrategy.cxx 650693 2015-03-01 16:53:48Z masato $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.h
index b7860b90dc3686b59aa42b1cfb57cbc3180388b9..fa7a79800e0b9ab73f942069e546d98d443a267c 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/LUTStrategy.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: LUTStrategy.h 701446 2015-10-19 15:19:09Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.cxx
index b91ee0986ce170714a15500d426c7b3159ba9fd3..9cc79f67890b2cfc67ac53c427f09440fa7da1d2 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MioctData.cxx 439423 2011-05-25 21:22:40Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.h
index 26e24b65d406b18218d72728934673f26d41da29..d015b7f930ce7c8c9a2e553cbeeb4bb7e5499844 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctData.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MioctData.h 439303 2011-05-25 15:20:17Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.cxx
index a8ca59b6aee63d6e0b191bd6f7e8fb924b8bba6b..cef6e357d8024b7f2c0a89c2c7a1267e93a49024 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MioctID.cxx 364083 2011-05-06 09:09:55Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.h
index c749de176b46c8220c8086db777035abf3764558..59352fb23fcc31673dcc8417bf261db6e8241fe7 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctID.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MioctID.h 364083 2011-05-06 09:09:55Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.cxx
index ce3f86b9b22b29f6b81eea221b745d532213bac7..5d3590dd0dfe29811f22727b8ac597f7720942f1 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MioctModule.cxx 795106 2017-02-02 11:21:27Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.h
index 90c75fdc16df7be941a51da27aef29db51ce04de..ae5eb2f4de4a09365e64b284b814f12808ed60e1 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctModule.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MioctModule.h 678659 2015-06-26 14:54:31Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.cxx
index 0934932384f744acdd1aa63852591b2fc5bc7cf5..cbb00ae5840cb4790074d46ea6b165b5a8d7d520 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MioctSectorSet.cxx 472835 2011-12-06 21:05:16Z stelzer $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.h
index bbc64a9eb7783e53b9c22a1b9d7b9cc2e69ad1d4..023b9863d7beea12483ad5031eaf2c4ee2ca6463 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MioctSectorSet.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MioctSectorSet.h 701446 2015-10-19 15:19:09Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.cxx
index 99df692531237c0b2415ff7a9bfc5f1a0b56639d..a1a752f6a4455ee754ad17fe2111ec34c57bf093 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MultiplicityLogic.cxx 472835 2011-12-06 21:05:16Z stelzer $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.h
index 104f5924137b92c4b6f9dcdc104696caa6b14b0b..a24172b8ca78907b28736fd10a177c3137a29bea 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityLogic.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MultiplicityLogic.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityStrategy.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityStrategy.h
index 1fe5c8bd3ac6c2872fddf8fb0c4c06097c13dae9..47156b1fff56979cb205dc0673e25ded63a3c548 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityStrategy.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/MultiplicityStrategy.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MultiplicityStrategy.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.cxx
index 9dc8d55047175bfa9274536fa9eef6a705e3e7da..ada773cdcb3d95a47dc1dfa778b8031fd46d6d25 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: NullStrategy.cxx 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.h
index 416f907af3f8812b81c54316e6cc62a95f003415..d65dc42492dd80b8abfce2f335d8cdccac88e102 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/NullStrategy.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: NullStrategy.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.cxx
index 02daebc85942b99d3c99deb2cea3a95ce20ce005..883915efe79536fd3edc7859edec799bdf852825 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: OverlapLogic.cxx 650693 2015-03-01 16:53:48Z masato $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.h
index 2eeb3cbc7f85d493de6e5c042013034f4eb7c4cb..a3dbdb4649d6b188fa560e7c5ab24a8ed1a72a39 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapLogic.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: OverlapLogic.h 650693 2015-03-01 16:53:48Z masato $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.cxx
index 2f33fb84862562537c356a05b14fb9ca7ffc4033..8004f54e887bc12f15ef5a471c30d28c75751091 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: OverlapStrategy.cxx 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.h
index aacdbc7a87a27c993be3e5159b438df46fc716d0..f446acce491f0ff17406ba74f0abd8dafa25cb9a 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/OverlapStrategy.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: OverlapStrategy.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.cxx
index dca670700a141271c86dd9e2cf5b327e02e61b9f..83faf51fbf07be143931dfafbf098ce483d63216 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: Sector.cxx 796872 2017-02-13 15:03:25Z fwinkl $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.h
index cb05918d0adebaed1046e618bc2bc12c0bc63df4..abd95b4c0abf58465d8cd0c5c00449b74e929cd7 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/Sector.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: Sector.h 796872 2017-02-13 15:03:25Z fwinkl $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.cxx
index 0603ad537adfe5ba638b32f4557794c2e1ca8d32..1ee2c6bccfe84d8ccdb99c1de77b7dd5e60f2af4 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: SectorID.cxx 700318 2015-10-13 14:13:15Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.h
index baef5bd58334286f1976e99ab3c3092c2b7e52ae..73cffda6d822b124b9ad7a1dea33a13b48538750 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorID.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: SectorID.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.cxx
index ae53bc59becdabe97f11d488a5fd5cfbea660d10..333d333786c579c27d9686406c7f85bf6bd4d373 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: SectorLogicReader.cxx 364083 2011-05-06 09:09:55Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.h
index 884b72f50e6ba98122e6951a80063c0bf6f39045..1acae7ddd71700fe63bde12be7dfee1999556225 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicReader.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: SectorLogicReader.h 364083 2011-05-06 09:09:55Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.cxx
index a86b5565d433612af86a231e6d092cad55d2fa46..239159444577101c348c62c2927b49739e6c8ad0 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: SectorLogicSource.cxx 700318 2015-10-13 14:13:15Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.h
index defdfa4e229da628157ec3184ba0f78ca030e073..dc471a399a05722a780b210aa88ef045a3ba1e3e 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/SectorLogicSource.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: SectorLogicSource.h 681356 2015-07-08 12:17:52Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/StrategyName.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/StrategyName.h
index b89a03b0cd8abbc65e5fc48fa35994b14f43ab28..1ed3d56804a9680daec33500e9a3a7329ea44423 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/StrategyName.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/StrategyName.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: StrategyName.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.cxx
index e4bcfca80d6887a003ed02231cabfb37970aac5e..d44416c6952753d64678ec8f892397a09006772f 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: XMLMultCalculator.cxx 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.h
index 79910a9840670906109b84e06c02e4e30c60b6a1..4ee974ae1430427071779131188763f81a7787c7 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultCalculator.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: XMLMultCalculator.h 701446 2015-10-19 15:19:09Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.cxx
index 34badc822071f99565d5bfc904c824354fe60e9d..c2f614c3f33826fdfe11f6653db6a7ecf08df9fa 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: XMLMultStrategy.cxx 472835 2011-12-06 21:05:16Z stelzer $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.h
index a7450ec0da2b9f1b1801e665cc58e0fb98ba1a46..1284cfbd411ea6c24fdd70d4f0184913470a060a 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mioct/XMLMultStrategy.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: XMLMultStrategy.h 701446 2015-10-19 15:19:09Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.cxx
index 72499786f51838289fbc0c143c90b98073120b34..8bc254c0deca006d588fd1d410191e14a324e854 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MirodDaqProcessor.cxx 624535 2014-10-28 10:02:49Z stelzer $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.h
index b59054c82aa9693dde8485350d81339dc65125fa..f37a76da1f7afa6c8b986803d31ef1b45ff560ff 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodDaqProcessor.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MirodDaqProcessor.h 439423 2011-05-25 21:22:40Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.cxx
index 78ad2f876119a5796ada66c546edfbd079d9ea7f..6763f5c3a9e98c6e930ee682291041fd756560e7 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MirodEventReader.cxx 441850 2011-06-06 14:50:52Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.h
index 137ac313ec109a0fefa1554341e4f49eb6a265ed..660ba10410f854ce6ef2a3e90f7681f2337b4404 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodEventReader.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MirodEventReader.h 439423 2011-05-25 21:22:40Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.cxx
index a8bc3483ca43e0e120fc72e3029cbdb4888a0592..9ff8d9fafdfbbbbb775262d79fde74549e85abfa 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MirodExtractor.cxx 441850 2011-06-06 14:50:52Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.h
index ef5bb0c521cbc1547be6c34c6d93a23d33858820..c41c426852751008c21f7b6441796b0b09864b3f 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodExtractor.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MirodExtractor.h 439423 2011-05-25 21:22:40Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.cxx
index d285d620effd9b5d69228837f580d40f4e021339..fecfe4c031f905e59350f3951e4dfba19bde2e13 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MirodFiFoContent.cxx 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.h
index d6c0d235a025c287caaf4ca084af49c05dd6dde8..67ebafeeeeddb0afb99cd94550e0a77f0abf2be3 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodFiFoContent.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MirodFiFoContent.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.cxx
index 1c46d04f25b3b853e29d70b61de8913a404a5cdc..83c10c92ea5cac37bd182c707b60b4c1de80e99f 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MirodLvl2Processor.cxx 726107 2016-02-25 11:04:42Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.h
index b300715ce30df1a83838f8de364a31fee1c9501e..b1ac367d6b2e223343268a2aa9ed24e7483376d8 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodLvl2Processor.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MirodLvl2Processor.h 726107 2016-02-25 11:04:42Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.cxx
index 484be28ee76981058bc78ad2631300bdeda829bb..d057a81aeb2284d08c2f071eef3a67767c124fc8 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MirodModule.cxx 439303 2011-05-25 15:20:17Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.h
index d4448333b775b97438d393dabf789c4e3c08fcdf..7c236c2022227d2d35e968ea903c3f96544bdd64 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodModule.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MirodModule.h 726107 2016-02-25 11:04:42Z wengler $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.cxx b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.cxx
index d52813693761dde05eaf9af9732591e839babdf5..38aaa4e569dae613852bb98ee2c54bb01dd03419 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.cxx
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MirodTestRamIn.cxx 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.h b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.h
index 3a0d59f36ca3f3b2a111a767307aa80d9c99b35c..4c1d1b494239e4c555ac903d9dda5912bbd4a260 100644
--- a/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.h
+++ b/Trigger/TrigT1/TrigT1Muctpi/src/Mirod/MirodTestRamIn.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: MirodTestRamIn.h 362102 2011-04-28 13:17:28Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/TrigT1RPCRecRoiSvc/RPCRecRoiSvc.h b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/TrigT1RPCRecRoiSvc/RPCRecRoiSvc.h
index 99736f95cea97753ec254b8e0eb017c99933b0d0..19dde7fcb8217ceaca3c32a4c4ffe40b42a98747 100755
--- a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/TrigT1RPCRecRoiSvc/RPCRecRoiSvc.h
+++ b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/TrigT1RPCRecRoiSvc/RPCRecRoiSvc.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1_RPCRECROISVC_H
diff --git a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/TrigT1RPCRecRoiConfig.py b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/TrigT1RPCRecRoiConfig.py
index 9d2705b091c71e94eba2ec975f0e6a5107b6d921..48e20ff24f9a0b768520cf2fcd19a7505060c17d 100755
--- a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/TrigT1RPCRecRoiConfig.py
+++ b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/TrigT1RPCRecRoiConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 # $Id: TrigT1RPCRecRoiConfig.py 301203 2010-05-26 12:08:22Z krasznaa $
 #
diff --git a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/__init__.py b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/__init__.py
index f3d4aacf57798dcef7f63b5329d8bba998051680..b16168c0c3c0295dad7ccbe756831c035a81cdce 100755
--- a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/__init__.py
+++ b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/python/__init__.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 # File: TrigT1RPCRecRoiConfig/__init__.py
 
diff --git a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/src/RPCRecRoiSvc.cxx b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/src/RPCRecRoiSvc.cxx
index d4093ad9e395f06404feea17257ba654567b4db9..b02dbe077878403bc2984e6af68fc085e8b1b402 100755
--- a/Trigger/TrigT1/TrigT1RPCRecRoiSvc/src/RPCRecRoiSvc.cxx
+++ b/Trigger/TrigT1/TrigT1RPCRecRoiSvc/src/RPCRecRoiSvc.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <cmath>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMAVERSION.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMAVERSION.h
index be83a04de680785a6bab1f79c004f663655a4623..081cf27a1f7574ad81b988254ce5c35a2e4fdd35 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMAVERSION.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMAVERSION.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef CMAVERSION
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMROCompare.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMROCompare.h
index 1b098a22f55414b57beaba686d5d888a261e77b9..941daff4fe56d87fdcfb8aaf34f3bd0442edbd17 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMROCompare.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMROCompare.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef CMROCompare_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMReprocessing.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMReprocessing.h
index b3371150024103eedef3fc4dfb323ceee9d1383a..f6d116a2cc68965266dd20ae81225dd696469c46 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMReprocessing.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/CMReprocessing.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef CMReprocessing_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1Def.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1Def.h
index 9fb783593902dd3deb55e3b3778c0784a0a2ecb4..cdf59a9b27d09487f072462964acf757d25b3144 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1Def.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1Def.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef Lvl1Def_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcConf.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcConf.h
index a50647061b1ca0737f9083a1cc056907012a5417..7ec618fed18d9fb1adf5eca59d3da9b0681e16d1 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcConf.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcConf.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef Lvl1RpcConf_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcTrig.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcTrig.h
index 9d67d845ccd5930460f9c3b36b8cc8d36148da59..ec6f1c070ee0b11ab4c4e1dfd851d35aa00f85a5 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcTrig.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Lvl1RpcTrig.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef Lvl1RpcTrig_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Matrix.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Matrix.h
index bde6287b7b6684a41963c11d457c5515e03c6d47..c19d16bc19c857826bbecfac3297d1145b1bf977 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Matrix.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Matrix.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef Matrix_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOut.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOut.h
index 86b52c5941bc29a2ef8c49c83a9708fbb1cbb71a..3a7a34e0f1adb387979d293016b6cbfd1597efc7 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOut.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOut.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef MatrixReadOut_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOutStructure.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOutStructure.h
index ee9158a9d7af3d78801096e1520d2675a2ac6214..709b8fdede580e4b79bfab0c1fbb2e35694b23bc 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOutStructure.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/MatrixReadOutStructure.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef MatrixReadOutStructure_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/NOBXS.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/NOBXS.h
index 5ff915efb4bc12d61ba2cc367e0ee28880b94fb5..b5e2f2886e09d29b74c260d7f87a0b99c2603e69 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/NOBXS.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/NOBXS.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef NOBXS_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Pad.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Pad.h
index b0b52896e0c38113bc4b42ed5d9775f92bd8a4cc..84b5c9972ae9c9a04a3c48ea12d5ec43e736a141 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Pad.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/Pad.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "NOBXS.h"
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOut.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOut.h
index 6fd62385e35c5ad8b9852b6703dacfc1774fd6a5..534bf7198548577748373cd7e442018820256a2b 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOut.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOut.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef PadReadOut_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOutStructure.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOutStructure.h
index 1438a49c26065bc8086c937172c235e26c6c411f..9efeb15731123945b389a4661dd1430824dd0f50 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOutStructure.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/PadReadOutStructure.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef PadReadOutStructure_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCROD.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCROD.h
index e4452956bdc91de1cb171d67a5d6d679df85c50e..7ec812d32a7986c4c31b3abf579e65f702c30777 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCROD.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCROD.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef RPCROD_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODDecode.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODDecode.h
index fdbe33617ea03fab56ea39e92a085deeb9a4deab..8be8b2b99714a6557a4691657dcfe574b213180e 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODDecode.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODDecode.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef RPCRODDecode_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODStructure.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODStructure.h
index c9681b9cae882786d4daba73d4f9663a20402b6e..d770a45a20276d8fc8c50151c23ee74e119dbf9e 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODStructure.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRODStructure.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef RPCRODStructure_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRXRODDecode.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRXRODDecode.h
index d23cff7bce16556f572afa31bb3f7b096d05fd72..9dac177f27f73ac896809fd8912c44ba48ad1095 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRXRODDecode.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCRXRODDecode.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef RPCRXRODDecode_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCReadOut.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCReadOut.h
index ba497ea50148a4a8afea31bf1bda75646403567a..00230168f4ecbbda7f920b0eb66b7d9ea5081b71 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCReadOut.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RPCReadOut.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef RPCReadOut_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOut.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOut.h
index 3e142d205fe6a9e5a393b853f92bc3d20a07248c..1176307a7bad1160abb1f974ee5b2a3767dba474 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOut.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOut.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef RXReadOut_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOutStructure.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOutStructure.h
index de0367b7aa001a091eef5c2d7bfcb529040fca5e..dea0b737328ac8f61b7bba8c06df8cc33f1df7d8 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOutStructure.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RXReadOutStructure.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef RXReadOutStructure_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RpcBook.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RpcBook.h
index 9c3af51f30793682253542407ea8dfcff39db7aa..83dd193875e1b9a34c01524febd5541688bfa16b 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RpcBook.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/RpcBook.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef RPCBOOK_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorL.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorL.h
index ac220e2c2a7c41e20b20bbab3357b090bff255eb..92d704096097d2ea4f9a226e022c78609f4a9f00 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorL.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorL.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "NOBXS.h"
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogic.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogic.h
index 333ff18459c8db5e3275caab00a5a932c8d39f36..ecc80288eb470b7c8a56498bb3263e06525c32ea 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogic.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogic.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef SectorLogic_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOut.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOut.h
index 5b0e657b6266713636b02f7938a5d07a82e88158..db3059c782ed591984aaf360d5c4d6565aac09dd 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOut.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOut.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef SectorLogicRXReadOut_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOutStructure.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOutStructure.h
index a7a77420c0003f74f15f8f705be3f17f7aa4de7a..55e972434c0e8fe8fdc2fd993e7c4ac1cd4f5d67 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOutStructure.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicRXReadOutStructure.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef SectorLogicRXReadOutStructure_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOut.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOut.h
index 05ce0c6b82e6971ba689fd6cfc28f3b58acec02e..5faef4761441c7625591b43de4636bd75f336a06 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOut.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOut.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef SectorLogicReadOut_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOutStructure.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOutStructure.h
index 84e883d2e0ae0c363e0c824773c19d84802058e9..4c8b67f73b26ac947d37951bba04a4c97e627e4b 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOutStructure.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/SectorLogicReadOutStructure.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef SectorLogicReadOutStructure_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/crc8.h b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/crc8.h
index 1a788fe7848d62fa80066684a2ec0c9e8c332d5d..c25bee685ecb346638beaf12e35763fcb5f94497 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/crc8.h
+++ b/Trigger/TrigT1/TrigT1RPChardware/TrigT1RPChardware/crc8.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef crc8_H
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/CMROCompare.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/CMROCompare.cxx
index 49ffefeb5a3e4351ee6b3011f8775cbdc0fc9669..ea38d04e16bed47df563827bf7783600699634d0 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/CMROCompare.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/CMROCompare.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <iostream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/CMReprocessing.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/CMReprocessing.cxx
index fc72c4540ac1ab5fe7b0c18c137f9fbbb9d774d3..83fd6aa5044a8075efa70230772abee06aedba54 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/CMReprocessing.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/CMReprocessing.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <iostream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/Matrix.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/Matrix.cxx
index 6cb16c30f5fd2bdb1f7ad7b46998a9d18e1db863..8cb8d2fd795eb59a6a117a187ea72a7bcd51bcd0 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/Matrix.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/Matrix.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOut.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOut.cxx
index 2bff4790813f64f6cd6b37336b405b5f5caf130a..db59009db3a70ea92c429ccde5a3150a80cf5822 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOut.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include<fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOutStructure.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOutStructure.cxx
index ec271ded41d1ff543c908ec28aef24bdbf35fbc1..29c0cd0d539d9dc44ed00663bc91068daa434353 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOutStructure.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/MatrixReadOutStructure.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include<fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/Pad.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/Pad.cxx
index ab2985d379b92eeabb42b80554dcd1ad3d854ba6..7d1877144698e3a975abdf455782200975e240bd 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/Pad.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/Pad.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include<fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOut.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOut.cxx
index 4e64494500a42b0dc752415ea01ecb4b1c57ee50..422aaf8c1a7828d7a1dc47acc90b843ceb4d736d 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOut.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include<fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOutStructure.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOutStructure.cxx
index 78ad84d1ce6f1d9583b25985229dc7aa31beb9f2..115edad3a33c0e741428dbb24554d490c1588bf0 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOutStructure.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/PadReadOutStructure.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include<fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RPCROD.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RPCROD.cxx
index 44c9b7e3ed61ce77408402c9d8f7aba65a85db0a..8a89b5b2f95f8e4a101379352e2da8db5c713f54 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/RPCROD.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/RPCROD.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include<fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODDecode.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODDecode.cxx
index a6f46aa46bd764695bddf314860eb4d83bac14d0..6b40f8e3cf1c3710486f47fe38284e124a92ffbb 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODDecode.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODDecode.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <iostream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODStructure.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODStructure.cxx
index b71fc39bd21940911b1085518a9760888dbed0dd..b35602667fcf60e156270a409a16df1867f84fd0 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODStructure.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/RPCRODStructure.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include<fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RPCRXRODDecode.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RPCRXRODDecode.cxx
index 34dee67d86b496fb319e58e1a9fa8cb4ebc86a91..523040db86140070e52ed1ccf4e33a418255cc0e 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/RPCRXRODDecode.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/RPCRXRODDecode.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <iostream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RPCReadOut.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RPCReadOut.cxx
index a70529419822ba181c0f34cb3497d78293c520bd..ed813977a7033711cd4d3499da5c37d098ac51b4 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/RPCReadOut.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/RPCReadOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include<fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOut.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOut.cxx
index 0b5f89e972b775773ac7d035ffb71428a0e51f7b..c39f2251773e2abe13d2644f9576f3b856a04657 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOut.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include<fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOutStructure.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOutStructure.cxx
index 8885a09eccd9788d2dfa0cfbf16962f86752e958..5fd869f1ee8e058225d80aa9731e1dba6d7f1152 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOutStructure.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/RXReadOutStructure.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include<fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/RpcBook.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/RpcBook.cxx
index c98bc5a14fa8b17751afa271a83a5878678bb4c5..c75dfa5a64e38c6140439c75ee7aa2bf4b5e6174 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/RpcBook.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/RpcBook.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPChardware/RpcBook.h"
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/SectorL.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/SectorL.cxx
index 40e0789d4edf4db4ef46d49b4efcf414b8d05781..25d97eb629bfe733b67912cd5ccc994abe33384e 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/SectorL.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/SectorL.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include<fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogic.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogic.cxx
index ac5673ab1c325d762ca824632773ca4e803ea1bb..279b8db8c90e90b84bcd7e253cac6c8f0fb1c7ba 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogic.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogic.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //****************************************************************************//
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOut.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOut.cxx
index b815db5af16a0e1355c1c92a36fe489139497077..ef3e2c8a20277317c1bbea8cab99df3db3f726ea 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOut.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include<fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOutStructure.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOutStructure.cxx
index b93087b40388d914ed80051fe84ffb0df52758e0..f674db87a93935af047db2ac702687f9a3b2d21d 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOutStructure.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicRXReadOutStructure.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include<fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOut.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOut.cxx
index 61b7e00c4793ccfa83159d9161d2f6dd19b588c8..b4f122214016959e7ee69d288a2ff81f2a6bfefc 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOut.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include<fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOutStructure.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOutStructure.cxx
index 9bcfbcd3a5e3dec0f553b5b83fddebad0a6ddc85..3281a8425d00120a7a18e63260ed02b94f9baa9d 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOutStructure.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/SectorLogicReadOutStructure.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include<fstream>
diff --git a/Trigger/TrigT1/TrigT1RPChardware/src/crc8.cxx b/Trigger/TrigT1/TrigT1RPChardware/src/crc8.cxx
index b8ff20b6e1c16cfff6c2076b969a271b1ccbb240..d2774acc619c5a04866dcbdf0eb55b545f7d1f93 100755
--- a/Trigger/TrigT1/TrigT1RPChardware/src/crc8.cxx
+++ b/Trigger/TrigT1/TrigT1RPChardware/src/crc8.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <iostream>
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAdata.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAdata.h
index 7d939bf19d9dee5fc90511c71407bb8bcd0fbb57..2745382daa1807af4133d1f37dd84469f0f138d2 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAdata.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAdata.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef CMADATA_H
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMApatterns.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMApatterns.h
index ff683af66d7430feffc5fa32942636584fe339c3..94417b168b3905962203ff0f5780b94290f00162 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMApatterns.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMApatterns.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef CMAPATTERNS_H
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAreadout.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAreadout.h
index e0603168efd679e6a51447661b01005cee91a7b8..c6982a4d2e46b2b431bd4ce9a09baf95d0fd49d2 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAreadout.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAreadout.h
@@ -1,7 +1,7 @@
 /* // -*- C++ -*- */
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAtrigger.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAtrigger.h
index 02fffcdb12a2ff285a3c5f3be87b2e55211361e4..41145162856e702350db370db4bce479d9c5f791 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAtrigger.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/CMAtrigger.h
@@ -1,7 +1,7 @@
 /* // -*- C++ -*- */
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/MuonSimuTrack.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/MuonSimuTrack.h
index 99d5f9f499b4420a98c9ab803d4c826edd998a60..c7c2c4632d0723d98d67b05e509c8c544f29033e 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/MuonSimuTrack.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/MuonSimuTrack.h
@@ -1,7 +1,7 @@
 /* // -*- C++ -*- */
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADdata.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADdata.h
index a71fa29867d785d48ab5474ae9137f0cc8f4b941..8f617f9d544e056cc763a46e493b5af1a737e091 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADdata.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADdata.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef PADDATA_H
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADpatterns.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADpatterns.h
index da1ad1faafae0050192f04a2e8271f9b6e485329..4825a08637314c4bbd6031150d995ecf69ee50dc 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADpatterns.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADpatterns.h
@@ -1,7 +1,7 @@
 /* // -*- C++ -*- */
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADreadout.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADreadout.h
index 730153e767c4b3a955ce0e2b232a7d8a13b4a8cd..3b366794777a1079fe686e5d8c825fe535bcc636 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADreadout.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PADreadout.h
@@ -1,7 +1,7 @@
 /* // -*- C++ -*- */
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PATTERNidentity.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PATTERNidentity.h
index f13c190bc289b8976cf7f990009a5361b6c205c6..1fa82085c056b3e523646542825fa85613ce6107 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PATTERNidentity.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/PATTERNidentity.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef PATTERNIDENTITY_H
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCbytestream.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCbytestream.h
index 8e1a5533f99209c26d6360b7b2b7c43f372ac825..45163364c14439f261a6d9ce027036dc6ca6ea74 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCbytestream.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCbytestream.h
@@ -1,7 +1,7 @@
 /* // -*- C++ -*- */
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdata.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdata.h
index acc4ae1a71d6af3ada3375b3dba83b10bb7e23fb..7a35dc416b416095c34b88fc0447badb08810fbe 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdata.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdata.h
@@ -1,7 +1,7 @@
 /* // -*- C++ -*- */
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdigit.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdigit.h
index 49659d8bb0fc9eac2b50206065c134cdcac13a1e..b072cc678ee5d8ed9d01e21b2abd572ca685682b 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdigit.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCdigit.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef RPCDIGIT_H
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawData.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawData.h
index 07d38f80526da44abd8f79c11af6a7c2efe005a4..b2d59822dada9a6627aea6b4a531f134b8507359 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawData.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawData.h
@@ -1,7 +1,7 @@
 /* // -*- C++ -*- */
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawDigit.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawDigit.h
index 773414545d99325ffd1b0407afdbb0ab74aaf435..977f5ef2593775ccb0bf8659efac7e7d85a82304 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawDigit.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCrawDigit.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef SIMUDIGIT_H
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuData.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuData.h
index bf0e49cc42512821eb0a1b40464bd18e92ecb61a..baf33adf8b0b0eb186b667db09767760405494db 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuData.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuData.h
@@ -1,7 +1,7 @@
 /* // -*- C++ -*- */
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuDigit.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuDigit.h
index 350a77a7a76b445acbe370ef1516b7304f6a1fc9..fc6d72e54b32e6570c12e2d643e578c40bc08f78 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuDigit.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCsimuDigit.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef SIMUDIGIT_H
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCtrigDataObject.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCtrigDataObject.h
index acdd98b54e3d4d12e1b0a42e303d768801dd9e67..bc5e716070f2967c57fa3041f01917c5c1eac4e0 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCtrigDataObject.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/RPCtrigDataObject.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef DATAOBJECT_H
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLdata.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLdata.h
index 5a79d34e457138b4285217392e245cb083bad817..313246964a9a554707d14da35615bfdb2ce48a19 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLdata.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLdata.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef SLDATA_H
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLpatterns.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLpatterns.h
index 8d4232d130ff27b599f91b666ab3d1cbbc6e35cd..245d5a8376fd1830ae1a8d3cc3b256a625d480bd 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLpatterns.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/SLpatterns.h
@@ -1,7 +1,7 @@
 /* // -*- C++ -*- */
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/ShowData.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/ShowData.h
index d76543df5152329a9430962c74fd233fd9a0e050..18c436c9f2da464ccb61d43057eba3cdc128d669 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/ShowData.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/ShowData.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <iostream>
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/bitPATTERN.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/bitPATTERN.h
index e6af6cb9e9c824d55577f2f147c0e547437117e3..6bbd98a4c0cf262bcd3d723c3d30fb8a974b908c 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/bitPATTERN.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/bitPATTERN.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef BITPATTERN_H
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/decodeSL.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/decodeSL.h
index d1bcd31ecc0230c395b12aa067bcbf574381f8de..af14394075473762365ca3c8c62f34d0631e6cd0 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/decodeSL.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/decodeSL.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/foot.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/foot.h
index 5d701e5d7b688edfc75de1bb32381feba8a6095d..01ab3ac6253d85b25dc138d80c6e9417d697b6ff 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/foot.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/foot.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef ATRIG_FOOT_H
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/large.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/large.h
index 66f59bfaf4c9d5ebee0b3ed4d755ff566f6676a1..1fe7ad2eff16b6a87dca143f89c5722490c39fcb 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/large.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/large.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef ATRIG_LARGE_H
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/small.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/small.h
index 6549ee3cf6e66c22ec4b1dfb9a0f7ed8f4ec02ab..fd87eb5ddb61444f8a2fee9d740413ad7a8b8b79 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/small.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/small.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef ATRIG_SMALL_H
diff --git a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/windows.h b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/windows.h
index 9afc2a8829d712db4ea28e750fad6f899dea0335..9f86c542a50fe5c758befbb2a2b56f24df4ab597 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/windows.h
+++ b/Trigger/TrigT1/TrigT1RPClogic/TrigT1RPClogic/windows.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef WINDOWS_H
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/CMAdata.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/CMAdata.cxx
index 47ab4ce98a350265b8a3ebb7926e32573d466ee1..8e1cefb4f3485aff6a34f15fb49f6893a56c846d 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/CMAdata.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/CMAdata.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPClogic/CMAdata.h"
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/CMApatterns.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/CMApatterns.cxx
index bc83211565906aa3653fbb68090c2df1e3e2862b..359c4aa819ae0ab94cdc9c69bcb2f6e69a023b79 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/CMApatterns.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/CMApatterns.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <math.h>
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/CMAreadout.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/CMAreadout.cxx
index bc7c1b6ad6ea9c874abd723ce5f7635e9ba0e458..1e8feef51156b81296f24caaf0dccc174dc7c170 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/CMAreadout.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/CMAreadout.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPClogic/CMAreadout.h"
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/CMAtrigger.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/CMAtrigger.cxx
index 387500f8062c11c235dae4dc1d99d9c7beadef2e..e560e09a210eee694adca43fb29da1d5af20c30f 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/CMAtrigger.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/CMAtrigger.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPClogic/CMAtrigger.h"
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/MuonSimuTrack.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/MuonSimuTrack.cxx
index 03c1c58b060598598b2b7539da6f7d57bb40278e..389c20a25d1446333238b45072c5e95d0581b46d 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/MuonSimuTrack.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/MuonSimuTrack.cxx
@@ -1,7 +1,7 @@
 /* // -*- C++ -*- */
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/PADdata.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/PADdata.cxx
index 6a195f2ca6aef64880d42fdd850d49bf38ed81da..bc00ef73279ea72c08ee75a8b76c2c7c0bb95bae 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/PADdata.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/PADdata.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPClogic/PADdata.h"
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/PADpatterns.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/PADpatterns.cxx
index 0d0b2a584b554ca57451324d2316f9956cd819d6..05280975ef9f60e24cfce35fa2539f9999c3dc2c 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/PADpatterns.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/PADpatterns.cxx
@@ -1,7 +1,7 @@
 /* // -*- C++ -*- */
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/PADreadout.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/PADreadout.cxx
index 0596b3422f2594f8ea87e99c66d3b7859d1c3519..bc5162da92aae891f5702e94c8173d704b97735f 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/PADreadout.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/PADreadout.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPClogic/PADreadout.h"
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/PATTERNidentity.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/PATTERNidentity.cxx
index cbc8796179feb6ef991d60a36320b558e600d064..ffc75bb69c0828352a9dab547179edfe02d90a92 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/PATTERNidentity.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/PATTERNidentity.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPClogic/PATTERNidentity.h" 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCbytestream.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCbytestream.cxx
index a42e53fcdd48f2a29926c447269f89ac3dee2753..8557e3aa7df8a1121438a105030dd2d48961a448 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCbytestream.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCbytestream.cxx
@@ -1,7 +1,7 @@
 /* // -*- C++ -*- */
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCdata.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCdata.cxx
index 7bb0df97b83d4369c995bb38b6c965e321ffbbdd..52ed12e4a13f731d5aca9bc3859dab260fd7fed9 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCdata.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCdata.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPClogic/RPCdata.h"
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCdigit.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCdigit.cxx
index 48c0c66ca074075c0f5bd5e8c62e5262c4c3f069..15532eaaf30de58f24f30bcb9574ceb0f11766a1 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCdigit.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCdigit.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <math.h>
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawData.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawData.cxx
index cf749cdea84d77dc75a8383a14da028db5c17f35..33bdaa499738f25a8039f0198eb986d5b94eadbb 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawData.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawData.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPClogic/RPCrawData.h"
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawDigit.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawDigit.cxx
index 4ac2a31567b40df16d3184b91ca9634e93c98137..2bacbbef28ab3e5180b713938589e7c2edd7b7c0 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawDigit.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCrawDigit.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPClogic/RPCrawDigit.h"
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuData.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuData.cxx
index 07fa8f5436d2f76374dae242c162a9e91946ba31..be1500cdbc15c7f92b2a1cff60db54207da758eb 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuData.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuData.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPClogic/RPCsimuData.h"
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuDigit.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuDigit.cxx
index 5cce763fe868981029a6311bd1fe421802da121e..4d6ef5ec4ffe64eb006606d4d812235f4de3e957 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuDigit.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCsimuDigit.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPClogic/RPCsimuDigit.h"
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/RPCtrigDataObject.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/RPCtrigDataObject.cxx
index ba222379013251d2ff3c4bda554a1c1a37715800..10333e22099ca438ba7dada34fe7a239010b9ca8 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/RPCtrigDataObject.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/RPCtrigDataObject.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <iomanip>
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/SLdata.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/SLdata.cxx
index 18c93a7e6f8dab27a636a6a67be7d73aa66aba23..8c382104b0f0c8e30d347cc45d8c6433e9ed2e63 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/SLdata.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/SLdata.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPClogic/SLdata.h"
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/SLpatterns.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/SLpatterns.cxx
index 1e8df518a8a281f01c0dcb8c6055ccf8842aec24..a4f6c0859ee6e94c0823c491c37a1109467aae89 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/SLpatterns.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/SLpatterns.cxx
@@ -1,7 +1,7 @@
 /* // -*- C++ -*- */
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/bitPATTERN.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/bitPATTERN.cxx
index 1484164aeb55013133b7d6cfe1a6f897749e5cab..a15ef72d16be58415f0f7a021d21afd5284b2c5a 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/bitPATTERN.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/bitPATTERN.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPClogic/bitPATTERN.h"
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/decodeSL.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/decodeSL.cxx
index ded2ea0463ac8440bb0798fdc1e080e496ac66bb..24513fcf0dcb8765e40489e2925eef3ff5536020 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/decodeSL.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/decodeSL.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPClogic/decodeSL.h"
diff --git a/Trigger/TrigT1/TrigT1RPClogic/src/windows.cxx b/Trigger/TrigT1/TrigT1RPClogic/src/windows.cxx
index 97eb0f9dee1701a74440cc21e88079cd4ba11f56..37ba75d6a9db484f9193bb783a9d910eed64a847 100755
--- a/Trigger/TrigT1/TrigT1RPClogic/src/windows.cxx
+++ b/Trigger/TrigT1/TrigT1RPClogic/src/windows.cxx
@@ -1,7 +1,7 @@
 /* // -*- C++ -*- */
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1RPCsteering/TrigT1RPCsteering/TrigT1RPC.h b/Trigger/TrigT1/TrigT1RPCsteering/TrigT1RPCsteering/TrigT1RPC.h
index 58a20fea33bdead5c0bcca76e4d1509a532d114b..c2c56e53b76cdf3723c4f11530fdf25a48888a79 100755
--- a/Trigger/TrigT1/TrigT1RPCsteering/TrigT1RPCsteering/TrigT1RPC.h
+++ b/Trigger/TrigT1/TrigT1RPCsteering/TrigT1RPCsteering/TrigT1RPC.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef RPCMuonTrigger_H
diff --git a/Trigger/TrigT1/TrigT1RPCsteering/python/TrigT1RPCsteeringConfig.py b/Trigger/TrigT1/TrigT1RPCsteering/python/TrigT1RPCsteeringConfig.py
index 2629d8ab43d3531df4a9c27c624385ebd72dcb3d..38c189a02bdaa941945a73aa4e3b0160230c287b 100755
--- a/Trigger/TrigT1/TrigT1RPCsteering/python/TrigT1RPCsteeringConfig.py
+++ b/Trigger/TrigT1/TrigT1RPCsteering/python/TrigT1RPCsteeringConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 from TrigT1RPCsteering.TrigT1RPCsteeringConf import *
 from AthenaCommon.GlobalFlags import globalflags
diff --git a/Trigger/TrigT1/TrigT1RPCsteering/python/__init__.py b/Trigger/TrigT1/TrigT1RPCsteering/python/__init__.py
index a9420b89e539683fed2623806699763bcfd371f0..c0638976cf3a21b31139032808f323478d5e9ea0 100755
--- a/Trigger/TrigT1/TrigT1RPCsteering/python/__init__.py
+++ b/Trigger/TrigT1/TrigT1RPCsteering/python/__init__.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 # File: TrigT1RPCsteeringConfig/__init__.py
 
diff --git a/Trigger/TrigT1/TrigT1RPCsteering/src/TrigT1RPC.cxx b/Trigger/TrigT1/TrigT1RPCsteering/src/TrigT1RPC.cxx
index c12c54294faed3c9885a1126c144d23ffe681566..96dcc112c76e7ef1045304e660486301c73efbf3 100755
--- a/Trigger/TrigT1/TrigT1RPCsteering/src/TrigT1RPC.cxx
+++ b/Trigger/TrigT1/TrigT1RPCsteering/src/TrigT1RPC.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1RPCsteering/TrigT1RPC.h"
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h
index 916c5943948d4a12d14a0214c2207be2bd9a9163..a8f71039a94dd5a34ca33675a2ef9134b6cad2ba 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.icc b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.icc
index e4a7d33b7317d0cb096ffa02b70aa21b67102a7b..b3ba29a3675548cd65ade7b1c49b1117fe874e6d 100644
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.icc
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPResult.icc
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // tdaq-common includes for CTP format definition
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPRoI.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPRoI.h
index ff390d79b0f594c4cca2594ede259fa5c874a644..1e73bc7881ed28d1413314fea5d726c4348c1e2e 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPRoI.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTPRoI.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_Decoder.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_Decoder.h
index 914a0b752ed01260a2693f1bc253a12f185a2794..ca544ba89b748912bda6714b0460dea4868c0e73 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_Decoder.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_Decoder.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1_CTP_DECODER_H
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RDO.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RDO.h
index 774ac68f453069b7c0a82a3ff3630150359bdca7..e3c0e3476c0e8ce6edb572f0d3d053b3b1ff61f4 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RDO.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RDO.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // TO DO: encapsulate logic from raw data words! And fill the data
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RIO.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RIO.h
index 612254b9b94930d6fae75a1d1f7d6c651ab6e659..bee2652336d2e3826969fae567dd63dc2b4b36cf 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RIO.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/CTP_RIO.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /* **********************************************************
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauResult.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauResult.h
index e79ecfa350d77a2722d62d926605e96452ce916c..e10d5e934dfc7f6466ff9953d9b72836044d726b 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauResult.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauResult.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /* **********************************************************
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauRoI.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauRoI.h
index fcd5ac48fceba83d6680dd4bc697663ade69efbc..debc54cd44c7c866976710e115f61111ec8468c7 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauRoI.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/EMTauRoI.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /* **********************************************************
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.h
index 1818e471d22d007c33ffcca19f00db26318bf554..23e35fe1404c490736bacde0e072b601a841ffd7 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.icc b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.icc
index 3ba55a76c4c23b71e0f13f140bf7659299a83fdd..bf1488d05ffe8a3206ae5873aa274c19b0b03b37 100644
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.icc
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Header.icc
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyResult.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyResult.h
index 885be510428935d8f6fe158c9a4a92b8611a4ae8..cfb0f36402ffc46f0e66fab68c3840283e8514ae 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyResult.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyResult.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /* **********************************************************
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyRoI.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyRoI.h
index 46912cd535d42b0a87d3bd347f4a00bed20f57c7..e08e198a9f9663f37d138b8185a73743cf088526 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyRoI.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/JetEnergyRoI.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /* **********************************************************
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/L1TopoResult.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/L1TopoResult.h
index 5888ae14bc35370e3391221a1a4f24f295674f12..3e436710b0c8ebbc84a26f24a7c9edd4391d7221 100644
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/L1TopoResult.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/L1TopoResult.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULT_L1TOPORESULT_H
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIResult.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIResult.h
index 41d35f7a17fc9de8eb311c75e4d4f4d35c1edce5..ec0489d46daafcae56caf7000452015035b94efa 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIResult.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIResult.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULT_MUCTPIRESULT_H
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIRoI.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIRoI.h
index 6dcebe46090b0a2ef57ef621b76e50a50b31d37a..0e1c683c68c1dc81163b0cc3d309f3ef3db6a8e0 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIRoI.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPIRoI.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULT_MUCTPIROI_H
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_DataWord_Decoder.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_DataWord_Decoder.h
index 7453b31867626ad0a5ab8c9bff8308dec83f9f82..d6c2de27e02ec2e40d86265cf11883cb50167a0a 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_DataWord_Decoder.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_DataWord_Decoder.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULT_MUCTPI_DATAWORD_DECODER_H
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_MultiplicityWord_Decoder.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_MultiplicityWord_Decoder.h
index e99285208e9d20f10b70f3abf11461fa16252bd6..29e1f185bb5d382f857d842699de2a72991760aa 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_MultiplicityWord_Decoder.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_MultiplicityWord_Decoder.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULT_MUCTPI_MULTIPLICITYWORD_DECODER_H
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RDO.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RDO.h
index aae7e77883c70f32a0d6db9e36af40325fb28084..97d63e18a70399dd0001db5d711b4967dc178dd6 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RDO.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RDO.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULT_MUCTPI_RDO_H
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RIO.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RIO.h
index 91aa2de542e6c3330c67206e32b95e151bcb16b1..ce6d64dac2ebf327e9cbdc9279ff68effd218529 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RIO.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/MuCTPI_RIO.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULT_MUCTPI_RIO_H
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/RecRoIBResult.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/RecRoIBResult.h
index 8f63e680578b36f66ba8b3ad401c9622ecab622b..b1d0830f33ea51de337af7729ac1834f18d8b784 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/RecRoIBResult.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/RecRoIBResult.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /* **********************************************************
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/RoIBResult.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/RoIBResult.h
index 310d337d8de2c537aaff141d2dbf2a5659f17d1f..f2b8410252609b21c457ef7ac3c03876cf0e4b8f 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/RoIBResult.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/RoIBResult.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.h
index 0ba86b33002d5ebb337a940db3bfe385b59aee75..89fad78cffab905f9eb75e8559cb70c44550263d 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.icc b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.icc
index 760bb07b0c8de0057d8f9cec22067191b4a221af..7cb724a62fc4de18d3283c6738e2256958cc2f60 100644
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.icc
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/Trailer.icc
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/TrigT1Result/TrigT1ResultDict.h b/Trigger/TrigT1/TrigT1Result/TrigT1Result/TrigT1ResultDict.h
index ccc11cc5b671ceb1d8cf333fb61accaeab5e80f7..1334190baf5194f86ee65071addb65b004eb2434 100755
--- a/Trigger/TrigT1/TrigT1Result/TrigT1Result/TrigT1ResultDict.h
+++ b/Trigger/TrigT1/TrigT1Result/TrigT1Result/TrigT1ResultDict.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /*
diff --git a/Trigger/TrigT1/TrigT1Result/doc/packagedoc.h b/Trigger/TrigT1/TrigT1Result/doc/packagedoc.h
index 87b17b9f3c0dd4a5f75f427affc6b3520277b29c..5c2f44df92982a51d819f6300edba321b600225c 100644
--- a/Trigger/TrigT1/TrigT1Result/doc/packagedoc.h
+++ b/Trigger/TrigT1/TrigT1Result/doc/packagedoc.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1Result/src/CTPResult.cxx b/Trigger/TrigT1/TrigT1Result/src/CTPResult.cxx
index beb07da0513860f96c42d4eba110b615bbd051f5..f47d2399fa0a2626df01cfef3e171e8e275a4364 100755
--- a/Trigger/TrigT1/TrigT1Result/src/CTPResult.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/CTPResult.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/src/CTP_Decoder.cxx b/Trigger/TrigT1/TrigT1Result/src/CTP_Decoder.cxx
index ced997806f68e4581f738cb70988e92eab34efe9..9a37b65293ac4718f29a5f2035d218360b1f531f 100755
--- a/Trigger/TrigT1/TrigT1Result/src/CTP_Decoder.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/CTP_Decoder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/src/CTP_RDO.cxx b/Trigger/TrigT1/TrigT1Result/src/CTP_RDO.cxx
index d00a7105d9d728a5636b232f2ec39ee937b767af..ce1e091f6517beb6cc261aadafd2a5112c8608c6 100755
--- a/Trigger/TrigT1/TrigT1Result/src/CTP_RDO.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/CTP_RDO.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/src/CTP_RIO.cxx b/Trigger/TrigT1/TrigT1Result/src/CTP_RIO.cxx
index 063fc1680eef0739f06ca796ba4f8613031e7320..3b878df48b8cd888b2b1e9263aa4280e4ee0e9f0 100755
--- a/Trigger/TrigT1/TrigT1Result/src/CTP_RIO.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/CTP_RIO.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "GaudiKernel/Bootstrap.h"
diff --git a/Trigger/TrigT1/TrigT1Result/src/EMTauResult.cxx b/Trigger/TrigT1/TrigT1Result/src/EMTauResult.cxx
index 76332a59a2229443972f0f31cb21a9842f4c26b3..e24cdee51420954ab59a534732848ac8a650115e 100755
--- a/Trigger/TrigT1/TrigT1Result/src/EMTauResult.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/EMTauResult.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/src/EMTauRoI.cxx b/Trigger/TrigT1/TrigT1Result/src/EMTauRoI.cxx
index 1ba8b221b4b36471607d81ccf1b8ccf395bbc366..1176f9c807f692c86b7ce286fb5d200595453af7 100755
--- a/Trigger/TrigT1/TrigT1Result/src/EMTauRoI.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/EMTauRoI.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/src/Header.cxx b/Trigger/TrigT1/TrigT1Result/src/Header.cxx
index 465e771bcb88746adfcdff31438842a8a579071e..5ddd0bcd29327e7e95f8f241ea9d4c0dc678db5c 100755
--- a/Trigger/TrigT1/TrigT1Result/src/Header.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/Header.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/src/JetEnergyResult.cxx b/Trigger/TrigT1/TrigT1Result/src/JetEnergyResult.cxx
index dfa3a1dd4fd1dbc6eaaeb468d7626c872880032d..483d29ceeb7ef414a16d05a1f2c67468c8583a6a 100755
--- a/Trigger/TrigT1/TrigT1Result/src/JetEnergyResult.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/JetEnergyResult.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/src/JetEnergyRoI.cxx b/Trigger/TrigT1/TrigT1Result/src/JetEnergyRoI.cxx
index 596671e4f2f76213f8052015f31b78cc8302d24a..6acf5c9090207bec9f5648a3df63facef92d752c 100755
--- a/Trigger/TrigT1/TrigT1Result/src/JetEnergyRoI.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/JetEnergyRoI.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/src/L1TopoResult.cxx b/Trigger/TrigT1/TrigT1Result/src/L1TopoResult.cxx
index 9186f6f195286f4603e2fd27e4573095e18d5d93..1708ec2b088e5e4e1b6ec8532f1d93a4f1fe49cf 100644
--- a/Trigger/TrigT1/TrigT1Result/src/L1TopoResult.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/L1TopoResult.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1Result/L1TopoResult.h"
diff --git a/Trigger/TrigT1/TrigT1Result/src/MuCTPIResult.cxx b/Trigger/TrigT1/TrigT1Result/src/MuCTPIResult.cxx
index 57831e17685f0eaf78cd372e159821f169f2b85d..3f3c40efae0e0e7e13fb934dca0f7af7bf0414a8 100755
--- a/Trigger/TrigT1/TrigT1Result/src/MuCTPIResult.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/MuCTPIResult.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/src/MuCTPIRoI.cxx b/Trigger/TrigT1/TrigT1Result/src/MuCTPIRoI.cxx
index eb06c8a38894bcb2a67d7c75e67338951003b012..23bb73c9e31a6497ebabed14fe869d3ccd2446bc 100755
--- a/Trigger/TrigT1/TrigT1Result/src/MuCTPIRoI.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/MuCTPIRoI.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/src/MuCTPI_DataWord_Decoder.cxx b/Trigger/TrigT1/TrigT1Result/src/MuCTPI_DataWord_Decoder.cxx
index b92c50dacd2b633b209b3c52d0e7eace54933262..3ade8210f10780358c5d29b8a8eb52816d47cac8 100755
--- a/Trigger/TrigT1/TrigT1Result/src/MuCTPI_DataWord_Decoder.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/MuCTPI_DataWord_Decoder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/src/MuCTPI_MultiplicityWord_Decoder.cxx b/Trigger/TrigT1/TrigT1Result/src/MuCTPI_MultiplicityWord_Decoder.cxx
index 85fdfcab007f907a8074c0058418df065994ed1d..5e01c7b80070673d2d2fc07d6d314a6b41d6f1c2 100755
--- a/Trigger/TrigT1/TrigT1Result/src/MuCTPI_MultiplicityWord_Decoder.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/MuCTPI_MultiplicityWord_Decoder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/src/MuCTPI_RIO.cxx b/Trigger/TrigT1/TrigT1Result/src/MuCTPI_RIO.cxx
index fd1eaf5a927970b08fea9e551d8b0446f95eff48..7d04ee430d48c5d87b1a9bd0f10ebf90418cce8c 100755
--- a/Trigger/TrigT1/TrigT1Result/src/MuCTPI_RIO.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/MuCTPI_RIO.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/src/RecRoIBResult.cxx b/Trigger/TrigT1/TrigT1Result/src/RecRoIBResult.cxx
index b0cb6689665b92ca9733b87639f5472c0ec8ceeb..e28e24ec9f8ae53be4139b0e3b7a1275292e477e 100755
--- a/Trigger/TrigT1/TrigT1Result/src/RecRoIBResult.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/RecRoIBResult.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1Result/src/RoIBResult.cxx b/Trigger/TrigT1/TrigT1Result/src/RoIBResult.cxx
index 10eb7e07845c24ffc13f643f1cc665d7e466d785..2f4a66c7bb52ac71dd41424f8f30fa47549d0eb7 100755
--- a/Trigger/TrigT1/TrigT1Result/src/RoIBResult.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/RoIBResult.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <iostream>
diff --git a/Trigger/TrigT1/TrigT1Result/src/Trailer.cxx b/Trigger/TrigT1/TrigT1Result/src/Trailer.cxx
index 06d8b074b1ed056c1ead8b978dc4585d05b733e0..c3b6c17c1210ec706adaa0ceca631101bfa25118 100755
--- a/Trigger/TrigT1/TrigT1Result/src/Trailer.cxx
+++ b/Trigger/TrigT1/TrigT1Result/src/Trailer.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamCnv.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamCnv.h
index 98cf450d92e4bebd4de8d4b5d2a82dda3d0e053d..6036434596b041148d930e844d5ac19c39ab4531 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamCnv.h
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamCnv.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_CTPBYTESTREAMCNV_H
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamTool.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamTool.h
index a22cfe453f99d93b9f2d57ddd1b8f5eff75bcd68..6d7358bdd1f2a97abe4fa011cd66187544dd953c 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamTool.h
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPByteStreamTool.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_CTPBYTESTREAMTOOL_H
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPSrcIdMap.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPSrcIdMap.h
index caee42dca38c2ef42506435558ab0ab6029f0478..548e9f611c0951176c4c79d864f96ec52dfe44eb 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPSrcIdMap.h
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/CTPSrcIdMap.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_CTPSRCIDMAP_H
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/L1SrcIdMap.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/L1SrcIdMap.h
index deb797aaed7c8b05e7136e2a7a3dea03f9fcbba0..359eba7cb25d87280ca21fce4c384ea666435c61 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/L1SrcIdMap.h
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/L1SrcIdMap.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_L1SRCIDMAP_H
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamCnv.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamCnv.h
index 4e95eaf61601c2fd53fb6464093237d460420e0d..e5eae54bfd743ccb98ea2b597abf4976585d4a52 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamCnv.h
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamCnv.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_MUCTPIBYTESTREAMCNV_H
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamTool.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamTool.h
index af689afc3a1f698bcf91909146242bf1bc8340ff..d0ce8534983624284db649b4700215c79c97f9bb 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamTool.h
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPIByteStreamTool.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_MUCTPIBYTESTREAMTOOL_H
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPISrcIdMap.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPISrcIdMap.h
index 791a5a3d68cb24c481b37f7626743222b7c521b1..66c757cffa8ccb2fe2d586469221fe22c2410d68 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPISrcIdMap.h
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/MuCTPISrcIdMap.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_MUCTPISRCIDMAP_H
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamCnv.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamCnv.h
index e8ab5a37bb0250a684ea8f730da8b064f3c8d5b8..0a5eed5e95a1c28ee60ffd649b39eda3603e5237 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamCnv.h
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamCnv.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_RECCTPBYTESTREAMCNV_H
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamTool.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamTool.h
index eafbd1c97c26dc8cee04253551c3de756c516c96..bf489c062ae9f7147ff67dc54f62ba6e86d1aeba 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamTool.h
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecCTPByteStreamTool.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_RECCTPBYTESTREAMTOOL_H
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamCnv.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamCnv.h
index 093c57fd33fa388df49d441844cc3d87c40a8214..3e2dfbddf3c3c663cf0cf8f60b8f8076221a9875 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamCnv.h
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamCnv.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_RECMUCTPIBYTESTREAMCNV_H
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamTool.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamTool.h
index c1361b68792e953133f19a79733155771c766e9c..f9d326607d35a9a06d1b5349d99e89f40d0a60a0 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamTool.h
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecMuCTPIByteStreamTool.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_RECMUCTPIBYTESTREAMTOOL_H
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.h
index ece0869796ff15e780f4e99ee1f7953b5b8e8794..35ca48a44166999cf83d01abfa0cbbbb5643549a 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.h
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_RECROIBRESULTBYTESTREAMCNV_H
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.icc b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.icc
index 21265c38ce6e4bf211ed14f0d5a1015b69748779..4ae484f8d9dbcd5fcb6853de0af459726dae796c 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.icc
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamCnv.icc
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_RECROIBRESULTBYTESTREAMCNV_ICC
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.h
index 5a3f16f1b77277f246fbe7b31fb0b8b4c60c6efe..3613fdd71b44791374c3754b4b9d9b5fefa60867 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.h
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_RECROIBRESULTBYTESTREAMTOOL_H
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.icc b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.icc
index d7e60439aeff1113869cf9e6a7d764fb717b6962..14b85ba382a99b6f555e4e5300a175ac9f56beee 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.icc
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RecRoIBResultByteStreamTool.icc
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_RECROIBRESULTBYTESTREAMTOOL_ICC
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.h
index 2bfc6ebecfa7b506f4caf7581861b583ff381544..1e6f4be66fc4c6b4b000d0c65cfa6cf28d3d4c2f 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.h
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_ROIBRESULTBYTESTREAMCNV_H
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.icc b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.icc
index dc1276a561ff490d0284079335e532fd7af8efe3..6cac6272f316a428cf75405b2f1f46afc7e9d6b5 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.icc
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamCnv.icc
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_ROIBRESULTBYTESTREAMCNV_ICC
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.h b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.h
index 9aebc8c73042a56bcc4d224bccbf582ba7412893..8a65af4392049669187f00359cbd9f69717f7f76 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.h
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_ROIBRESULTBYTESTREAMTOOL_H
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.icc b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.icc
index 9f1896aae00361e2e346749092f6507323083af8..33cdc1f7021785baee96356ed7351575aa10aed9 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.icc
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/TrigT1ResultByteStream/RoIBResultByteStreamTool.icc
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1RESULTBYTESTREAM_ROIBRESULTBYTESTREAMTOOL_ICC
@@ -9,9 +9,6 @@
 
 #include <exception>
 
-// Gaudi/Athena include(s):
-#include "GaudiKernel/MsgStream.h"
-
 // eformat include(s):
 #include "eformat/SourceIdentifier.h"
 
@@ -30,8 +27,7 @@ template< class ROBF >
 StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs,
                                               ROIB::RoIBResult*& result ) {
 
-  MsgStream log( msgSvc(), name() );
-  log << MSG::DEBUG << "executing convert() from ROBFragments to RDO" << endmsg;
+  ATH_MSG_DEBUG("executing convert() from ROBFragments to RDO");
 
   /* Create all RDOs */
   ROIB::CTPResult cTPResult;
@@ -86,10 +82,12 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs,
     DataType status;
     rob.rod_status( status );
     uint32_t nstatus = rob.rod_nstatus();
-    log << MSG::VERBOSE << "Number of status words: " << nstatus << endmsg;
-    for( uint32_t i = 0; i < nstatus; ++i, ++status ) {
-       log << MSG::VERBOSE << "   Status word: 0x" << MSG::hex << std::setw( 8 )
-           << std::setfill( '0' ) << *status << endmsg;
+    ATH_MSG_VERBOSE("Number of status words: " << nstatus);
+    if (msgLvl(MSG::VERBOSE)) {
+      for( uint32_t i = 0; i < nstatus; ++i, ++status ) {
+        ATH_MSG_VERBOSE("   Status word: 0x" << MSG::hex << std::setw( 8 )
+            << std::setfill( '0' ) << *status);
+      }
     }
     rob.rod_status( status );
 
@@ -102,16 +100,16 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs,
        statInfo = static_cast< uint32_t >( *status );
     }
 
-    log << MSG::DEBUG << "ROB ID 0x" << MSG::hex << robId <<  " ROD ID 0x" 
+    ATH_MSG_DEBUG("ROB ID 0x" << MSG::hex << robId <<  " ROD ID 0x" 
         << rodId << MSG::dec << " ROB fragment size " 
-        << robFragSize << " ROD fragment size " << rodFragSize << endmsg;
+        << robFragSize << " ROD fragment size " << rodFragSize);
 
     /* CTP ROB */
     eformat::helper::SourceIdentifier helpCTPID( eformat::TDAQ_CTP, m_ctpModuleID );
     eformat::helper::SourceIdentifier helpCTPID_II( eformat::TDAQ_CTP, 0 );
     
-    log << MSG::DEBUG << "Check ROD ID against CTP 0x" << MSG::hex 
-	<< helpCTPID.code() << MSG::dec << endmsg;
+    ATH_MSG_DEBUG("Check ROD ID against CTP 0x" << MSG::hex 
+	<< helpCTPID.code() << MSG::dec);
     if( rodId == helpCTPID.code() || 
         // this is a hack to catch the early data with the old CTP
         // firmware, which assigns 0x770000 to both DAQ and LVL2 ROD
@@ -121,10 +119,10 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs,
         ( rodId == helpCTPID_II.code() && rodFragSize == 46 ) ) {
 
       if( rodId == helpCTPID_II.code() && rodFragSize == 46 ) {
-        log << MSG::DEBUG << "Take CTP ROD fragment with ID 0x" << MSG::hex << rodId << MSG::dec  << endmsg;
+        ATH_MSG_DEBUG("Take CTP ROD fragment with ID 0x" << MSG::hex << rodId << MSG::dec );
       }
-      log << MSG::DEBUG << "   Found CTP ROB." << endmsg;
-      log << MSG::VERBOSE << "   Dumping RoI Words:" << endmsg;
+      ATH_MSG_DEBUG("   Found CTP ROB.");
+      ATH_MSG_VERBOSE("   Dumping RoI Words:");
 
       /* Celebrate finding the ROD */
       cTPFound = true;
@@ -135,14 +133,16 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs,
       rob.rod_data( data );
       uint32_t ndata = rob.rod_ndata();
       std::vector< ROIB::CTPRoI > cTPContent;
+      cTPContent.reserve(ndata);
       for( uint32_t i = 0; i < ndata; ++i, ++data ) {
-        log << MSG::VERBOSE << "       0x" << MSG::hex << std::setw( 8 )
-            << static_cast< uint32_t >( *data ) << endmsg;
+        ATH_MSG_VERBOSE("       0x" << MSG::hex << std::setw( 8 )
+            << static_cast< uint32_t >( *data ));
         ROIB::CTPRoI thisRoI( static_cast<uint32_t>( *data ) );
         cTPContent.push_back( thisRoI );
       }
       /* Create Trailer */
       std::vector< uint32_t > words;
+      words.reserve(5);
       words.push_back( errorStat );         // error status
       words.push_back( statInfo );          // status info
       words.push_back( 2 );                 // number of status words
@@ -164,8 +164,8 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs,
     eformat::helper::SourceIdentifier helpMuonID( eformat::TDAQ_MUON_CTP_INTERFACE, m_muCTPIModuleID );
     if( rodId == helpMuonID.code() ) {
 
-      log << MSG::DEBUG << "   Found MuCTPI ROB." << endmsg;
-      log << MSG::VERBOSE << "   Dumping RoI Words:" << endmsg;
+      ATH_MSG_DEBUG( "   Found MuCTPI ROB.");
+      ATH_MSG_VERBOSE( "   Dumping RoI Words:");
 
       /* Celebrate finding the ROB */
       muCTPIFound = true;
@@ -176,15 +176,17 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs,
       rob.rod_data( data );
       uint32_t ndata = rob.rod_ndata();
       std::vector< ROIB::MuCTPIRoI > muCTPIContent;
+      muCTPIContent.reserve(ndata);
       for( uint32_t i = 0; i < ndata; ++i, ++data ) {
-        log << MSG::VERBOSE << "       0x" << MSG::hex << std::setw( 8 )
-            << static_cast< uint32_t >( *data ) << endmsg;
+        ATH_MSG_VERBOSE("       0x" << MSG::hex << std::setw( 8 )
+            << static_cast< uint32_t >( *data ));
         ROIB::MuCTPIRoI thisRoI( static_cast< uint32_t >( *data ) );
         muCTPIContent.push_back( thisRoI );
       }
 
       /* Create trailer */
       std::vector< uint32_t > words;
+      words.reserve(5);
       words.push_back( errorStat );            // error status
       words.push_back( statInfo );             // status info
       words.push_back( 2 );                    // number of status words
@@ -202,8 +204,8 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs,
 	 eformat::helper::SourceIdentifier helpJetID_1( eformat::TDAQ_CALO_JET_PROC_ROI, m_jetModuleID[1] );
     if( rodId == helpJetID_0.code() || rodId == helpJetID_1.code() ) {
 
-      log << MSG::DEBUG << "   Found Jet/Energy ROB." << endmsg;
-      log << MSG::VERBOSE << "   Dumping RoI Words:" << endmsg;
+      ATH_MSG_DEBUG("   Found Jet/Energy ROB.");
+      ATH_MSG_VERBOSE("   Dumping RoI Words:");
 
       /* Create header */
       ROIB::Header jetEnergyHead( rodId, evtNum, formatVersion );
@@ -212,14 +214,16 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs,
       rob.rod_data( data );
       uint32_t ndata = rob.rod_ndata();
       std::vector< ROIB::JetEnergyRoI > jetEnergyContent;
+      jetEnergyContent.reserve(ndata);
       for( uint32_t i = 0; i < ndata; ++i, ++data ) {
-        log << MSG::VERBOSE << "       0x" << MSG::hex << std::setw( 8 )
-            << static_cast< uint32_t >( *data ) << endmsg;
+        ATH_MSG_VERBOSE("       0x" << MSG::hex << std::setw( 8 )
+            << static_cast< uint32_t >( *data ));
         ROIB::JetEnergyRoI thisRoI( static_cast< uint32_t >( *data ) );
         jetEnergyContent.push_back( thisRoI );
       }
       /* Create trailer */
       std::vector< uint32_t > words;
+      words.reserve(5);
       words.push_back( errorStat );               // error status
       words.push_back( statInfo );                // status info
       words.push_back( 2 );                       // number of status words
@@ -244,8 +248,8 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs,
     if( rodId == helpEMTauID_0.code() || rodId == helpEMTauID_1.code() ||
         rodId == helpEMTauID_2.code() || rodId == helpEMTauID_3.code() ) {
 
-      log << MSG::DEBUG << "   Found EM/Tau ROB." << endmsg;
-      log << MSG::VERBOSE << "   Dumping RoI Words:" << endmsg;
+      ATH_MSG_DEBUG("   Found EM/Tau ROB.");
+      ATH_MSG_VERBOSE("   Dumping RoI Words:");
 
       /* Create header */
       ROIB::Header eMTauHead( rodId, evtNum, formatVersion );
@@ -254,14 +258,16 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs,
       rob.rod_data( data );
       uint32_t ndata = rob.rod_ndata();
       std::vector<ROIB::EMTauRoI> eMTauContent;
+      eMTauContent.reserve(ndata);
       for( uint32_t i = 0; i < ndata; ++i, ++data ) {
-        log << MSG::VERBOSE << "       0x" << MSG::hex << std::setw( 8 )
-            << static_cast< uint32_t >( *data ) << endmsg;
+        ATH_MSG_VERBOSE("       0x" << MSG::hex << std::setw( 8 )
+            << static_cast< uint32_t >( *data ));
         ROIB::EMTauRoI thisRoI( static_cast<uint32_t>( *data ) );
         eMTauContent.push_back( thisRoI );
       }
       /* Create Trailer */
       std::vector< uint32_t > words;
+      words.reserve(5);
       words.push_back( errorStat );           // error status
       words.push_back( statInfo );            // status info
       words.push_back( 2 );                   // number of status words
@@ -303,19 +309,20 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs,
       L1TopoRDO l1TopoContent;
       ATH_MSG_VERBOSE( "   Dumping RoI Words:" );
       std::vector<uint32_t> vDataWords;
+      vDataWords.reserve(ndata);
       for ( uint32_t i = 0; i < ndata; ++i, ++data ) {
-	vDataWords.push_back( static_cast<uint32_t>( *data ) );
-	ATH_MSG_VERBOSE( "     0x" << MSG::hex << std::setfill ('0') << std::setw( 8 )  << static_cast<uint32_t>( *data ) << MSG::dec);
+        vDataWords.push_back( static_cast<uint32_t>( *data ) );
+        ATH_MSG_VERBOSE( "     0x" << MSG::hex << std::setfill ('0') << std::setw( 8 )  << static_cast<uint32_t>( *data ) << MSG::dec);
       }
       l1TopoContent.setDataWords(vDataWords);
       l1TopoContent.setSourceID(rodId);
       /* Create Trailer */
       std::vector< uint32_t > words;
       // the two status words
+      words.reserve(5);
       words.push_back( errorStat );         // error status
       words.push_back( statInfo );          // status info
       l1TopoContent.setStatusWords(words);  // copy 2 status words to RDO
-      //
       words.push_back( 2 );                 // number of status words
       words.push_back( ndata );             // number of data words
       words.push_back( 1 );                 // status block position
@@ -352,33 +359,33 @@ StatusCode RoIBResultByteStreamTool::convert( const std::vector< ROBF >& robs,
       eMTauFound[ 0 ] && eMTauFound[ 1 ] && eMTauFound[ 2 ] && eMTauFound[ 3 ] ) {
 
     result = new ROIB::RoIBResult( muCTPIResult, cTPResult, jetEnergyResult, eMTauResult );
-    log << MSG::DEBUG << "All RoI Builder ROB fragments found" << endmsg;
+    ATH_MSG_DEBUG("All RoI Builder ROB fragments found");
 
   } else if( cTPFound && jetEnergyFound[ 0 ] && jetEnergyFound[ 1 ] &&
              eMTauFound[ 0 ] && eMTauFound[ 1 ] && eMTauFound[ 2 ] && eMTauFound[ 3 ] ) {
 
     result = new ROIB::RoIBResult( cTPResult, eMTauResult, jetEnergyResult );
-    log << MSG::DEBUG << "MuCTPI ROB fragment not found, built RoIBResult object without it." << endmsg;
+    ATH_MSG_DEBUG("MuCTPI ROB fragment not found, built RoIBResult object without it.");
 
   } else if( cTPFound && eMTauFound[ 0 ] && eMTauFound[ 1 ] &&
              eMTauFound[ 2 ] && eMTauFound[ 3 ] ) {
 
     result = new ROIB::RoIBResult( cTPResult, eMTauResult );
-    log << MSG::DEBUG << "MuCTPI and Jet/Energy fragments not found, built RoIBResult object without them." << endmsg;
+    ATH_MSG_DEBUG("MuCTPI and Jet/Energy fragments not found, built RoIBResult object without them.");
 
   } else if( cTPFound && muCTPIFound ) {
 	  // jetEnergyResult and eMTauResult are empty
     result = new ROIB::RoIBResult( muCTPIResult, cTPResult, jetEnergyResult, eMTauResult );
-    log << MSG::DEBUG << "Calo fragments not found, built RoIBResult from CTPResult and MuCTPIResult only." << endmsg;
+    ATH_MSG_DEBUG("Calo fragments not found, built RoIBResult from CTPResult and MuCTPIResult only.");
 
   } else if( cTPFound ) {
 
     result = new ROIB::RoIBResult( cTPResult );
-    log << MSG::DEBUG << "MuCTPI and calo fragments not found, built RoIBResult from CTPResult only." << endmsg;
+    ATH_MSG_DEBUG("MuCTPI and calo fragments not found, built RoIBResult from CTPResult only.");
 
   } else {
     result = new ROIB::RoIBResult();
-    log << MSG::DEBUG << "No LVL1 fragments found, create empty RoIBResult." << endmsg;
+    ATH_MSG_DEBUG("No LVL1 fragments found, create empty RoIBResult.");
   }
 
   if( l1TopoFound ){
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamCnv.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamCnv.cxx
index f1469ce7750c618c8ae39b22808a68a65de099d9..23b7841c34e4ed7a251487234873b131693d4208 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamCnv.cxx
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamTool.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamTool.cxx
index 2ba4234c93b7179050fdd8fa63b4b217d2047f75..f0ef78762999531687c0dcb6b291bf093ee0be42 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamTool.cxx
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPByteStreamTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // CTP data format include(s):
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPSrcIdMap.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPSrcIdMap.cxx
index ebf0f1aadf672981eb4b465d6f05c0e442216736..beac4995592db8a33cede7d85e4aea6d1f938010 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPSrcIdMap.cxx
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/CTPSrcIdMap.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/L1SrcIdMap.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/L1SrcIdMap.cxx
index 18b998cb3b5fd811e192b9c505ab8980cfdcb7ba..e921881c290511b53779e0e7ff3e9f78f8283d6b 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/src/L1SrcIdMap.cxx
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/L1SrcIdMap.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamCnv.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamCnv.cxx
index 636c7c0691f5346b98fa70a566e93d941ec72b3d..6610c55ed47b906c22483374a7f9b1089b73fd17 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamCnv.cxx
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamTool.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamTool.cxx
index 37682f660ccef86f9b11f498879daae50458530c..a54ae1195bcb92b3d01be487ab04d6738bdb0191 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamTool.cxx
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPIByteStreamTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1ResultByteStream/MuCTPIByteStreamTool.h"
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPISrcIdMap.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPISrcIdMap.cxx
index d227080819f8d47c887c377a1e777814855347e7..8db3b7d9a42ee2f1f26e14cf22b1ce6d54ac722a 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPISrcIdMap.cxx
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/MuCTPISrcIdMap.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "eformat/SourceIdentifier.h"
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamCnv.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamCnv.cxx
index 0e2da6a2ff4efd06191915eb6fba199edc17cf91..d270aa8e2900fe701b18bcf3ef2bd0d9faf22830 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamCnv.cxx
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamTool.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamTool.cxx
index 1c8d7c07cd4ad03d34d120dfc1dac2d09d47b6c7..f29af7aaf38c9c995455460e6cf6863baaa72609 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamTool.cxx
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecCTPByteStreamTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // Trigger include(s):
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamCnv.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamCnv.cxx
index e19d179067bb331c80419c7d1e8257d10c20edcd..e495669ae0ec93ef72af8fb89c329b60a5d58018 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamCnv.cxx
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamCnv.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.cxx
index 268804a2b38f28a99ca3213f4c3c0eb3af8389d4..dfa48f6f920f6abe621ae28cb692bd530b7f5d8f 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.cxx
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "ByteStreamData/RawEvent.h"
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecRoIBResultByteStreamTool.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecRoIBResultByteStreamTool.cxx
index edc87335dba13430ad709c774522f90e27d8befe..fbdd4c7e2f85b8be7c022e07e5731a03d5a43450 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecRoIBResultByteStreamTool.cxx
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecRoIBResultByteStreamTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/RoIBResultByteStreamTool.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/RoIBResultByteStreamTool.cxx
index 0f0fa68ca6b14ef6bcbd3ea25672098de16c5dd0..48994284feeede691d15b40081b361069e70c03b 100755
--- a/Trigger/TrigT1/TrigT1ResultByteStream/src/RoIBResultByteStreamTool.cxx
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/RoIBResultByteStreamTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <sstream>
@@ -78,74 +78,72 @@ StatusCode RoIBResultByteStreamTool::initialize() {
     return sc;
   }
 
-  MsgStream log( msgSvc(), name() );
-
   //
   // Get ByteStreamAddressProviderSvc:
   //
   ServiceHandle< IProperty > p_ByteStreamAddressProviderSvc( "ByteStreamAddressProviderSvc", name() );
   sc = p_ByteStreamAddressProviderSvc.retrieve();
   if( sc.isFailure() ) {
-    log << MSG::ERROR << "Can't get ByteStreamAddressProviderSvc" << endmsg;
+    ATH_MSG_ERROR("Can't get ByteStreamAddressProviderSvc");
     return sc;
   } else {
-    log << MSG::DEBUG << "Connected to " << p_ByteStreamAddressProviderSvc.name() << endmsg;
+    ATH_MSG_DEBUG("Connected to " << p_ByteStreamAddressProviderSvc.name());
 
     UnsignedIntegerProperty ctpModuleID;
     ctpModuleID.setName("CTPModuleID");
     if (ctpModuleID.assign(p_ByteStreamAddressProviderSvc->getProperty("CTPModuleID"))) {
       m_ctpModuleID = ctpModuleID.value() ;
-      log << MSG::DEBUG << " ---> getProperty('CTPModuleID')             = " << ctpModuleID << endmsg;
+      ATH_MSG_DEBUG(" ---> getProperty('CTPModuleID')             = " << ctpModuleID);
     } else {
-      log << MSG::WARNING << p_ByteStreamAddressProviderSvc.name() << "::getProperty('CTPModuleID') failed." << endmsg;
+      ATH_MSG_WARNING(p_ByteStreamAddressProviderSvc.name() << "::getProperty('CTPModuleID') failed.");
     }
 
     UnsignedIntegerProperty muCTPIModuleID;
     muCTPIModuleID.setName("MuCTPIModuleID");
     if (muCTPIModuleID.assign(p_ByteStreamAddressProviderSvc->getProperty("MuCTPIModuleID"))) {
       m_muCTPIModuleID = muCTPIModuleID.value() ;
-      log << MSG::DEBUG << " ---> getProperty('MuCTPIModuleID')          = " << muCTPIModuleID << endmsg;
+      ATH_MSG_DEBUG(" ---> getProperty('MuCTPIModuleID')          = " << muCTPIModuleID);
     } else {
-      log << MSG::WARNING << p_ByteStreamAddressProviderSvc.name() << "::getProperty('MuCTPIModuleID') failed." << endmsg;
+      ATH_MSG_WARNING(p_ByteStreamAddressProviderSvc.name() << "::getProperty('MuCTPIModuleID') failed.");
     }
 
     UnsignedIntegerArrayProperty jetProcModuleID;
     jetProcModuleID.setName("JetProcModuleID");
     if (jetProcModuleID.assign(p_ByteStreamAddressProviderSvc->getProperty("JetProcModuleID"))) {
       m_jetModuleID = jetProcModuleID.value() ;
-      log << MSG::DEBUG << " ---> getProperty('JetProcModuleID')         = " << jetProcModuleID << endmsg;
+      ATH_MSG_DEBUG(" ---> getProperty('JetProcModuleID')         = " << jetProcModuleID);
     } else {
-      log << MSG::WARNING << p_ByteStreamAddressProviderSvc.name() << "::getProperty('JetProcModuleID') failed." << endmsg;
+      ATH_MSG_WARNING(p_ByteStreamAddressProviderSvc.name() << "::getProperty('JetProcModuleID') failed.");
     }
 
     UnsignedIntegerArrayProperty caloClusterProcModuleID;
     caloClusterProcModuleID.setName("CaloClusterProcModuleID");
     if (caloClusterProcModuleID.assign(p_ByteStreamAddressProviderSvc->getProperty("CaloClusterProcModuleID"))) {
       m_emModuleID = caloClusterProcModuleID.value() ;
-      log << MSG::DEBUG << " ---> getProperty('CaloClusterProcModuleID') = " << caloClusterProcModuleID << endmsg;
+      ATH_MSG_DEBUG(" ---> getProperty('CaloClusterProcModuleID') = " << caloClusterProcModuleID);
     } else {
-      log << MSG::WARNING << p_ByteStreamAddressProviderSvc.name() << "::getProperty('CaloClusterProcModuleID') failed." << endmsg;
+      ATH_MSG_WARNING(p_ByteStreamAddressProviderSvc.name() << "::getProperty('CaloClusterProcModuleID') failed.");
     }
 
     UnsignedIntegerArrayProperty l1TopoModuleID;
     l1TopoModuleID.setName("TopoProcModuleID");
     if (l1TopoModuleID.assign(p_ByteStreamAddressProviderSvc->getProperty("TopoProcModuleID"))) {
       m_l1TopoModuleID = l1TopoModuleID.value();
-      log << MSG::DEBUG << " ---> getProperty('TopoProcModuleID') = " << l1TopoModuleID << endmsg;
+      ATH_MSG_DEBUG(" ---> getProperty('TopoProcModuleID') = " << l1TopoModuleID);
     } else {
-      log << MSG::WARNING << p_ByteStreamAddressProviderSvc.name() << "::getProperty('TopoProcModuleID') failed." << endmsg;
+      ATH_MSG_WARNING(p_ByteStreamAddressProviderSvc.name() << "::getProperty('TopoProcModuleID') failed.");
     }
   }
 
-  log<<MSG::DEBUG << " -- Module IDs for: "<<endmsg;
-  log<<MSG::DEBUG << "    CTP                                  = 0x" <<MSG::hex<< m_ctpModuleID <<MSG::dec<<endmsg;
-  log<<MSG::DEBUG << "    muCTPi                               = 0x" <<MSG::hex<< m_muCTPIModuleID <<MSG::dec<<endmsg;
-  log<<MSG::DEBUG << "    Calorimeter Cluster Processor RoI    = 0x" <<MSG::hex<< m_emModuleID[0]
-     << ", 0x" << m_emModuleID[1] << ", 0x" << m_emModuleID[2] << ", 0x" << m_emModuleID[3] <<MSG::dec<<endmsg;
-  log<<MSG::DEBUG << "    Calorimeter Jet/Energy Processor RoI = 0x" <<MSG::hex<< m_jetModuleID[0]
-     << ", 0x" << m_jetModuleID[1] <<MSG::dec<<endmsg;
+  ATH_MSG_DEBUG(" -- Module IDs for: ");
+  ATH_MSG_DEBUG("    CTP                                  = 0x" <<MSG::hex<< m_ctpModuleID <<MSG::dec);
+  ATH_MSG_DEBUG("    muCTPi                               = 0x" <<MSG::hex<< m_muCTPIModuleID <<MSG::dec);
+  ATH_MSG_DEBUG("    Calorimeter Cluster Processor RoI    = 0x" <<MSG::hex<< m_emModuleID[0]
+     << ", 0x" << m_emModuleID[1] << ", 0x" << m_emModuleID[2] << ", 0x" << m_emModuleID[3] <<MSG::dec);
+  ATH_MSG_DEBUG("    Calorimeter Jet/Energy Processor RoI = 0x" <<MSG::hex<< m_jetModuleID[0]
+     << ", 0x" << m_jetModuleID[1] <<MSG::dec);
 
-  //  log<<MSG::DEBUG << "    L1Topo                               = 0x" <<MSG::hex<< m_l1TopoModuleID[0]     << ", 0x" <<  m_l1TopoModuleID[1] <<MSG::dec<<endmsg;
+  //  ATH_MSG_DEBUG("    L1Topo                               = 0x" <<MSG::hex<< m_l1TopoModuleID[0]     << ", 0x" <<  m_l1TopoModuleID[1] <<MSG::dec);
   std::ostringstream topoModulesString;
   for (unsigned int mid: m_l1TopoModuleID){ 
     topoModulesString << L1Topo::formatHex4(mid) << " ";
@@ -169,51 +167,49 @@ StatusCode RoIBResultByteStreamTool::finalize() {
  */
 StatusCode RoIBResultByteStreamTool::convert( ROIB::RoIBResult* result, RawEventWrite* re ) {
 
-  MsgStream log( msgSvc(), name() );
-
   // Clear the event assembler:
   m_fea.clear();
   // Reset lumi-block number to 1
   m_fea.setDetEvtType( 1 );
 
-  log << MSG::DEBUG << "executing convert() from RDO to ROBFragments" << endmsg;
+  ATH_MSG_DEBUG("executing convert() from RDO to ROBFragments");
 
   // I use only this one pointer now to fill the RODs:
   FullEventAssembler< L1SrcIdMap >::RODDATA* theROD;
 
   /** CTP ROD */
-  log << MSG::VERBOSE << "   Dumping CTP RoI words:" << endmsg;
+  ATH_MSG_VERBOSE("   Dumping CTP RoI words:");
   eformat::helper::SourceIdentifier helpCTPID( eformat::TDAQ_CTP, m_ctpModuleID );
   uint32_t rodIdCTP = helpCTPID.code();
   theROD = m_fea.getRodData( rodIdCTP );
   const std::vector< ROIB::CTPRoI >& CTPRoIVec = result->cTPResult().roIVec();
   for( std::vector< ROIB::CTPRoI >::const_iterator j = CTPRoIVec.begin(); j != CTPRoIVec.end(); ++j ) {
-    log << MSG::VERBOSE << "     0x" << MSG::hex << std::setw( 8 ) << j->roIWord() << endmsg;
+    ATH_MSG_VERBOSE( "     0x" << MSG::hex << std::setw( 8 ) << j->roIWord() );
     theROD->push_back( j->roIWord() );
   }
 
   /** Muon ROD */
-  log << MSG::VERBOSE << "   Dumping MuCTPI RoI words:" << endmsg;
+  ATH_MSG_VERBOSE( "   Dumping MuCTPI RoI words:" );
   eformat::helper::SourceIdentifier helpMuonID( eformat::TDAQ_MUON_CTP_INTERFACE, m_muCTPIModuleID );
   uint32_t rodIdMuon = helpMuonID.code();
   theROD = m_fea.getRodData( rodIdMuon );
   const std::vector< ROIB::MuCTPIRoI >& MuCTPIRoIVec = result->muCTPIResult().roIVec();
   for( std::vector< ROIB::MuCTPIRoI >::const_iterator j = MuCTPIRoIVec.begin();
        j != MuCTPIRoIVec.end(); ++j ) {
-    log << MSG::VERBOSE << "     0x" << MSG::hex << std::setw( 8 ) << j->roIWord() << endmsg;
+    ATH_MSG_VERBOSE( "     0x" << MSG::hex << std::setw( 8 ) << j->roIWord() );
     theROD->push_back( j->roIWord() );
   }
 
   /** Jet/Energy ROD */
   const std::vector< ROIB::JetEnergyResult >& jetEnergyResultVector = result->jetEnergyResult();
   for( unsigned int slink = 0; slink < jetEnergyResultVector.size(); ++slink ) {
-    log << MSG::VERBOSE << "   Dumping Jet/Energy " << slink << " RoI words:" << endmsg;
+    ATH_MSG_VERBOSE( "   Dumping Jet/Energy " << slink << " RoI words:" );
     eformat::helper::SourceIdentifier helpJetID( eformat::TDAQ_CALO_JET_PROC_ROI, m_jetModuleID[slink] );
     theROD = m_fea.getRodData( helpJetID.code() );
     const std::vector< ROIB::JetEnergyRoI >& JetEnergyRoIVec = jetEnergyResultVector[ slink ].roIVec();
     for( std::vector< ROIB::JetEnergyRoI >::const_iterator j = JetEnergyRoIVec.begin();
          j != JetEnergyRoIVec.end(); ++j ) {
-      log << MSG::VERBOSE << "     0x" << MSG::hex << std::setw( 8 ) << j->roIWord() << endmsg;
+      ATH_MSG_VERBOSE( "     0x" << MSG::hex << std::setw( 8 ) << j->roIWord() );
       theROD->push_back( j->roIWord() );
     }
   }
@@ -221,42 +217,43 @@ StatusCode RoIBResultByteStreamTool::convert( ROIB::RoIBResult* result, RawEvent
   /* EMTau RODs */
   const std::vector< ROIB::EMTauResult >& eMTauRDOResultVector = result->eMTauResult();
   for( unsigned int slink = 0; slink < eMTauRDOResultVector.size(); ++slink ) {
-    log << MSG::VERBOSE << "   Dumping EM/Tau " << slink << " RoI words:" << endmsg;
+    ATH_MSG_VERBOSE( "   Dumping EM/Tau " << slink << " RoI words:" );
     eformat::helper::SourceIdentifier helpEMTauID( eformat::TDAQ_CALO_CLUSTER_PROC_ROI, m_emModuleID[slink]);
     theROD = m_fea.getRodData( helpEMTauID.code() );
     const std::vector< ROIB::EMTauRoI >& EMTauRoIVec = eMTauRDOResultVector[ slink ].roIVec();
     for( std::vector<ROIB::EMTauRoI>::const_iterator j = EMTauRoIVec.begin();
          j != EMTauRoIVec.end(); ++j ) {
-      log << MSG::VERBOSE << "     0x" << MSG::hex << std::setw( 8 ) << j->roIWord() << endmsg;
+      ATH_MSG_VERBOSE( "     0x" << MSG::hex << std::setw( 8 ) << j->roIWord() );
       theROD->push_back( j->roIWord() );
     }
   }
 
   /** L1Topo ROD */
-  log << MSG::VERBOSE << "   Dumping L1Topo RoI words" << endmsg;
+  ATH_MSG_VERBOSE( "   Dumping L1Topo RoI words" );
   const std::vector< ROIB::L1TopoResult >& l1TopoResultVector = result->l1TopoResult();
-  log << MSG::VERBOSE << "   Dumping L1Topo RoI words for " << l1TopoResultVector.size() << " RODs:" << endmsg;
+  ATH_MSG_VERBOSE( "   Dumping L1Topo RoI words for " << l1TopoResultVector.size() << " RODs:" );
   unsigned int slink(0);
   for (auto & l1tr : l1TopoResultVector){
     uint32_t sourceID = l1tr.rdo().getSourceID(); // needs to be a 16-bit module ID
-    log << MSG::VERBOSE << "  for L1Topo source ID from RDO "  << L1Topo::formatHex8(sourceID) << endmsg;
+    ATH_MSG_VERBOSE( "  for L1Topo source ID from RDO "  << L1Topo::formatHex8(sourceID) );
     if (sourceID == 0 && slink < m_l1TopoModuleID.size()){
       sourceID = eformat::helper::SourceIdentifier( eformat::TDAQ_CALO_TOPO_PROC, m_l1TopoModuleID.at(slink) ).code();
-      log << MSG::DEBUG << "  (source ID in L1TopoRDO was zero so using Property for slink " << slink << ": " << L1Topo::formatHex8(sourceID) << ")" << endmsg;
+      ATH_MSG_DEBUG("  (source ID in L1TopoRDO was zero so using Property for slink " << slink << ": " << L1Topo::formatHex8(sourceID) << ")");
     } 
     else if (sourceID == 0){
       sourceID=eformat::helper::SourceIdentifier( eformat::TDAQ_CALO_TOPO_PROC, 0 ).code();
-      log << MSG::WARNING << "  (source ID in L1TopoRDO was zero, no properties available for slink counter " << slink << ", so as a fall back, constructed module 0 with source ID " << L1Topo::formatHex8(sourceID) << ")" << endmsg;
+      ATH_MSG_WARNING("  (source ID in L1TopoRDO was zero, no properties available for slink counter " << slink << ", so as a fall back, constructed module 0 with source ID " << L1Topo::formatHex8(sourceID) << ")");
     }
     theROD = m_fea.getRodData( sourceID );
     for ( auto & word : l1tr.rdo().getDataWords()){
-      log << MSG::VERBOSE << "     " << MSG::hex << std::setw(8) << std::showbase << word << std::noshowbase << std::dec << endmsg;
+      ATH_MSG_VERBOSE("     " << MSG::hex << std::setw(8) << std::showbase << word << std::noshowbase << std::dec);
       theROD->push_back(word);
     }
     ++slink;
   }
   /** now fill them into the RawEvent re */
-  log << MSG::DEBUG << "Now filling the event with the RoI Builder fragments" << endmsg;
+  ATH_MSG_DEBUG("Now filling the event with the RoI Builder fragments");
+  MsgStream log( msgSvc(), name() );
   m_fea.fill( re, log );
 
   return StatusCode::SUCCESS;
diff --git a/Trigger/TrigT1/TrigT1RoIB/doc/packagedoc.h b/Trigger/TrigT1/TrigT1RoIB/doc/packagedoc.h
index 7a361a29acab55031277362cbed580c57a0f7b58..fdfbc5b95f2bc342ddc272edf6e9aa17043ddf27 100644
--- a/Trigger/TrigT1/TrigT1RoIB/doc/packagedoc.h
+++ b/Trigger/TrigT1/TrigT1RoIB/doc/packagedoc.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1RoIB/python/TrigT1RoIBConfig.py b/Trigger/TrigT1/TrigT1RoIB/python/TrigT1RoIBConfig.py
index 100b8a2132e02f1f91de450de289fb51044808fb..265c1e32998c488c13b604fe37d3227db1d756f1 100644
--- a/Trigger/TrigT1/TrigT1RoIB/python/TrigT1RoIBConfig.py
+++ b/Trigger/TrigT1/TrigT1RoIB/python/TrigT1RoIBConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 
 from TrigT1RoIB.TrigT1RoIBConf import ROIB__RoIBuilder
diff --git a/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.cxx b/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.cxx
index 1c4260893d86efd00b9f69e529a659d1f4571ba6..bb338ce4e53d5bc900ce8d3c2f74c8f35e43c89d 100644
--- a/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.cxx
+++ b/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: RecRoIBTester.cxx 550415 2013-06-10 09:36:28Z pottgen $
diff --git a/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.h b/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.h
index c01beff0205e8f3df3c6534c12c6daa61de02fe5..ad922acffea6dfeb3b0173b903e02e904941da96 100644
--- a/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.h
+++ b/Trigger/TrigT1/TrigT1RoIB/src/RecRoIBTester.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: RecRoIBTester.h 500598 2012-05-14 15:39:58Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1RoIB/src/RoIBDefs.h b/Trigger/TrigT1/TrigT1RoIB/src/RoIBDefs.h
index 9cf82314357c620ca8a77e661cbaeb7dce7f9cb3..0fa69c483d85ec70d37b79e7c0f7bf212d3d9e91 100644
--- a/Trigger/TrigT1/TrigT1RoIB/src/RoIBDefs.h
+++ b/Trigger/TrigT1/TrigT1RoIB/src/RoIBDefs.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /* **********************************************************
diff --git a/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.cxx b/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.cxx
index a43094092980c259f07974bc7140ed11fa334fad..ff566ad3b6b43f43a5e9b9300dd99541f0aa73f7 100644
--- a/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.cxx
+++ b/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: RoIBTester.cxx 500598 2012-05-14 15:39:58Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.h b/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.h
index a4f0a36894a0435afa8c2d76597017bee408d203..6edd6feeb6d89267a8fb55d2880275f4617301e7 100644
--- a/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.h
+++ b/Trigger/TrigT1/TrigT1RoIB/src/RoIBTester.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: RoIBTester.h 500598 2012-05-14 15:39:58Z krasznaa $
diff --git a/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.cxx b/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.cxx
index 58bd414ac711ae70aac330ebe3d6e9433cdcf159..419dd3824e45362f53db427afdb7a3fcfd68a788 100644
--- a/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.cxx
+++ b/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: RoIBuilder.cxx 667020 2015-05-13 20:40:26Z stelzer $
diff --git a/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.h b/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.h
index d0e5e4eba5682cb3e71be21ecdfd34e3e522135c..0561432237842748100e699401d8e78fe7056c58 100644
--- a/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.h
+++ b/Trigger/TrigT1/TrigT1RoIB/src/RoIBuilder.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1ROIB_ROIBUILDER_H
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/LVL1TGCTrigger.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/LVL1TGCTrigger.h
index e8ce5e2962102d2f27c0052658253a9d2e8e0043..c3ab2a8fe067e3513d95e5c12438c50fe7560f62 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/LVL1TGCTrigger.h
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/LVL1TGCTrigger.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // LVL1TGCTrigger.h
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/MakeCoincidenceOut.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/MakeCoincidenceOut.h
index 15b48696837e4356e19a4e464fcf2be3f6479bab..518d5ae04e9c7bdb5bfa333158ca1c2c5f6bf7a7 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/MakeCoincidenceOut.h
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/MakeCoincidenceOut.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // MakeCoincidenceOut.h
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCASDOut.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCASDOut.h
index c53040acbdd094da2512fb15364175c41fabf377..3133c6e3eb611dd0ec9498d3b0ba23fd733bb365 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCASDOut.h
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCASDOut.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ====================================================================
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBIDOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBIDOut.hh
index 6304ef2696727bfad3bd5d239f290ca66edbe3c4..394c970d723ec363e055b3db00bedae75527af67 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBIDOut.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBIDOut.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCBIDOut_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBoardConnection.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBoardConnection.hh
index 5d416383a54575ce1310928dfe2e99cccb51754c..2e0ffe9a89ddc04df5d9590a8ef09cd28f2855c2 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBoardConnection.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCBoardConnection.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCBoardConnection.hh,v 1.1.1.10 2003-11-03 10:18:17 mishino Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCCoincidence.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCCoincidence.hh
index 9702239a9a57896c4db334a54ca0263a10963ada..e87bfeefde270fb4516287afdf5ff6ff2423ea04 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCCoincidence.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCCoincidence.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCCoincidence_h
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionASDToPP.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionASDToPP.hh
index c2fa574c4dcd67cf8b49d33a0e744db49848fd41..cf736a1d658b289eac534fab51a1beeb35cfe9d7 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionASDToPP.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionASDToPP.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCConnectionASDToPP.hh,v 1.1.1.10 2003-11-03 10:18:17 mishino Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionHPBToSL.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionHPBToSL.hh
index c46a5ecb8cd65075d10df7b66cfe1dd866a64599..5f43e60316a16711098675df7b83fa580d816e9c 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionHPBToSL.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionHPBToSL.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //  table of connection between High-Pt Board and Sector Logic
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionInPP.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionInPP.hh
index f3b62d6c94f2cf0c65450da78fb794dd3e04fd29..aca24089d2365a2aa103ce51b12b917f99503276 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionInPP.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionInPP.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCConnectionInPP.hh,v 1.1.1.10 2003-11-03 10:18:17 mishino Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSB.hh
index 4095cbd60193fe8a830c0efbd533d08c65193a67..033c234163a9a53b047db86e3c501f187045e2f8 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSB.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSB.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //  Table of connection between Patch Panel and Slave Board.
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSL.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSL.hh
index 58402b8f8eb638ca9f19179bf2be23c65547f715..583ebcd801b436c8ca02e4e31c5fb6717094f332 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSL.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionPPToSL.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //  Table of connection between Patch Panel and Sector Logic.
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionSBToHPB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionSBToHPB.hh
index 5ab46294e99e14c52322879a301d11c1313157ca..ddf3822b1add0c7dd9cb5c678ad7e50e0b7f4e90 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionSBToHPB.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCConnectionSBToHPB.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //  Table of connection between Slave Board and High-Pt Board.
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDatabaseManager.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDatabaseManager.hh
index e143b36286fe915744d065d49fdd9e2a1c4236f1..808a0b3d251d99d93a9d63e9c53bfba228d856d6 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDatabaseManager.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDatabaseManager.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCDatabaseManager_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDoubletSB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDoubletSB.hh
index 64ba5dc9426588ead7f5e580731d36b6a6ec4963..6a7d036ba9d13947ee66a18b65b14b576e709894 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDoubletSB.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCDoubletSB.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCDoubletSB_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCElectronicsSystem.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCElectronicsSystem.hh
index b21c38d2c40ef8b98bdc9f42efc088ae6fb35f47..90020d94c78d5c449a3f9b7bd8198b30777caefc 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCElectronicsSystem.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCElectronicsSystem.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCElectronicsSystem_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCEvent.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCEvent.h
index 4e79b261b99923fef4314f906c59ec8a3fe3499e..271f87525785099a41c1ee80cf3b326fb944e035 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCEvent.h
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCEvent.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ====================================================================
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoard.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoard.hh
index 802dc231fa7f13b3a3dc8f6bcc88d90c61f5ae9d..481428e9a0aeedccd2f0605e40ee9de2615f8a03 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoard.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoard.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCHighPtBoard_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoardOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoardOut.hh
index a7d4c4e8bb68b577eae78ffdbcdc0f6dafca2217..f98a170a895aa8f016e645d8c4fc36f8a5bbed9d 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoardOut.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtBoardOut.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCHighPtBoardOut_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtChipOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtChipOut.hh
index 837785e944e2c77894feb927f630242dee28f480..61cbbee04972abcd13601691a1373a7da7360f92 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtChipOut.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHighPtChipOut.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCHighPtChipOut_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHitPattern.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHitPattern.hh
index f7ec56a0655aac723484614e38bb003a2f94adcc..59b676c352176f88f9d2293649f479e69ec8272d 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHitPattern.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCHitPattern.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCHitPattern.hh,v 1.1.1.10 2003-11-03 10:18:17 mishino Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCIndex.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCIndex.h
index 2fe4f7b46a4a661b3afb77f3da7b0ccf6a482b36..4acee48653356809a392866e28e4888056818a12 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCIndex.h
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCIndex.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ====================================================================
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerCoincidenceMap.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerCoincidenceMap.hh
index 7913919f73150eaf8bc797045e333660a1c7356c..2bc8a39f97cf5b217c76529d38024a28635bd12f 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerCoincidenceMap.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerCoincidenceMap.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCInnerCoincidenceMap_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerSB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerSB.hh
index b208b69729bea606ba0e3722bb8b33270511707d..ecc194e7e3c500107ced702f9cb4654fb587fa14 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerSB.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerSB.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCInnerSB_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlot.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlot.hh
index 72b5c40dd69a7c139d648b5169d14bff819c1b58..ba0c872af10f6a35c4e6508c33110a6eea2ec195 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlot.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlot.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCInnerTrackletSlot_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlotHolder.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlotHolder.hh
index 6156a40e1430c8194b81f0320f36723fc00e19c8..276d7f79721ba72c25d293ba316c84b6f5d5e3ea 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlotHolder.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCInnerTrackletSlotHolder.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCInnerTrackletSlotHolder_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCNumbering.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCNumbering.hh
index 64704e6770eeee3d63b8918a5cf855704fafe6b5..98b71c2ea816a68bb911d0ac337831e7a1784965 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCNumbering.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCNumbering.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCNumbering_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanel.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanel.hh
index 72d173843a5a9b95ec6fb18eb6043ad226fb9095..30d6ceb2a46542305cd6a0ade9fcd5faa3c17b89 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanel.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanel.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCPatchPanel.hh,v 1.4 2008-08-10 11:36:44 isaya Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanelOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanelOut.hh
index b8ef48cc68486fe362c80c2bad838f9dda5b6459..7c52214454db3bc9198ecbdd84b15b405e18ecbd 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanelOut.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCPatchPanelOut.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCPatchPanelOut.hh,v 1.1.1.10 2003-11-03 10:18:17 mishino Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMap.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMap.hh
index d18c45fea00b8fa86bf37e2dab6bf909eabd37cb..87c10590f527bac0452c9c9664fe6f1d4a2b0887 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMap.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMap.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCRPhiCoincidenceMap_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMatrix.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMatrix.hh
index 7006db83f9d5a03da24926003868af9ccb78d6dd..84b860565c8f754406739710207292e60c367d3c 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMatrix.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceMatrix.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCRPhiCoincidenceMatrix_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceOut.hh
index fad4205a6f657ee4603cb0bf1d1307ed88341989..61734c01294a9b38be2a5a1ce1200560b40dcf3f 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceOut.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCRPhiCoincidenceOut.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCRPhiCoincidenceOut_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCReadoutIndex.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCReadoutIndex.h
index b5d2188e7529ad7e5d2ed63aedfac2acf17e686e..b9f4cbc12c83d6ae950b1d29dd259cb23905b834 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCReadoutIndex.h
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCReadoutIndex.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ====================================================================
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelector.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelector.hh
index 50263b85680508af6c3179d1fb050496647ddda4..20308034b9ee2eb0b00a2323f05827a1d8b07636 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelector.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelector.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCSLPreSelector_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelectorOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelectorOut.hh
index 1129d6ab23843037e2579f4f3a70b85a14b85850..88c5f77ed2c426dff098006b3db86004a8dc9d4c 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelectorOut.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLPreSelectorOut.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCSLPreSelectorOut_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelector.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelector.hh
index ca1a5b1b513589e9d87eda00f42df30dddd46d7e..0b3b0a7d44f5569b6fb4de8c707f0a1b9fce793d 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelector.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelector.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCSLSelector_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelectorOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelectorOut.hh
index 4424ac2ea221ea883d96f70d3860002d1e5c82ce..04f4135a643fb686ef90aab817bb803fc639ff0e 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelectorOut.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSLSelectorOut.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCSLSelectorOut_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCController.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCController.hh
index 19259d8d7af50feb295e5060e75b7cf9cfddaf8a..6959239f39f9537e05b9984d8f1622a1aac183ab 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCController.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCController.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCSSCController_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCControllerOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCControllerOut.hh
index 98a79cfcf68e7f068d334ac002cac2802951ebfe..b8e91acaf9734aef78aa43ad68a2e7c2c26f7517 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCControllerOut.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSSCControllerOut.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCSSCControllerOut_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSector.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSector.hh
index 2ea8640dc2c788ec5c1061c973a6cd24132d2a42..fd8701b23f8058a574e9267b76056eb690347603 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSector.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSector.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCSector_h
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSectorLogic.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSectorLogic.hh
index de58f3970bdde8baa7aab76df8e5ac157a282d0f..d3db2d150e63242a4b9db70de83db139da667100 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSectorLogic.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSectorLogic.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGGSectorLogic_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoard.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoard.hh
index d327f5ddc246b6e2f6cdb72dd211eedc132d921d..b42a350a40aba0e200143b662c20a14e161d4d73 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoard.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoard.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCSlaveBoard_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoardOut.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoardOut.hh
index 67aac6e3f124abf6b5a45a825f025adb28187396..c912bb3197f9242feee5557bf83696d9c46270b9 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoardOut.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCSlaveBoardOut.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCSlaveBoardOut_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripDoubletSB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripDoubletSB.hh
index 02f2a547284711b9fa87789dc005a72e3a0799bf..a5f3b8a8841e2d9dfc6f2674450f1c80e49ae58e 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripDoubletSB.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripDoubletSB.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCStripDoubletSB_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripHighPtBoard.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripHighPtBoard.hh
index 49b2190ae3af5d6382eb0c530e2d16782a227958..27be283a1189fafb8ee3a7d6682b05824c349c63 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripHighPtBoard.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripHighPtBoard.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCStripHighPtBoard_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripTripletSB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripTripletSB.hh
index 5b373b12a523dae005a7b340838889d545bc0eff..f476f74113d0c31bb422718d37edf8bb0e056669 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripTripletSB.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCStripTripletSB.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCStripTripletSB_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDB.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDB.h
index 8768cf8b3490d7c36ef66982bbedebf06348cb08..3ba497770293538d3d4462d6754920324eabc79f 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDB.h
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDB.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ====================================================================
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDBOut.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDBOut.h
index 7d527dbaf884c60282c0a5d3f575b58ec09ef34c..7d01b1cdee920b43ac9cca20dc3eafb4b521a069 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDBOut.h
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTMDBOut.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ====================================================================
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTileMuCoincidenceMap.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTileMuCoincidenceMap.hh
index 0952c23c80d039429319ad93b52a91bf790ffd19..f796e314f4412e398597fffaf55300c6b1c56563 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTileMuCoincidenceMap.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTileMuCoincidenceMap.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCTileMuCoincidenceMap_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTimingManager.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTimingManager.hh
index f41cd5cc0d63f2404f662d672c75e0fc873e98d7..fbef4bef2d45231488dfa8cac6adb257ce7ceb8b 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTimingManager.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCTimingManager.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCTimingManager.hh,v 1.1.1.10 2003-11-03 10:18:18 mishino Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireDoubletSB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireDoubletSB.hh
index 68a2cd65c231f4452876e4360268a93bf460fd52..13a70172f897c514507f584826a0df21485286eb 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireDoubletSB.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireDoubletSB.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCWireDoubletSB_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireHighPtBoard.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireHighPtBoard.hh
index fff09d89660a264518d3cb3881d0507e2dc3165e..ab0f0ce392dea86c24701234553da22c6e3b2470 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireHighPtBoard.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireHighPtBoard.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCWireHighPtBoard_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireTripletSB.hh b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireTripletSB.hh
index 6451452d2468209115a3939f1fe4a0277aaa623a..efaf3d527942041514606062870523b36cceeda3 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireTripletSB.hh
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TGCWireTripletSB.hh
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TGCWireTripletSB_hh
diff --git a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TrigT1TGC_ClassDEF.h b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TrigT1TGC_ClassDEF.h
index 3464eae2ab4d57d002ac3c355e70a3256fa2fe7a..c64c5e628bbc1f095722120545eefbbad2d59b8d 100644
--- a/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TrigT1TGC_ClassDEF.h
+++ b/Trigger/TrigT1/TrigT1TGC/TrigT1TGC/TrigT1TGC_ClassDEF.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef __TrigT1TGC_ClassDEF_H__
diff --git a/Trigger/TrigT1/TrigT1TGC/doc/packagedoc.h b/Trigger/TrigT1/TrigT1TGC/doc/packagedoc.h
index b61ea3cdaf516e3fb7cbc19cb3b41b51a694f1bb..fa8b72c28b21cae6670cf917dbfdae9958082141 100644
--- a/Trigger/TrigT1/TrigT1TGC/doc/packagedoc.h
+++ b/Trigger/TrigT1/TrigT1TGC/doc/packagedoc.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1TGC/python/TrigT1TGCConfig.py b/Trigger/TrigT1/TrigT1TGC/python/TrigT1TGCConfig.py
index a4d6f6e2926f7a2ff1cfe522103ec0ffd1ee2370..abadac30133156d1e9cf4491cc8a0c5df735d8e2 100755
--- a/Trigger/TrigT1/TrigT1TGC/python/TrigT1TGCConfig.py
+++ b/Trigger/TrigT1/TrigT1TGC/python/TrigT1TGCConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 from TrigT1TGC.TrigT1TGCConf import *
 from AthenaCommon.AlgSequence import AlgSequence
diff --git a/Trigger/TrigT1/TrigT1TGC/python/__init__.py b/Trigger/TrigT1/TrigT1TGC/python/__init__.py
index 8114fb167aff15fc48b099de0f8b64cd603e747e..800c0d2bbdde8d606bdbe8a698c0419a24ac340e 100755
--- a/Trigger/TrigT1/TrigT1TGC/python/__init__.py
+++ b/Trigger/TrigT1/TrigT1TGC/python/__init__.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 # File: TrigT1TGCConfig/__init__.py
 
diff --git a/Trigger/TrigT1/TrigT1TGC/src/LVL1TGCTrigger.cxx b/Trigger/TrigT1/TrigT1TGC/src/LVL1TGCTrigger.cxx
index 6df6d365e422fbf116d1c7b4d3e525a6b217ace6..2799e13466fd19029dbc4fc00db1271dd6411ead 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/LVL1TGCTrigger.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/LVL1TGCTrigger.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // STL
diff --git a/Trigger/TrigT1/TrigT1TGC/src/MakeCoincidenceOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/MakeCoincidenceOut.cxx
index af62e2913caa925161165d5a65a674b94e94b1b6..a904c69c4832905d7f3bee9fe8bb1c0ec262e25e 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/MakeCoincidenceOut.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/MakeCoincidenceOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //  MakeCoincidenceOut.cxx
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCASDOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCASDOut.cxx
index f43a86143efa33634fbf6e639b90f2cea3abc0a6..d79ccb4c0c651dbdb3ad9783bad9a79bd4c02f65 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCASDOut.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCASDOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ====================================================================
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCBIDOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCBIDOut.cxx
index 0412e4d552108f2e5f629a439f2824bfd8928fb1..b85d01a43b871b730577b2b3fd82fa5625fa4b0e 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCBIDOut.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCBIDOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCBIDOut.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCBoardConnection.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCBoardConnection.cxx
index b284ae50c403647d8c563e12ddcbec8a10d0579c..7a2d0e43374cb82010baba7e4dbbab007856b4ec 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCBoardConnection.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCBoardConnection.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCBoardConnection.cxx,v 1.3 2009-01-08 10:06:48 isaya Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionASDToPP.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionASDToPP.cxx
index 28332eb73b6d0e4be4f7131cfee7219d5b67eb2d..92a2900430c6790312ab299f245b1c3647440787 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionASDToPP.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionASDToPP.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <iostream>
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionHPBToSL.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionHPBToSL.cxx
index 66d5b709c45fabbc171d4a62dd081362653270dd..76b7c3b4f248845512cb8a99cfe43fb2c345cfbc 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionHPBToSL.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionHPBToSL.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCConnectionHPBToSL.cxx,v 1.2 2006-06-22 00:26:35 nkanaya Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionInPP.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionInPP.cxx
index 710437c343b40a946421751b1c243cd49f96284b..5c0d04095fd3cbbdb29ae30ae2a3b7ad64d894d3 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionInPP.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionInPP.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCConnectionInPP.cxx,v 1.4 2009-03-20 17:48:53 isaya Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSB.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSB.cxx
index 9deb6e6a820203deb6c9f70d3a6e48fbfdd0f652..fe247e6d4f246278e90050c0080000b3c7dfe49a 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSB.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSB.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCConnectionPPToSB.cxx,v 1.2 2006-06-22 00:26:35 nkanaya Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSL.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSL.cxx
index fe2398e003108e819b6ab1b4b9d8d4b756e32aad..09e1c6438fb9f24b4643deabb9e097ad1765a237 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSL.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionPPToSL.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCConnectionPPToSL.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionSBToHPB.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionSBToHPB.cxx
index 406ef9b8ba5ff3c037d15406812c2fa40e4741f1..fef3f02744a1adfd015b6becf8652dbdb38a403b 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionSBToHPB.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCConnectionSBToHPB.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCConnectionSBToHPB.cxx,v 1.3 2009-03-15 18:07:55 isaya Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCDatabaseManager.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCDatabaseManager.cxx
index 3d573b9f5834b0a15f2a778509f57695b3f35127..a6ccc51b4ddadf0a684190211d10284114792ddb 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCDatabaseManager.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCDatabaseManager.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCDatabaseManager.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCDoubletSB.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCDoubletSB.cxx
index 63acb3bbc0971b952eae3e85525d7561585fae61..d5ed1032576523bc38327223069a0cdce87f5101 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCDoubletSB.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCDoubletSB.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCDoubletSB.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCElectronicsSystem.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCElectronicsSystem.cxx
index 4871ef15da93ae8f7ef1f3cbd17d6596ad522f96..fc9c7530def7e6a85a50a4b4853d134ac9cb7d78 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCElectronicsSystem.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCElectronicsSystem.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCElectronicsSystem.cxx,v 1.13 2009-05-04 11:39:44 isaya Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCEvent.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCEvent.cxx
index 745902f5e0c093afb9cf192eb23f6856be8abdf6..c5ea6520f621a95230f9c3263e59d3f02f4b203a 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCEvent.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCEvent.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ====================================================================
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoard.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoard.cxx
index 93d274753e44a1f320efe47c5f7722c75831d4b2..79ef1c2c5c87bf12c3a0bc008a27060d7e82c8cf 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoard.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoard.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCHighPtBoardOut.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoardOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoardOut.cxx
index 271b680fe3d799c1490842417cc5972230221a69..c4b5c059bee9c2f727795465413d10aac3f15795 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoardOut.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtBoardOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCHighPtBoardOut.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtChipOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtChipOut.cxx
index ef669ba3cf1f7cf6346807e6227064e8a6b72b0e..98e236cfad4abad2d87540feddcc58ea05c051e8 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtChipOut.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCHighPtChipOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCHighPtChipOut.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCHitPattern.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCHitPattern.cxx
index 338cc9fd12a7814af1febfbfd8f5c6ce8cd1ad6e..93b874c37d68ef660e2c9c3d195744cba5451a57 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCHitPattern.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCHitPattern.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCHitPattern.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCIndex.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCIndex.cxx
index c161946d140f032a10b41d2f9eb01ab5962b82b7..4ef71b2fb41d58ea262d3e588fa9e11a1f78f3bf 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCIndex.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCIndex.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ====================================================================
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerCoincidenceMap.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerCoincidenceMap.cxx
index 9ba54d032e2e47b0f7f3e53489cfba1c2499f815..2b35f58553cd815855ce309bd2a42601f1f98866 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerCoincidenceMap.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerCoincidenceMap.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <iostream>
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerSB.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerSB.cxx
index fea94fc1e628f97ed1d8b13b8549490613da5882..03bad2d4869c9b72fa9b15b08a16c3c41c4ed60d 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerSB.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerSB.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ref. SOS054V06,SOS053V04
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlot.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlot.cxx
index eea9f641b864864f6b5057ac4e86820d97ed4fc2..ead29d98bb9cc91c0e38d908712b16ca24664102 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlot.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlot.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCInnerTrackletSlot.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlotHolder.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlotHolder.cxx
index 5345cb0c890758e4d14c6a72b2baade2fb36c7f3..a8952f4b8a4d047f3ace76150d7f7970bef8b5c4 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlotHolder.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCInnerTrackletSlotHolder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCInnerTrackletSlotHolder.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanel.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanel.cxx
index 1f48a43457dff706872ee6a51c0e82b6e9be9c14..c0ef49582c24779d104417f21faf4f2bf11261b3 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanel.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanel.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCPatchPanel.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanelOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanelOut.cxx
index e4c209545a9a1a7ce94f85a3921ed7273a4e3252..bfd7c5956e1eb52aae3fb86468ac0613b36cdd42 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanelOut.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCPatchPanelOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCPatchPanelOut.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMap.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMap.cxx
index cbfd125c51b008d0358641c75f5b7b3077a437fd..3856e87c511f84d960a183c5f2782210a5221a05 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMap.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMap.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <iostream>
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMatrix.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMatrix.cxx
index a28de54b06707ef054934acc25296fe6f36a6b06..fc3341a357e383d8cced4ba8db16445414285ae5 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMatrix.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceMatrix.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCRPhiCoincidenceMatrix.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceOut.cxx
index e97f808f82d653781a720c27684ef7c85b165662..964d0a2318a8502877c4104f2d526e2e168e0625 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceOut.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCRPhiCoincidenceOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCReadoutIndex.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCReadoutIndex.cxx
index c8b01a740aff839f6a6969cd19e2e27381249a0f..3755664b25ed14ff239d7b30215df831e3726fd8 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCReadoutIndex.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCReadoutIndex.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ====================================================================
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelector.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelector.cxx
index 5c4221e2d01174ad2469284e2e36f3e106acf030..eba72ec964d2fedb6231c51ee3a71688c6bc09c5 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelector.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelector.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCSectorLogic.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelectorOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelectorOut.cxx
index 7296a294a02df61bddc5c9e6c42321ce1a4f8294..2341ff37b747aefff24ffaaaf96c5e88db9751fb 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelectorOut.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSLPreSelectorOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCSLPreSelectorOut.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelector.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelector.cxx
index 79ec1dec43126f41d2ee769af1cbf5dc141fee57..01bd88c103607fabebc82f80ee701200e2ed4d24 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelector.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelector.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCSLSelector.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelectorOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelectorOut.cxx
index b99e0a39fe1c943f02def246615a67d9519d1615..341e1c302b8f9039be259118e6007ceec5c68a3e 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelectorOut.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSLSelectorOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCSLSelectorOut.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSSCController.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSSCController.cxx
index 450bef383ec510aa3d77da7108454c5c9e930bcc..3338da6a42002e4b94587c6ef1781e73cdcfedd4 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCSSCController.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSSCController.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCSSCController.cxx,v 1.6 2009-03-15 18:07:55 isaya Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSSCControllerOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSSCControllerOut.cxx
index 5eb40fa61c0efa3e3d554b54eaded889953de06f..190f43d9f58f008319eb61e5a4392135b1578f1b 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCSSCControllerOut.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSSCControllerOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCSSCControllerOut.cxx,v 1.5 2005-11-29 08:12:40 nkanaya Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSector.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSector.cxx
index ed64618ddad1a6f48ba2074d88cfc02badc21287..914c8db26a42d4ba97a7a95e157f0924c8e6af98 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCSector.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSector.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCSector.cxx,v 1.10 2009-05-14 01:28:04 isaya Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSectorLogic.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSectorLogic.cxx
index 894dffee565523b052ff687949ddcbb5dcc52ec9..a1dc6e95b15b7c008cd1315b90113fb7d9bdf2b7 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCSectorLogic.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSectorLogic.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: TGCSectorLogic.cxx,v 1.14 2009-03-15 18:07:55 isaya Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoard.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoard.cxx
index f81bab87773a1557a914c79fb4823e667542a342..37447521607923e3388df7ade4cb205d24620fb1 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoard.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoard.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCSlaveBoard.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoardOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoardOut.cxx
index 047381b8237e0b2979bafb01ab0d339186966dfc..bd06d8843dd4fca6152f73e81efcbbbac4f8dfe2 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoardOut.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCSlaveBoardOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCSlaveBoardOut.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCStripHighPtBoard.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCStripHighPtBoard.cxx
index 60021fb025d7b430800fc79c0d333de20dc2b011..9739c2722826b255092e6c31148d46d11f851371 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCStripHighPtBoard.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCStripHighPtBoard.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGC/TGCStripHighPtBoard.hh"
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCStripTripletSB.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCStripTripletSB.cxx
index 1da491fd4adeee4b3db542e72aead386454e2a9d..9faa0e27f465d726d030a9004f90f3c18069a29f 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCStripTripletSB.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCStripTripletSB.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCStripTripletSB.cxx,v 1.6 2009-05-14 01:28:04 isaya Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCTMDB.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCTMDB.cxx
index 6a7ce7aeacafea7f2a84d6bfa5f70e80992e00ac..4a9384a4e41a81bbc268f497e9907e01afd0dcff 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCTMDB.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCTMDB.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ====================================================================
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCTMDBOut.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCTMDBOut.cxx
index 57140afbb749e83c734f74367d2b32eb58c83f84..272ac323454ee74b85fafcbe17f4fbe6cb1c9deb 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCTMDBOut.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCTMDBOut.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ====================================================================
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCTileMuCoincidenceMap.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCTileMuCoincidenceMap.cxx
index 1081ba9a2874ad74d24010a60fde8294930ee6df..f62ef2de556ffee21710d6b38e54da0d67532ced 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCTileMuCoincidenceMap.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCTileMuCoincidenceMap.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <iostream>
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCTimingManager.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCTimingManager.cxx
index 0cc36e3659ab82ab7fd681c2982070705c60d0ea..36dbc90d1b56b047a9b9f639d39ab3bf324e15d2 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCTimingManager.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCTimingManager.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 //$Id: TGCTimingManager.cxx,v 1.4 2009-05-13 02:53:51 isaya Exp $
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCWireHighPtBoard.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCWireHighPtBoard.cxx
index 3f7a8f33f9528fe5080b049d993ea43d1f8a429b..c7a339da633c39b2e0ca04c4e2672f85f9bedeb3 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCWireHighPtBoard.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCWireHighPtBoard.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ref. SOS063V07,S0S061V04 
diff --git a/Trigger/TrigT1/TrigT1TGC/src/TGCWireTripletSB.cxx b/Trigger/TrigT1/TrigT1TGC/src/TGCWireTripletSB.cxx
index f6b35cc9b2feef119fb3d69767d39079e05837e4..ac41036dd7f527675abc4a5b68c0759bd385de4b 100644
--- a/Trigger/TrigT1/TrigT1TGC/src/TGCWireTripletSB.cxx
+++ b/Trigger/TrigT1/TrigT1TGC/src/TGCWireTripletSB.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // ref. SOS051V07,S0S052V06 
diff --git a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/TrigT1TGCRecRoiSvc/TGCRecRoiSvc.h b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/TrigT1TGCRecRoiSvc/TGCRecRoiSvc.h
index aa207b5c0a85e7969762d2a61b108e38a7e42d11..4e1d48cf7d71a15198aaabc6a79f9d5189082a91 100755
--- a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/TrigT1TGCRecRoiSvc/TGCRecRoiSvc.h
+++ b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/TrigT1TGCRecRoiSvc/TGCRecRoiSvc.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGT1_TGCRECROISVC_H
diff --git a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/doc/packagedoc.h b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/doc/packagedoc.h
index fc23249ba83d1a6f5b5aea37343e6c7434df20fe..2d300dd43fb283e941beaada9bf460e97be8610c 100644
--- a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/doc/packagedoc.h
+++ b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/doc/packagedoc.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /** 
diff --git a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/TrigT1TGCRecRoiConfig.py b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/TrigT1TGCRecRoiConfig.py
index 203932cc185d4cfa83f1a6b472e5334b69f76771..bc4e2a37f869c4ad43a267c7a1880ce635a1a179 100755
--- a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/TrigT1TGCRecRoiConfig.py
+++ b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/TrigT1TGCRecRoiConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 # $Id: TrigT1TGCRecRoiConfig.py 301207 2010-05-26 12:16:53Z krasznaa $
 #
diff --git a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/__init__.py b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/__init__.py
index e8d6976fa68bf5b814c7bad47ea9e30d37c72db3..c8a8e1d91ad5bcaa40da51a0471027fedab6d9bc 100755
--- a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/__init__.py
+++ b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/python/__init__.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 # File: TrigT1TGCRecRoiConfig/__init__.py
 
diff --git a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/src/TGCRecRoiSvc.cxx b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/src/TGCRecRoiSvc.cxx
index 7a3d446243a24a029fe5249a421884c6b71e0322..7e7bc7f19da922f609c92bafe685836248b9d039 100755
--- a/Trigger/TrigT1/TrigT1TGCRecRoiSvc/src/TGCRecRoiSvc.cxx
+++ b/Trigger/TrigT1/TrigT1TGCRecRoiSvc/src/TGCRecRoiSvc.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1TGCRecRoiSvc/TGCRecRoiSvc.h"
diff --git a/Trigger/TrigT1/TrigT1TRT/TrigT1TRT/TrigT1TRT.h b/Trigger/TrigT1/TrigT1TRT/TrigT1TRT/TrigT1TRT.h
index 6cabb026f1cfe3dcecc6a80da2e30b4ef5c3bf4b..c7b12b3d1577dafb53cdacbe82ffdb7dcffdedbb 100644
--- a/Trigger/TrigT1/TrigT1TRT/TrigT1TRT/TrigT1TRT.h
+++ b/Trigger/TrigT1/TrigT1TRT/TrigT1TRT/TrigT1TRT.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIG_T1_TRT_H
diff --git a/Trigger/TrigT1/TrigT1TRT/src/TrigT1TRT.cxx b/Trigger/TrigT1/TrigT1TRT/src/TrigT1TRT.cxx
index 471174736aa4f4354b550c9e93e08b6c150da0af..572f375aaf872126982f069bbb32345a9f75f644 100644
--- a/Trigger/TrigT1/TrigT1TRT/src/TrigT1TRT.cxx
+++ b/Trigger/TrigT1/TrigT1TRT/src/TrigT1TRT.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <stdint.h>
diff --git a/Trigger/TrigT1/TrigT1ZDC/TrigT1ZDC/TrigT1ZDC.h b/Trigger/TrigT1/TrigT1ZDC/TrigT1ZDC/TrigT1ZDC.h
index 0b3fed26fa349d10971302a81f142279027f005e..5d5d92c11b5bb52a12f3f182b37ae5df199881fe 100644
--- a/Trigger/TrigT1/TrigT1ZDC/TrigT1ZDC/TrigT1ZDC.h
+++ b/Trigger/TrigT1/TrigT1ZDC/TrigT1ZDC/TrigT1ZDC.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIG_T1_ZDC_H
diff --git a/Trigger/TrigT1/TrigT1ZDC/doc/packagedoc.h b/Trigger/TrigT1/TrigT1ZDC/doc/packagedoc.h
index f40e1c811ca9e0e807eb79f19e59623f4da67c8f..7b0e1d1cb02fdff451d6d0da62e46c4f3b57b4c0 100644
--- a/Trigger/TrigT1/TrigT1ZDC/doc/packagedoc.h
+++ b/Trigger/TrigT1/TrigT1ZDC/doc/packagedoc.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 /**
diff --git a/Trigger/TrigT1/TrigT1ZDC/src/TrigT1ZDC.cxx b/Trigger/TrigT1/TrigT1ZDC/src/TrigT1ZDC.cxx
index d0556b271fff8ad8b3570ead846200fd8802144a..793b3115e690deb7606d92598cd9bc9b672dd18d 100644
--- a/Trigger/TrigT1/TrigT1ZDC/src/TrigT1ZDC.cxx
+++ b/Trigger/TrigT1/TrigT1ZDC/src/TrigT1ZDC.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigT1ZDC/TrigT1ZDC.h"
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/Testing/TrigAnalysisTest.conf b/Trigger/TrigValidation/TrigAnalysisTest/Testing/TrigAnalysisTest.conf
index f00537647de34367d176fce66f4271c2b16ebb7e..8244aa37ce0134460ae460cc3048671300a9e2c6 100644
--- a/Trigger/TrigValidation/TrigAnalysisTest/Testing/TrigAnalysisTest.conf
+++ b/Trigger/TrigValidation/TrigAnalysisTest/Testing/TrigAnalysisTest.conf
@@ -421,15 +421,15 @@ test 33
   post_command checkxAOD.py AOD.pool.root > AOD.checkxAODFile.txt
 
 test 34
-  doc runs trigger from RDO writes AOD, MC_pp_v7_tight_mc_prescales menu
-  name AthenaTrigRDOtoAOD_MC_pp_v7_tight_mc_prescales
+  doc runs trigger from RDO writes AOD, MC_pp_v7_BulkMCProd_mc_prescales menu
+  name AthenaTrigRDOtoAOD_MC_pp_v7_BulkMCProd_mc_prescales
   joboptions testAthenaTrigRDOtoAOD.py
-  athena_cmd  athena.py -c 'menu="MC_pp_v7_tight_mc_prescales"; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]'
+  athena_cmd  athena.py -c 'menu="MC_pp_v7_BulkMCProd_mc_prescales"; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]'
   checklog --config checklogTriggerTest.conf --showexcludestats
   pre_command RecExCommon_links.sh
-  fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triganalysistest_AthenaRDOtoAOD_MC_pp_v7_tight_mc_prescales.reference
-  regtest TrigSteer_HLT.TrigChainMoniValidation REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triganalysistest_AthenaRDOtoAOD_MC_pp_v7_tight_mc_prescales_HLT.TrigChainMoniValidation.reference
-#  edmcheck diffPoolFiles.py AOD.pool.root  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triganalysistest_AthenaTrigRDOtoAOD_AOD_MC_pp_v7_tight_mc_prescales.pool.root
+  fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triganalysistest_AthenaRDOtoAOD_MC_pp_v7_BulkMCProd_mc_prescales.reference
+  regtest TrigSteer_HLT.TrigChainMoniValidation REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triganalysistest_AthenaRDOtoAOD_MC_pp_v7_BulkMCProd_mc_prescales_HLT.TrigChainMoniValidation.reference
+#  edmcheck diffPoolFiles.py AOD.pool.root  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triganalysistest_AthenaTrigRDOtoAOD_AOD_MC_pp_v7_BulkMCProd_mc_prescales.pool.root
   post_command checkFile.py AOD.pool.root > AOD.pool.root.checkFile
   post_command checkFileTrigSize_RTT.py >AODTrigsum.txt
   post_command checkxAOD.py AOD.pool.root > AOD.checkxAODFile.txt
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_AthAnalysisBaseTestConfiguration.xml b/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_AthAnalysisBaseTestConfiguration.xml
deleted file mode 100644
index c6454e0b14845edcd1ec812382bbb8a27955c315..0000000000000000000000000000000000000000
--- a/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_AthAnalysisBaseTestConfiguration.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?> 
-<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd"> 
-<!-- NB validate this file here before committing to svn:
- python /afs/cern.ch/user/r/rtt/public/xmlvalidate.py TrigAnalysisTest_AthAnalysisBaseTestConfiguration.xml
- -->
-<unifiedTestConfiguration>
-    
-	<atn>
-	   <TEST name="TriggersFired_atn" type="athena" suite="TriggerDecisionToolTest">
-	      <options_atn>TrigAnalysisTest/TriggersFiredTest_jobOptions.py</options_atn>
-	      <timelimit>30</timelimit>
-	      <author>Javier Montejo</author>
-	      <mailto>jmontejo@cern.ch</mailto>
-			 <package_atn>Trigger/TrigValidation/TrigAnalysisTest</package_atn>
-	      <expectations>
-	         <errorMessage>FAILURE </errorMessage>
-	         <returnValue>0</returnValue>
-	      </expectations>
-	   </TEST>
-
-
-	   <TEST name="Run1xAODValidation_atn" type="athena" suite="TriggerDecisionToolTest">
-	      <options_atn>TrigAnalysisTest/ValidateRun1BStoxAOD_jobOptions.py</options_atn>
-	      <timelimit>30</timelimit>
-	      <author>Oleg Kuprash</author>
-	      <mailto>oleg.kuprash@cern.ch</mailto>
-			 <package_atn>Trigger/TrigValidation/TrigAnalysisTest</package_atn>
-	      <expectations>
-	         <errorMessage>FAILURE </errorMessage>
-	         <returnValue>0</returnValue>
-	      </expectations>
-	   </TEST>
-	</atn>
-
-
-</unifiedTestConfiguration>
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_TestConfiguration.xml b/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_TestConfiguration.xml
deleted file mode 100644
index a90d61ab1b3ba856c52a63c872c08dbed4c61a07..0000000000000000000000000000000000000000
--- a/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_TestConfiguration.xml
+++ /dev/null
@@ -1,975 +0,0 @@
-<?xml version="1.0"?> 
-<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd"> 
-<!-- NB validate this file here before committing to svn:
- python /afs/cern.ch/user/r/rtt/public/xmlvalidate.py TrigAnalysisTest_TestConfiguration.xml
- RTT: for single file use: jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch/eos/atlas/...
- and for multiple files use: dsName="/eos/atlas/...";fileRange=[1,2]
- -->
-<unifiedTestConfiguration>
-    
-    <!-- ATN tests configured here -->
-    <atn>
-        <!-- always KEEP this one --> 
-        <!-- Has been failing for a long time.  Needs updated reference.
-        <TEST name="AthenaTrigRDOtoESDAOD" type="script" suite="tat_RDOtoESDAOD"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDOtoESDAOD --run AthenaTrigRDOtoESDAOD --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        -->
-        
-        <!-- Has been failing for a long time.  Needs updated reference histos.
-        <TEST name="AthenaTrigESD_HLTMonitoring" type="script" suite="tat_RDOtoESDAOD"> 
-            <options_atn>trigtest.pl --test AthenaTrigESD_HLTMonitoring --run AthenaTrigESD_HLTMonitoring --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>60</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        -->
-        
-        
-        <TEST name="AthenaTrigRDOtoBS" type="script" suite="tat_BS"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDOtoBS --run AthenaTrigRDOtoBS --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>70</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-
-        <!-- Get ERRORs: Unknown OfflineId for OnlineId -> cannot create RDO
-        <TEST name="AthenaTrigBStoESD" type="script" suite="tat_BS"> 
-            <options_atn>trigtest.pl --test AthenaTrigBStoESD --run AthenaTrigBStoESD --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        -->
-        
-        <!--TEST name="AthenaTrigRDOtoBS_MC" type="script" suite="tat_BS_MC"-->         
-        <TEST name="AthenaTrigRDOtoBS_MC" type="script" suite="tat_BS"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDOtoBS_MC --run AthenaTrigRDOtoBS_MC --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <!--TEST name="AthenaTrigBStoESD_MC" type="script" suite="tat_BS_MC"--> 
-        <TEST name="AthenaTrigBStoESD_MC" type="script" suite="tat_BS"> 
-            <options_atn>trigtest.pl --test AthenaTrigBStoESD_MC --run AthenaTrigBStoESD_MC --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <!--TEST name="MC_standalone" type="script" suite="tat_BS_MC"--> 
-        <!--TEST name="MC_standalone" type="script" suite="tat_BS"> 
-         <options_atn>trigtest.pl - -test MC_standalone - -run MC_standalone - -conf TrigAnalysisTest.conf</options_atn> 
-         <timelimit>30</timelimit> 
-         <author>TrigAnalysis validation</author> 
-	      		<project_exclude>AthAnalysis</project_exclude>
-         <expectations> 
-         <errorMessage>FAILURE </errorMessage> 
-         <returnValue>0</returnValue> 
-         </expectations> 
-         </TEST--> 
-        
-        <!--TEST name="AthenaTrigRDOtoESDAOD_Physics" type="script" suite="tat_Phys_EA"--> 
-        <!-- Needs updated reference files.
-        <TEST name="AthenaTrigRDOtoESDAOD_Physics" type="script" suite="tat_EA"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDOtoESDAOD_Physics --run AthenaTrigRDOtoESDAOD_Physics --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        -->
-        
-        
-        <!--TEST name="AthenaTrigRDOtoESDAOD_MC" type="script" suite="tat_MC_EA"--> 
-        <!-- Needs new reference files.
-        <TEST name="AthenaTrigRDOtoESDAOD_MC" type="script" suite="tat_EA"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDOtoESDAOD_MC --run AthenaTrigRDOtoESDAOD_MC --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        -->
-        
-        <!-- Needs updated reference files.
-        <TEST name="AthenaTrigRDOtoTAG" type="script" suite="tat_tag"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDOtoTAG --run AthenaTrigRDOtoTAG --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        -->
-        
-        <!--TEST name="AthenaTrigRDOtoAOD_Physics" type="script" suite="tat_AOD_Phys"--> 
-        <!-- Needs updated reference files.
-        <TEST name="AthenaTrigRDOtoAOD_Physics" type="script" suite="tat_AOD"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDOtoAOD_Physics --run AthenaTrigRDOtoAOD_Physics --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        -->
-        
-        
-        <!-- Needs updated reference files.
-        <TEST name="AthenaTrigRDOtoAOD" type="script" suite="tat_AOD"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDOtoAOD --run AthenaTrigRDOtoAOD --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        -->
-        
-        <!--TEST name="AthenaTrigRDOtoAOD_SLIM" type="script" suite="tat_AOD_SLIM"--> 
-        <!-- Needs updated reference files.
-        <TEST name="AthenaTrigRDOtoAOD_SLIM" type="script" suite="tat_AOD"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDOtoAOD_SLIM --run AthenaTrigRDOtoAOD_SLIM --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        -->
-        
-        
-        <!--TEST name="AthenaTrigRDO_TDT" type="script" suite="tat_TDT"-->
-        <!-- Needs updated reference files.
-        <TEST name="AthenaTrigRDO_TDT" type="script" suite="tat_EA">  
-            <options_atn>trigtest.pl --test AthenaTrigRDO_TDT --run AthenaTrigRDO_TDT --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        -->
-        
-        <!-- Needs updated reference files.
-        <TEST name="AthenaTrigRDOtoAOD_MC" type="script" suite="tat_MCSlim"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDOtoAOD_MC --run AthenaTrigRDOtoAOD_MC --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        -->
-        
-        <!-- Needs updated reference files.
-        <TEST name= "AthenaTrigAODtoAOD_TrigNavSlimming" type="script" suite="tat_MCSlim"> 
-            <options_atn>trigtest.pl --test AthenaTrigAODtoAOD_TrigNavSlimming --run AthenaTrigAODtoAOD_TrigNavSlimming --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <mailto> tbold@mail.cern.ch</mailto> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        -->
-        
-        <!-- Needs updated reference files.
-        <TEST name="AthenaTrigAOD_TrigEDMCheck" type="script" suite="tat_MCSlim"> 
-            <options_atn>trigtest.pl --test AthenaTrigAOD_TrigEDMCheck --run AthenaTrigAOD_TrigEDMCheck --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        -->
-        
-        <TEST name="AthenaTrigAOD_TrigEDMAuxCheck" type="script" suite="tat_MCSlim"> 
-            <options_atn>trigtest.pl --test AthenaTrigAOD_TrigEDMAuxCheck --run AthenaTrigAOD_TrigEDMAuxCheck --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-
-        <!-- Depends on AthenaTrigRDOtoAOD_MC
-        <TEST name="AthenaTrigAOD_TrigHLTMon" type="script" suite="tat_MCSlim"> 
-            <options_atn>trigtest.pl --test AthenaTrigAOD_TrigHLTMon --run AthenaTrigAOD_TrigHLTMon --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        -->
-        
-        <TEST name="AthenaTrigAOD_TrigHLTMon" type="script" suite="tat_MCSlim"> 
-            <options_atn>trigtest.pl --test AthenaTrigAOD_TrigHLTMon --run AthenaTrigAOD_TrigHLTMon --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="AthenaTrigAOD_TrigDecTool" type="script" suite="tat_MCSlim"> 
-            <options_atn>trigtest.pl --test AthenaTrigAOD_TrigDecTool --run AthenaTrigAOD_TrigDecTool --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name= "TrigHLT_Run1BStoxAOD" type="script" suite="tat_Run1"> 
-            <options_atn>trigtest.pl --test TrigHLT_Run1BStoxAOD --run TrigHLT_Run1BStoxAOD --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>45</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <mailto> oleg.kuprash@cern.ch </mailto> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST>  
-        
-        <TEST name= "TrigHLT_Run1BStoxAOD_validation" type="script" suite="tat_Run1"> 
-            <options_atn>trigtest.pl --test TrigHLT_Run1BStoxAOD_validation --run TrigHLT_Run1BStoxAOD_validation --conf TrigAnalysisTest.conf</options_atn>
-            <timelimit>45</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <mailto> oleg.kuprash@cern.ch </mailto> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST>  
-        
-        <TEST name= "AthenaTrigRDOtoAOD_MC_pp_v7" type="script" suite="tat_MCv7"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDOtoAOD_MC_pp_v7 --run AthenaTrigRDOtoAOD_MC_pp_v7 --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name= "AthenaTrigRDOtoESDAOD_MC_pp_v7" type="script" suite="tat_MCv7"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDOtoESDAOD_MC_pp_v7 --run AthenaTrigRDOtoESDAOD_MC_pp_v7 --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>TrigAnalysis validation</author> 
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        
-        <!-- Summary table -->
-        <TEST name="atn_timeline" type="script" suite="triganalysis_index0">
-            <doc>ATN timeline</doc>
-            <options_atn>atn_timeline.py --atn -p TrigAnalysisTest </options_atn>
-            <timelimit>10</timelimit>
-            <author>Frank Winklmeier</author>
-            <!--prerequisite>tat_RDOtoESDAOD</prerequisite>
-             <prerequisite>tat_BS_MC</prerequisite>
-             <prerequisite>tat_Phys_EA</prerequisite>
-             <prerequisite>tat_MC_EA</prerequisite>
-             <prerequisite>tat_tag</prerequisite>
-             <prerequisite>tat_AOD_Phys</prerequisite>
-             <prerequisite>tat_AOD</prerequisite>
-             <prerequisite>tat_AOD_SLIM</prerequisite>
-             <prerequisite>tat_TDT</prerequisite-->
-            <prerequisite>tat_RDOtoESDAOD</prerequisite>
-            <prerequisite>tat_BS</prerequisite>
-            <prerequisite>tat_Run1</prerequisite>
-            <prerequisite>tat_EA</prerequisite>            
-            <prerequisite>tat_tag</prerequisite>
-            <prerequisite>tat_AOD</prerequisite>
-            <prerequisite>tat_MCSlim</prerequisite>
-            <prerequisite>tat_MCv7</prerequisite>
-            <!--prerequisite>tat_PhysVal</prerequisite-->
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="atn_xml_summary_table" type="script" suite="triganalysis_index">
-            <options_atn>atn_summary.pl </options_atn>
-            <timelimit>2</timelimit>
-            <author>TrigAnalysis validation</author>
-            <prerequisite>triganalysis_index0</prerequisite>
-            <project_exclude>AthAnalysis</project_exclude>
-            <expectations>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <!--TEST name="sendmail2shifter" type="script" suite="triganalysis_index">
-         <options_atn>echo $ATN_PACKAGE | mail -s "TrigAnalysisTest ATN done" "czodrows@cern.ch" </options_atn>
-         <timelimit>2</timelimit>
-         <author>TrigAnalysis validation</author>
-         <prerequisite>triganalysis_index0</prerequisite>
-	      		<project_exclude>AthAnalysis</project_exclude>
-         <expectations>
-         <returnValue>0</returnValue>
-         </expectations
-         </TEST-->
-        
-    </atn>
-    
-    <!-- No KV tests configured here -->
-    <kv/>
-    
-    
-    <!-- RTT tests configured here -->
-    <rtt  xmlns="http://www.hep.ucl.ac.uk/atlas/AtlasTesting/rtt">
-        
-        <!--rttContactPerson>Simon George (S.George@rhul.ac.uk)</rttContactPerson>
-         <rttContactPerson>David Strom (David.Strom@cern)</rttContactPerson>
-         <rttContactPerson>Patrick Czodrowski (czodrows@cern)</rttContactPerson-->
-        <rttContactPerson>Oleg Kuprash (oleg.kuprash@cern.ch)</rttContactPerson>
-        
-        <jobList>
-            <classification>
-                <displayClass>OfflineValidation</displayClass>
-                <displayProcess>Reco</displayProcess>
-                <displayComponent>Trig-Common</displayComponent>
-            </classification> 
-            
-            
-            
-            <athena userJobId="RDOtoAOD_Physics" doMonitoring="True">
-                <doc>
-                    Menu: Physics_pp_v7 Sample: top - produces AOD 100 events
-                </doc>
-                <displayName>RDOtoAOD_Physics</displayName>
-                <commandLineFlags>
-                    RunningRTT=TRUE;menu='Physics_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>
-                <options>testAthenaTrigRDOtoAOD.py</options>
-                <package>Trigger/TrigValidation/TrigAnalysisTest</package>
-                <group>TrigAnalysisTestIOTests</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="RDOtoAOD_MC" doMonitoring="True">
-                <doc>
-                    Menu: MC_pp_v7 Sample: top - produces AOD 100 events
-                </doc>
-                <displayName>RDOtoAOD_MC</displayName>
-                <commandLineFlags>
-                    RunningRTT=TRUE;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>
-                <options>testAthenaTrigRDOtoAOD.py</options>
-                <package>Trigger/TrigValidation/TrigAnalysisTest</package>
-                <group>TrigAnalysisTestIOTests</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="RDOtoESDAOD_MC" doMonitoring="True">
-                <doc>
-                    Menu: MC_pp_v7 Sample: top - produces AOD and ESD 100 events
-                </doc>
-                <displayName>RDOtoESDAOD_MC</displayName>
-                <commandLineFlags>
-                    RunningRTT=TRUE;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>    
-                <options>testAthenaTrigRDOtoESDAOD.py</options>
-                <package>Trigger/TrigValidation/TrigAnalysisTest</package> 
-                <group>TrigAnalysisTestIOTests</group>
-                <queue>long</queue> 
-                <alwaysRunPostProc />  
-            </athena>
-            
-            <athena userJobId="RDOtoESDAOD_Physics" doMonitoring="True">
-                <doc>
-                    Menu: Physics_pp_v7 Sample: top - produces AOD and ESD 100 events
-                </doc>
-                <displayName>RDOtoESDAOD_Physics</displayName>
-                <commandLineFlags>
-                    RunningRTT=TRUE;menu='Physics_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>    
-                <options>testAthenaTrigRDOtoESDAOD.py</options>
-                <package>Trigger/TrigValidation/TrigAnalysisTest</package> 
-                <group>TrigAnalysisTestIOTests</group>
-                <queue>long</queue> 
-                <alwaysRunPostProc />  
-            </athena>
-            
-            <chain>
-                <chainName>AthenaTrigAOD_TrigEDMandTDTCheck_MC_pp_v7_chain</chainName>
-                <abortOnError />
-                <sequential>
-                    
-                    <chainElement>
-                        <athena userJobId="RDOtoAOD_MC_pp_v7" doMonitoring="True">
-                            <doc> Menu: MC_pp_v7 Sample: top - produces AOD 100 events</doc>
-                            <displayName>RDOtoAOD_MC_pp_v7</displayName>
-                            <commandLineFlags>
-                                RunningRTT=TRUE;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                            </commandLineFlags>
-                            <options>testAthenaTrigRDOtoAOD.py</options>
-                            <group>TrigAnalysisTestIOTests</group>
-                            <queue>long</queue>
-                            
-                            <athenaCommonFlags />
-                            <alwaysRunPostProc />
-                        </athena>
-                        <chainfileout>AOD.pool.root</chainfileout>
-                        
-                    </chainElement>
-                    
-                    <parallel>
-                        <chainElement>
-                            <athena userJobId="AOD_TrigEDMCheck_MC_pp_v7">
-                                <doc> AthenaTrigAOD_TrigEDMCheck on Menu: MC_pp_v7 Sample: top AOD from RDO</doc>
-                                <displayName>AthenaTrigAOD_TrigEDMCheck_MC_pp_v7</displayName>
-                                <commandLineFlags>RunningRTT=TRUE;jp.AthenaCommonFlags.PoolAODInput=["AOD.pool.root"]</commandLineFlags>
-                                <options>testAthenaTrigAOD_TrigEDMCheck.py</options>
-                                <package>Trigger/TrigValidation/TrigAnalysisTest</package> 
-                                <group>TrigAnalysisTestIOTests</group>
-                                <queue>long</queue> 
-                                <chaindataset_info>
-                                    <dc2/>
-                                    <chaindatasetName>AOD.pool.root</chaindatasetName>
-                                    <dataset_info>
-                                        <dc2 />
-                                        <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_AOD.pool.root</datasetName>
-                                    </dataset_info>
-                                </chaindataset_info>
-                                <testToRemove>
-                                    <jobGroupName>RTT:Top</jobGroupName>
-                                    <testidentifier>CheckFileRunner0</testidentifier>
-                                </testToRemove>
-                                <testToRemove>
-                                    <jobGroupName>TrigAnalysisTest:AthenaTrigAnalysisTestIOTests</jobGroupName>
-                                    <testidentifier>chainDump</testidentifier>
-                                </testToRemove>
-                                <alwaysRunPostProc />
-                            </athena>
-                        </chainElement>
-                        
-                        <chainElement>
-                            <athena userJobId="AOD_TrigDecTool_MC_pp_v7">
-                                <doc> AthenaTrigAOD_TrigDecTool on Menu: MC_pp_v7 Sample: top AOD from RDO</doc>
-                                <displayName>AthenaTrigAOD_TrigDecTool_MC_pp_v7</displayName>
-                                <commandLineFlags>RunningRTT=TRUE;jp.AthenaCommonFlags.PoolAODInput=["AOD.pool.root"]</commandLineFlags>
-                                <options>testAthenaTrigAOD_TrigDecTool.py</options>
-                                <package>Trigger/TrigValidation/TrigAnalysisTest</package> 
-                                <group>TrigAnalysisTestIOTests</group>
-                                <queue>long</queue>  
-                                <chaindataset_info>
-                                    <dc2/>
-                                    <chaindatasetName>AOD.pool.root</chaindatasetName>
-                                    <dataset_info>
-                                        <dc2 />
-                                        <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_AOD.pool.root</datasetName>
-                                    </dataset_info>
-                                </chaindataset_info>
-                                <testToRemove>
-                                    <jobGroupName>RTT:Top</jobGroupName>
-                                    <testidentifier>CheckFileRunner0</testidentifier>
-                                </testToRemove>
-                                <testToRemove>
-                                    <jobGroupName>TrigAnalysisTest:AthenaTrigAnalysisTestIOTests</jobGroupName>
-                                    <testidentifier>chainDump</testidentifier> 
-                                </testToRemove>
-                                <alwaysRunPostProc />
-                            </athena>
-                        </chainElement>
-                    </parallel>
-                    
-                </sequential>
-            </chain>
-            
-            <chain>
-                <chainName>AthenaTrigESDAOD_Perf_and_HLTMons_MC_pp_v7_chain</chainName>
-                <abortOnError />
-                <sequential>
-                    
-                    <chainElement>
-                        <athena userJobId="RDOtoESD_MC_pp_v7" doMonitoring="True">
-                            <doc> Menu: MC_pp_v7 Sample: top - produces AOD 100 events</doc>
-                            <displayName>RDOtoAOD_MC_pp_v7</displayName>
-                            <commandLineFlags>
-                                RunningRTT=TRUE;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                            </commandLineFlags>
-                            <options>testAthenaTrigRDOtoAOD.py</options>
-                            <group>TrigAnalysisTestIOTests</group>
-                            <queue>long</queue> 
-                            <athenaCommonFlags />
-                            <alwaysRunPostProc />
-                        </athena>
-                        <chainfileout>AOD.pool.root</chainfileout>
-                    </chainElement>
-                    
-                    <parallel>
-                        
-                        <sequential>
-                            <chainElement>
-                                <athena userJobId="ESDtoAOD_MC_pp_v7" doMonitoring="True">
-                                    <doc> Menu: MC_pp_v7 Sample: top - produces AOD 100 events</doc>
-                                    <displayName>RDOtoAOD_MC_pp_v7</displayName>
-                                    <commandLineFlags>
-                                        RunningRTT=TRUE;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                                    </commandLineFlags>
-                                    <options>testAthenaTrigRDOtoAOD.py</options>
-                                    <group>TrigAnalysisTestIOTests</group>
-                                    <queue>long</queue> 
-                                    <athenaCommonFlags />
-                                    <alwaysRunPostProc />
-                                </athena>
-                                <chainfileout>AOD.pool.root</chainfileout>
-                            </chainElement>
-                            
-                            
-                            <chainElement>
-                                <athena userJobId="HLTMon">
-                                    <doc> AthenaTrigAOD_TrigEDMCheck on Menu: MC_pp_v7 Sample: top AOD from RDO</doc>
-                                    <displayName>AthenaTrigAOD_TrigEDMCheck_MC_pp_v7</displayName>
-                                    <commandLineFlags>RunningRTT=TRUE;jp.AthenaCommonFlags.PoolAODInput=["AOD.pool.root"]</commandLineFlags>
-                                    <options>testAthenaTrigAOD_TrigEDMCheck.py</options>
-                                    <package>Trigger/TrigValidation/TrigAnalysisTest</package> 
-                                    <group>TrigAnalysisTestIOTests</group>
-                                    <queue>long</queue>
-                                    <chaindataset_info>
-                                        <dc2/>
-                                        <chaindatasetName>AOD.pool.root</chaindatasetName>
-                                        <dataset_info>
-                                            <dc2 />
-                                            <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_AOD.pool.root</datasetName>
-                                        </dataset_info>
-                                    </chaindataset_info>
-                                    <testToRemove>
-                                        <jobGroupName>RTT:Top</jobGroupName>
-                                        <testidentifier>CheckFileRunner0</testidentifier>
-                                    </testToRemove>
-                                    <testToRemove>
-                                        <jobGroupName>TrigAnalysisTest:AthenaTrigAnalysisTestIOTests</jobGroupName>
-                                        <testidentifier>chainDump</testidentifier>
-                                    </testToRemove>
-                                    <alwaysRunPostProc />
-                                </athena>
-                            </chainElement>
-                            
-                            
-                            <chainElement>
-                                <athena userJobId="PhysValMon_ESD">
-                                    <doc> AthenaTrigAOD_TrigDecTool on Menu: MC_pp_v7 Sample: top AOD from RDO</doc>
-                                    <displayName>AthenaTrigAOD_TrigDecTool_MC_pp_v7</displayName>
-                                    <commandLineFlags>RunningRTT=TRUE;jp.AthenaCommonFlags.PoolAODInput=["AOD.pool.root"]</commandLineFlags>
-                                    <options>testAthenaTrigAOD_TrigDecTool.py</options>
-                                    <package>Trigger/TrigValidation/TrigAnalysisTest</package> 
-                                    <group>TrigAnalysisTestIOTests</group>
-                                    <queue>long</queue>  
-                                    <chaindataset_info>
-                                        <dc2/>
-                                        <chaindatasetName>AOD.pool.root</chaindatasetName>
-                                        <dataset_info>
-                                            <dc2 />
-                                            <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_AOD.pool.root</datasetName>
-                                        </dataset_info>
-                                    </chaindataset_info>
-                                    <testToRemove>
-                                        <jobGroupName>RTT:Top</jobGroupName>
-                                        <testidentifier>CheckFileRunner0</testidentifier>
-                                    </testToRemove>
-                                    <testToRemove>
-                                        <jobGroupName>TrigAnalysisTest:AthenaTrigAnalysisTestIOTests</jobGroupName>
-                                        <testidentifier>chainDump</testidentifier>
-                                    </testToRemove>
-                                    <alwaysRunPostProc />
-                                </athena>
-                            </chainElement>
-                            
-                        </sequential>
-                        
-                        <chainElement>
-                            <athena userJobId="PhysValMon_xAOD">
-                                <doc> AthenaTrigAOD_TrigDecTool on Menu: MC_pp_v7 Sample: top AOD from RDO</doc>
-                                <displayName>AthenaTrigAOD_TrigDecTool_MC_pp_v7</displayName>
-                                <commandLineFlags>RunningRTT=TRUE;jp.AthenaCommonFlags.PoolAODInput=["AOD.pool.root"]</commandLineFlags>
-                                <options>testAthenaTrigAOD_TrigDecTool.py</options>
-                                <package>Trigger/TrigValidation/TrigAnalysisTest</package> 
-                                <group>TrigAnalysisTestIOTests</group>
-                                <queue>long</queue> 
-                                <chaindataset_info>
-                                    <dc2/>
-                                    <chaindatasetName>AOD.pool.root</chaindatasetName>
-                                    <dataset_info>
-                                        <dc2 />
-                                        <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_AOD.pool.root</datasetName>
-                                    </dataset_info>
-                                </chaindataset_info>
-                                <testToRemove>
-                                    <jobGroupName>RTT:Top</jobGroupName>
-                                    <testidentifier>CheckFileRunner0</testidentifier>
-                                </testToRemove>
-                                <testToRemove>
-                                    <jobGroupName>TrigAnalysisTest:AthenaTrigAnalysisTestIOTests</jobGroupName>
-                                    <testidentifier>chainDump</testidentifier>
-                                </testToRemove>
-                                <alwaysRunPostProc />
-                            </athena>
-                        </chainElement>
-                    </parallel>
-                    
-                </sequential>
-            </chain>
-            
-            
-            
-            
-            <!--athena userJobId="RDOtoAOD_MC_pp_v7_loose_mc_prescale" doMonitoring="True">
-                <doc>
-                    Menu: MC_pp_v7_loose_mc_prescale Sample: top - produces AOD 100 events
-                </doc>
-                <displayName>RDOtoAOD_MC_pp_v7_loose_mc_prescale</displayName>
-                <commandLineFlags>
-                    RunningRTT=TRUE;menu='MC_pp_v7_loose_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>
-                <options>testAthenaTrigRDOtoAOD.py</options>
-                <package>Trigger/TrigValidation/TrigAnalysisTest</package>
-                <group>TrigAnalysisTestIOTests</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="RDOtoAOD_MC_pp_v7_tight_mc_prescale" doMonitoring="True">
-                <doc>
-                    Menu: MC_pp_v7_tight_mc_prescale Sample: top - produces AOD 100 events
-                </doc>
-                <displayName>RDOtoAOD_MC_pp_v7_tight_mc_prescale</displayName>
-                <commandLineFlags>
-                    RunningRTT=TRUE;menu='MC_pp_v7_tight_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>
-                <options>testAthenaTrigRDOtoAOD.py</options>
-                <package>Trigger/TrigValidation/TrigAnalysisTest</package>
-                <group>TrigAnalysisTestIOTests</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            
-            <athena userJobId="RDOtoAOD_MC_pp_v7_1000" doMonitoring="True">
-                <doc>
-                    Menu: RDOtoAOD_MC_pp_v7 Sample: top - produces AOD 1000 events
-                </doc>
-                <displayName>RDOtoAOD_MC_pp_v7_1000</displayName>
-                <commandLineFlags>
-                    RunningRTT=TRUE;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>
-                <options>testAthenaTrigRDOtoAOD.py</options>
-                <package>Trigger/TrigValidation/TrigAnalysisTest</package>
-                <group>TrigAnalysisTestIOTests</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            
-            <athena userJobId="RDOtoAOD_MC_pp_v7_bphysics_1000" doMonitoring="True">
-                <doc>
-                    Menu: RDOtoAOD_MC_pp_v7 Sample: bphysics - produces AOD 1000 events
-                </doc>
-                <displayName>RDOtoAOD_MC_pp_v7_bphysics_1000</displayName>
-                <commandLineFlags>
-                    RunningRTT=TRUE;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc15_RTT_1000_Bphysics_toAOD_r6889/Bphysics_RDO_r6889_mixed.pool.root']
-                </commandLineFlags>
-                <options>testAthenaTrigRDOtoAOD.py</options>
-                <package>Trigger/TrigValidation/TrigAnalysisTest</package>
-                <group>TrigAnalysisTestIOTests</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>            
-            
-            
-            <athena userJobId="RDOtoAOD_MC_pp_v7_BphysExo_1000" doMonitoring="True">
-                <doc>
-                    Menu: RDOtoAOD_MC_pp_v7 Sample: bphysics and muons - produces AOD 1000 events on mc15_13TeV.180593.Pythia8_AUMSTW2008LO_Wtaunu_3mu_noPhotos see ATR-13193  
-                </doc>
-                <displayName>RDOtoAOD_MC_pp_v7_BphysExo_1000</displayName>
-                <commandLineFlags>
-                    RunningRTT=TRUE;menu='MC_pp_v7';sliceName='mubphysics';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc15_13TeV.180593.Pythia8_AUMSTW2008LO_Wtaunu_3mu_noPhotos.recon.RDO.e3802_s2608_s2183_r6790/RDO.05594910._000008.pool.root.1']
-                </commandLineFlags>
-                <options>testAthenaTrigRDOtoAOD.py</options>
-                <package>Trigger/TrigValidation/TrigAnalysisTest</package>
-                <group>TrigAnalysisTestIOTests</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>     
-            
-            <athena userJobId="RDOtoAODSLIM_MC_pp_v7_tight_mc_prescale" doMonitoring="True">
-                <doc>
-                    Menu: MC_pp_v7_tight_mc_prescale Sample: top - produces AODSLIM 100 events
-                </doc>
-                <displayName>RDOtoAODSLIM_MC_pp_v7_tight_mc_prescale</displayName>
-                <commandLineFlags>
-                    RunningRTT=TRUE;menu='MC_pp_v7_tight_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>
-                <options>testAthenaTrigRDOtoAODSLIM.py</options>
-                <package>Trigger/TrigValidation/TrigAnalysisTest</package>
-                <group>TrigAnalysisTestIOTests</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="RDOtoESDAOD_MC_pp_v7_loose_mc_prescale" doMonitoring="True">
-                <doc>
-                    Menu: MC_pp_v7_loose_mc_prescale Sample: top - produces AOD and ESD 100 events
-                </doc>
-                <displayName>RDOtoESDAOD_MC_pp_v7_loose_mc_prescale</displayName>
-                <commandLineFlags> 
-                    RunningRTT=TRUE;menu='MC_pp_v7_loose_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>    
-                <options>testAthenaTrigRDOtoESDAOD.py</options>
-                <package>Trigger/TrigValidation/TrigAnalysisTest</package> 
-                <group>TrigAnalysisTestIOTests</group>
-                <queue>long</queue> 
-                <alwaysRunPostProc />  
-            </athena>
-            
-            <athena userJobId="RDOtoESDAOD_MC_pp_v7_tight_mc_prescale" doMonitoring="True">
-                <doc>
-                    Menu: MC_pp_v7_tight_mc_prescale Sample: top - produces AOD and ESD 100 events
-                </doc>
-                <displayName>RDOtoESDAOD_MC_pp_v7_tight_mc_prescale</displayName>
-                <commandLineFlags>
-                    RunningRTT=TRUE;menu='MC_pp_v7_tight_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>    
-                <options>testAthenaTrigRDOtoESDAOD.py</options>
-                <package>Trigger/TrigValidation/TrigAnalysisTest</package> 
-                <group>TrigAnalysisTestIOTests</group>
-                <queue>long</queue> 
-                <alwaysRunPostProc />  
-            </athena>
-            
-            <athena userJobId="RDO_ElectronSlice_xAOD" doMonitoring="True">
-                <doc>
-                    Menu:MC, Sample:top - produces xAOD 1000 events
-                </doc>
-                <displayName>RDO_ElectronSlice_xAOD</displayName>
-                <commandLineFlags>
-                    RunningRTT=TRUE;jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/proj-sit/trigindet/mc12_14TeV.147806.PowhegPythia8_AU2CT10_Zee.recon.RDO.e1564_s1682_s1691_r4710_tid01288183_00';fileRange=[1,10]
-                </commandLineFlags>
-                <options>testAthenaTrigRDO_ElectronSlice_MC.py</options>
-                <package>Trigger/TrigValidation/TrigAnalysisTest</package>
-                <group>TrigAnalysisTestIOTests</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena-->
-            
-        </jobList>
-        
-        
-        <!-- Define job groups here -->
-        <jobGroups>
-            <jobGroup name="AthenaTrigAnalysisTestIOTests" parent="Athena">
-                <keepFilePattern info="Log files" displayColor="red">*.txt</keepFilePattern>
-                <keepFilePattern info="Test log file" displayColor="blue">*test*.log</keepFilePattern>
-                <keepFilePattern info="Action log file" displayColor="blue">*action*.log</keepFilePattern>
-                <keepFilePattern info="Monitoring histograms">*-monitoring.root</keepFilePattern>
-                <keepFilePattern info="Timing histograms">timing-histograms.root</keepFilePattern>
-                <keepFilePattern info="checkfilelog">*checkFile*</keepFilePattern>
-                <keepFilePattern info="PerfMon ntuple">*.pmon.gz</keepFilePattern>
-                <keepFilePattern info="PerfMon Hephaestus file">*.heph.log</keepFilePattern>
-                <keepFilePattern info="PerfMon xml">*.xml</keepFilePattern>
-                <keepFilePattern info="POOL files">*.pool.root</keepFilePattern>
-                <keepFilePattern info="GIF files">*.gif</keepFilePattern>
-                <keepFilePattern info="PDF files">*.pdf</keepFilePattern>
-                <keepFilePattern info="ROOT files">*.root</keepFilePattern> 
-                <keepFilePattern info="ROOT macros">*.C</keepFilePattern>
-                <keepFilePattern info="ROOT macros">*.cxx</keepFilePattern>
-                <keepFilePattern info="Bytestream files">*.data</keepFilePattern>
-                <keepFilePattern info="Bytestream files">*.php</keepFilePattern>
-                <keepFilePattern info="igprof files"> igprof.*.gz</keepFilePattern>
-                <keepFilePattern info="igprof files"> cgi-bin/data/*.sql3</keepFilePattern>
-                <keepFilePattern info="igprof files"> cgi-bin/igprof-navigator</keepFilePattern>
-                <keepFilePattern info="TrigCostMon files"> costMonitoring*/* </keepFilePattern>
-                <keepFilePattern maxsize="100">*/TrigCostRoot_Results.root</keepFilePattern>
-                <keepFilePattern maxsize="100">trig_cost.root</keepFilePattern>
-                <keepFilePattern maxsize="100">costMonitoring*/*</keepFilePattern>
-                <keepFilePattern maxsize="100">*log</keepFilePattern>
-                <keepFilePattern maxsize="100">*log_1</keepFilePattern>  
-                
-                <!--binRefFile>*-monitoring.root</binRefFile-->
-                <auxFilePattern>checklogTriggerTest.conf</auxFilePattern>
-                <test position="1">
-                    <modulename>chainDump</modulename>
-                    <testname>chainDump</testname>
-                    <testidentifier>chainDump</testidentifier>
-                    <arg>
-                        <argname>rootFile</argname>
-                        <argvalue>expert-monitoring.root</argvalue>
-                    </arg>
-                </test>
-                <test position="2">
-                    <modulename>LogTail_TrigAnalysisTest</modulename>
-                    <testname>LogTail_TrigAnalysisTest</testname>
-                    <arg>
-                        <argname>command</argname>
-                        <argvalue>tail -10000  %JOBLOG >%JOBLOG.tail.txt </argvalue>
-                    </arg>
-                </test>
-                <test position="3">
-                    <modulename>CheckLog_TrigAnalysisTest</modulename>
-                    <testname>CheckLog_TrigAnalysisTest</testname>
-                    <testidentifier>CheckLog_TrigAnalysisTest</testidentifier>
-                    <arg>
-                        <argname>command</argname>
-                        <argvalue>check_log.pl --conf checklogTriggerTest.conf  %JOBLOG</argvalue>
-                    </arg>
-                </test>
-                <!--test position="3">
-                 <modulename>TruncateLog_TrigAnalysisTest</modulename>
-                 <testname>TruncateLog_TrigAnalysisTest</testname>
-                 <arg>
-                 <argname>command</argname>
-                 <argvalue>mv %JOBLOG tmp.delete; head -n150000 tmp.delete  >%JOBLOG; rm tmp.delete</argvalue>
-                 </arg>
-                 </test-->
-                <test position="4">
-                    <modulename>RttLibraryTools</modulename>
-                    <testname>PerfMonRunner</testname>
-                    <testidentifier>PerfMonRunner</testidentifier>
-                    <arg>
-                        <argname>fileName</argname>
-                        <argvalue>ntuple.pmon.gz</argvalue>
-                    </arg>
-                    <arg>
-                        <argname>options</argname>
-                        <argvalue>-f 0.90</argvalue>
-                    </arg>	
-                </test>
-                <!--test position="5">
-                 <modulename>RttLibraryTools</modulename>
-                 <testname>RTTPerfMonPlotter</testname>
-                 <arg>
-                 <argname>outputFile</argname>
-                 <argvalue>rttPerfmonPlotter.xml</argvalue>
-                 </arg>
-                 <keepFilePattern info="">RttLibraryTools_RTTPerfmonPlotter.postprocessing.log</keepFilePattern>
-                 </test-->
-                
-                <!-- rm noalarm label once this thing is fixed ... -->
-                <test position="5"> 
-                    <modulename>checkFileTrigSize_RTT</modulename>
-                    <testname>checkFileTrigSize_RTT</testname>
-                    <testidentifier>checkFileTrigSize_RTT</testidentifier>
-                    <arg>
-                        <argname>checkFile</argname>
-                        <argvalue>AOD.pool.root.checkFile</argvalue>
-                    </arg>
-                    <noalarm />
-                </test>
-		<test position="6">
-		    <modulename>CheckForL1AllZero_TrigAnalysisTest</modulename>
-		    <testname>CheckForL1AllZero_TrigAnalysisTest</testname>
-		    <arg>
-		        <argname>command</argname>
-			<argvalue>if [[ `sed -e 's/.*\s\(.*\)/\1/' -ne '/^[^0$]/p' L1AV.txt  | wc -l` == 0 ]]; then echo "L1 counts   ERROR  : all entries are ZERO, please consult L1AV.txt" ; fi </argvalue>
-		    </arg>
-		</test>
-		<test position="7">
-		    <modulename>CheckForHLTChainAllZero_TrigAnalysisTest</modulename>
-		    <testname>CheckForHLTChainAllZero_TrigAnalysisTest</testname>
-		    <arg>
-		        <argname>command</argname>
-			<argvalue>if [[ `sed -e 's/.*\s\(.*\)/\1/' -ne '/^[^0$]/p' HLTChain.txt  | wc -l` == 0 ]]; then echo "HLT chain counts   ERROR  : all entries are ZERO, please consult HLTChain.txt" ; fi </argvalue>
-		    </arg>
-		</test>
-		<test position="8">
-		    <modulename>CheckForHLTTEAllZero_TrigAnalysisTest</modulename>
-		    <testname>CheckForHLTTEAllZero_TrigAnalysisTest</testname>
-		    <arg>
-		        <argname>command</argname>
-			<argvalue>if [[ `sed -e 's/.*\s\(.*\)/\1/' -ne '/^[^0$]/p' HLTTE.txt  | wc -l` == 0 ]]; then echo "HLT TE counts   ERROR  : all entries are ZERO, please consult HLTTE.txt" ; fi </argvalue>
-		    </arg>
-		</test>
-		<test position="9">
-		    <modulename>CheckForExpertMonHistZero_TrigAnalysisTest</modulename>
-		    <testname>CheckForExpertMonHistZero_TrigAnalysisTest</testname>
-		    <arg>
-		        <argname>command</argname>
-			<argvalue>monHistoChecker.py --path / | awk '{ if ($2==0){print "expert-monitoring.root check   ERROR  : monHistoChecker.py: integral of "$1" equals zero"} }' </argvalue>
-		    </arg>
-		</test>
-                
-                <testToRemove>
-                    <jobGroupName>RTT:Top</jobGroupName>
-                    <testidentifier>PerfMonDozer0</testidentifier>
-                </testToRemove>
-                
-            </jobGroup>
-        </jobGroups>
-        
-    </rtt>
-    
-</unifiedTestConfiguration>
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoaod_grid.sh b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoaod_grid.sh
index 639c1039e0275b6972ed7221ffa65869c3c12a03..52e3a9884d3de867a8c274c0e58c3120ac3111c1 100755
--- a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoaod_grid.sh
+++ b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoaod_grid.sh
@@ -25,7 +25,7 @@
 export NAME="physics_pp_v7_rdotoaod_grid"
 export COST_MONITORING="False"
 export TEST="TrigAnalysisTest"
-export MENU="Physics_pp_v7"
+export MENU="Physics_pp_v7_primaries"
 export EVENTS="100"
 export JOBOPTION="TrigAnalysisTest/testAthenaTrigRDOtoAOD.py"
 
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotobstoesd_build.sh b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotobstoesd_build.sh
index a36d8ac4b0a79ddfa15c9b9827f38c0cdf7a70da..baa5b204770015b79bfda6df20e51eab2d1f004f 100755
--- a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotobstoesd_build.sh
+++ b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotobstoesd_build.sh
@@ -23,7 +23,7 @@
 export NAME="physics_pp_v7_rdotobstoesd_build"
 export COST_MONITORING="False"
 export TEST="TrigAnalysisTest"
-export MENU="Physics_pp_v7"
+export MENU="Physics_pp_v7_primaries"
 export EVENTS="3"
 export JOBOPTION="TrigAnalysisTest/testAthenaTrigRDOtoBS.py"
 
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_build.sh b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_build.sh
index 06c721a33d706aba34b5959379dfee8297fb2bbf..e115425f15fda44c8cd8a8fcef823ddd5b1e275d 100755
--- a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_build.sh
+++ b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_build.sh
@@ -23,7 +23,7 @@
 export NAME="physics_pp_v7_rdotoesdaod_build"
 export COST_MONITORING="False"
 export TEST="TrigAnalysisTest"
-export MENU="Physics_pp_v7"
+export MENU="Physics_pp_v7_primaries"
 export EVENTS="3"
 export JOBOPTION="TrigAnalysisTest/testAthenaTrigRDOtoESDAOD.py"
 
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_grid.sh b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_grid.sh
index ca66ffcf47df6f319c97683df480d436f33ab63b..61500481109ba0994b15f2dd2003939d6a6cde2a 100755
--- a/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_grid.sh
+++ b/Trigger/TrigValidation/TrigAnalysisTest/test/test_physics_pp_v7_rdotoesdaod_grid.sh
@@ -25,7 +25,7 @@
 export NAME="physics_pp_v7_rdotoesdaod_grid"
 export COST_MONITORING="False"
 export TEST="TrigAnalysisTest"
-export MENU="Physics_pp_v7"
+export MENU="Physics_pp_v7_primaries"
 export EVENTS="100"
 export JOBOPTION="TrigAnalysisTest/testAthenaTrigRDOtoESDAOD.py"
 
diff --git a/Trigger/TrigValidation/TrigP1Test/CMakeLists.txt b/Trigger/TrigValidation/TrigP1Test/CMakeLists.txt
index 155ea424dda042e45c3f118562e09010821e9da9..e29582c468f7265e0da4d2726f40522580609444 100644
--- a/Trigger/TrigValidation/TrigP1Test/CMakeLists.txt
+++ b/Trigger/TrigValidation/TrigP1Test/CMakeLists.txt
@@ -16,5 +16,5 @@ atlas_install_python_modules( python/*.py )
 atlas_install_joboptions( share/*.py )
 
 atlas_install_runtime( test/TrigP1Test_TestConfiguration.xml Testing/*.trans Testing/*.conf python/RunMsgFinder.py python/RttScriptRunner.py python/RootComp.py python/RegTest.py python/CheckLog.py python/CheckStatusCode.py python/LogTail.py python/DeleteRaw.py python/TruncateLog.py python/releaseFromSMK.py)
-atlas_install_scripts( share/*.sh share/testMonHistOH.py share/part_lhl2ef_fix.py share/setMagFieldCurrents.py share/part_get_runnumber.py share/trigp1test_athenaHLT.py Testing/*.sh Testing/splitlog.py test/exec*.sh test/test*.sh)
+atlas_install_scripts( share/*.sh share/testMonHistOH.py share/part_lhl2ef_fix.py share/setMagFieldCurrents.py share/part_get_runnumber.py share/trigp1test_athenaHLT.py share/trigp1test_prescaleForROSsim.py Testing/*.sh Testing/splitlog.py test/exec*.sh test/test*.sh)
 
diff --git a/Trigger/TrigValidation/TrigP1Test/Testing/TrigP1Test_ART.conf b/Trigger/TrigValidation/TrigP1Test/Testing/TrigP1Test_ART.conf
index 25d04077c8b4d155f7c5827647811231761605cb..4b8963abde129da7dcbcb220d097e391a463dab6 100644
--- a/Trigger/TrigValidation/TrigP1Test/Testing/TrigP1Test_ART.conf
+++ b/Trigger/TrigValidation/TrigP1Test/Testing/TrigP1Test_ART.conf
@@ -49,7 +49,7 @@ test 2
 #  doc athenaHLT on data with Physics_pp_v5 menu currently from 2015 EB data
 #  filterlog filterREGTEST.py
 #  checklog --config checklogTrigP1Test.conf --showexcludestats
-#  fullregtest REGTEST  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV5.reference
+#  fullregtest REGTEST|WARNING  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV5.reference
 #  rootcomp   /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV5.root
 #  checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV5.root 1 HLT
 #  athena_cmd athenaHLT.py   -o HLT_physicsV5  -n 75 -f /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data15_13TeV.00276952.physics_EnhancedBias.merge.RAW._lb0113._SFO-ALL._0001.data    -c 'testPhysicsV5=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py
@@ -64,7 +64,7 @@ test 13
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
  # TODO: fix reference
-  fullregtest REGTEST  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_rerunLVL1/trigp1test_HLT_physicsV7_rerunLVL1.reference
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_rerunLVL1/trigp1test_HLT_physicsV7_rerunLVL1.reference
   rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_rerunLVL1/trigp1test_HLT_physicsV7_rerunLVL1.root
   checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_rerunLVL1/trigp1test_HLT_physicsV7_rerunLVL1.root 1 HLT
   athena_cmd athenaHLT.py   -o HLT_physicsV7_rerunLVL1  -n 25 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -c 'testPhysicsV7=True;HLTOutputLevel=INFO;doValidation=True;rerunLVL1=True' TriggerRelease/runHLT_standalone.py
@@ -79,11 +79,11 @@ test 15
   doc athenaHLT on simulated data including L1Topo ROI & DAQ ROB decoding with Physics_pp_v6 menu, data is cosmics from M7 with sim L1Topo ROBFs merged in, override ROB Ids as sim data used different convention
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
-  fullregtest REGTEST  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_L1Topo_sim.reference
+  fullregtest REGTEST|WARNING  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_L1Topo_sim.reference
   customrootcomp rootcomp_l1topo.sh /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_L1Topo_sim.root
   extra_failure_codes ROOTCOMP_MISMATCH
   checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_L1Topo_sim.root 1 HLT
-  athena_cmd athenaHLT.py  -o HLT_physicsV6_L1Topo_sim  -n 10 -f root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data14_cos.00247688_mergedL1Topo._0001.data --extra-l1r-robs '[9502848,9502864]' --log-level INFO,ERROR -c 'testPhysicsV6=True;doValidation=True;L1TopoCheck=True;fpeAuditor=True'  -C 'L1TopoROBMonitor.L1TopoDAQROBIDs=[0x00910001,0x00910011];  L1TopoROBMonitor.L1TopoROIROBIDs=[0x00910080,0x00910090]; L1TopoROBMonitor.useDetMask=False; svcMgr.ByteStreamAddressProviderSvc.TopoProcModuleID=[0x80,0x90]; from L1TopoByteStream.L1TopoByteStreamConf import L1TopoByteStreamTool; l1TopoByteStreamTool=L1TopoByteStreamTool(); l1TopoByteStreamTool.ROBSourceIDs=[0x00910001,0x00910011]; svcMgr.ToolSvc+=l1TopoByteStreamTool' TriggerRelease/runHLT_standalone.py
+  athena_cmd athenaHLT.py  -o HLT_physicsV6_L1Topo_sim  -n 10 -f root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data14_cos.00247688_mergedL1Topo._0001.data --extra-l1r-robs '[9502848,9502864]' --log-level INFO,ERROR -c 'testPhysicsV6=True;doValidation=True;L1TopoCheck=True;fpeAuditor=True'  -C 'L1TopoROBMonitor.L1TopoDAQROBIDs=[0x00910001,0x00910011];  L1TopoROBMonitor.L1TopoROIROBIDs=[0x00910080,0x00910090]; L1TopoROBMonitor.useDetMask=False; svcMgr.ByteStreamAddressProviderSvc.TopoProcModuleID=[0x80,0x90]; from L1TopoByteStream.L1TopoByteStreamConf import L1TopoByteStreamTool; l1TopoByteStreamTool=L1TopoByteStreamTool(); l1TopoByteStreamTool.ROBSourceIDs=[0x00910001,0x00910011]; svcMgr.ToolSvc+=l1TopoByteStreamTool' TriggerRelease/runHLT_standalone.py
   post_command chainDump.py -S  --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs
   post_command plotL1TopoROBMonHist.py expert-monitoring.root 2>/dev/null
 
@@ -93,7 +93,7 @@ test 16
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
   # TODO: fix ref
-  fullregtest REGTEST  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_L1Topo_data/trigp1test_HLT_physicsV7_L1Topo_data.reference
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_L1Topo_data/trigp1test_HLT_physicsV7_L1Topo_data.reference
   customrootcomp rootcomp_l1topo.sh  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_L1Topo_data/trigp1test_HLT_physicsV7_L1Topo_data.root
   extra_failure_codes ROOTCOMP_MISMATCH
   checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_L1Topo_data/trigp1test_HLT_physicsV7_L1Topo_data.root 1 HLT
@@ -106,7 +106,7 @@ test 17
   doc athenaHLT on data with Physics_pp_v6 menu currently from 2015 EB data
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
-  fullregtest REGTEST  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6.reference
+  fullregtest REGTEST|WARNING  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6.reference
   rootcomp   /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6.root
   checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6.root 1 HLT
   athena_cmd athenaHLT.py   -o HLT_physicsV6  -n 75 -f /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data17_13TeV.00327265.physics_eb_zmm_egz.merged.RAW.selected._0001.data   -c 'testPhysicsV6=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py
@@ -134,7 +134,7 @@ test 11
   doc AthenaHLT on data, with MC_pp_V5 menu loose prescale set
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
-  fullregtest REGTEST  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV5.reference
+  fullregtest REGTEST|WARNING  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV5.reference
   checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV5.root 1 HLT
   rootcomp   /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV5.root 
   athena_cmd athenaHLT.py -o HLT_mcV5 -n 75  -f /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data17_13TeV.00327265.physics_eb_zmm_egz.merged.RAW.selected._0001.data -c 'testMCV5=True;rerunLVL1=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py 
@@ -151,7 +151,7 @@ test 12
   doc AthenaHLT on data, with MC_pp_V6 menu loose prescale set
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
-  fullregtest REGTEST  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV6.reference
+  fullregtest REGTEST|WARNING  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV6.reference
   checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV6.root 1 HLT
   rootcomp   /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_mcV6.root 
   athena_cmd athenaHLT.py -o HLT_mcV6 -n 50  -f /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data17_13TeV.00327265.physics_eb_zmm_egz.merged.RAW.selected._0001.data -c 'testMCV6=True;rerunLVL1=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py 
@@ -190,7 +190,7 @@ test 22
   doc Standalone HLT running in athena and compare to athenaHLT
   checklog --config checklogTrigP1Test.conf --showexcludestats
   # TODO: fix ref
-  fullregtest REGTEST /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/AthenaP1BS_standalone/trigp1test_AthenaP1BS_standalone.reference
+  fullregtest REGTEST|WARNING /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/AthenaP1BS_standalone/trigp1test_AthenaP1BS_standalone.reference
   rootcomp ../HLT_physicsV7/expert-monitoring.root expert-monitoring.root
   checkcount ../HLT_physicsV7/expert-monitoring.root 0 BOTH 
   athena_cmd athena.py -c "BSRDOInput='/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1';testPhysicsV7=True;writeBS=True;rerunLVL1=True;doValidation=True;EvtMax=25" TriggerRelease/runHLT_standalone.py
@@ -208,7 +208,7 @@ test 30
   doc athenaHLT on MC with MC menu, input from AthenaP1RDOtoBS
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
-  fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_MC_BSfromRDO.reference
+  fullregtest REGTEST|WARNING /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_MC_BSfromRDO.reference
   checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_MC_BSfromRDO.root 0 BOTH
   rootcomp   /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_MC_BSfromRDO.root
 # note ._0001.data is added automatically
@@ -232,7 +232,7 @@ test 41
   doc Trig_reco_tf with current T0 config
   checklog --config checklogTrigP1Test.conf --showexcludestats
   # TODO: fix file, conditionsTag, geometryVersion
-  #athena_cmd Trig_reco_tf.py --inputBS_RDOFile "root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/data15_13TeV.00272531.physics_Main.daq.RAW._lb0104._SFO-5._0001.data" --precommand "testPhysicsV7=True;HLTOutputLevel=INFO;doValidation=True" --maxEvents '15' --outputBSFile "tmp.BS" ; source $AtlasSetup/scripts/asetup.sh latest,Athena,21.0 ; Reco_tf.py --inputBSFile "tmp.BS" --athenaopts=" --perfmon "  --outputHISTFile 'myHIST.root' --outputAODFile 'myAOD.pool.root' --outputESDFile 'myESD.pool.root' --outputNTUP_MUONCALIBFile 'myNTUP_MUONCALIB.root' --autoConfiguration='everything' --conditionsTag "CONDBR2-BLKPA-2017-11" --geometryVersion "ATLAS-R2-2016-01-00-01" --preExec 'r2e:from InDetRecExample.InDetJobProperties import InDetFlags;InDetFlags.useDynamicAlignFolders.set_Value_and_Lock(True)' --triggerConfig r2e=DATARECO:REPR
+  #athena_cmd Trig_reco_tf.py --inputBS_RDOFile "root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/data15_13TeV.00272531.physics_Main.daq.RAW._lb0104._SFO-5._0001.data" --precommand "testPhysicsV7=True;HLTOutputLevel=INFO;doValidation=True" --maxEvents '15' --outputBSFile "tmp.BS" ; source $AtlasSetup/scripts/asetup.sh latest,Athena,21.0 ; Reco_tf.py --inputBSFile "tmp.BS" --athenaopts=" --perfmon "  --outputHISTFile 'myHIST.root' --outputAODFile 'myAOD.pool.root' --outputESDFile 'myESD.pool.root' --outputNTUP_MUONCALIBFile 'myNTUP_MUONCALIB.root' --autoConfiguration='everything' --conditionsTag "CONDBR2-BLKPA-2017-11" --geometryVersion "ATLAS-R2-2016-01-00-01" --preExec 'r2e:from InDetRecExample.InDetJobProperties import InDetFlags;InDetFlags.useDynamicAlignFolders.set_Value_and_Lock(True)' --triggerConfig r2e=DATARECO:REPR
   athena_cmd export AMIConfig=$(cat /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/T0Config.txt); echo $AMIConfig; Trig_reco_tf.py --inputBS_RDOFile "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1" --precommand "testPhysicsV7=True;HLTOutputLevel=INFO;doValidation=True" --maxEvents '15' --outputBSFile "tmp.BS"; Reco_tf.py --asetup "RAWtoALL:Athena,21.0,latest" --inputBSFile "tmp.BS" --athenaopts=" --perfmon "  --outputHISTFile 'myHIST.root' --outputAODFile 'myAOD.pool.root' --outputESDFile 'myESD.pool.root' --AMIConfig "${AMIConfig}"
 
   post_command checkFile.py myAOD.pool.root > AOD.txt 
@@ -244,7 +244,7 @@ test 42
   joboptions testAthenaP1ESD_TrigEDMCheck_data.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
   # TODO: fix ref
-  fullregtest REGTEST  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/TrigEDMCheck_physicsV7_currentT0_ESD/trigp1test_TrigEDMCheck_physicsV7_currentT0.reference  
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/TrigEDMCheck_physicsV7_currentT0_ESD/trigp1test_TrigEDMCheck_physicsV7_currentT0.reference  
   pre_condition if [[ $(find ../Trigreco_physicsV7_currentT0/myESD.pool.root -type f -size +1000000c 2>/dev/null) ]] ; then test -e ../Trigreco_physicsV7_currentT0/myESD.pool.root ; else test -e non_existing_file ; fi
   athena_cmd source $AtlasSetup/scripts/asetup.sh latest,Athena,21.0 ; athena.py -c 'fileList=["../Trigreco_physicsV7_currentT0/myESD.pool.root"]' 
 
@@ -254,7 +254,7 @@ test 43
   joboptions testAthenaP1ESD_TrigEDMCheck_data.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
   # TODO: fix ref
-  fullregtest REGTEST  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/TrigEDMCheck_physicsV7_currentT0_AOD/trigp1test_TrigEDMCheck_physicsV7_currentT0.reference  
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/TrigEDMCheck_physicsV7_currentT0_AOD/trigp1test_TrigEDMCheck_physicsV7_currentT0.reference  
   pre_condition if [[ $(find ../Trigreco_physicsV7_currentT0/myAOD.pool.root -type f -size +1000000c 2>/dev/null) ]] ; then test -e ../Trigreco_physicsV7_currentT0/myAOD.pool.root ; else test -e non_existing_file ; fi
   athena_cmd source $AtlasSetup/scripts/asetup.sh latest,Athena,21.0 ; athena.py -c 'fileList=["../Trigreco_physicsV7_currentT0/myAOD.pool.root"]' 
 
@@ -272,7 +272,7 @@ test 45
   name  TrigEDMCheck_mcV6_currentT0
   doc EDMCheck on Trig_reco_mcV6_currentT0
   checklog --config checklogTrigP1Test.conf --showexcludestats
-  fullregtest REGTEST  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_TrigEDMCheck_mcV6_currentT0.reference  
+  fullregtest REGTEST|WARNING  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_TrigEDMCheck_mcV6_currentT0.reference  
   pre_condition test if [[ $(find ../Trig_reco_mcV6_currentT0/myESD.pool.root -type f -size +1000000c 2>/dev/null) ]] ; then test -e ../Trig_reco_mcV6_currentT0/myESD.pool.root ; else test -e non_existing_file ; fi
   pre_command ln -s ../Trig_reco_mcV6_currentT0/myESD.pool.root ESD.pool.root
   athena_cmd source $AtlasSetup/scripts/asetup.sh latest,Athena,21.0 ; athena.py -c 'fileList=["ESD.pool.root"]' TrigP1Test/testAthenaP1ESD_TrigEDMCheck_data.py
@@ -300,7 +300,7 @@ test 49
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
   # TODO: fix ref
-  fullregtest REGTEST  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS/trigp1test_HLT_physicsV7_COS.reference
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS/trigp1test_HLT_physicsV7_COS.reference
   rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS/trigp1test_HLT_physicsV7_COS.root
   checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS/trigp1test_HLT_physicsV7_COS.root 1 HLT
   athena_cmd athenaHLT.py   -o HLT_physicsV7_COS  -n 250 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data16_cos.00306147.physics_Main.daq.RAW._lb0494._SFO-4._0001.data  -c 'testPhysicsV7=True;HLTOutputLevel=INFO;doCosmics=True;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py
@@ -318,10 +318,10 @@ test 50
   doc athenaHLT standalone with physicsV6 menu on COSMICS 2012
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
-  fullregtest REGTEST  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2012.reference
+  fullregtest REGTEST|WARNING  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2012.reference
   checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2012.root 1 HLT
   rootcomp   /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2012.root 
-  athena_cmd athenaHLT.py -o HLT_physicsV6_COS_2012 -n 100 -f root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_cos.00214912.express_express.merge.RAW._lb0184._SFO-ALL._0001.1  -c 'testPhysicsV6=True;HLTOutputLevel=INFO;doValidation=True;doCosmics=True;useCONDBR2=False;setGlobalTag="COMCOND-HLTP-004-03-VAL-01";setDetDescr="ATLAS-R1-2012-02-00-00";fpeAuditor=True' TriggerRelease/runHLT_standalone.py
+  athena_cmd athenaHLT.py -o HLT_physicsV6_COS_2012 -n 100 -f root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_cos.00214912.express_express.merge.RAW._lb0184._SFO-ALL._0001.1  -c 'testPhysicsV6=True;HLTOutputLevel=INFO;doValidation=True;doCosmics=True;useCONDBR2=False;setGlobalTag="COMCOND-HLTP-004-03-VAL-01";setDetDescr="ATLAS-R1-2012-02-00-00";fpeAuditor=True' TriggerRelease/runHLT_standalone.py
 #  post_command save_to_refdir.sh HLT_physicsV6_COS_2012._0001.data /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/online/references/ATN/latest
   post_command chainDump.py -n -S  --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs
 
@@ -332,7 +332,7 @@ test 51
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
   # TODO: fix ref
-  fullregtest REGTEST  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016MUONS/trigp1test_HLT_physicsV7_COS_2016MUONS.reference
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016MUONS/trigp1test_HLT_physicsV7_COS_2016MUONS.reference
   rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016MUONS/trigp1test_HLT_physicsV7_COS_2016MUONS.root
   checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016MUONS/trigp1test_HLT_physicsV7_COS_2016MUONS.root 1 HLT
   athena_cmd athenaHLT.py -o HLT_physicsV7_COS_2016MUONS  -n 100 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data16_cos.00306147.physics_CosmicMuons.merge.RAW._lb0494._SFO-ALL._0001.1  -c 'testPhysicsV7=True;HLTOutputLevel=INFO;doCosmics=True;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py
@@ -348,7 +348,7 @@ test 52
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
   # TODO: fix ref
-  fullregtest REGTEST  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016IDCOSMICS/trigp1test_HLT_physicsV7_COS_2016IDCOSMICS.reference
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016IDCOSMICS/trigp1test_HLT_physicsV7_COS_2016IDCOSMICS.reference
   rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016IDCOSMICS/trigp1test_HLT_physicsV7_COS_2016IDCOSMICS.root
   checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_COS_2016IDCOSMICS/trigp1test_HLT_physicsV7_COS_2016IDCOSMICS.root 1 HLT
   athena_cmd athenaHLT.py  -o HLT_physicsV7_COS_2016IDCOSMICS   -n 100 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data16_cos.00306147.physics_IDCosmic.merge.RAW._lb0494._SFO-ALL._0001.1   -c 'testPhysicsV7=True;HLTOutputLevel=INFO;doCosmics=True;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py
@@ -363,10 +363,10 @@ test 53
   doc athenaHLT on data with Physics_pp_v6 menu currently cosmics from 2015
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
-  fullregtest REGTEST  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015CALO.reference
+  fullregtest REGTEST|WARNING  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015CALO.reference
   rootcomp   /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015CALO.root
   checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015CALO.root 1 HLT
-  athena_cmd athenaHLT.py -o HLT_physicsV6_COS_2015CALO  -n 100 -f root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data15_cos.00256721.physics_CosmicCalo.merge.RAW._lb0403._SFO-ALL._0001.1  -c 'testPhysicsV6=True;HLTOutputLevel=INFO;doCosmics=True;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py
+  athena_cmd athenaHLT.py -o HLT_physicsV6_COS_2015CALO  -n 100 -f root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data15_cos.00256721.physics_CosmicCalo.merge.RAW._lb0403._SFO-ALL._0001.1  -c 'testPhysicsV6=True;HLTOutputLevel=INFO;doCosmics=True;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py
 #  post_command save_to_refdir.sh HLT_physicsV6_COS_2015CALO._0001.data /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/online/references/ATN/latest
   post_command chainDump.py -n -S  --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs
   post_test checkHist histSizes.py -t expert-monitoring.root ; cp post_test_checkHist.log checkHistathenaHLT.reference.new ; diff checkHistathenaHLT.reference.new /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_checkHistathenaHLT.reference 
@@ -376,10 +376,10 @@ test 54
   doc athenaHLT on data with Physics_pp_v6 menu currently cosmics from M9
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
-  fullregtest REGTEST  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015MBTS.reference
+  fullregtest REGTEST|WARNING  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015MBTS.reference
   rootcomp   /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015MBTS.root
   checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_physicsV6_COS_2015MBTS.root 1 HLT
-  athena_cmd athenaHLT.py -o HLT_physicsV6_COS_2015MBTS  -n 100 -f  root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data15_cos.00257588.physics_L1MinBias.merge.RAW._lb0XXX._SFO-ALL._0001.1  -c 'testPhysicsV6=True;HLTOutputLevel=INFO;doCosmics=True;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py
+  athena_cmd athenaHLT.py -o HLT_physicsV6_COS_2015MBTS  -n 100 -f  root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data15_cos.00257588.physics_L1MinBias.merge.RAW._lb0XXX._SFO-ALL._0001.1  -c 'testPhysicsV6=True;HLTOutputLevel=INFO;doCosmics=True;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py
 #  post_command save_to_refdir.sh HLT_physicsV6_COS_2015MBTS._0001.data /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/online/references/ATN/latest
   post_command chainDump.py -n -S  --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs
   post_test checkHist histSizes.py -t expert-monitoring.root ; cp post_test_checkHist.log checkHistathenaHLT.reference.new ; diff checkHistathenaHLT.reference.new /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_checkHistathenaHLT.reference 
@@ -399,6 +399,14 @@ test 61
   athena_cmd athenaHLT.py -M -n 75 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -o HLT_physicsV7_menu  -c 'testPhysicsV7=True;trigBase="Default";doDBConfig=True;enableCostForCAF=True' TriggerRelease/runHLT_standalone.py
   post_test checkHist histSizes.py -t r0000000000_part_athenaHLT_mon_HLT-Histogramming.root ; cp post_test_checkHist.log checkHistathenaHLT.reference.new ; diff checkHistathenaHLT.reference.new /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_menu/trigp1test_checkHistathenaHLT.reference
 
+test 60
+  name HLT_HIV5_menu
+  doc Run athenaHLT on all events to create trigger configuration with HIV5 menu with rerunL1
+  checklog --config checklogTrigP1Test.conf --showexcludestats
+  athena_cmd athenaHLT.py -M -o HLT_HIV5_menu -n 50 -f  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data15_hi.00287843.physics_EnhancedBias.merge.RAW._lb0226._SFO-2._0001.1 -c 'testHIV5=True;rerunLVL1=True;trigBase="Default";doDBConfig=True;enableCostForCAF=True;useCONDBR2=True;setDetDescr="ATLAS-R2-2015-04-00-00";setGlobalTag="CONDBR2-HLTP-2016-01";from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags;InDetGeometryFlags.useDynamicAlignFolders.set_Value_and_Lock(False)' TriggerRelease/runHLT_standalone.py
+  post_test checkHist histSizes.py -t r0000000000_part_athenaHLT_mon_HLT-Histogramming.root ; cp post_test_checkHist.log checkHistathenaHLT.reference.new ; diff checkHistathenaHLT.reference.new /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5_menu/trigp1test_checkHistathenaHLT.reference
+
+
 test 62
   name UploadMenuKeys
   doc Generates and uploads SMKs created from the HLT first and compares after rerun jobs from DB.
@@ -407,20 +415,33 @@ test 62
   pre_condition test -e ../HLT_physicsV7_menu/outputHLT*xml
   athena_cmd testUploadMenuKeys.sh --menu HLT_physicsV7 
 
+test 59
+  name UploadMenuKeys_HI
+  doc Generates and uploads SMKs created with HIV5 rerunL1 from the HLT first and compares after rerun jobs from DB.
+  pre_condition test -e ../HLT_HIV5_menu/ef_Default_setup.txt
+  pre_condition test -e ../HLT_HIV5_menu/ef_Default_setup_setup.txt
+  pre_condition test -e ../HLT_HIV5_menu/outputHLT*xml
+  athena_cmd testUploadMenuKeys.sh --menu HLT_HIV5
+
 test 70
   name UploadMenuKeys_ART
-  doc Generates and uploads SMKs created from the HLT first and compares after rerun jobs from DB.
+  doc Uploads SMKs created from the HLT with rerunL1
   pre_condition test -e ../HLT_physicsV7_menu/ef_Default_setup.txt
   pre_condition test -e ../HLT_physicsV7_menu/ef_Default_setup_setup.txt
   pre_condition test -e ../HLT_physicsV7_menu/outputHLT*xml
   athena_cmd testUploadMenuKeys.sh --menu HLT_physicsV7 --uploadPrescale --art
-  post_command cp prescaleKeys.txt /eos/atlas/atlascerngroupdisk/data-art/grid-input/TrigP1Test/.
+  post_command cp prescaleKeys_17000.txt prescaleKeys_9000.txt /eos/atlas/atlascerngroupdisk/data-art/grid-input/TrigP1Test/.
 
 test 63
   name HLT_physicsV7_menu_checkkeys 
   doc Recreate trigger configuration and compare with configuration from HLT_physicsV7_menu
   athena_cmd athenaHLT.py -M -n 75 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -o HLT_physicsV7_menu_checkkeys -c 'testPhysicsV7=True;trigBase="Default";doDBConfig=True;enableCostForCAF=True' TriggerRelease/runHLT_standalone.py
 
+test 58
+  name HLT_HIV5_menu_checkkeys
+  doc Recreate trigger configuration and compare with configuration from HLT_HIV5_menu
+  athena_cmd athenaHLT.py -M -o HLT_HIV5_menu_checkkeys -n 50 -f  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data15_hi.00287843.physics_EnhancedBias.merge.RAW._lb0226._SFO-2._0001.1 -c 'testHIV5=True;rerunLVL1=True;trigBase="Default";doDBConfig=True;enableCostForCAF=True;useCONDBR2=True;setDetDescr="ATLAS-R2-2015-04-00-00";setGlobalTag="CONDBR2-HLTP-2016-01";from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags;InDetGeometryFlags.useDynamicAlignFolders.set_Value_and_Lock(False)' TriggerRelease/runHLT_standalone.py
+
 
 test 64
   name CheckKeysV7
@@ -434,6 +455,19 @@ test 64
   checklog --config checklogTrigP1Test.conf --showexcludestats | grep -v "checking for"
   athena_cmd testCheckKeys.sh --menu HLT_physicsV7
 
+test 57
+  name CheckKeysHIV5
+  doc compare the SMK created from the HLT_HIV5 first and rerun jobs
+  pre_condition test -e ../HLT_HIV5_menu/ef_Default_setup.txt
+  pre_condition test -e ../HLT_HIV5_menu/ef_Default_setup_setup.txt
+  pre_condition test -e ../HLT_HIV5_menu/outputHLT*xml
+  pre_condition test -e ../HLT_HIV5_menu_checkkeys/ef_Default_setup.txt
+  pre_condition test -e ../HLT_HIV5_menu_checkkeys/ef_Default_setup_setup.txt
+  pre_condition test -e ../HLT_HIV5_menu_checkkeys/outputHLT*xml
+  checklog --config checklogTrigP1Test.conf --showexcludestats | grep -v "checking for"
+  athena_cmd testCheckKeys.sh --menu HLT_HIV5
+
+
 test 65
   name HLT_physicsV7_menu_rerundb
   doc athenaHLT from DB, use HLT_physicsV7 as reference
@@ -445,6 +479,17 @@ test 65
   post_command chainDump.py -n -S
   post_test RunMsg check_msg_stat.py --showignored --config checkMsgStat_TrigP1Test.conf $logfile
 
+test 56
+  name HLT_HIV5_menu_rerundb
+  doc athenaHLT from DB, use HLT_HIV5 as reference
+  checklog --config checklogTrigP1Test.conf --showexcludestats
+  rootcomp   ../HLT_HIV5_menu/r0000000000_part_athenaHLT_mon_HLT-Histogramming.root r0000000000_part_athenaHLT_mon_HLT-Histogramming.root
+  extra_failure_codes ROOTCOMP_MISMATCH
+  pre_condition test -e ../UploadMenuKeys_HI/exportMenuKeys.sh
+  athena_cmd unset FRONTIER_SERVER; source ../UploadMenuKeys_HI/exportMenuKeys.sh; athenaHLT.py -M -o HLT_HIV5_menu_rerundb -n 50 -f  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data15_hi.00287843.physics_EnhancedBias.merge.RAW._lb0226._SFO-2._0001.1 -J TrigConf::HLTJobOptionsSvc --use-database --db-type "Coral" --db-server "TRIGGERDBATN" --db-smkey ${smk} --db-hltpskey ${hltpsk} --db-extra "{'lvl1key': ${l1psk}}"
+  post_command chainDump.py -n -S
+  post_test RunMsg check_msg_stat.py --showignored --config checkMsgStat_TrigP1Test.conf $logfile 
+
 test 66
   name HLT_physicsV6_prescaleChange
   doc Test of HLT prescale change
@@ -453,7 +498,7 @@ test 66
   pre_condition test -e ../UploadMenuKeys/prescales.txt
   pre_command ln -sf ../UploadMenuKeys/prescales.txt
   pre_command get_files -jo testPrescaleChange_postconfig.py
-  athena_cmd source ../UploadMenuKeys/exportMenuKeys.sh; athenaHLT.py -Z TrigP1Test.PrescaleChange -C 'include("testPrescaleChange_postconfig.py");fpeAuditor=True' -f root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data17_13TeV.00327265.physics_eb_zmm_egz.merged.RAW.selected._0001.data -J TrigConf::HLTJobOptionsSvc --use-database "DBServer=TRIGGERDBATN:Instance=L2:DBSMKey=${smk}:DBHLTPSKey=${hltpsk}:DBLVL1PSKey=${l1psk}"
+  athena_cmd source ../UploadMenuKeys/exportMenuKeys.sh; athenaHLT.py -Z TrigP1Test.PrescaleChange -C 'include("testPrescaleChange_postconfig.py");fpeAuditor=True' -f root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data17_13TeV.00327265.physics_eb_zmm_egz.merged.RAW.selected._0001.data -J TrigConf::HLTJobOptionsSvc --use-database "DBServer=TRIGGERDBATN:Instance=L2:DBSMKey=${smk}:DBHLTPSKey=${hltpsk}:DBLVL1PSKey=${l1psk}"
 
 test 67
   name TriggerDBAccessTest
@@ -494,7 +539,7 @@ test 74
   name HLT_mcV7_rerunLVL1_menu
   doc Run athenaHLT on all events to create trigger configuration
   checklog --config checklogTrigP1Test.conf --showexcludestats
-  athena_cmd athenaHLT.py -M -n 1  -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -o HLT_mcV7_rerunLVL1_menu  -c 'doDBConfig=True;testMCV7=True;rerunLVL1=True;trigBase="Default";enableCostForCAF=True' TriggerRelease/runHLT_standalone.py
+  athena_cmd athenaHLT.py -M -n 1  -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -o HLT_mcV7_rerunLVL1_menu  -c 'doDBConfig=True;testMCV7=True;rerunLVL1=True;trigBase="Default";enableCostForCAF=True;doValidation=True' TriggerRelease/runHLT_standalone.py
 
 test 75
   name UploadMenuKeys_MC_rerunLVL1
@@ -508,7 +553,7 @@ test 76
   name HLT_mcV7_menu
   doc Run athenaHLT on all events to create trigger configuration
   checklog --config checklogTrigP1Test.conf --showexcludestats
-  athena_cmd athenaHLT.py -M -n 1 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -o HLT_physicsV7_menu  -c 'testMCV7=True;trigBase="Default";doDBConfig=True;enableCostForCAF=True' TriggerRelease/runHLT_standalone.py
+  athena_cmd athenaHLT.py -M -n 1 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -o HLT_mcV7_menu  -c 'testMCV7=True;trigBase="Default";doDBConfig=True;enableCostForCAF=True;doValidation=True' TriggerRelease/runHLT_standalone.py
 
 test 77
   name UploadMenuKeys_MC
@@ -613,31 +658,33 @@ test 113
   athena_cmd athenaHLT.py -Z TrigP1Test.BeamSpotUpdate -n 50 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -c 'testPhysicsV7=True;doValidation=True;BeamspotFromSqlite=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py
 
 
-test 110
-  name HLT_physicsV7_ROBprefetching_off
-  doc athenaHLT on data with physicsV7 menu without ROB prefetching
-  pre_command cp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ATLASros2rob.py . 
-  athena_cmd athenaHLT.py -n 50  -L1 -m 'ATLASros2rob' -c "testPhysicsV7=True;doValidation=True" -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 TriggerRelease/runHLT_standalone.py
+test 109
+  name HLT_physicsV7_ROSsim_17000
+  doc athenaHLT on data with physicsV7 menu with ROS simulation. It uses PS keys generated with rerunL1
+  pre_condition test -e ../UploadMenuKeys_ART/prescaleKeys_17000.txt
+  pre_command cp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ATLASros2rob2018.py .
+  athena_cmd trigp1test_prescaleForROSsim.py --nevents 600 --file /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 --ros2rob ATLASros2rob2018 --keys ../UploadMenuKeys_ART/prescaleKeys_17000.txt
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
-  fullregtest REGTEST  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROBprefetching_off/trigp1test_HLT_physicsV7_ROBprefetching_off.reference
-  rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROBprefetching_off/trigp1test_HLT_physicsV7_ROBprefetching_off.root
-  checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROBprefetching_off/trigp1test_HLT_physicsV7_ROBprefetching_off.root 1 HLT
-  post_command chainDump.py -n -S  --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_17000/trigp1test_HLT_physicsV7_ROSsim_17000.reference
+  rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_17000/trigp1test_HLT_physicsV7_ROSsim_17000.root
+  checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_17000/trigp1test_HLT_physicsV7_ROSsim_17000.root 0 HLT
+  post_command chainDump.py -n -S  --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs 
+  post_test ROStest grep "ROS-" atn_test.log; cp post_test_ROStest.log ROStest.reference.new; diff ROStest.reference.new /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_17000/trigp1test_ROStest.reference 
 
-test 109
-  name HLT_physicsV7_ROBprefetching_on
-  doc athenaHLT on data with physicsV7 menu with ROB prefetching
-  pre_condition test -e ../HLT_physicsV7_ROBprefetching_off/expert-monitoring.root
-  pre_command cp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ATLASros2rob.py . 
-  athena_cmd athenaHLT.py -n 50 -L1 -m 'ATLASros2rob' -c "testPhysicsV7=True;doValidation=True" -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -C 'from AthenaCommon.AlgSequence import AlgSequence;AlgSequence().TrigSteer_HLT.enableRobRequestPreparation=True' TriggerRelease/runHLT_standalone.py
+test 110
+  name HLT_physicsV7_ROSsim_9000
+  doc athenaHLT on data with physicsV7 menu with ROS simulation. It uses PS keys generated with rerunL1
+  pre_condition test -e ../UploadMenuKeys_ART/prescaleKeys_9000.txt
+  pre_command cp /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ATLASros2rob2018.py .
+  athena_cmd trigp1test_prescaleForROSsim.py --nevents 600 --file /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 --ros2rob ATLASros2rob2018 --keys ../UploadMenuKeys_ART/prescaleKeys_9000.txt
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
-  fullregtest REGTEST  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROBprefetching_on/trigp1test_HLT_physicsV7_ROBprefetching_on.reference
-  rootcomp   ../HLT_physicsV7_ROBprefetching_off/expert-monitoring.root expert-monitoring.root
-  checkcount ../HLT_physicsV7_ROBprefetching_off/expert-monitoring.root  1 HLT
-  post_command chainDump.py -n -S  --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs 
-  post_test ROStest grep "ROS-" atn_test.log; cp post_test_ROStest.log ROStest.reference.new; diff ROStest.reference.new /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROBprefetching_on/trigp1test_ROStest.reference 
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_9000/trigp1test_HLT_physicsV7_ROSsim_9000.reference
+  rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_9000/trigp1test_HLT_physicsV7_ROSsim_9000.root          
+  checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_9000/trigp1test_HLT_physicsV7_ROSsim_9000.root 0 HLT
+  post_command chainDump.py -n -S  --rootDirs=TrigSteer_HLT --rootHists=ChainAcceptance --rootHists=NumberOfActiveTEs                                               
+  post_test ROStest grep "ROS-" atn_test.log; cp post_test_ROStest.log ROStest.reference.new; diff ROStest.reference.new /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ROSsim_9000/trigp1test_ROStest.reference
 
 test 114
   name HLT_physicsV6_nocache
@@ -645,12 +692,12 @@ test 114
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
   checkcount ../HLT_physicsV6/expert-monitoring.root 0 HLT
-  athena_cmd athenaHLT.py -f root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_8TeV.00212967.physics_eb_zee_zmumu_cc._0001.data -oHLT_physicsV6_nocache  -c 'testPhysicsV6=True;noCaching=True;HLTOutputLevel=INFO;doValidation=True;useCONDBR2=False;setGlobalTag="COMCOND-HLTP-004-03-VAL-01";setDetDescr="ATLAS-R1-2012-02-00-00";fpeAuditor=True' TriggerRelease/runHLT_standalone.py
+  athena_cmd athenaHLT.py -f root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_8TeV.00212967.physics_eb_zee_zmumu_cc._0001.data -oHLT_physicsV6_nocache  -c 'testPhysicsV6=True;noCaching=True;HLTOutputLevel=INFO;doValidation=True;useCONDBR2=False;setGlobalTag="COMCOND-HLTP-004-03-VAL-01";setDetDescr="ATLAS-R1-2012-02-00-00";fpeAuditor=True' TriggerRelease/runHLT_standalone.py
 
 test 115
   name tfTestPPV6
   doc Check tf for menu PP V6 data
-  pre_command xrdcp root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_8TeV.00212967.physics_eb_zee_zmumu_cc._0001.data .
+  pre_command xrdcp root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_8TeV.00212967.physics_eb_zee_zmumu_cc._0001.data .
   pre_condition test -e ../UploadMenuKeys/exportMenuKeys.sh
   checklog --config checklogTrigP1Test.conf --showexcludestats
   athena_cmd source ../UploadMenuKeys/exportMenuKeys.sh; BatchHLTTrf_wrap.py inputBSFile=data12_8TeV.00212967.physics_eb_zee_zmumu_cc._0001.data outputRAWFile=RAW.999999._000001.data.1 doStreaming=True filters="express" stream_out=debug connection=TRIGGERDBATN smk=${smk} lvl1ps=${l1psk} hltps=${hltpsk} outputNTUP_TRIGCOSTEFFile=NTUP_TRIGCOSTEF.root outputNTUP_TRIGCOSTL2File=NTUP_TRIGCOSTL2.root outputNTUP_TRIGRATEEFFile=NTUP_TRIGRATEEF.root outputNTUP_TRIGRATEL2File=NTUP_TRIGRATEL2.root outputHIST_HLTMONEFFile=HIST_HLTMONEF.root outputHIST_HLTMONL2File=HIST_HLTMONL2.root max_events=10
@@ -669,7 +716,7 @@ test 120
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
   # TODO: fix ref
-  fullregtest REGTEST  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ALFAMon/trigp1test_HLT_physicsV7_ALFAMon.reference
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ALFAMon/trigp1test_HLT_physicsV7_ALFAMon.reference
   rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ALFAMon/trigp1test_HLT_physicsV7_ALFAMon.root
   checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_ALFAMon/trigp1test_HLT_physicsV7_ALFAMon.root 1 HLT
   athena_cmd athenaHLT.py  -o HLT_physicsV7_ALFAMon  -n 105 -f  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data15_13TeV.00277025.physics_MinBias.merge.RAW._lb0500._SFO-1._0001.1 --log-level INFO,ERROR -c 'testPhysicsV7=True;HLTOutputLevel=INFO;doValidation=True;enableALFAMon=True;trigBase="Default";fpeAuditor=True' TriggerRelease/runHLT_standalone.py
@@ -681,7 +728,7 @@ test 121
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
   # TODO: fix ref
-  fullregtest REGTEST  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_AFP/trigp1test_HLT_physicsV7_AFP.reference
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_AFP/trigp1test_HLT_physicsV7_AFP.reference
   rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_AFP/trigp1test_HLT_physicsV7_AFP.root
   checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_AFP/trigp1test_HLT_physicsV7_AFP.root 1 HLT
   #TODO: fix file
@@ -749,21 +796,56 @@ test 159
   doc athenaHLT standalone with HLT_HIV4 menu on a HI sample
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
-# TODO: fix references
-  fullregtest REGTEST  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV4/trigp1test_HLT_HIV4.reference
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV4/trigp1test_HLT_HIV4.reference
   checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV4/trigp1test_HLT_HIV4.root 1 L2
   rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV4/trigp1test_HLT_HIV4.root
-  athena_cmd athenaHLT.py -o HLT_HIV4 -n 25 -f  '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data16_hip5TeV.00312649.physics_EnhancedBias.merge.RAW._lb0150._SFO-ALL._0001.data' -c 'testHIV4=True;rerunLVL1=False;setPrescale="None";HLTOutputLevel=INFO;doValidation=True;useCONDBR2=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py
+  athena_cmd athenaHLT.py -o HLT_HIV4 -n 50 -f  '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data16_hip5TeV.00312649.physics_EnhancedBias.merge.RAW._lb0150._SFO-ALL._0001.data' -c 'testHIV4=True;rerunLVL1=True;setPrescale="None";HLTOutputLevel=INFO;doValidation=True;useCONDBR2=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py
 #  post_command save_to_refdir.sh HLT_HIV3._0001.data /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/online/references/ATN/latest
   post_command chainDump.py -n -S
 
+test 160
+   name HLT_HIV5
+   doc athenaHLT standalone with HLT_HIV5 menu on a HI sample
+  filterlog filterREGTEST.py
+  checklog --config checklogTrigP1Test.conf --showexcludestats
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5/trigp1test_HLT_HIV5.reference
+  checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5/trigp1test_HLT_HIV5.root 1 L2
+  rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5/trigp1test_HLT_HIV5.root
+  athena_cmd athenaHLT.py -o HLT_HIV5 -n 50 -f  '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data15_hi.00287843.physics_EnhancedBias.merge.RAW._lb0226._SFO-2._0001.1' -c 'testHIV5=True;rerunLVL1=True;setPrescale="None";HLTOutputLevel=INFO;doValidation=True;useCONDBR2=True;fpeAuditor=True;setDetDescr="ATLAS-R2-2015-04-00-00";setGlobalTag="CONDBR2-HLTP-2016-01";from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags;InDetGeometryFlags.useDynamicAlignFolders.set_Value_and_Lock(False)' TriggerRelease/runHLT_standalone.py
+  post_command chainDump.py -n -S
+
+test 185
+   name HLT_HIV5_FTK
+   doc athenaHLT standalone with HIV5 menu with doFTK on a HI sample
+  filterlog filterREGTEST.py
+  checklog --config checklogTrigP1Test.conf --showexcludestats
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5_FTK/trigp1test_HLT_HIV5_FTK.reference
+  checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5_FTK/trigp1test_HLT_HIV5_FTK.root 1 L2
+  rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5_FTK/trigp1test_HLT_HIV5_FTK.root
+  athena_cmd athenaHLT.py -o HLT_HIV5_FTK -n 50 -f  '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data15_hi.00287843.physics_EnhancedBias.merge.RAW._lb0226._SFO-2._0001.1' -c 'testHIV5=True;from TriggerJobOpts.TriggerFlags import TriggerFlags;TriggerFlags.doFTK=True;rerunLVL1=True;setPrescale="None";HLTOutputLevel=INFO;doValidation=True;useCONDBR2=True;fpeAuditor=True;setDetDescr="ATLAS-R2-2015-04-00-00";setGlobalTag="CONDBR2-HLTP-2016-01";from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags;InDetGeometryFlags.useDynamicAlignFolders.set_Value_and_Lock(False)' TriggerRelease/runHLT_standalone.py
+  post_command chainDump.py -n -S
+
+
+
+test 165
+   name HLT_MCHIV5
+   doc athenaHLT standalone with HLT_MCHIV5 menu on a HI sample
+  filterlog filterREGTEST.py
+  checklog --config checklogTrigP1Test.conf --showexcludestats
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_MCHIV5/trigp1test_HLT_MCHIV5.reference
+  checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_MCHIV5/trigp1test_HLT_MCHIV5.root 1 L2
+  rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_MCHIV5/trigp1test_HLT_MCHIV5.root
+  athena_cmd athenaHLT.py -o HLT_MCHIV5 -n 50 -f  '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data15_hi.00287843.physics_EnhancedBias.merge.RAW._lb0226._SFO-2._0001.1' -c 'testMCHIV5=True;rerunLVL1=True;setPrescale="None";HLTOutputLevel=INFO;doValidation=True;useCONDBR2=True;fpeAuditor=True;setDetDescr="ATLAS-R2-2015-04-00-00";setGlobalTag="CONDBR2-HLTP-2016-01";from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags;InDetGeometryFlags.useDynamicAlignFolders.set_Value_and_Lock(False)' TriggerRelease/runHLT_standalone.py
+  post_command chainDump.py -n -S
+
+
 # ART not migrated
 #test 160
 #  name HLT_HIV3
 #  doc athenaHLT standalone with HLT_HIV3 menu on a HI sample
 #  filterlog filterREGTEST.py
 #  checklog --config checklogTrigP1Test.conf --showexcludestats
-#  fullregtest REGTEST  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_HIV3.reference
+#  fullregtest REGTEST|WARNING  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_HIV3.reference
 #  checkcount /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_HIV3.root 1 L2
 #  rootcomp   /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/trigp1test_HLT_HIV3.root
 #  athena_cmd athenaHLT.py -o HLT_HIV3 -n 25 -f  '/afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data15_hi.00287270.physics_HardProbes.daq.RAW._lb0122._SFO-1._0001.data' -c 'testHIV3=True;rerunLVL1=False;setPrescale="None";HLTOutputLevel=INFO;doValidation=True;useCONDBR2=True;fpeAuditor=True;setDetDescr="ATLAS-R2-2015-04-00-00";setGlobalTag="CONDBR2-HLTP-2016-01";from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags;InDetGeometryFlags.useDynamicAlignFolders.set_Value_and_Lock(False)' TriggerRelease/runHLT_standalone.py
@@ -805,7 +887,7 @@ test 164
   doc testing trigger results w/wo merging L2/EF, based on AthenaTrigRDO with run_standalone.py
   joboptions testAthenaL2EFMerging.py
   athena_args -c 'EvtMax=15; testPhysicsV7=True; BSRDOInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1"' 
-  #athena_args -c 'doHLT=True; useCONDBR2=False; setGlobalTag="COMCOND-HLTP-004-03-VAL-01"; setDetDescr="ATLAS-R1-2012-02-01-00"; EvtMax=15; testPhysicsV6=True; BSRDOInput="root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_8TeV.00212967.physics_eb_zee_zmumu_cc._0001.data"'
+  #athena_args -c 'doHLT=True; useCONDBR2=False; setGlobalTag="COMCOND-HLTP-004-03-VAL-01"; setDetDescr="ATLAS-R1-2012-02-01-00"; EvtMax=15; testPhysicsV6=True; BSRDOInput="root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data12_8TeV.00212967.physics_eb_zee_zmumu_cc._0001.data"'
   checklog --config checklogTriggerTest.conf --showexcludestats
  # TODO: fix reference
  checkmerge expert-monitoring.root /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/AthenaTrigBS_L2EFMerging/triggertest_AthenaTrigBS_L2EFMerging.root 0 
@@ -833,7 +915,7 @@ test 180
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
   # TODO: fix references
-  fullregtest REGTEST  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_mcV7/trigp1test_HLT_mcV7.reference
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_mcV7/trigp1test_HLT_mcV7.reference
   checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_mcV7/trigp1test_HLT_mcV7.root 1 HLT
   rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_mcV7/trigp1test_HLT_mcV7.root 
   athena_cmd athenaHLT.py -o HLT_mcV7 -n 50  -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1 -c 'testMCV7=True;rerunLVL1=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py 
@@ -845,7 +927,7 @@ test 181
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
   # TODO: fix reference
-  fullregtest REGTEST  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7/trigp1test_HLT_physicsV7.reference
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7/trigp1test_HLT_physicsV7.reference
   rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7/trigp1test_HLT_physicsV7.root
   checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7/trigp1test_HLT_physicsV7.root 1 HLT
   athena_cmd athenaHLT.py   -o HLT_physicsV7  -n 75 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00349335.physics_EnhancedBias.merge.RAW._lb0200._SFO-1._0001.1   -c 'testPhysicsV7=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True' TriggerRelease/runHLT_standalone.py
@@ -860,12 +942,24 @@ test 182
   filterlog filterREGTEST.py
   checklog --config checklogTrigP1Test.conf --showexcludestats
   # TODO: fix ref
-  fullregtest REGTEST  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_FTK/trigp1test_HLT_physicsV7_FTK.reference
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_FTK/trigp1test_HLT_physicsV7_FTK.reference
   rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_FTK/trigp1test_HLT_physicsV7_FTK.root
   checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_physicsV7_FTK/trigp1test_HLT_physicsV7_FTK.root 1 HLT
   athena_cmd athenaHLT.py   -o HLT_physicsV7_FTK  -n 30 -f  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/RAW_FTK.pool.root -c 'testPhysicsV7=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True;from TriggerJobOpts.TriggerFlags import TriggerFlags;TriggerFlags.doFTK=True' TriggerRelease/runHLT_standalone.py
   post_command chainDump.py -n -S
 
+test 184
+  name HLT_HIV5_onFTKdata
+  doc athenaHLT on data with FTK simulation with HIV5 menu with doFTK
+  filterlog filterREGTEST.py
+  checklog --config checklogTrigP1Test.conf --showexcludestats
+  # TODO: fix ref
+  fullregtest REGTEST|WARNING  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5_onFTKdata/trigp1test_HLT_HIV5_onFTKdata.reference
+  rootcomp   /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5_onFTKdata/trigp1test_HLT_HIV5_onFTKdata.root
+  checkcount /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/ref/latest/HLT_HIV5_onFTKdata/trigp1test_HLT_HIV5_onFTKdata.root 1 HLT
+  athena_cmd athenaHLT.py -o HLT_HIV5_onFTKdata  -n 30 -f  /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/RAW_FTK.pool.root -c 'testHIV5=True;HLTOutputLevel=INFO;doValidation=True;fpeAuditor=True;from TriggerJobOpts.TriggerFlags import TriggerFlags;TriggerFlags.doFTK=True' TriggerRelease/runHLT_standalone.py
+  post_command chainDump.py -n -S
+
 test 183
   name athenaHLT_LatestRun_MCV7
   doc athenaHLT on latest available run
@@ -874,4 +968,12 @@ test 183
   athena_cmd trigp1test_athenaHLT.py --nfiles=1 --nevents=100 --dir='/eos/atlas/atlastier0/rucio/data18_13TeV/physics_Main/' --modifiers="testMCV7=True;fpeAuditor=True;from PerfMonComps.PerfMonFlags import jobproperties as pmon_properties ; pmon_properties.PerfMonFlags.doSemiDetailedMonitoring=True"
   post_command chainDump.py -n -S 
 
+test 186
+  name athenaHLT_LatestRun_HIV5
+  doc athenaHLT on latest available 2018 HI run
+  filterlog filterREGTEST.py
+  checklog --config checklogTrigP1Test.conf --showexcludestats
+  athena_cmd trigp1test_athenaHLT.py --nfiles=1 --nevents=100 --dir='/eos/atlas/atlastier0/rucio/data18_hi/physics_HardProbes/' --modifiers="testHIV5=True;fpeAuditor=True;from PerfMonComps.PerfMonFlags import jobproperties as pmon_properties ; pmon_properties.PerfMonFlags.doSemiDetailedMonitoring=True"
+  post_command chainDump.py -n -S
+
 
diff --git a/Trigger/TrigValidation/TrigP1Test/share/testCheckKeys.sh b/Trigger/TrigValidation/TrigP1Test/share/testCheckKeys.sh
index 216f8b4b4d7ac1ec9aa8c4faf4885d3bcfff8159..6768799386e870d901351239b6042654612c22bf 100755
--- a/Trigger/TrigValidation/TrigP1Test/share/testCheckKeys.sh
+++ b/Trigger/TrigValidation/TrigP1Test/share/testCheckKeys.sh
@@ -40,6 +40,8 @@ elif [ "$type" == "HLT_physicsV6" ]; then
   stump="Physics_pp_v6"
 elif [ "$type" == "HLT_physicsV7" ]; then
   stump="Physics_pp_v7"
+elif [ "$type" == "HLT_HIV5" ]; then
+  stump="Physics_HI_v5"
 else 
   stump=""
 fi
diff --git a/Trigger/TrigValidation/TrigP1Test/share/testUploadMenuKeys.sh b/Trigger/TrigValidation/TrigP1Test/share/testUploadMenuKeys.sh
index 599c8f07f33ba24dbe0fa4bd7ac724b7480bea26..c6c8961741ffc45df8a8eb28cb34f2422bea941e 100755
--- a/Trigger/TrigValidation/TrigP1Test/share/testUploadMenuKeys.sh
+++ b/Trigger/TrigValidation/TrigP1Test/share/testUploadMenuKeys.sh
@@ -66,6 +66,10 @@ elif [ "$type" == "HLT_mcV7" ]; then
   stump="MC_pp_v7"
 elif [ "$type" == "HLT_mcV7_rerunLVL1" ]; then
   stump="MC_pp_v7"
+elif [ "$type" == "HLT_HIV5" ]; then
+  stump="Physics_HI_v5"
+elif [ "$type" == "HLT_HIV5_rerunLVL1" ]; then
+  stump="Physics_HI_v5"
 else 
   stump=""
 fi
@@ -87,26 +91,21 @@ hltmenu1=`find ../"${type}"_menu/ -name outputHLTconfig_\*.xml`
 echo "AthenaP1_VERSION, ${AthenaP1_VERSION}"
 #get prescale files
 
+prescale_type="tight"
 if [[ $stump =~ .*MC.* ]]; then
   menu_type="mc"
+  prescale_type="TriggerValidation"
 elif [[ $stump =~ .*Physics.* ]]; then
   menu_type="physics"
+  prescale_type="tight"
 fi
 
-get_files -xmls HLTconfig_"${stump}"_tight_"${menu_type}"_prescale_"${AthenaP1_VERSION}".xml
-hltmenu1_tight=`find . -name HLTconfig_\*_tight_\*.xml`
-
-get_files -xmls HLTconfig_"${stump}"_tightperf_"${menu_type}"_prescale_"${AthenaP1_VERSION}".xml
-hltmenu1_tightperf=`find . -name HLTconfig_\*_tightperf_\*.xml`
-
-mkdir PS_tight
-cp $l1menu PS_tight/.
-cp $hltmenu1_tight PS_tight/.
-
-mkdir PS_tightperf
-cp $l1menu PS_tightperf/.
-cp $hltmenu1_tightperf PS_tightperf/.
+get_files -xmls HLTconfig_"${stump}"_"${prescale_type}"_"${menu_type}"_prescale_"${AthenaP1_VERSION}".xml
+hltmenu1_prescale=`find . -name HLTconfig_\*_${prescale_type}_\*.xml`
 
+mkdir PS_${prescale_type}
+cp $l1menu PS_${prescale_type}/.
+cp $hltmenu1_prescale PS_${prescale_type}/.
 
 # copy the setup files to the local directory to have tests independent of each other
 cp ../"${type}"_menu/ef_Default_setup.txt ../"${type}"_menu/ef_Default_setup_setup.txt .
@@ -126,8 +125,7 @@ hlt__setup1=ef_Default_setup.xml
 # get dtd file for L1 menu
 get_files -xmls LVL1config.dtd
 l1_schema=`find . -name LVL1config.dtd`
-cp $l1_schema PS_tight/.
-cp $l1_schema PS_tightperf/.
+cp $l1_schema PS_${prescale_type}/.
 
 p1_rel="AthenaP1"
 if [ $NICOS_ATLAS_RELEASE ]
@@ -166,61 +164,34 @@ echo "rundate=${rundate}"
 cmd="/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh -up -release $p1_rel --l1_menu $l1menu --topo_menu $l1topo -hlt $hltmenu1 --hlt_setup $hlt__setup1 --name 'AthenaP1Test' -l INFO --SMcomment \"${rundate}${nightly}_${rel}\" --dbConn $DBConn -w_n 50 -w_t 60"
 
 # create script to upload keys
-echo "# setup release" >> uploadSMK_"$stump"_tight.sh
-echo "asetup AthenaP1,21.1,r${rel}" >> uploadSMK_"$stump"_tight.sh
-echo "# creating SMK" >> uploadSMK_"$stump"_tight.sh
-echo "if [ -f MenusKeys.txt ]; then" >> uploadSMK_"$stump"_tight.sh
-echo "   rm MenusKeys.txt" >> uploadSMK_"$stump"_tight.sh
-echo "fi" >> uploadSMK_"$stump"_tight.sh
-echo "Uploading SMK. It may take a while..." >> uploadSMK_"$stump"_tight.sh
-echo "$cmd &> SMK_upload.log" >> uploadSMK_"$stump"_tight.sh
-echo "if grep --quiet SEVERE SMK_upload.log; then" >> uploadSMK_"$stump"_tight.sh
-echo "  echo 'SEVERE error occured, maybe existing write lock. Please check SMK_upload.log' " >> uploadSMK_"$stump"_tight.sh
-echo "  return " >> uploadSMK_"$stump"_tight.sh
-echo "elif [ ! -f MenusKeys.txt ]; then" >> uploadSMK_"$stump"_tight.sh
-echo "  echo 'MenusKeys.txt does not exist. Something went wrong. Please check SMK_upload.log' " >> uploadSMK_"$stump"_tight.sh
-echo "  return " >> uploadSMK_"$stump"_tight.sh
-echo "fi" >> uploadSMK_"$stump"_tight.sh
-echo "smk=\`grep SM MenusKeys.txt | awk '{print \$3}' | sed 's#:##'\`" >> uploadSMK_"$stump"_tight.sh
-echo "echo 'Created SMK ' \$smk" >> uploadSMK_"$stump"_tight.sh
-echo "# upload prescaled" >> uploadSMK_"$stump"_tight.sh
-echo "Uploading prescale keys. It may take another while..." >> uploadSMK_"$stump"_tight.sh
-echo "/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh -dbConn $DBConn -psup PS_tight -smk \${smk} -w_n 50 -w_t 60 &> PS_upload.log" >> uploadSMK_"$stump"_tight.sh
-echo "if grep -v 'LVL1config.dtd' PS_upload.log | grep --quiet SEVERE ; then" >> uploadSMK_"$stump"_tight.sh
-echo "  echo 'SEVERE error occured, maybe existing write lock. Please check PS_upload.log' " >> uploadSMK_"$stump"_tight.sh
-echo "  return " >> uploadSMK_"$stump"_tight.sh
-echo "fi" >> uploadSMK_"$stump"_tight.sh
-echo "l1psk=\`grep  'INFO: Prescale set saved with id' PS_upload.log | awk '{print \$7}' | sed 's/\.//g'\`" >> uploadSMK_"$stump"_tight.sh
-echo "hltpsk=\`grep 'INFO: HLT Prescale set saved with id' PS_upload.log | awk '{print \$8}' | sed 's/\.//g'\`" >> uploadSMK_"$stump"_tight.sh
-echo "echo 'L1 PSK ' \$l1psk ', HLT PSK ' \$hltpsk" >> uploadSMK_"$stump"_tight.sh
-
-echo "# setup release" >> uploadSMK_"$stump"_tightperf.sh
-echo "asetup AthenaP1,21.1,r${rel}" >> uploadSMK_"$stump"_tightperf.sh
-echo "# creating SMK" >> uploadSMK_"$stump"_tightperf.sh
-echo "if [ -f MenusKeys.txt ]; then" >> uploadSMK_"$stump"_tightperf.sh
-echo "   rm MenusKeys.txt" >> uploadSMK_"$stump"_tightperf.sh
-echo "fi" >> uploadSMK_"$stump"_tightperf.sh
-echo "Uploading SMK. It may take a while..." >> uploadSMK_"$stump"_tightperf.sh
-echo "$cmd &> SMK_upload.log" >> uploadSMK_"$stump"_tightperf.sh
-echo "if grep --quiet SEVERE SMK_upload.log; then" >> uploadSMK_"$stump"_tightperf.sh
-echo "  echo 'SEVERE error occured, maybe existing write lock. Please check SMK_upload.log' " >> uploadSMK_"$stump"_tightperf.sh
-echo "  return " >> uploadSMK_"$stump"_tightperf.sh
-echo "elif [ ! -f MenusKeys.txt ]; then" >> uploadSMK_"$stump"_tightperf.sh
-echo "  echo 'MenusKeys.txt does not exist. Something went wrong. Please check SMK_upload.log' " >> uploadSMK_"$stump"_tightperf.sh
-echo "  return " >> uploadSMK_"$stump"_tightperf.sh
-echo "fi" >> uploadSMK_"$stump"_tightperf.sh
-echo "smk=\`grep SM MenusKeys.txt | awk '{print \$3}' | sed 's#:##'\`" >> uploadSMK_"$stump"_tightperf.sh
-echo "echo 'Created SMK ' \$smk" >> uploadSMK_"$stump"_tightperf.sh
-echo "# upload prescaled" >> uploadSMK_"$stump"_tightperf.sh
-echo "Uploading prescale keys. It may take another while..." >> uploadSMK_"$stump"_tightperf.sh
-echo "/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh -dbConn $DBConn -psup PS_tightperf -smk \${smk} -w_n 50 -w_t 60 &> PS_upload.log" >> uploadSMK_"$stump"_tightperf.sh
-echo "if grep -v 'LVL1config.dtd' PS_upload.log | grep --quiet SEVERE ; then" >> uploadSMK_"$stump"_tightperf.sh
-echo "  echo 'SEVERE error occured, maybe existing write lock. Please check PS_upload.log' " >> uploadSMK_"$stump"_tightperf.sh
-echo "  return " >> uploadSMK_"$stump"_tightperf.sh
-echo "fi" >> uploadSMK_"$stump"_tightperf.sh
-echo "l1psk=\`grep  'INFO: Prescale set saved with id' PS_upload.log | awk '{print \$7}' | sed 's/\.//g'\`" >> uploadSMK_"$stump"_tightperf.sh
-echo "hltpsk=\`grep 'INFO: HLT Prescale set saved with id' PS_upload.log | awk '{print \$8}' | sed 's/\.//g'\`" >> uploadSMK_"$stump"_tightperf.sh
-echo "echo 'L1 PSK ' \$l1psk ', HLT PSK ' \$hltpsk" >> uploadSMK_"$stump"_tightperf.sh
+echo "# setup release" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "asetup AthenaP1,21.1,r${rel}" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "# creating SMK" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "if [ -f MenusKeys.txt ]; then" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "   rm MenusKeys.txt" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "fi" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "echo 'Uploading SMK. It may take a while...'" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh -up -release "$p1_rel" --l1_menu "$l1menu" --topo_menu "$l1topo" -hlt "$hltmenu1" --hlt_setup "$hlt__setup1" --name '"$stump"_"$prescale_type",AthenaP1Test' -l INFO --SMcomment '"${rundate}${nightly}_${rel}"' --dbConn TRIGGERDBREPR -onl  -w_n 50 -w_t 60 &> SMK_upload.log" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "if grep --quiet SEVERE SMK_upload.log; then" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "  echo 'SEVERE error occured, maybe existing write lock. Please check SMK_upload.log' " >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "  return " >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "elif [ ! -f MenusKeys.txt ]; then" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "  echo 'MenusKeys.txt does not exist. Something went wrong. Please check SMK_upload.log' " >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "  return " >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "fi" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "smk=\`grep SM MenusKeys.txt | awk '{print \$3}' | sed 's#:##'\`" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "echo 'Created SMK ' \$smk" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "# upload prescaled" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "echo 'Uploading prescale keys. It may take another while...'" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh --dbConn TRIGGERDBREPR -psup PS_"$prescale_type" -smk \${smk} -w_n 50 -w_t 60 &> PS_upload.log" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "if grep -v 'LVL1config.dtd' PS_upload.log | grep --quiet SEVERE ; then" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "  echo 'SEVERE error occured, maybe existing write lock. Please check PS_upload.log' " >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "  return " >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "fi" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "l1psk=\`grep  'INFO: Prescale set saved with id' PS_upload.log | awk '{print \$7}' | sed 's/,//g' | sed 's/\.//g'\`" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "hltpsk=\`grep 'INFO: HLT Prescale set saved with id' PS_upload.log | awk '{print \$8}' | sed 's/,//g' | sed 's/\.//g'\`" >> uploadSMK_"$stump"_"$prescale_type".sh
+echo "echo 'L1 PSK ' \$l1psk ', HLT PSK ' \$hltpsk" >> uploadSMK_"$stump"_"$prescale_type".sh
+
 
 if [ $noUpload -eq 1 ]; then
   exit 0
@@ -257,8 +228,8 @@ echo "Uploading prescale keys..."
 # the upload of the xmls is now done standalone following the discussion on ATR-16799
 
 # test checking out RB with atnight user
-ART_dir=${PWD}
-echo 'ART_dir: '${ART_dir}
+TrigP1Test_ART_dir=${PWD}
+echo 'TrigP1Test_ART_dir: '${TrigP1Test_ART_dir}
 MENU='Physics_pp_v7'
 echo 'Menu:' ${MENU}
 export ATLAS_LOCAL_ROOT_BASE="/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase"
@@ -270,25 +241,74 @@ echo 'RB_dir: '${RB_dir}
 echo 'l1menu: '${l1menu}
 echo 'l1topo: '${l1topo}
 echo 'hltmenu: '${hltmenu1}
-cd ${RB_dir}/scripts
+cd TrigMenuRulebook/scripts
+
+#try to remove problematic link
+rm TrigMenuRulebook
+cp -r ../python TrigMenuRulebook
+
 rm -f l1.xml hlt.xml
 
-ln -s ${ART_dir}/${l1menu}   l1.xml
-ln -s ${ART_dir}/${hltmenu1}   hlt.xml
+ln -s ../../${l1menu}   l1.xml
+ln -s ../../${hltmenu1}   hlt.xml
 ls -alhtr
 
-#TODO: configure RB properly, which lumi point?
-sed -i -e 's/ignoreErrors = False/ignoreErrors = True/g' runOptions.py
-./runRuleBook.py 20000
-cd ${ART_dir}
+# RB configured to ingnore errors and leave unprescaled any new chain not yet defined in RB. It won't try to copy keys to P1
+sed -i -e 's/ignoreErrors\s*=\s*False/ignoreErrors = True/g' runOptions.py
+sed -i -e 's/doUnprescaledIfUndefined\s*=\s*False/doUnprescaledIfUndefined = True/g' runOptions.py
+sed -i -e 's/doUseOnline\s*=\s*True/doUseOnline = False/g' runOptions.py
+sed -i -e 's/doPbPb\s*=\s*True/doPbPb = False/g' runOptions.py
+
+./runRuleBook.py 17000
+cd ../..
+PSdir=`find TrigMenuRulebook/scripts -name "prescales_*" -type d`
+echo "PSdir: "${PSdir}
+rm $PSdir/Set_*.xml
+rm $PSdir/*Emittance*
+rm $PSdir/*Standby*
+ls $PSdir
+
+# upload PS keys
+cmd="/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh --dbConn $DBConn -psup $PSdir -smk $smk -w_n 50 -w_t 60"
+echo $cmd " &> uploadPSK_prescaled.log"
+eval $cmd &> uploadPSK_prescaled.log
+
+hltpsk2=`grep 'INFO: HLT Prescale set saved with id' uploadPSK_prescaled.log | sed 's#.*: \([0-9]*\)\.#\1#'`
+l1psk2=`grep 'INFO: Prescale set saved with id' uploadPSK_prescaled.log | sed 's#.*: \([0-9]*\)\.#\1#'`
+if [ -z "$hltpsk2" ] || [ -z "$l1psk2" ]; then
+    echo "ERROR Upload of prescale key failed"
+    echo 'In ./uploadPSK_prescaled.log:'
+    grep "Can't obtain write lock" uploadPSK_prescaled.log
+    grep "SEVERE" uploadPSK_prescaled.log
+    rm -rf TrigMenuRulebook
+    exit 1
+fi
+
+echo "smk=${smk}" > prescaleKeys_17000.txt
+echo "l1psk=${l1psk2}" >> prescaleKeys_17000.txt
+echo "hltpsk=${hltpsk2}" >> prescaleKeys_17000.txt
+echo "echo 'setting these keys: SMK ' \$smk ', L1 PSK ' \$l1psk ', HLT PSK ' \$hltpsk  " >> prescaleKeys_17000.txt
+echo "Successfully uploaded prescales: l1psk=${l1psk2} and hltpsk=${hltpsk2}"
+
+rm uploadPSK_prescaled.log
+
+cd TrigMenuRulebook/scripts
+rm -r prescales_*
+
+./runRuleBook.py 9000
+cd ../..
 PSdir=`find TrigMenuRulebook/scripts -name "prescales_*" -type d`
 echo "PSdir: "${PSdir}
 rm $PSdir/Set_*.xml
+rm $PSdir/*Emittance*
+rm $PSdir/*Standby*
 ls $PSdir
 
 # upload PS keys
-#/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh -dbConn $DBConn -psup /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/Rules -smk $smk -w_n 50 -w_t 60 &> uploadPSK_prescaled.log
-/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh -dbConn $DBConn -psup $PSdir -smk $smk -w_n 50 -w_t 60 &> uploadPSK_prescaled.log
+
+cmd="/afs/cern.ch/user/a/attrgcnf/public/TriggerTool/cmake/run_TriggerTool_MenuExperts.sh --dbConn $DBConn -psup $PSdir -smk $smk -w_n 50 -w_t 60"
+echo $cmd " &> uploadPSK_prescaled.log"
+eval $cmd &> uploadPSK_prescaled.log
 hltpsk2=`grep 'INFO: HLT Prescale set saved with id' uploadPSK_prescaled.log | sed 's#.*: \([0-9]*\)\.#\1#'`
 l1psk2=`grep 'INFO: Prescale set saved with id' uploadPSK_prescaled.log | sed 's#.*: \([0-9]*\)\.#\1#'`
 if [ -z "$hltpsk2" ] || [ -z "$l1psk2" ]; then
@@ -296,12 +316,15 @@ if [ -z "$hltpsk2" ] || [ -z "$l1psk2" ]; then
     echo 'In ./uploadPSK_prescaled.log:'
     grep "Can't obtain write lock" uploadPSK_prescaled.log
     grep "SEVERE" uploadPSK_prescaled.log
+    rm -rf TrigMenuRulebook
     exit 1
 fi
 
-echo "smk=${smk}" > prescaleKeys.txt
-echo "l1psk=${l1psk2}" >> prescaleKeys.txt
-echo "hltpsk=${hltpsk2}" >> prescaleKeys.txt
+echo "smk=${smk}" > prescaleKeys_9000.txt
+echo "l1psk=${l1psk2}" >> prescaleKeys_9000.txt
+echo "hltpsk=${hltpsk2}" >> prescaleKeys_9000.txt
+echo "echo 'setting these keys: SMK ' \$smk ', L1 PSK ' \$l1psk ', HLT PSK ' \$hltpsk  " >> prescaleKeys_9000.txt
+echo "Successfully uploaded prescales: l1psk=${l1psk2} and hltpsk=${hltpsk2}"
 
 rm -rf TrigMenuRulebook
 
diff --git a/Trigger/TrigValidation/TrigP1Test/share/trigp1test_athenaHLT.py b/Trigger/TrigValidation/TrigP1Test/share/trigp1test_athenaHLT.py
index 5c1e8fdd707f9a1e77c75415c046993bb65815cc..8cbb3140c96b2dd7cecd4614c7ba2777483927d1 100755
--- a/Trigger/TrigValidation/TrigP1Test/share/trigp1test_athenaHLT.py
+++ b/Trigger/TrigValidation/TrigP1Test/share/trigp1test_athenaHLT.py
@@ -4,6 +4,40 @@
 from glob import glob
 from fnmatch import fnmatch
 from subprocess import Popen, PIPE, STDOUT, check_call
+from CoolConvUtilities.AtlCoolLib import indirectOpen
+from PyCool import cool
+
+class CoolDB:
+   """Cache for COOL db conneciton objects"""
+   cooldbs = {}
+   
+   @classmethod
+   def get(cls, dbname):
+      if not dbname in cls.cooldbs: 
+         cls.cooldbs[dbname] = indirectOpen(dbname,readOnly=True,oracle=True)
+
+      return cls.cooldbs[dbname]
+
+# Helpers to convert validity key
+def toRun(validity):
+   return (validity >> 32)
+
+def getLastPhysicsRuns(N=1):
+   """Return the last N runs with ReadyForPhysics"""
+
+   db = CoolDB.get("COOLONL_TDAQ/CONDBR2")
+   f = db.getFolder("/TDAQ/RunCtrl/DataTakingMode")
+   objs = f.browseObjects(cool.ValidityKeyMin, cool.ValidityKeyMax, cool.ChannelSelection(0))
+   lastrun = []
+   while objs.goToNext():
+      obj= objs.currentRef()
+      if obj.payload()['ReadyForPhysics']==0: continue
+      lastrun.append(toRun(obj.since()))
+
+   return lastrun[len(lastrun)-N:]
+
+
+
  
 #EOS walking Code courtesy of James Robinson
 def get_file_list( DATAPATH ) :
@@ -55,16 +89,32 @@ def main():
   (opts, args) = parser.parse_args()
   
   runs = get_file_list(opts.dir)
-  last_run_files = get_file_list(runs[-1] + "/*/")
-  subset = []
-  for i in range(0,opts.nfiles):
-    subset.append('root://eosatlas.cern.ch//' + last_run_files[i])
-  print subset 
+  physics_runs = getLastPhysicsRuns(100)
+  physics_runs = [str(x) for x in physics_runs]
+  good_runs = []
+  for r in runs:
+     good=False
+     for p in physics_runs:
+        if p in r:
+          good=True
+     if(good):
+        good_runs += [r]
+  runs = good_runs
+
+  if(len(runs)==0):
+     print " FATAL : no run found"
+    
+  else:
+     last_run_files = get_file_list(runs[-1] + "/*/")
+     subset = []
+     for i in range(0,opts.nfiles):
+        subset.append('root://eosatlas.cern.ch/' + last_run_files[i])
+     print subset 
 
-  trigCmd = "athenaHLT.py -n " + str(opts.nevents) + " -f \"" + str(subset) + "\" -c \"" + opts.modifiers + "\" TriggerRelease/runHLT_standalone.py"
-  trigCmdEsc = trigCmd.replace("\\","\\\\").replace("\"","\\\"")#For output to echo
-  check_call("echo \"" + trigCmdEsc + "\"", shell=True)#Call echo rather than print so that it completes first
-  check_call(trigCmd, shell=True)
+     trigCmd = "athenaHLT.py -n " + str(opts.nevents) + " -f \"" + str(subset) + "\" -c \"" + opts.modifiers + "\" TriggerRelease/runHLT_standalone.py"
+     trigCmdEsc = trigCmd.replace("\\","\\\\").replace("\"","\\\"")#For output to echo
+     check_call("echo \"" + trigCmdEsc + "\"", shell=True)#Call echo rather than print so that it completes first
+     check_call(trigCmd, shell=True)
 
 if __name__ == "__main__":
   main()
diff --git a/Trigger/TrigValidation/TrigP1Test/share/trigp1test_prescaleForROSsim.py b/Trigger/TrigValidation/TrigP1Test/share/trigp1test_prescaleForROSsim.py
new file mode 100755
index 0000000000000000000000000000000000000000..7bac066a680976556d76a382a1c4e566f775ffa9
--- /dev/null
+++ b/Trigger/TrigValidation/TrigP1Test/share/trigp1test_prescaleForROSsim.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+#Script to run athenaHLT from DB with physics prescales and ROS simulation
+
+from subprocess import Popen, PIPE, STDOUT, check_call
+
+def main():
+
+  from optparse import OptionParser
+  parser = OptionParser()
+  parser.add_option("--file", help="Input file", default='')
+  parser.add_option("--nevents", help="Number of max events",
+        type='int', default=-1)
+  parser.add_option("--ros2rob", help="ros2rob map", default='')
+  parser.add_option("--keys", help="file to export keys", default='')
+  parser.add_option("--db", help="database", default="TRIGGERDBART")
+  (opts, args) = parser.parse_args()
+
+  file_handle = open(opts.keys, 'r')
+  lines_list = file_handle.readlines()
+  smk = -1
+  l1ps = -1
+  hltps = -1
+  for line in lines_list:
+     if "smk=" in line:
+        smk = int(line.split("=")[1])
+     elif "l1psk=" in line:
+        l1ps = int(line.split("=")[1])
+     elif "hltpsk=" in line:
+        hltps = int(line.split("=")[1])
+
+  if smk == -1 or l1ps == -1 or hltps == -1:
+     print "keys not found"
+     exit()
+
+  trigCmd = "unset FRONTIER_SERVER; athenaHLT.py -n " + str(opts.nevents) + " -f " + str(opts.file) + " -J TrigConf::HLTJobOptionsSvc -L1 -m \"" + str(opts.ros2rob) + "\" --use-database --db-type \"Coral\" --db-server \"" +  str(opts.db) + "\" --db-smkey " + str(smk) + " --db-hltpskey " + str(hltps) + " --db-extra \"{\'lvl1key\': " + str(l1ps) + "}\""
+
+  trigCmdEsc = trigCmd.replace("\\","\\\\").replace("\"","\\\"")#For output to echo
+  check_call("echo \"" + trigCmdEsc + "\"", shell=True)#Call echo rather than print so that it completes first
+  check_call(trigCmd, shell=True)
+
+if __name__ == "__main__":
+  main()
+
diff --git a/Trigger/TrigValidation/TrigP1Test/test/TrigP1Test_TestConfiguration.xml b/Trigger/TrigValidation/TrigP1Test/test/TrigP1Test_TestConfiguration.xml
deleted file mode 100644
index 89a63ec56dfc179dff5ce3b36f52f8f6e795194c..0000000000000000000000000000000000000000
--- a/Trigger/TrigValidation/TrigP1Test/test/TrigP1Test_TestConfiguration.xml
+++ /dev/null
@@ -1,752 +0,0 @@
-<?xml version="1.0"?>  
-<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd">
-<!--
- ***************************************************************************
- *
- *               TrigP1Test_TestConfiguration.xml.autoconf
- *
- * This file is used as input to test-xml-autoconf.py during the build.
- * It will create TrigP1Test_TestConfiguraton.xml on-the-fly, which is
- * used by ATN and RTT tests.
- *
- * For detailed syntax see: TrigValTools/bin/test-xml-autoconf.py
- *
- ***************************************************************************
- -->
-<!-- NB validate this file here before commiting to svn:
- /afs/cern.ch/user/r/rtt/public/xmlvalidate.py TrigP1Test_TestConfiguration.xml
- -->
-
-<unifiedTestConfiguration>
-    
-    <!-- ATN tests -->
-    <!--
-     **************************************************************************
-     *
-     * This file defines these test suites: 
-     * TP1core 
-     * TP1cos[1-3] (no need for serialiasation) 
-     * TP1mc TP1phys[1-4] (only 1&2 need to be serial) 
-     * TP1hi 
-     * TP1var[1-3]
-     * TP1menu 
-     * TP1menuRL1
-     * TP1pures 
-     * TP1L2EFmerg
-     * 
-     * Note that for the summary html table to run  we need to have at least one test for each suite. 
-     * This has been arranged in all projects,  but be carefully when editing 
-     *
-     * Marked the tests that are effectively off due to the nighly exclude tag set to .* with:  <!- - OFF - -> 
-     * these might go/be deleted during the next cleanup I assume - leave that decision up to Carlos 
-     *
-     ***************************************************************************
-     -->
-    
-    <atn>
-        
-        
-        <TEST name="HelloWorldHLT" type="script" suite="TP1core">
-            <options_atn>trigtest.pl --cleardir --test HelloWorldHLT --rundir HelloWorldHLT --conf TrigP1Test.conf</options_atn>
-            <timelimit>5</timelimit>
-            <expectations>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="HelloWorldHLT_run_stop_run" type="script" suite="TP1core">
-            <options_atn>trigtest.pl --cleardir --test HelloWorldHLT_run_stop_run --rundir HelloWorldHLT_run_stop_run --conf TrigP1Test.conf</options_atn>
-            <timelimit>10</timelimit>
-            <expectations>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="AthenaP1RDOtoBS" type="script" suite="TP1core"> 
-            <options_atn>trigtest.pl --cleardir --test AthenaP1RDOtoBS --rundir AthenaP1RDOtoBS --conf TrigP1Test.conf</options_atn> 
-            <timelimit>20</timelimit> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="HLT_HIV4" type="script" suite="TP1hi"> 
-            <options_atn>trigtest.pl --cleardir --test HLT_HIV4  --rundir HLT_HIV4 --conf TrigP1Test.conf</options_atn> 
-            <timelimit>40</timelimit> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST>  
-        <TEST name="HLT_HIV3" type="script" suite="TP1hi"> 
-            <options_atn>trigtest.pl --cleardir --test HLT_HIV3  --rundir HLT_HIV3 --conf TrigP1Test.conf</options_atn> 
-            <timelimit>35</timelimit> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST>  
-        
-        <!-- End of physics Heavy ION menu chain --> 
-        
-        
-        <TEST name="HLT_physicsV7_COS" type="script" suite="TP1cos1"> 
-            <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_COS --rundir HLT_physicsV7_COS --conf TrigP1Test.conf</options_atn> 
-            <timelimit>20</timelimit> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST>
-          
-        
-        <TEST name="HLT_physicsV7_COS_2016MUONS" type="script" suite="TP1cos2"> 
-            <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_COS_2016MUONS --rundir HLT_physicsV7_COS_2016MUONS --conf TrigP1Test.conf</options_atn> 
-            <timelimit>20</timelimit> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST>
-        
-        <TEST name="HLT_physicsV7_COS_2016IDCOSMICS" type="script" suite="TP1cos3"> 
-            <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_COS_2016IDCOSMICS --rundir HLT_physicsV7_COS_2016IDCOSMICS --conf TrigP1Test.conf</options_atn> 
-            <timelimit>30</timelimit>  
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST>
-        
-        
-        
-        <!-- End of physics COSMICS menu chain --> 
-        
-        
-        
-        
-        
-        <TEST name="HLT_mcV7" type="script" suite="TP1mc">
-            <options_atn>trigtest.pl --cleardir --test HLT_mcV7 --rundir HLT_mcV7 --conf TrigP1Test.conf</options_atn>
-            <timelimit>50</timelimit>      
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-
-        
-        
-        <!-- end of MC chain of tests -->
-        
-        
-        <TEST name="HLT_physicsV7" type="script" suite="TP1phys1"> 
-            <options_atn>trigtest.pl --cleardir --test HLT_physicsV7 --rundir HLT_physicsV7 --conf TrigP1Test.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="Reco_tf_physicsV7_savedBS" type="script" suite="TP1phys1"> 
-            <options_atn>trigtest.pl --cleardir --test Reco_tf_physicsV7_savedBS --rundir Reco_tf_physicsV7_savedBS --conf TrigP1Test.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="RAWtoESD_physicsV7" type="script" suite="TP1phys1"> 
-            <options_atn>trigtest.pl --cleardir  --test RAWtoESD_physicsV7 --rundir RAWtoESD_physicsV7 --conf TrigP1Test.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="TrigEDMCheck_physicsV7" type="script" suite="TP1phys1"> 
-            <options_atn>trigtest.pl --cleardir  --test TrigEDMCheck_physicsV7 --rundir TrigEDMCheck_physicsV7 --conf TrigP1Test.conf</options_atn> 
-            <timelimit>10</timelimit>           
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="TrigDecTool_physicsV7" type="script" suite="TP1phys1"> 
-            <options_atn>trigtest.pl --cleardir  --test TrigDecTool_physicsV7 --rundir TrigDecTool_physicsV7 --conf TrigP1Test.conf</options_atn> 
-            <timelimit>10</timelimit> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="HLT_physicsV7_L1Topo_data" type="script" suite="TP1phys2"> 
-            <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_L1Topo_data --rundir HLT_physicsV7_L1Topo_data --conf TrigP1Test.conf</options_atn> 
-            <timelimit>20</timelimit> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-
-        <TEST name="HLT_physicsV7_FTK" type="script" suite="TP1phys2"> 
-            <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_FTK --rundir HLT_physicsV7_FTK --conf TrigP1Test.conf</options_atn> 
-            <timelimit>20</timelimit> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-
-        
-        <TEST name="HLT_physicsV7_ALFAMon" type="script" suite="TP1phys2"> 
-            <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_ALFAMon --rundir HLT_physicsV7_ALFAMon --conf TrigP1Test.conf</options_atn> 
-            <timelimit>20</timelimit> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-
-        <TEST name="HLT_physicsV7_DataScouting" type="script" suite="TP1phys2"> 
-            <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_DataScouting --rundir HLT_physicsV7_DataScouting --conf TrigP1Test.conf</options_atn> 
-            <timelimit>20</timelimit> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="HLT_physicsV7_rerunLVL1" type="script" suite="TP1phys3"> 
-            <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_rerunLVL1 --rundir HLT_physicsV7_rerunLVL1 --conf TrigP1Test.conf</options_atn> 
-            <timelimit>45</timelimit> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="AthenaP1BS_standalone" type="script" suite="TP1phys4">
-            <options_atn>trigtest.pl --cleardir --test AthenaP1BS_standalone  --rundir AthenaP1BS_standalone --conf TrigP1Test.conf</options_atn>
-            <timelimit>45</timelimit>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="HLT_physicsV7_magField_on_off_on" type="script" suite="TP1phys4">
-            <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_magField_on_off_on --rundir HLT_physicsV7_magField_on_off_on --conf TrigP1Test.conf</options_atn>
-            <timelimit>35</timelimit> 
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <!-- End of physics menu chain --> 
-        
-        
-        
-        
-        
-        
-        <!--  chain of test with various data, menu and detector conditions -->
-        
-        <TEST name="HLT_physicsV7_run_stop_run" type="script" suite="TP1var3">
-            <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_run_stop_run --rundir HLT_physicsV7_run_stop_run --conf TrigP1Test.conf</options_atn>
-            <timelimit>40</timelimit>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="HLT_physicsV7_beamspot" type="script" suite="TP1var3">
-            <options_atn>trigtest.pl --cleardir  --test HLT_physicsV7_beamspot --rundir HLT_physicsV7_beamspot --conf TrigP1Test.conf</options_atn>
-            <timelimit>25</timelimit>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        
-        
-        
-        <!-- End of various  data, menu and detector conditions chain -->
-        
-        
-        
-        
-        <!--  chain of test for automatic menu uploading to trigger DB  -->
-        
-        <TEST name="HLT_physicsV7_menu" type="script" suite="TP1menu">
-            <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_menu --rundir HLT_physicsV7_menu --conf TrigP1Test.conf</options_atn>
-            <timelimit>40</timelimit>
-            <platform>opt</platform>
-            <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        
-        <TEST name="UploadMenuKeys" type="script" suite="TP1menu">
-            <options_atn>trigtest.pl --cleardir  --test UploadMenuKeys --rundir UploadMenuKeys --conf TrigP1Test.conf</options_atn>
-            <timelimit>120</timelimit>
-            <platform>opt</platform>
-            <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude>
-            <!--<mailto>joerg.stelzer@cern.ch</mailto>-->    
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="HLT_physicsV7_menu_rerundb" type="script" suite="TP1menu">
-            <options_atn>trigtest.pl --cleardir  --test HLT_physicsV7_menu_rerundb --rundir HLT_physicsV7_menu_rerundb --conf TrigP1Test.conf</options_atn>
-            <timelimit>40</timelimit>
-            <platform>opt</platform>
-            <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        
-        <TEST name="HLT_physicsV7_rerun" type="script" suite="TP1menu">
-            <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_rerun --rundir HLT_physicsV7_rerun --conf TrigP1Test.conf</options_atn>
-            <timelimit>40</timelimit> 
-            <platform>opt</platform>
-            <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <!-- CheckKeysV7 needs HLT_physicsV7_rerun -->
-        <TEST name="CheckKeysV7" type="script" suite="TP1menu">
-            <options_atn>trigtest.pl --cleardir  --test CheckKeysV7 --rundir CheckKeysV7 --conf TrigP1Test.conf</options_atn>
-            <timelimit>180</timelimit>     
-            <mailto>joerg.stelzer@cern.ch</mailto> 
-            <platform>opt</platform>
-            <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="HLT_physicsV7_rerunLVL1_menu" type="script" suite="TP1menuRL1">
-            <options_atn>trigtest.pl --cleardir --test HLT_physicsV7_rerunLVL1_menu --rundir HLT_physicsV7_rerunLVL1_menu --conf TrigP1Test.conf</options_atn>
-            <timelimit>59</timelimit>
-            <platform>opt</platform>
-            <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        
-        <TEST name="UploadMenuKeys_rerunLVL1" type="script" suite="TP1menuRL1">
-            <options_atn>trigtest.pl --cleardir  --test UploadMenuKeys_rerunLVL1 --rundir UploadMenuKeys_rerunLVL1 --conf TrigP1Test.conf</options_atn>
-            <timelimit>120</timelimit>
-            <!--<mailto>joerg.stelzer@cern.ch</mailto>-->    
-            <platform>opt</platform>
-            <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude>
-            <prerequisite>TP1menu</prerequisite>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="HLT_physicsV7_rerunLVL1_menu_rerundb" type="script" suite="TP1menuRL1">
-            <options_atn>trigtest.pl --cleardir  --test HLT_physicsV7_rerunLVL1_menu_rerundb --rundir HLT_physicsV7_rerunLVL1_menu_rerundb --conf TrigP1Test.conf</options_atn>
-            <timelimit>59</timelimit>
-            <platform>opt</platform>
-            <nightly_exclude> MIG LCG EXP CMAKE 22 20.99 </nightly_exclude>
-            <prerequisite>TP1menu</prerequisite>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        
-        
-        
-        
-        
-        <!-- End of menu uploading test chain -->
-        
-        
-        
-        
-        
-        
-        <!--  A "short" chain of tests on data with the T0 reco release -->
-        
-        
-        <TEST name="Trigreco_physicsV7_currentT0" type="script" suite="TP1var1"> 
-            <options_atn>trigtest.pl --cleardir --test Trigreco_physicsV7_currentT0 --rundir Trigreco_physicsV7_currentT0 --conf TrigP1Test.conf</options_atn> 
-            <timelimit>45</timelimit> 
-            <nightly_exclude> MIG LCG EXP CMAKE 22 21 20.99 </nightly_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="TrigEDMCheck_physicsV7_currentT0_ESD" type="script" suite="TP1var1"> 
-            <options_atn>trigtest.pl --cleardir --test TrigEDMCheck_physicsV7_currentT0_ESD --rundir TrigEDMCheck_physicsV7_currentT0_ESD --conf TrigP1Test.conf</options_atn> 
-            <timelimit>10</timelimit> 
-            <nightly_exclude> MIG LCG EXP CMAKE 22 21 20.99 </nightly_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="TrigEDMCheck_physicsV7_currentT0_AOD" type="script" suite="TP1var1"> 
-            <options_atn>trigtest.pl --cleardir --test TrigEDMCheck_physicsV7_currentT0_AOD --rundir TrigEDMCheck_physicsV7_currentT0_AOD --conf TrigP1Test.conf</options_atn> 
-            <timelimit>10</timelimit> 
-            <nightly_exclude> MIG LCG EXP CMAKE 22 21 20.99 </nightly_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="Trigreco_dbgstream_T0" type="script" suite="TP1var2"> 
-            <options_atn>trigtest.pl --cleardir --test Trigreco_dbgstream_T0  --rundir Trigreco_dbgstream_T0 --conf TrigP1Test.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <nightly_exclude> MIG LCG EXP CMAKE 22 21 20.99 </nightly_exclude>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        
-        
-        
-        
-        <!-- End of ofline reconstruction chain -->
-        
-        
-        
-        
-        <!--  A short chain of tests onSteering and Data access -->
-        
-        
-        <TEST name="pureSteering_ecodes" type="script" suite="TP1pures">
-            <options_atn>trigtest.pl --cleardir --test pureSteering_ecodes --rundir pureSteering_ecodes --conf TrigP1Test.conf</options_atn>
-            <timelimit>10</timelimit>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="pureSteering_prescaling" type="script" suite="TP1pures">
-            <options_atn>trigtest.pl --cleardir --test pureSteering_prescaling --rundir pureSteering_prescaling --conf TrigP1Test.conf</options_atn>
-            <timelimit>10</timelimit>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="pureSteering" type="script" suite="TP1pures">
-            <options_atn>trigtest.pl --cleardir --test pureSteering --rundir pureSteering --conf TrigP1Test.conf</options_atn>
-            <timelimit>10</timelimit>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="AthenaTrigBS_L2EFMerging" type="script" suite="TP1L2EFmerg"> 
-            <options_atn>trigtest.pl --test AthenaTrigBS_L2EFMerging --run AthenaTrigBS_L2EFMerging --conf TrigP1Test.conf</options_atn> 
-            <timelimit>60</timelimit> 
-            <author>TAPM validation</author>
-            <mailto> francesca.pastore@cern.ch </mailto> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        
-        <!-- End of steering chain -->
-        
-        
-        
-        <!-- End of data chain --> 
-        
-        <TEST name="atn_timeline" type="script" suite="TP1">
-            <doc>ATN timeline</doc>
-            <options_atn>atn_timeline.py --atn -p TrigP1Test </options_atn>
-            <timelimit>2</timelimit>
-            <author>Frank Winklmeier</author>
-            <prerequisite>TP1mc</prerequisite>
-            <prerequisite>TP1core</prerequisite>
-            <prerequisite>TP1cos1</prerequisite> 
-            <prerequisite>TP1cos2</prerequisite> 
-            <prerequisite>TP1cos3</prerequisite> 
-            <prerequisite>TP1phys1</prerequisite>
-            <prerequisite>TP1phys2</prerequisite>
-            <prerequisite>TP1phys3</prerequisite>
-            <prerequisite>TP1phys4</prerequisite>
-            <prerequisite>TP1var1</prerequisite>
-            <prerequisite>TP1var2</prerequisite>
-            <prerequisite>TP1var3</prerequisite>
-            <prerequisite>TP1menu</prerequisite>
-            <prerequisite>TP1menuRL1</prerequisite>
-            <prerequisite>TP1hi</prerequisite>
-            <prerequisite>TP1pures</prerequisite>
-            <prerequisite>TP1L2EFmerg</prerequisite>
-            <expectations>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="atn_xml_summary_table" type="script" suite="TP1">
-            <doc>Summary table</doc>
-            <options_atn>atn_summary.pl</options_atn>
-            <timelimit>2</timelimit>
-            <prerequisite>TP1mc</prerequisite>
-            <prerequisite>TP1core</prerequisite>
-            <prerequisite>TP1cos1</prerequisite> 
-            <prerequisite>TP1cos2</prerequisite> 
-            <prerequisite>TP1cos3</prerequisite> 
-            <prerequisite>TP1phys1</prerequisite>
-            <prerequisite>TP1phys2</prerequisite>
-            <prerequisite>TP1phys3</prerequisite>
-            <prerequisite>TP1phys4</prerequisite>
-            <prerequisite>TP1var1</prerequisite>
-            <prerequisite>TP1var2</prerequisite>
-            <prerequisite>TP1var3</prerequisite>
-            <prerequisite>TP1menu</prerequisite>
-            <prerequisite>TP1menuRL1</prerequisite>
-            <prerequisite>TP1hi</prerequisite>
-            <prerequisite>TP1pures</prerequisite>
-            <prerequisite>TP1L2EFmerg</prerequisite>
-            <expectations>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="updateATNrefs" type="script" suite="TP1Update">
-            <doc>update ATN references</doc>
-            <options_atn>whoami</options_atn>
-            <timelimit>5</timelimit>
-            <prerequisite>TP1</prerequisite>
-            <expectations>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-    </atn>
-    
-    <kv/>
-    
-    
-    <!-- ====================================================================== -->
-    <!--                            RTT tests                                   -->
-    <!-- ====================================================================== -->
-    
-    <rtt  xmlns="http://www.hep.ucl.ac.uk/atlas/AtlasTesting/rtt">
-        
-        <rttContactPerson>David Strom</rttContactPerson>
-        <mailto>David.Strom@cern.ch</mailto>
-        <refRelease>15.5.X.Y</refRelease>
-        
-        <jobList>
-            
-            <classification>
-                <displayClass>OnlineValidation</displayClass>
-                <displayProcess>Core</displayProcess>
-                <displayComponent>Trig-Common</displayComponent>
-            </classification>    
-            
-            
-            
-            <jobTransform userJobId="athenaHLT_on_data_leakCheck" >
-                <doc>
-                    athenaHLT on DATA all slices leakCheck
-                </doc>
-                <jobTransformJobName>athenaHLT_on_data_leakCheck</jobTransformJobName>
-                <jobTransformCmd>
-                    export LD_PRELOAD=/cvmfs/sft.cern.ch/lcg/releases/libunwind/5c2cade-76996/$CMTCONFIG/lib/libunwind.so; 
-                    athenaHLT.py --stdcmalloc --leak-check-execute  -o HLT_physicsV7  -n 25 -f '/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data16_13TeV.00309640.physics_EnhancedBias.merge.RAW/data16_13TeV.00309640.physics_EnhancedBias.merge.RAW._lb0628._SFO-1._0001.1' -c "setMenu='Physics_pp_v7_tight_physics_prescale';setLVL1XML='TriggerMenuXML/LVL1config_Physics_pp_v7.xml';setL1TopoXML=setLVL1XML.replace('/LVL1','/L1Topo');HLTOutputLevel=WARNING;doValidation=True" TrigP1Test/runHLT_standaloneRTT_leakCheck.py
-                </jobTransformCmd>
-                <group>AtlasHLTChainTest</group>
-                <queue>long</queue>
-		<testToRemove>
-                    <jobGroupName>RTT:Top</jobGroupName>
-                    <testidentifier>CheckFileRunner0</testidentifier>
-                </testToRemove>
-		<testToRemove>
-                    <jobGroupName>Athena</jobGroupName>
-                    <testidentifier>PerfMonRunner</testidentifier>
-                </testToRemove>
-            </jobTransform>
-            
-            <jobTransform userJobId="athenaHLT_LatestRun_MCV7">
-                <doc>
-                    athenaHLT on latest available run
-                </doc>
-                <jobTransformJobName>athenaHLT_LatestRun_MCV7</jobTransformJobName>
-                <jobTransformCmd>
-                    trigp1test_athenaHLT.py --nfiles=1 --dir='/eos/atlas/atlastier0/rucio/data17_13TeV/physics_Main/' --modifiers="testMCV7=True;fpeAuditor=True;from PerfMonComps.PerfMonFlags import jobproperties as pmon_properties ; pmon_properties.PerfMonFlags.doSemiDetailedMonitoring=True"
-                </jobTransformCmd>
-                <group>AtlasHLTChainTest</group>
-                <queue>long</queue>
-		<testToRemove>
-                    <jobGroupName>RTT:Top</jobGroupName>
-                    <testidentifier>CheckFileRunner0</testidentifier>
-                </testToRemove>
-
-            </jobTransform>
-            
-            <jobTransform userJobId="athenaHLT_CostMonitoring_PhysicsV7">
-                <doc>
-                    athenaHLT on recent EnhancedBias with cost monitoring enabled
-                </doc>
-                <jobTransformJobName>athenaHLT_CostMonitoring_PhysicsV7</jobTransformJobName>
-                <jobTransformCmd>
-                    athenaHLT.py -f '/eos/atlas/atlascerngroupdisk/data-art/grid-input/TrigP1Test/data17_13TeV.00339070.physics_EnhancedBias.merge.RAW._lb0101._SFO-1._0001.1' -c "setMenu='Physics_pp_v7_unprescaled_only_physics_prescale';setLVL1XML='TriggerMenuXML/LVL1config_Physics_pp_v7.xml';setL1TopoXML=setLVL1XML.replace('/LVL1','/L1Topo');rerunLVL1=True;enableCostD3PD=True;enableCostForCAF=True" TriggerRelease/runHLT_standalone.py
-                </jobTransformCmd>
-                <group>AtlasHLTChainTest</group>
-                <queue>long</queue>
-		<testToRemove>
-                    <jobGroupName>RTT:Top</jobGroupName>
-                    <testidentifier>CheckFileRunner0</testidentifier>
-                </testToRemove>
-		<testToRemove>
-                    <jobGroupName>Athena</jobGroupName>
-                    <testidentifier>PerfMonRunner</testidentifier>
-                </testToRemove>
-
-            </jobTransform>
-            
-        </jobList>
-        
-        <jobGroups>
-            
-            <!-- Job group for AtlasHLTChainTest tests -->
-            <jobGroup name="AthenaAtlasHLTChainTest" parent="Athena">
-                <keepFilePattern info="Log files"  displayColor="red">*.txt</keepFilePattern>
-                <keepFilePattern info="PerfMon ntuple">*.pmon.gz</keepFilePattern>
-                <keepFilePattern info="PerfMon Hephaestus file" displayColor="blue">*.heph.log</keepFilePattern>
-                <keepFilePattern info="PerfMon summary file" displayColor="blue">*.summary.txt</keepFilePattern>
-                <keepFilePattern info="Test log file" displayColor="blue">*test*.log</keepFilePattern>
-                <keepFilePattern info="RootComp PS file" displayColor="blue">rootcomp.ps.gz</keepFilePattern>
-                <keepFilePattern info="PDF files">*.pdf</keepFilePattern>
-                <keepFilePattern info="ROOT files">*.root</keepFilePattern>
-                <keepFilePattern info="Python pickles">*.pickle</keepFilePattern>
-                <keepFilePattern info="New reference files">*.new</keepFilePattern>
-                <keepFilePattern info="TrigCostMon files"> costMonitoring*/* </keepFilePattern>
-                <keepFilePattern maxsize="100">*/TrigCostRoot_Results.root</keepFilePattern>
-                <keepFilePattern maxsize="100">trig_cost.root</keepFilePattern>
-                <keepFilePattern maxsize="100">costMonitoring*/*</keepFilePattern>
-                <keepFilePattern maxsize="100">*log</keepFilePattern>
-                <keepFilePattern maxsize="100">*log_1</keepFilePattern> 
-                
-                <test position="1">
-                    <modulename>RttLibraryTools</modulename>
-                    <testname>PerfMonRunner</testname>
-                    <arg>
-                        <argname>fileName</argname>
-                        <argvalue>ntuple.pmon.gz</argvalue>
-                    </arg>
-                    <arg>
-                        <argname>options</argname>
-                        <argvalue>-f 0.90</argvalue>
-                    </arg>	
-                </test>
-                
-                <test position="2">
-                    <modulename>CheckLog</modulename>
-                    <testname>CheckLog</testname>
-                    <arg>
-                        <argname>command</argname>
-                        <argvalue>check_log.pl --config checklogTrigP1Test.conf %JOBLOG</argvalue>
-                    </arg>
-                </test>
-                
-                <test position="3">
-                    <modulename>CheckStatusCode</modulename>
-                    <testname>CheckStatusCode</testname>
-                    <arg>
-                        <argname>command</argname>
-                        <argvalue>check_statuscode.py %JOBLOG</argvalue>
-                    </arg>
-                </test>
-                
-                <test position="4">
-                    <modulename>RunMsgFinder</modulename>
-                    <testname>RunMsgFinder</testname>
-                </test>    
-                
-                <test position="5">
-                    <modulename>chainDump</modulename>
-                    <testname>chainDump</testname>
-                    <arg>
-                        <argname>rootFile</argname>
-                        <argvalue>expert-monitoring.root</argvalue>
-                    </arg>
-                </test>
-                
-                <test position="6">
-                    <modulename>LogTail</modulename>
-                    <testname>LogTail</testname>
-                    <arg>
-                        <argname>command</argname>
-                        <argvalue>tail -5000  %JOBLOG  >%JOBLOG.tail.txt</argvalue>
-                    </arg>
-                </test>
-                
-                <test position="7">
-                    <modulename>TruncateLog</modulename>
-                    <testname>TruncateLog</testname>
-                    <arg>
-                        <argname>command</argname>
-                        <argvalue>mv %JOBLOG tmp.delete; head -n150000 tmp.delete  >%JOBLOG; rm tmp.delete</argvalue>
-                    </arg>
-                </test>
-
-                <test position="8">
-                    <modulename>CheckForTrigCostD3PD_TriggerTest</modulename>
-                    <testname>CheckForTrigCostD3PD_TriggerTest</testname>
-                    <arg>
-                        <argname>command</argname>
-                        <argvalue>if [ -f trig_cost.root ] ; then RunTrigCostD3PD.exe -f trig_cost.root --outputTagFromAthena --costMode --useEBWeight --linkOutputDir ; else echo file trig_cost.root does not exist thus RunTrigCostD3PD.exe will not be run ; fi</argvalue>
-                    </arg>
-                    <noalarm />
-                </test>
-                
-                <testToRemove>
-                    <jobGroupName>RTT:Top</jobGroupName>
-                    <testidentifier>PerfMonDozer0</testidentifier>
-                </testToRemove>
-
-            </jobGroup>
-
-        </jobGroups>
-    </rtt>
-</unifiedTestConfiguration>
diff --git a/Trigger/TrigValidation/TrigP1Test/test/exec_art_trigp1test_post.sh b/Trigger/TrigValidation/TrigP1Test/test/exec_art_trigp1test_post.sh
index 36ea0828da22c7bddb2d76887507fb27495771de..3e5909258cd83be8e00e1b308f93d30f8d18b690 100755
--- a/Trigger/TrigValidation/TrigP1Test/test/exec_art_trigp1test_post.sh
+++ b/Trigger/TrigValidation/TrigP1Test/test/exec_art_trigp1test_post.sh
@@ -59,7 +59,8 @@ fi
 
 if [ -f trig_cost.root ]; then 
   echo $(date "+%FT%H:%M %Z")"     Running CostMon"
-  timeout 2h RunTrigCostD3PD -f trig_cost.root --outputTagFromAthena --costMode > costMon.log 2>&1
+#  timeout 2h RunTrigCostD3PD -f trig_cost.root --outputTagFromAthena --costMode --ratesMode > costMon.log 2>&1
+  timeout 2h RunTrigCostD3PD -f trig_cost.root --outputTagFromAthena --costMode --monitorRates --isCPUPrediction --useEBWeight --patternsMonitor HLT_costmonitor HLT_mistimemonj400 HLT_mistimemoncaltimenomu HLT_mistimemoncaltime HLT_l1topodebug HLT_l1calooverflow HLT_e5_lhvloose_nod0_bBeexM6000t HLT_2e5_lhvloose_nod0_bBeexM6000t HLT_cscmon_L1All HLT_j0_perf_ds1_L1J100 --patternsInvert  --predictionLumi 1.50e34 > costMon.log 2>&1
 else 
   echo $(date "+%FT%H:%M %Z")"     file trig_cost.root does not exist thus RunTrigCostD3PD will not be run"
 fi
diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_HLT_HIV5_FTK_build.sh b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_HIV5_FTK_build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..625791a3ce3ac0a3167693a57a4debedb39abaa7
--- /dev/null
+++ b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_HIV5_FTK_build.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+# art-description: athenaHLT on HI data with HI V5 menu and doFTK (NB: no FTK sim in input data)
+# art-type: build
+# art-include: 21.1/AthenaP1
+# art-include: 21.1-dev/AthenaP1
+# art-include: 21.0/AthenaP1
+# art-include: 21.0-TrigMC/AthenaP1
+# art-include: master/AthenaP1
+# art-include: master/Athena
+
+if [ -z ${TEST} ]; then
+  export TEST="TrigP1Test"
+fi
+
+export NAME=HLT_HIV5_FTK
+export JOB_LOG="${NAME}.log"
+
+timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG}
+
+ATH_RETURN=${PIPESTATUS[0]}
+echo "art-result: ${ATH_RETURN} ${NAME}"
+
+
+
diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_HLT_HIV5_build.sh b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_HIV5_build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..8392525939a718937dee0fa65feeaba9b5a37d6b
--- /dev/null
+++ b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_HIV5_build.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+# art-description: athenaHLT standalone with HLT_HIV5 menu on a HI sample 
+# art-type: build
+# art-include: 21.1/AthenaP1
+# art-include: 21.1-dev/AthenaP1
+# art-include: 21.0/AthenaP1
+# art-include: 21.0-TrigMC/AthenaP1
+# art-include: master/AthenaP1
+# art-include: master/Athena
+
+if [ -z ${TEST} ]; then
+  export TEST="TrigP1Test"
+fi
+
+export NAME=HLT_HIV5
+export JOB_LOG="${NAME}.log"
+
+timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG}
+
+ATH_RETURN=${PIPESTATUS[0]}
+echo "art-result: ${ATH_RETURN} ${NAME}"
+
+
+
diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_HLT_MCHIV5_build.sh b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_MCHIV5_build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d01894a7f1812b21c0aaa160c8ff2583d1624310
--- /dev/null
+++ b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_MCHIV5_build.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+# art-description: athenaHLT standalone with HLT_HIV5 menu on a HI sample 
+# art-type: build
+# art-include: 21.1/AthenaP1
+# art-include: 21.1-dev/AthenaP1
+# art-include: 21.0/AthenaP1
+# art-include: 21.0-TrigMC/AthenaP1
+# art-include: master/AthenaP1
+# art-include: master/Athena
+
+if [ -z ${TEST} ]; then
+  export TEST="TrigP1Test"
+fi
+
+export NAME=HLT_MCHIV5
+export JOB_LOG="${NAME}.log"
+
+timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG}
+
+ATH_RETURN=${PIPESTATUS[0]}
+echo "art-result: ${ATH_RETURN} ${NAME}"
+
+
+
diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_HLT_physicsV7_menu_ART_and_ROSsim_build.sh b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_physicsV7_menu_ART_and_ROSsim_build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..2daf7732a0692068c1a47dcbb21f7f4d94afdfb8
--- /dev/null
+++ b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_physicsV7_menu_ART_and_ROSsim_build.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+# art-description:  Run athenaHLT on all events to create trigger configuration, generates and uploads SMKs with rerunLVL1 physics menu, then run ROS simulation with prescale keys for 17000 and 9000. RB configured such that new chains are unprescaled. Only in 21.1! 
+# art-type: build
+# art-include: 21.1/AthenaP1
+
+if [ -z ${TEST} ]; then
+  export TEST="TrigP1Test"
+fi
+
+export NAME=HLT_physicsV7_menu
+export JOB_LOG="${NAME}.log"
+
+timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG}
+
+ATH_RETURN=${PIPESTATUS[0]}
+echo "art-result: ${ATH_RETURN} ${NAME}"
+
+export NAME=UploadMenuKeys_ART
+export JOB_LOG="${NAME}.log"
+
+timeout 120m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG}
+
+ATH_RETURN=${PIPESTATUS[0]}
+echo "art-result: ${ATH_RETURN} ${NAME}"
+
+export NAME=HLT_physicsV7_ROSsim_17000
+export JOB_LOG="${NAME}.log"
+
+timeout 150m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG}
+
+ATH_RETURN=${PIPESTATUS[0]}
+echo "art-result: ${ATH_RETURN} ${NAME}"
+
+export NAME=HLT_physicsV7_ROSsim_9000
+export JOB_LOG="${NAME}.log"
+
+timeout 150m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG}
+
+ATH_RETURN=${PIPESTATUS[0]}
+echo "art-result: ${ATH_RETURN} ${NAME}"
+
diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_HLT_physicsV7_menu_build.sh b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_physicsV7_menu_build.sh
index f517e79bdab81a2337cdbbcb70eab385fb6defdc..fa8615eac007be6f7186f3ce3aeb68084ceb5197 100755
--- a/Trigger/TrigValidation/TrigP1Test/test/test_HLT_physicsV7_menu_build.sh
+++ b/Trigger/TrigValidation/TrigP1Test/test/test_HLT_physicsV7_menu_build.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-# art-description:  Run athenaHLT on all events to create trigger configuration, generates and uploads SMKs created from the HLT first and compares after rerun jobs from DB, then compare the SMK created from the HLT_physicsV7 first and rerun jobs 
+# art-description:  Run athenaHLT on all events to create trigger configuration, generates and uploads SMKs created from the HLT first and compares after rerun jobs from DB, then compare the SMK created from the HLT_physicsV7 first and rerun jobs. Runs the same thing also for the physics HI v5 menu
 # art-type: build
 # art-include: 21.1/AthenaP1
 
@@ -72,3 +72,44 @@ fi
 #ATH_RETURN=${PIPESTATUS[0]}
 #echo "art-result: ${ATH_RETURN} ${NAME}"
 
+export NAME=HLT_HIV5_menu
+export JOB_LOG="${NAME}.log"
+
+timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG}
+
+ATH_RETURN=${PIPESTATUS[0]}
+echo "art-result: ${ATH_RETURN} ${NAME}"
+
+export NAME=UploadMenuKeys_HI
+export JOB_LOG="${NAME}.log"
+
+timeout 120m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG}
+
+ATH_RETURN=${PIPESTATUS[0]}
+echo "art-result: ${ATH_RETURN} ${NAME}"
+
+export NAME=HLT_HIV5_menu_rerundb
+export JOB_LOG="${NAME}.log"
+
+timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG}
+
+ATH_RETURN=${PIPESTATUS[0]}
+echo "art-result: ${ATH_RETURN} ${NAME}"
+
+export NAME=HLT_HIV5_menu_checkkeys
+export JOB_LOG="${NAME}.log"
+
+timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG}
+
+ATH_RETURN=${PIPESTATUS[0]}
+echo "art-result: ${ATH_RETURN} ${NAME}"
+
+export NAME=CheckKeysHIV5
+export JOB_LOG="${NAME}.log"
+
+timeout 180m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG}
+
+ATH_RETURN=${PIPESTATUS[0]}
+echo "art-result: ${ATH_RETURN} ${NAME}"
+
+
diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_athenaHLT_CostMonitoring_PhysicsV7_grid.sh b/Trigger/TrigValidation/TrigP1Test/test/test_athenaHLT_CostMonitoring_PhysicsV7_grid.sh
index fcf3881283f59e85be5c559839d20b34de9a7098..175e1c221458e9b07663c067afededb6b84eb0e1 100755
--- a/Trigger/TrigValidation/TrigP1Test/test/test_athenaHLT_CostMonitoring_PhysicsV7_grid.sh
+++ b/Trigger/TrigValidation/TrigP1Test/test/test_athenaHLT_CostMonitoring_PhysicsV7_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: *.regtest
+# art-output: athena_stdout.txt
 
 export NAME="athenaHLT_CostMonitoring_PhysicsV7_grid"
 export TESTOPTION="setMenu='Physics_pp_v7_unprescaled_only_physics_prescale';setLVL1XML='TriggerMenuXML/LVL1config_Physics_pp_v7.xml';setL1TopoXML=setLVL1XML.replace('/LVL1','/L1Topo');rerunLVL1=True;enableCostD3PD=True;enableCostForCAF=True;HLTOutputLevel=INFO;doValidation=True;"
diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_athenaHLT_LatestRun_HIV5_build.sh b/Trigger/TrigValidation/TrigP1Test/test/test_athenaHLT_LatestRun_HIV5_build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..66da5f8543e0dcfb417c21eb290c458343136225
--- /dev/null
+++ b/Trigger/TrigValidation/TrigP1Test/test/test_athenaHLT_LatestRun_HIV5_build.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+# art-description: athenaHLT on latest available run
+# art-type: build
+# art-include: 21.1/AthenaP1
+# art-include: 21.1-dev/AthenaP1
+# art-include: 21.0/AthenaP1
+# art-include: 21.0-TrigMC/AthenaP1
+# art-include: master/AthenaP1
+# art-include: master/Athena
+
+if [ -z ${TEST} ]; then
+  export TEST="TrigP1Test"
+fi
+
+export NAME="athenaHLT_LatestRun_HIV5"
+export JOB_LOG="${NAME}.log"
+
+timeout 100m trigtest_ART.pl --cleardir --test ${NAME} --rundir ${NAME} --conf TrigP1Test_ART.conf | tee ${JOB_LOG}
+
+ATH_RETURN=${PIPESTATUS[0]}
+echo "art-result: ${ATH_RETURN} ${NAME}"
+
+
+
diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_physics_pp_v7_PSed_nightlyDayBefore_grid.sh b/Trigger/TrigValidation/TrigP1Test/test/test_physics_pp_v7_PSed_nightlyDayBefore_grid.sh
index c1aa2aae651d709cf5b488ca329a25f22ab33d05..eed3d8bbb1255a7de527da1b20e0d592a8dc75b6 100755
--- a/Trigger/TrigValidation/TrigP1Test/test/test_physics_pp_v7_PSed_nightlyDayBefore_grid.sh
+++ b/Trigger/TrigValidation/TrigP1Test/test/test_physics_pp_v7_PSed_nightlyDayBefore_grid.sh
@@ -15,7 +15,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: *.regtest
-
+# art-output: athena_stdout.txt
 
 export NAME="athenaHLT_prescaled_PhysicsV7"
 export JOB_LOG="${NAME}.log"
@@ -44,10 +44,13 @@ if [ -z ${release} ]; then
 fi
 
 l1psk="'lvl1key': ${l1psk}"
-subshellcmd='source $AtlasSetup/scripts/asetup.sh AthenaP1,21.1,'${release}'; athenaHLT.py -n 5000 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00339070.physics_EnhancedBias.merge.RAW._lb0101._SFO-1._0001.1 -o HLT_physicsV7_prescaled -J TrigConf::HLTJobOptionsSvc --use-database --db-type "Coral" --db-server "TRIGGERDBART" --db-smkey '${smk}' --db-hltpskey '${hltpsk}' --db-extra "{'${l1psk}'}"; Trig_reco_tf.py --inputBSFile=HLT_physicsV7_prescaled._0001.data --outputNTUP_TRIGCOST=trig_cost.root; RunTrigCostD3PD -f trig_cost.root --outputTagFromAthena --costMode 2>&1 | tee ${JOB_LOG}'
+subshellcmd='source $AtlasSetup/scripts/asetup.sh AthenaP1,21.1,'${release}'; athenaHLT.py -n 5000 -f /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00339070.physics_EnhancedBias.merge.RAW._lb0101._SFO-1._0001.1 -o HLT_physicsV7_prescaled -J TrigConf::HLTJobOptionsSvc --use-database --db-type "Coral" --db-server "TRIGGERDBART" --db-smkey '${smk}' --db-hltpskey '${hltpsk}' --db-extra "{'${l1psk}'}"; Trig_reco_tf.py --inputBSFile=HLT_physicsV7_prescaled._0001.data --outputNTUP_TRIGCOST=trig_cost.root; RunTrigCostD3PD -f trig_cost.root --outputTagFromAthena --costMode --monitorRates --isCPUPrediction --useEBWeight --patternsMonitor HLT_costmonitor HLT_mistimemonj400 HLT_mistimemoncaltimenomu HLT_mistimemoncaltime HLT_l1topodebug HLT_l1calooverflow HLT_e5_lhvloose_nod0_bBeexM6000t HLT_2e5_lhvloose_nod0_bBeexM6000t HLT_cscmon_L1All HLT_j0_perf_ds1_L1J100 --patternsInvert  --predictionLumi 1.50e34; chainDump.py -n -S  2>&1 | tee ${JOB_LOG}'
 echo "running in subshell: $subshellcmd"
 (eval $subshellcmd)
 
+grep -r "RATE_" costMonitoring_*/csv/Table_Rate_Group_HLT_All.csv  | awk '{split($0,a,","); print a[1]"\t"a[4] }' >> HLTChain.txt
+grep "TrigSteer_HLT.TrigChainMoni" stdout.txt | awk '{split($0,a,":|\t"); print a[4]" "a[10] }' | sed 's/\s*active\s*/_rerun\t/g' | sed 's/\s*HLT/HLT/g' >> HLTChain.txt
+
 ATH_RETURN=${PIPESTATUS[0]}
 echo "art-result: ${ATH_RETURN} ${NAME}"
 
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_bjet_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_bjet_menu.sh
index b97b8b8224fcb1ae9abfedca76d54d61dc679b4d..e1cfed2abf368e3bb2925e366f6668f4ff69c1eb 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_bjet_menu.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_bjet_menu.sh
@@ -1,5 +1,6 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
+
 
 athena --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/bjet.menu.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_calo_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_calo_run_data.sh
index 16a7260370882a67d42df1d9fde017a3e9ddb389..4727fb420480f872f54c63b91380fb71df205919 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_calo_run_data.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_calo_run_data.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
 
 athena.py --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" -c 'doID=False' TrigUpgradeTest/IDCalo.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh
index a324dd2bbc4a294262c87ff11d65487f491d31e7..44ab78d69adf369e7cc597e99885443cb947c9e6 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
 
 athena --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/egamma.withViews.py &&
 checkxAOD.py myESD.pool.root &&
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_electron_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_electron_menu.sh
index db4e7f79ea47c5a021bbc3380c015874feb9d70d..b21261ce9b5b8009180ae31eb5680decc85ea90f 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_electron_menu.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_electron_menu.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
 
 athena --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/electron.menu.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_l1_decoding.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_l1_decoding.sh
index a705f0d27c93751036d5a4dfc4971fbf3076990f..b617c9c5c06e5f327c3d2c7f4dc4729e270b2f6e 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_l1_decoding.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_l1_decoding.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
 
 athena.py --threads=1 TrigUpgradeTest/EmuL1DecodingTest.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_step_processing.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_step_processing.sh
index f92b2e530b1b92037073dcf3f377af4d256190e9..e5c6f3b6144db9e90b131bf0f559714d028cf379 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_step_processing.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_emu_step_processing.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
 
 athena.py --threads=1 TrigUpgradeTest/EmuStepProcessingTest.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_full_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_full_menu.sh
index 70a72752f3c4a62d11707ee4f71c8b167bf3edaf..4c8037990f9a026b13725aac23e0eda4438a8d89 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_full_menu.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_full_menu.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
 
 athena --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/fullMenu.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_calo_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_calo_run_data.sh
index 9214468ffdc224eab845f69ebb87f41b46e35d5e..decde7324fe96a2cc8672c438e6361afa11e1cdc 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_calo_run_data.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_calo_run_data.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
 
 athena.py --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/IDCalo.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_data.sh
index 7e4a92036da007980df9e95db85ae854e752281f..77a536f83b944fd316be50bb6be046305514aa66 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_data.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_data.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
 
 athena.py --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" -c 'doCalo=False' TrigUpgradeTest/IDCalo.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_mc.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_mc.sh
index cda1c694539737c459cda593bfd039566b5629e5..6fc1161a46e44410da52afea8d6267bd507cc6bd 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_mc.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_id_run_mc.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
 
 athena.py --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TriggerTest/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1" -c 'doCalo=False;' TrigUpgradeTest/IDCalo.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet.sh
index 947fdae95012dd34c7860953ecf066ce2b9502e3..be6de97ce92f429e05379e2fd02028f02e9d6a5e 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet.sh
@@ -1,5 +1,6 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
-# 150 events
+# art-include: master/Athena
+
+# 15 events
 athena   --threads=1  --evtMax=15  --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/simpleJetJob.py 
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet_menu.sh
index 6e7d545a238768150ff267ef453e2c8b0068d6e1..2f2dd305f8b3422def0149bc6ad4a6eaab73737e 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet_menu.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_jet_menu.sh
@@ -1,5 +1,6 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
+
 # 150 events
 athena   --threads=1  --evtMax=15  --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/jet.menu.py 
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_l1sim.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_l1sim.sh
index 346d96f0a7de0f1204046e4f0df65c6c8be6418d..a5f3c1777ca3346bd0ca28f95c206557f379ed54 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_l1sim.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_l1sim.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
 
 athena.py --threads=1 -c "doL1Sim=True" --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TriggerTest/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1" TrigUpgradeTest/testHLT_MT.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_merge.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_merge.sh
index 1a5e788988044706767e58ab81f07f41485edc81..40c8cfd73d7776ec21f8442e1ea124ca9fac5196 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_merge.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_merge.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
 
 athena.py --threads=1 TrigUpgradeTest/mergeTest.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_menu.sh
index 2e0d843aa3d3ba9a22d048819e17e575e29577ae..9b7c0023b5e56d9f0d0654871b48fcbaadbcfe85 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_menu.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_menu.sh
@@ -1,6 +1,7 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
+
 
 ### BSfile ###
 athena --threads=1 --skipEvents=30 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/mu.menu.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_run_data.sh
index 2cace0f291d6fe3efe1bb32c4a5105d503608bdf..4c224f5d6eab67e56b4a02c8bc63dbf0bf338252 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_run_data.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_mu_run_data.sh
@@ -1,6 +1,7 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
+
 
 ### BSfile ###
 athena --threads=1 --skipEvents=30 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" -c 'doL2CB=False;doL2ISO=False' TrigUpgradeTest/mu.withViews.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_newJO.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_newJO.sh
index 230fceffbe3c1ca2e88d14b51eb1c64499e1af10..c47e94566fcef18ca745b31e77999ce9e130e994 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_newJO.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_newJO.sh
@@ -1,6 +1,7 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
+
 rm -rf newJOtest.py bootstrap.pkl bootstrap.py
 
 # this is a hack to pre-confgure scheduler and other MT services, 
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_photon_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_photon_menu.sh
index e78fdccb34cb51d37347a4df10c1748e2689e074..3d51cb706c2d8deab2f79e0047a146a48c1aeb24 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_photon_menu.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_photon_menu.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
 
 athena --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/photon.menu.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_tau_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_tau_menu.sh
index 98627a608a990c53e8e191a969016976815785bf..0ae0b6c39a7d1378315eb0d5d48728704d176303 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_tau_menu.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_tau_menu.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
 
 athena --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/tau.menu.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_view_schedule.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_view_schedule.sh
index 86842bd4e062bb8726516bd820640ec6eadf4fc7..5f69c724fd0e0bb9d3bdd42f4a0dda6abed7b68a 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_view_schedule.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_view_schedule.sh
@@ -1,6 +1,7 @@
 #!/bin/sh
 # art-type: build
-# art-ci: master
+# art-include: master/Athena
+
 if [ -z ${THREADS+x} ]; then export THREADS=2; fi
 athena.py --threads=$THREADS AthViews/ViewScheduling.py
 unset THREADS
diff --git a/Trigger/TrigValidation/TrigValTools/bin/atn_summary_ART.pl b/Trigger/TrigValidation/TrigValTools/bin/atn_summary_ART.pl
index 179a8d30b8b5b6333d5d112dd3e152352a6f00f5..e90ca91cf87f1adf3f2486696c3b8cfb4bcc5b12 100755
--- a/Trigger/TrigValidation/TrigValTools/bin/atn_summary_ART.pl
+++ b/Trigger/TrigValidation/TrigValTools/bin/atn_summary_ART.pl
@@ -4,7 +4,7 @@ use File::Basename;
 use Date::Manip::Date;
 
 # Produce summary table for trigtest.pl tests in same dir or first parameter to script
-my $output="index.html";
+my $output="index.php";
 
 # If given, use first argument as output file
 if ($#ARGV>=0) {
@@ -166,12 +166,145 @@ sub main(){
     open HTMLOUT, "> $output" or die "failed to write to $output: $!";
     print HTMLOUT "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">
 <html>\n<head>\n<script type=\"text/javascript\" src=\"http://atlas-project-trigger-release-validation.web.cern.ch/atlas-project-trigger-release-validation/www/js/sorttable.js\"></script>\n<script type=\"text/javascript\" src=\"http://atlas-project-trigger-release-validation.web.cern.ch/atlas-project-trigger-release-validation/www/js/suitehighlight.min.js\"></script>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" >
-<title>Trigger ATN results for $project,$gitbranch,$release</title>\n
+<title>Trigger ART results for $project,$gitbranch,$release</title>\n
+<script type=\"text/javascript\" src=\"https://www.gstatic.com/charts/loader.js\"></script>
+<script type=\"text/javascript\">
+
+    google.charts.load('current', {packages: ['corechart', 'line']});
+    google.charts.setOnLoadCallback(drawCrosshairs17000);
+    google.charts.setOnLoadCallback(drawCrosshairs9000);
+
+    function drawCrosshairs17000() {
+                var data = new google.visualization.DataTable();
+
+                data.addColumn('string', 'Nightly');
+
+                <?php
+                        
+                        \$nightlies = glob(dirname(__FILE__) . '/../../*');
+                        \$nightlies = array_values(\$nightlies);
+                        \$content = file_get_contents(dirname(__FILE__).'/test_HLT_physicsV7_menu_ART_and_ROSsim_build/HLT_physicsV7_ROSsim_17000/ATLASros2rob2018.py');
+                        //echo \$content;
+                        preg_match_all('/ROS-.[A-Z]+-.[A-Z]+-.[0-9]+/i',\$content,\$ROSes);
+                        \$ROSes = array_values(\$ROSes);
+                        foreach(\$ROSes as \$ros){
+                                \$ros = array_values(\$ros);
+                                foreach(\$ros as \$ros1){
+                                        echo \"                data.addColumn('number', '\$ros1'); \\n\";
+                                }
+                        }
+
+                        echo \"                data.addRows([\";
+                        foreach(\$nightlies as \$nightly){
+                                \$content = file_get_contents(\$nightly.'/TrigP1Test/test_HLT_physicsV7_menu_ART_and_ROSsim_build/HLT_physicsV7_ROSsim_17000/ROStest.reference.new');
+                                //echo \$content.'\\n';                           
+                                echo \"                ['\".basename(\$nightly).\"',\";
+                                foreach(\$ROSes as \$ros){
+                                        \$ros = array_values(\$ros);
+                                        foreach(\$ros as \$ros1){
+                                                //echo \$ros1.'\\n';
+                                                \$matched = preg_match_all('/'.\$ros1.'.[ \\t]+[|].[ \\t]+.[0-9]+.[ \t]+[|](.[.0-9]+)/', \$content,\$rates);
+                                                if(\$matched) echo \$rates[1][0].\",\";
+                                                else echo \"0.,\";
+                                                //print_r(\$rates);
+                                        }
+                                }
+                                echo \"],\";
+                        }
+                        echo \"                ]);\";
+                ?>
+
+        var options = {
+                title: 'ROS request rates in rejected events for lumi 1.7e34',
+                hAxis: {
+                        title: 'Nightly'
+                },
+                        vAxis: {
+                        title: 'ROS request rate'
+                },
+                //colors: ['#a52714', '#097138'],
+                crosshair: {
+                        color: '#000',
+                        trigger: 'selection'
+                }
+        };
+
+        var chart = new google.visualization.LineChart(document.getElementById('chart_div17000'));
+
+        chart.draw(data, options);
+
+    }
+    
+    function drawCrosshairs9000() {
+                var data = new google.visualization.DataTable();
+
+                data.addColumn('string', 'Nightly');
+
+                <?php
+                        
+                        \$nightlies = glob(dirname(__FILE__) . '/../../*');
+                        \$nightlies = array_values(\$nightlies);
+                        \$content = file_get_contents(dirname(__FILE__).'/test_HLT_physicsV7_menu_ART_and_ROSsim_build/HLT_physicsV7_ROSsim_9000/ATLASros2rob2018.py');
+                        //echo \$content;
+                        preg_match_all('/ROS-.[A-Z]+-.[A-Z]+-.[0-9]+/i',\$content,\$ROSes);
+                        \$ROSes = array_values(\$ROSes);
+                        foreach(\$ROSes as \$ros){
+                                \$ros = array_values(\$ros);
+                                foreach(\$ros as \$ros1){
+                                        echo \"                data.addColumn('number', '\$ros1'); \\n\";
+                                }
+                        }
+
+                        echo \"                data.addRows([\";
+                        foreach(\$nightlies as \$nightly){
+                                \$content = file_get_contents(\$nightly.'/TrigP1Test/test_HLT_physicsV7_menu_ART_and_ROSsim_build/HLT_physicsV7_ROSsim_9000/ROStest.reference.new');
+                                //echo \$content.'\\n';                           
+                                echo \"                ['\".basename(\$nightly).\"',\";
+                                foreach(\$ROSes as \$ros){
+                                        \$ros = array_values(\$ros);
+                                        foreach(\$ros as \$ros1){
+                                                //echo \$ros1.'\\n';
+                                                \$matched = preg_match_all('/'.\$ros1.'.[ \\t]+[|].[ \\t]+.[0-9]+.[ \t]+[|](.[.0-9]+)/', \$content,\$rates);
+                                                if(\$matched) echo \$rates[1][0].\",\";
+                                                else echo \"0.,\";
+                                                //print_r(\$rates);
+                                        }
+                                }
+                                echo \"],\";
+                        }
+                        echo \"                ]);\";
+                ?>
+
+        var options = {
+                title: 'ROS request rates in rejected events for lumi 0.9e34',
+                hAxis: {
+                        title: 'Nightly'
+                },
+                        vAxis: {
+                        title: 'ROS request rate'
+                },
+                //colors: ['#a52714', '#097138'],
+                crosshair: {
+                        color: '#000',
+                        trigger: 'selection'
+                }
+        };
+
+        var chart = new google.visualization.LineChart(document.getElementById('chart_div9000'));
+
+        chart.draw(data, options);
+
+    }
+
+</script>
 <script type=\"text/javascript\">
 
 var thisRelease = null;
 var loaded = false;
 
+
+
+
 function highlightDiffs(clear) {
   var table1 = document.getElementById('ATNResults');
   var table2 = null;
@@ -203,7 +336,7 @@ function highlightDiffs(clear) {
 
 function setDiffCount(diffs) {
   if (diffs>0) {        
-    document.getElementById('nDiffs').textContent = diffs+' differences';
+    document.getElementById('nDiffs').innerHTML = '<a href=\"https://gitlab.cern.ch/atlas/athena/compare/nightly%2F21.1%2F'+document.DiffForm.rel.value+'...nightly%2F21.1%2F'+thisRelease+'\">'+diffs+' differences! click here for GitLab diff</a>';
   }
   else {
     document.getElementById('nDiffs').textContent = '';
@@ -216,7 +349,7 @@ function loadPage() {
   if (diffRelease != thisRelease) {
     // Load second summary page in hidden iframe
     var url = window.document.location.href;
-    iframe.src = url.replace(/rel_[0-6]/, diffRelease);
+    iframe.src = url.replace(/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9][0-9][0-9]/, diffRelease);
   }
   else {
     highlightDiffs(true);  // remove all highlighting
@@ -225,7 +358,7 @@ function loadPage() {
 
 function setRelease() {
   var url = window.document.location.href;
-  thisRelease = url.match(/rel_[0-6]/);
+  thisRelease = url.match(/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9][0-9][0-9]/);
   if (thisRelease) {
     thisRelease = thisRelease[0];
     document.DiffForm.rel.value = thisRelease;
@@ -256,7 +389,7 @@ function showBuildFailures(failures,link) {
   tr.hi:hover {background-color:#E6E6E6;}
 </style>
 <body onload=\"highlightSuite({id:'ATNResults'});setDiffCount(0);\">
-<h1>Trigger ATN test results summary</h1>
+<h1>Trigger ART test results summary</h1>
 <form name=\"DiffForm\">
 ";
 
@@ -265,64 +398,57 @@ function showBuildFailures(failures,link) {
     my $testWWWPage=getTestWWWPage();
     my $nicosWWWPage=dirname($testWWWPage);
 
-    print HTMLOUT "<p>Last updated $now</p>\n";
-    
-	my $atn_relno = $atn_rel;
-	$atn_relno =~ s/rel_//;
-	print HTMLOUT "<p><a href=\"".$testWWWPage."\">Nightly test</a>: $project,$gitbranch,<b>$release</b> ($atn_platform)";
-	print HTMLOUT "<script src=\"".$nicosWWWPage."/build_failures_".$atn_relno.".js\" language=\"JavaScript\"></script>\n";
-	print HTMLOUT "<script type=\"text/javascript\">showBuildFailures(failures_".$atn_relno."(),"."\"".$nicosWWWPage."/nicos_buildsummary_".$atn_relno.".html\")</script>";
-
-    # Link to GitLab diff between today's and yesterday's release
-    my $fmt="%Y-%m-%dT%H%M";
-    my $date = new Date::Manip::Date;
-    $date->parse_format($fmt,$release);
-    my $delta = $date->new_delta();
-    $delta->set(d => -1);  # minus 1 day
-    my $yesterday = $date->calc($delta); 
-    my $prevrel = $yesterday->printf($fmt);
-    my $gitdiff = "https://gitlab.cern.ch/atlas/athena/compare/nightly%2F$gitbranch%2F$prevrel...nightly%2F$gitbranch%2F$release";	
-
-	print HTMLOUT "<br>Other nightlies: ";
-    if (defined $no_of_nightlies_exceptions{$project}){
-        $no_of_nightlies=$no_of_nightlies_exceptions{$project};
-        print "$project exceptionally has $no_of_nightlies nightly builds\n";
-    } else {
-        print "$project normally has $no_of_nightlies nightly builds\n";
-    }
-
-    my @dow = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
-	for (my $i=0; $i<$no_of_nightlies; $i++){
-	    if ("rel_$i" eq $atn_rel){
-            print HTMLOUT " $dow[$i] ";
-	    } else {
-            my $p=getrelpath();
-            $p =~ s/rel_\d/rel_$i/;
-            $p =~ s/rel_nightly/rel_$i/;
-            print HTMLOUT " <a href=\"$p\">$dow[$i]</a> ";
-	    }
-	}
-
-	print HTMLOUT "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-<a href=\"$gitdiff\">GitLab diff</a>
-&nbsp;&nbsp;&nbsp;&nbsp;Diff results: <select name=\"rel\" size=\"1\" onchange=\"loadPage()\">
-<option value='rel_0'>Sun</option>
-<option value='rel_1'>Mon</option>
-<option value='rel_2'>Tue</option>
-<option value='rel_3'>Wed</option>
-<option value='rel_4'>Thu</option>
-<option value='rel_5'>Fri</option>
-<option value='rel_6'>Sat</option>
-</select> <span id='nDiffs' style='font-weight:bold'></span>
+    print HTMLOUT "<p>Last updated $now. Contact: Daniele.Zanzi @ cern.ch</p>\n";
+
+#	my $atn_relno = $atn_rel;
+#	$atn_relno =~ s/rel_//;
+#	print HTMLOUT "<p><a href=\"".$testWWWPage."\">Nightly test</a>: $project,$gitbranch,<b>$release</b> ($atn_platform)";
+#	print HTMLOUT "<script src=\"".$nicosWWWPage."/build_failures_".$atn_relno.".js\" language=\"JavaScript\"></script>\n";
+#	print HTMLOUT "<script type=\"text/javascript\">showBuildFailures(failures_".$atn_relno."(),"."\"".$nicosWWWPage."/nicos_buildsummary_".$atn_relno.".html\")</script>";
+#
+    my $test_suite = gettestpkgdir(); # this is a basename of pwd (expected to be e.g. TrigP1Test)
+    print HTMLOUT "<p>Nightly test: $project, $gitbranch, $release\n\n";
+    print HTMLOUT "&emsp;Check other builds: <select name=\"select_other_builds\" onchange=\"location = this.value;\">\n";
+    print HTMLOUT "<option value=\"\" selected=\"selected\">-----</option>\n";
+    print HTMLOUT "<?php\n";
+    print HTMLOUT "             \$nightlies = glob(dirname(__FILE__) . '/../../*');\n";
+    print HTMLOUT "             \$nightlies = array_reverse(\$nightlies);\n";
+    print HTMLOUT "             \$current_page_link = \"\$_SERVER[REQUEST_URI]\";\n";
+    print HTMLOUT "             // protect against multiple slashes in a row\n";
+    print HTMLOUT "             \$current_page_link = preg_replace('#/+#','/',\$current_page_link);\n";
+    print HTMLOUT "             \$full_link = (isset(\$_SERVER['HTTPS']) ? \"https\" : \"http\") . \"://\$_SERVER[HTTP_HOST]\" . \$current_page_link;\n";
+    print HTMLOUT "             foreach(\$nightlies as \$nightly){\n";
+    print HTMLOUT "                 \$nightly = basename(\$nightly);\n";
+    print HTMLOUT "                 echo \"<option value='\" . \$full_link . \"../../\" . \$nightly . \"/$test_suite/\" . \"'>\".\$nightly.\"</option>\";\n";
+    print HTMLOUT "    }\n";
+    print HTMLOUT "?>\n";
+    print HTMLOUT "</select></p>\n";
+
+    print HTMLOUT "<p>Check differences: <select name=\"rel\" size=\"1\" onchange=\"loadPage()\">\n";
+    print HTMLOUT "<option value=\"\" selected=\"selected\">-----</option>\n";
+    print HTMLOUT "<?php\n";
+    print HTMLOUT "             \$nightlies = glob(dirname(__FILE__) . '/../../*');\n";
+    print HTMLOUT "             \$nightlies = array_reverse(\$nightlies);\n";
+    print HTMLOUT "             \$current_page_link = \"\$_SERVER[REQUEST_URI]\";\n";
+    print HTMLOUT "             // protect against multiple slashes in a row\n";
+    print HTMLOUT "             \$current_page_link = preg_replace('#/+#','/',\$current_page_link);\n";
+    print HTMLOUT "             \$full_link = (isset(\$_SERVER['HTTPS']) ? \"https\" : \"http\") . \"://\$_SERVER[HTTP_HOST]\" . \$current_page_link;\n";
+    print HTMLOUT "             foreach(\$nightlies as \$nightly){\n";
+    print HTMLOUT "                 \$nightly = basename(\$nightly);\n";
+    print HTMLOUT "                 echo \"<option value='\".\$nightly.\"'>\".\$nightly.\"</option>\";\n";
+    print HTMLOUT "    }\n";
+    print HTMLOUT "?>\n";
+    print HTMLOUT "</select> <span id='nDiffs' style='font-weight:bold'></span>
 </form><script type=\"text/javascript\">setRelease();</script></p>";
 
+
     print HTMLOUT "\n<table class=\"sortable\" id=\"ATNResults\" border=1><thead><tr>
 <th title=\"Click to sort by test suite\">Test name</th> 
 <th>Overall Result</th> 
 <th title=\"exit code of Athena\">Athena exit</th> 
 <th title=\"presence of any error messages in log\">Error Msgs</th> 
 <th title=\"number of warning messages in log\">Warn Msgs</th> 
-<th>Reg. tests</th> 
+<th>Reg. tests (incl. WARNING)</th> 
 <th title=\"expert histogram exact comparison to ref\">Root comp</th> 
 <th title=\"L2 + EF chain and trigger element counts within tolerance w.r.t. ref\"> Chain, TE cnts </th> 
 <th title=\"athena wall time in secs\">Time (s)</th> 
@@ -502,7 +628,10 @@ function showBuildFailures(failures,link) {
       print HTMLOUT "<a href=\"atn_timeline.png\"> [timeline plot]</a>";
       print HTMLOUT "</font>";
     }
-    print HTMLOUT '<iframe onload="highlightDiffs(false)" id="DiffFrame" style="visibility:hidden;display:none;"></iframe></body></html>';
+    print HTMLOUT '<iframe onload="highlightDiffs(false)" id="DiffFrame" style="visibility:hidden;display:none;"></iframe>';
+    print HTMLOUT '<div id="chart_div17000" style="float: left; width: 50%; height: 500px"></div>';
+    print HTMLOUT '<div id="chart_div9000"  style="float: right; width: 50%; height: 500px"></div>';
+    print HTMLOUT '</body></html>';
     close HTMLOUT;
     
 }
diff --git a/Trigger/TrigValidation/TrigValTools/bin/trigtest_ART.pl b/Trigger/TrigValidation/TrigValTools/bin/trigtest_ART.pl
new file mode 100755
index 0000000000000000000000000000000000000000..4e7729dfbd45c8cb5a0ecb714be5526406a81735
--- /dev/null
+++ b/Trigger/TrigValidation/TrigValTools/bin/trigtest_ART.pl
@@ -0,0 +1,1393 @@
+#!/usr/bin/perl -w
+# Script to manage Trigger tests
+# $Id: trigtest.pl,v 1.16 2009-05-20 15:53:22 sgeorge Exp $
+
+use Getopt::Long;
+use File::Basename;
+use File::Spec;
+use File::Copy;
+use File::Path;
+use constant TRUE => 1;
+use constant FALSE => 0;
+use constant UNDEFINED => "undefined";
+$prog = basename $0;
+$config = {};
+$fullregtest = '<fullregtest>';
+$customregtest = '<customregtest>';
+# set some output file names
+$regtestout = "regtest.log";
+$htmldiffout = "regtest.html";
+$summaryout = "summary.log";
+$timerout = "timer.log";
+$checklogout = "checklog.log";
+$warnout = "warn.log";
+$rootcompout = "rootcompout.log";
+$checkcountout = "checkcountout.log";
+$checkmergeout = "checkmergeout.log";
+$edmcheckout = "edmcheckout.log";
+$postcmdout = "postcmd.log";
+$posttestrc = "post_test.exitcodes";
+$docout = "doc.txt";
+
+# define error codes - must match atn_summary.pl
+%ERROR = (
+	  OK => 0,
+	  SCRIPT_MISC => 1,
+	  POST_TEST_BAD_EXIT => 2,
+	  ROOTCOMP_MISMATCH => 4,
+	  ATHENA_BAD_EXIT => 8,
+	  CHECKCOUNTS_FAILED => 16,
+	  ATHENA_ERROR_IN_LOG => 32,
+	  ATHENA_REGTEST_FAILED => 64,
+	  ATN_TIME_LIMIT => 128,
+	  PRECONDITION_FAILED_SO_NOT_RUN => 256
+	  );
+# max bit: 128. Bash takes return codes 0-256.
+# Larger numbers are taken mod 256 so effectively masked off. Can be used for internal signalling only.
+
+# mask off those codes above which you do not want to flag in the exit code
+# i.e. so ATN does not interpret them as the test failing. 
+# bit positions marked 1 will be used, 0 will not be used.
+# SCRIPT_MISC is on the right, ATN_TIME_LIMIT on the left
+# This default mask can be modified via the 'extra_failure_codes' test directive
+# only "shout" if we see/have: ATHENA_BAD_EXIT => 8 decimal 8 in bit is 0b00001000 thus 
+$default_exitmask = 0b00001001;
+
+# Exit mask of the last run test. Not nice but the easiest way to implement
+# this on top of all the other ugly things in this script.
+$exitmask = $default_exitmask;
+    
+# command to use for rootcomp
+$rootcomp_cmd = "rootcomp.py --pdf --noRoot";
+$checkcount_cmd = "trigtest_checkcounts.sh";
+$checkmerge_cmd = "trigtest_check_merge.sh";
+sub main();
+main();
+exit -10;
+####
+
+sub main(){
+    # trap errors from here on
+    $SIG{'INT'} = 'CLEANUP_INT';
+    $SIG{'TERM'} = 'CLEANUP_TERM';
+    $t0=time(); # timer
+    $failures = 0; # count number of tests which fail
+    $statuscode = 0; # combination of errors from last test
+    command_line();
+    parse_config();
+    if ($verify){
+	print_config();
+    }
+    exit if ($verifyconfig);
+    check_tests();
+    do_tests();
+    results_summary();
+    timer($t0);
+    if ($statuscode != 0){
+	prog_error_exit("at end",@statuscodes);
+    }
+    exit 0;
+    # exit($statuscode); # status code of last test
+    # exit($failures); # number of tests which fail
+}
+
+sub CLEANUP_INT {
+    print "\n\n$prog: Caught Interrupt (^C), probably ATN time exceeded, finish up and exit\n";
+    push @statuscodes, 'ATN_TIME_LIMIT';
+    timer($t0);
+    if ($statuscode != 0){
+	prog_error_exit("at end",@statuscodes);
+    }
+    exit(1); # never reaches this line in principle
+}
+
+sub CLEANUP_TERM {
+    print "\n\n$prog: Caught TERM signal, finish up and exit\n";
+    push @statuscodes, 'ATN_TIME_LIMIT';
+    timer($t0);
+    if ($statuscode != 0){
+	prog_error_exit("at end",@statuscodes);
+    }
+    exit(1); # never reaches this line in principle
+}
+
+sub prog_error_exit($$){
+    my ($message,@error_strings) = @_ or die;
+    my $exitcode_unmasked = process_error_codes(@error_strings);
+    # for ATN purposes, mask less significant codes
+    my $exitcode = $exitcode_unmasked & $exitmask;
+    if ($exitcode!=0){
+	printf "$prog: $failkey $message (unmasked=%#.8b exitcode=%#.8b)\n", $exitcode_unmasked, $exitcode;
+    } else {
+	printf "$prog: $warnkey $message (unmasked=%#.8b exitcode=%#.8b)\n", $exitcode_unmasked, $exitcode;
+    }
+    exit($exitcode);
+
+}
+
+sub process_error_codes(@) {
+    my (@error_strings) = @_;
+    my $exitcode=0;
+    # | sort | uniq
+    my %saw;
+    undef %saw;
+    @saw{@error_strings} = ();
+    my @error_strings_uniq = sort keys %saw;
+    print "$prog: debug: all statuscodes: @error_strings\n" if ($debug);
+    print "$prog: debug: uniq statuscodes: @error_strings_uniq\n" if ($debug);
+    # convert strings, keep numbers as they are, add together
+    print "=== These errors occured: ";
+    open SUMMARY, ">$summaryout";
+    for (@error_strings_uniq){
+	my $code;
+	if (/^\d+$/){
+	    # it's already a number
+	    $code = $_;
+	} else {
+	    # translate string
+	    $code = $ERROR{$_};
+	}
+	$exitcode += $code;
+	if ($code != 0){ # print all except ok.
+	    print "$_ ($code) ";
+	    print SUMMARY "$_ ($code)\n";
+	}
+    }
+    print "\n";
+    my $maskedcode = $exitcode & $exitmask;
+    print "$prog:process_error_codes() debug exitcode = $exitcode maskedcode = $maskedcode\n" if ($debug);
+    print SUMMARY " exitcode = $exitcode\n";
+    print SUMMARY " maskedcode = $maskedcode\n";
+    close SUMMARY;
+    return $exitcode;
+}
+
+# command line arguments
+sub command_line(){
+  # parse command arguments and check usage
+  $debug = FALSE;
+  $verify = FALSE;
+  $verifyconfig = FALSE;
+  $configfile = 'trigtest.conf'; # default
+  $failkey = 'FAILURE';
+  $warnkey = 'WARNING';
+  $showsummary = FALSE;
+  @tests = ();
+  $run_dir = '../run'; # working directory, relative to cmt dir
+  $clear_dir = FALSE;
+  print "=== Command to repeat this test:\n  $prog @ARGV\n";
+  my $result = GetOptions ('help' => \$help,
+                           'debug!' => \$debug,
+                           'verify!' => \$verify,
+                           'verifyconfig!' => \$verifyconfig,
+                           'showsummary' => \$showsummary,
+                           'failkey=s' => \$failkey,
+                           'warnkey=s' => \$warnkey,
+                           'config=s' => \$configfile,
+			               'test=s' => \@tests,
+			               'rundir=s' => \$run_dir,
+			               'cleardir!' => \$clear_dir,
+			               'package=s' => \$testpackagefq);
+  if ($help || !$result) {
+      usage();
+      prog_error_exit("usage",'SCRIPT_MISC');
+  }
+  $verify = TRUE if ($verifyconfig);
+  if (defined $testpackagefq){
+      print "\n$prog info: note that the --package option is deprecated and will be removed in a \nfuture release. It no longer does anything.\n";
+  }
+}
+
+# usage message
+sub usage(){
+    print "
+  Usage: $prog [options] 
+
+  Testing tool for managing Trigger software tests
+
+  Options:
+
+  --help                show this information
+  --debug               print debug information, for the script maintainer
+  --verify              verify config file and show what would be done
+                        for the tests but don't run athena (see tip below)
+  --verifyconfig        just verify config file and stop
+  --showsummary         print a short summary table of tests results at the end
+  --failkey <string>    keyword to be printed to indicate to the test 
+                        framework that a test has failed, default $failkey
+  --failkey <string>    keyword to be printed to indicate a problem, but not
+                        seen as failure by test framework, default $warnkey
+  --config <file>       specify config file, default trigtest.conf
+                        tries with get_files from DATAPATH if it doesn't exist 
+  --rundir <dir>        specify directory in which to run tests, default ../run
+  --cleardir            remove/clear rundir before running (FALSE by default)
+  --package <string>    (deprecated, does nothing, will be removed in future release)
+  --test <test name|id> specify test to run, see below
+
+  A test name or id can optionally be specified after the --test
+  option to run only that test. By default, all tests will be run in
+  the order they are defined in the config file. The verify option
+  will list all the available tests that are defined in the config
+  file. The --test option may be repeated, and tests will be run in the
+  order the come on the command line.
+
+  See the sample config file for test configuration information.
+
+  It is expected that this tool be run from the cmt or run directory
+  under TriggerTest, after the necessary cmt environment has been set
+  up.  If you changed any files in TriggerTest or checked out a
+  version different from the release you are using, then you need to
+  gmake before running these tests. The --package option can be used
+  to change this default location to another package for reference
+  files and the check_log config file.
+
+  Output from $prog will always be preceeded by its name (for error
+  and debug messages) or '===' for the few messages you get without
+  debug. All other messages come from other programs and commands it
+  has run.
+
+  Tip: after running a test for the first time, run again in verify
+  mode and the same log files will be re-used. This is a good way to
+  quickly test the config file, regression tests, and for script
+  development.
+
+  The exit code refers only to the last test - be sure to read the 
+  output if you run multiple tests!
+  The exit code can be any combination of these values:
+";
+    my $errorcode;
+    foreach $error_name (sort { $ERROR{$a} <=> $ERROR{$b} } keys %ERROR) {
+	printf "      %20s %4d\n", $error_name, $ERROR{$error_name};
+    }
+}
+
+
+# If using a file for stdin, 
+# try to find it with get_files
+# then check it is there
+# and return with < pre-pended,
+# or return empty string if failed
+sub getStdinFile($){
+    my ($stdinfile) = @_;
+    $stdinfile =~ s/^\s+$//; # kill file names that are only spaces
+    $stdinfile = $stdinfile;
+    if (length($stdinfile)>0){
+	if (! -e "$stdinfile" ){
+	    print "$prog debug: $stdinfile does not exist, so copying it with get_files\n" if ($debug);
+	    systemcall("get_files -data $stdinfile");
+	} else {
+	    print "$prog debug: $stdinfile already exists; not copying it\n" if ($debug);
+	}
+	if (! -e $stdinfile){
+	    prog_error_exit ("stdin defined as '$stdinfile' but this is not found", 'SCRIPT_MISC');
+	    $stdinfile = "";
+	} else {
+	    $stdinfile = "< $stdinfile";
+	}
+    } else {
+	$stdinfile = "";
+    }
+    return $stdinfile;
+}
+
+# parse config file
+sub parse_config(){
+
+    # if specified config file does not exist, try get_files. If still not there, fail.
+    print "$prog debug: config file is specified as $configfile\n" if ($debug);
+    if (! -r $configfile) {
+	print "$prog debug: $configfile does not exist, so try copying it with get_files\n" if ($debug);
+	systemcall("get_files -data -symlink -remove $configfile",TRUE);
+	if (! -r $configfile){ 
+	    prog_error_exit ("config file $configfile not found. Specify a config file with the option --config <filename>", 'SCRIPT_MISC');
+	}
+    }
+    open CONFIG, "<$configfile" 
+	or prog_error_exit ("failed opening $configfile: $!\n", 'SCRIPT_MISC');
+    print "\n$prog debug: start of config file\n" if ($debug);
+    my $first = TRUE;
+    my $this_test = {};
+    my $current_test_id = '';
+    while (<CONFIG>){
+	chomp;
+	# strip out comments
+	$endofline = index $_, '#';
+	if ($endofline == -1){
+	    $endofline = length;
+	}
+	$line = substr($_, 0, $endofline);
+	# strip leading white space
+	$line =~ s/^\s+//;
+	# skip empty lines and lines with only spaces
+	next if (length $line == 0);
+	next if (/^\s+$/);
+	#print "$prog debug: config $. >$line<\n" if ($debug);
+	# test keyword
+	if ($line =~ /^test/){
+	    if ($line =~ /^test\s+(\w+)/){
+		my $id = $1;
+		print "$prog debug: config id = >$id<\n" if ($debug);
+		if ($current_test_id eq $id or exists $config{$id}){
+		    prog_error_exit ("test id $id is not unique",'SCRIPT_MISC');
+		}
+		# save old test config
+		if (! $first){
+		    $config{$current_test_id} = $this_test;
+		    push @test_order, $current_test_id;
+		}
+		# new test config
+		$first = FALSE;
+		$current_test_id = $id;
+		$this_test = {};
+		# defaults
+		$this_test->{'name'} = "test_$id";
+		$this_test->{'disabled'} = FALSE;
+		$this_test->{'checklog'} = FALSE;
+#		$this_test->{'checklog_opts'} = "--config check_log.conf --showexcludestats";
+		$this_test->{'checklog_opts'} = "--showexcludestats";
+		$this_test->{'datafile'} = UNDEFINED;
+		$this_test->{'datafilelink'} = 'ZEBRA.P';
+		$this_test->{'joboptions'} = UNDEFINED;
+		$this_test->{'pre_condition'} = ();
+		$this_test->{'pre_command'} = ();
+		$this_test->{'post_command'} = ();
+        $this_test->{'post_test'} = ();
+		$this_test->{'athena_env'} = 'export STAGE_SVCCLASS=atlascerngroupdisk;export STAGE_HOST=castoratlast3';
+		$this_test->{'athena_args'} = UNDEFINED;
+		$this_test->{'athena_cmd'} = 'athena.py -b';
+		$this_test->{'exitmask'} = $default_exitmask;
+		$this_test->{'stdinfile'} = '';
+		$this_test->{'regtest'} = ();
+        $this_test->{'filterlog'} = '';
+		$this_test->{'compresslog'} = FALSE;
+		$this_test->{'rootcomp'} = FALSE;
+		$this_test->{'rootcomp_cmd'} = "";
+		$this_test->{'rootcomp_file1'} = "";
+		$this_test->{'rootcomp_file2'} = "";
+        $this_test->{'checkcount'} = FALSE;
+        $this_test->{'checkcount_file'} = "";
+        $this_test->{'checkcount_tolerance'} = 1;
+        $this_test->{'checkcount_level'} = "BOTH";
+        $this_test->{'checkmerge'} = FALSE;
+        $this_test->{'checkmerge_file'} = "";
+        $this_test->{'checkmerge_reffile'} = "";
+        $this_test->{'checkmerge_tolerance'} = 1;
+        $this_test->{'emdcheck'} = ();
+		$this_test->{'doc'} = "";
+		next;
+	    }
+	    else {
+		print "$prog: Error: config line $. incorrect, test definition invalid - ignoring line\n";
+		next;
+	    }
+	}
+	if ($line =~ /^name\s+([^\s]+)/){
+	    $this_test->{'name'} = $1;
+	    print "$prog debug: config test name >$1<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^datafile\s+([^\s]+)\s+([^\s]+)/){
+	    $this_test->{'datafile'} = $1;
+	    $this_test->{'datafilelink'} = $2;
+	    print "$prog debug: config datafile >$1< link >$2<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^datafile\s+([^\s]+)/){
+	    $this_test->{'datafile'} = $1;
+	    print "$prog debug: config datafile >$1<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^joboptions\s+([^\s]+)/){
+	    $this_test->{'joboptions'} = $1;
+	    print "$prog debug: config joboptions >$1<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^pre_condition\s+(.+)$/){
+	    my $pre_condition = $1;
+	    push @{$this_test->{'pre_condition'}}, $pre_condition;
+	    print "$prog debug: config pre_condition >$pre_condition<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^pre_command\s+(.+)$/){
+	    my $pre_command = $1;
+	    push @{$this_test->{'pre_command'}}, $pre_command;
+	    print "$prog debug: config pre_command >$pre_command<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^post_command\s+(.+)$/){
+	    my $post_command = $1;
+	    push @{$this_test->{'post_command'}}, $post_command;
+	    print "$prog debug: config post_command >$post_command<\n" if ($debug);
+	    next;
+	}
+        if ($line =~ /^post_test\s+([^\s]+)\s+(.+)$/){
+	    my $post_test = {'name' => $1, 'cmd' => $2};
+	    push @{$this_test->{'post_test'}}, $post_test;            
+	    print "$prog debug: config post_test >$1< >$2<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^athena_args\s+(.+)$/){
+	    $this_test->{'athena_args'} = $1;
+	    print "$prog debug: config athena_args >$1<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^athena_env\s+(.+)$/){
+	    $this_test->{'athena_env'} = $1;
+	    print "$prog debug: config athena_env >$1<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^athena_cmd\s+(.+)$/){
+	    $this_test->{'athena_cmd'} = $1;
+	    print "$prog debug: config athena_cmd >$1<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^extra_failure_codes\s+(.+)$/){
+	    $this_test->{'exitmask'} = $default_exitmask;	    
+	    my @codes = split('\s',$1);
+	    for (@codes) {
+		if (exists $ERROR{$_}) {
+		    $this_test->{'exitmask'} |= $ERROR{$_};
+		}
+		else {
+		    my @tmp = keys %ERROR;
+		    prog_error_exit ("Exit code '$_' unknown. Allowed values are: @tmp",'SCRIPT_MISC');
+		}
+	    }	    	    
+	    print "$prog debug: config extra_failure_codes >$1<\n" if ($debug);
+	    next;
+	}	
+	if ($line =~ /^stdinfile\s+(.+)$/){
+	    $this_test->{'stdinfile'} = $1;
+	    print "$prog debug: config stdinfile >$1<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^disable/){
+	    $this_test->{'disabled'} = TRUE;
+	    print "$prog debug: config disabled >" . ( $_ ? "true" : "false") . "<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^checklog\s+(.+)$/){
+	    $this_test->{'checklog'} = TRUE;
+	    $this_test->{'checklog_opts'} = $1;
+	    print "$prog debug: config checklog >" . ( $_ ? "true" : "false") . "<\n" if ($debug);
+	    print "$prog debug: config checklog_opts >$1<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^checklog\s*$/){
+	    $this_test->{'checklog'} = TRUE;
+	    print "$prog debug: config checklog >" . ( $_ ? "true" : "false") . "<\n" if ($debug);
+	    next;
+	}
+        if ($line =~ /^filterlog\s+(.+)$/){
+	    $this_test->{'filterlog'} = $1;
+	    print "$prog debug: config filterlog >$1<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^compresslog/){
+	    $this_test->{'compresslog'} = TRUE;
+	    print "$prog debug: config compresslog >" . ( $_ ? "true" : "false") . "<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^regtest\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/){
+	    my $regtest = { 'algoname' => $1, 'match' => $2, 'reffile' => $3};
+	    push @{$this_test->{'regtest'}}, $regtest;
+	    print "$prog debug: config regtest >$1< >$2< >$3<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^edmcheck\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/){
+	    my $edmcheck = { 'algoname' => $1, 'edmfile' => $2, 'edmreffile' => $3};
+	    push @{$this_test->{'edmcheck'}}, $edmcheck;
+	    print "$prog debug: config edmcheck >$1< >$2< >$3<\n" if ($debug);
+	    next;
+	}
+	if ($line =~ /^fullregtest\s+([^\s]+)\s+([^\s]+)/){
+	    my $regtest = { 'algoname' => $fullregtest, 'match' => $1, 'reffile' => $2};
+	    push @{$this_test->{'regtest'}}, $regtest;
+	    print "$prog debug: config fullregtest >$1< >$2<\n" if ($debug);
+	    next;
+	}
+        if ($line =~ /^customregtest\s+(.+)$/){
+            my $regtest = { 'algoname' => $customregtest, 'match' => $1, 'reffile' => ''};
+	    push @{$this_test->{'regtest'}}, $regtest;
+	    print "$prog debug: config customregtest >$1<\n" if ($debug);
+	    next;
+	}
+	#check merge
+	if ($line =~ /^checkmerge\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/){
+	    $this_test->{'checkmerge'} = TRUE;
+	    $this_test->{'checkmerge_file'} = $1;
+            $this_test->{'checkmerge_reffile'}= $2;
+            $this_test->{'checkmerge_tolerance'}= $3;
+	    print "$prog debug: config checkmerge >" . ( $_ ? "true" : "false") . "<\n" if ($debug);
+	    print "$prog debug: config checkmerge_file >$1<\n" if ($debug);
+	    print "$prog debug: config checkmerge_reffile >$2<\n" if ($debug);
+	    print "$prog debug: config checkmerge_tolerance >$3<\n" if ($debug);
+	    next;
+	}
+        #  check for 3rd argument (L2, EF or BOTH)
+	if ($line =~ /^checkcount\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/){
+	    $this_test->{'checkcount'} = TRUE;
+	    $this_test->{'checkcount_file'} = $1;
+            $this_test->{'checkcount_tolerance'}=$2;
+            $this_test->{'checkcount_level'}=$3;
+	    print "$prog debug: config checkcount >" . ( $_ ? "true" : "false") . "<\n" if ($debug);
+	    print "$prog debug: config checkcount_file >$1<\n" if ($debug);
+	    print "$prog debug: config checkcount_tolerance >$2<\n" if ($debug);
+	    print "$prog debug: config checkcount_level >$3<\n" if ($debug);
+	    next;
+	}
+        # only 2 arguments, assume BOTH
+	if ($line =~ /^checkcount\s+([^\s]+)\s+([^\s]+)/){
+	    $this_test->{'checkcount'} = TRUE;
+	    $this_test->{'checkcount_file'} = $1;
+            $this_test->{'checkcount_tolerance'}=$2;
+	    print "$prog debug: config checkcount >" . ( $_ ? "true" : "false") . "<\n" if ($debug);
+	    print "$prog debug: config checkcount_file >$1<\n" if ($debug);
+	    print "$prog debug: config checkcount_tolerance >$2<\n" if ($debug);
+	    next;
+	}
+        # optional 2nd argument
+	if ($line =~ /^rootcomp\s+([^\s]+)\s*([^\s]*)$/){
+	    $this_test->{'rootcomp'} = TRUE;
+	    $this_test->{'rootcomp_cmd'} = $rootcomp_cmd;
+            if ($2 eq "") {
+              $this_test->{'rootcomp_file1'} = "expert-monitoring.root";
+              $this_test->{'rootcomp_file2'} = $1;
+            }
+            else {
+              $this_test->{'rootcomp_file1'} = $1;
+              $this_test->{'rootcomp_file2'} = $2;
+            }
+	    print "$prog debug: config rootcomp >" . ( $_ ? "true" : "false") . "<\n" if ($debug);
+	    print "$prog debug: config rootcomp_file1 >$this_test->{'rootcomp_file1'}<\n" if ($debug);            
+	    print "$prog debug: config rootcomp_file2 >$this_test->{'rootcomp_file2'}<\n" if ($debug);
+	    next;
+	}
+    # old style                                                                                                                                                                
+    if ($line =~ /^customrootcomp\s+([^\s]+)\s+([^\s]+)$/){
+        $this_test->{'rootcomp'} = TRUE;
+        $this_test->{'rootcomp_cmd'} = $1;
+        $this_test->{'rootcomp_file2'} = $2;
+        print "$prog debug: config custom rootcomp >" . ( $_ ? "true" : "false") . "<\n" if ($debug);
+        print "$prog debug: config custom rootcomp_cmd >$1<\n" if ($debug);
+        print "$prog debug: config custom rootcomp_file2 >$2<\n" if ($debug);
+        next;
+    }
+    # optional 3rd argument                                                                                                                                                    
+    if ($line =~ /^customrootcomp\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)$/){
+        $this_test->{'rootcomp'} = TRUE;
+        $this_test->{'rootcomp_cmd'} = $1;
+        $this_test->{'rootcomp_file1'} = $2;
+        $this_test->{'rootcomp_file2'} = $3;
+        print "$prog debug: config custom rootcomp >" . ( $_ ? "true" : "false") . "<\n" if ($debug);
+        print "$prog debug: config custom rootcomp_cmd >$1<\n" if ($debug);
+        print "$prog debug: config custom rootcomp_file1 >$2<\n" if ($debug);
+        print "$prog debug: config custom rootcomp_file2 >$3<\n" if ($debug);
+        next;
+    }
+	if ($line =~ /^doc\s+(.+)$/){
+	    $this_test->{'doc'} = $1;
+	    print "$prog debug: config doc >$1<\n" if ($debug);
+	    next;
+	}
+	else {
+	    print "$prog: Warning: config line $. not recognised, ignoring it: $line\n";
+	    next;
+	}
+    }
+    close CONFIG;
+    print "$prog debug: end of config file\n\n" if ($debug);
+    # save last test config
+    if (! $first){
+	$config{$current_test_id} = $this_test;
+	push @test_order, $current_test_id;
+    }
+
+}
+
+# display details of the configured tests
+sub print_config(){
+    print "=== Test Configuration\n";
+    foreach (keys %config){
+	print "test: $_\n";
+	print "  name '" . $config{$_}->{'name'} . "' \n";
+	print "  doc '" . $config{$_}->{'doc'} . "'\n";
+	print "  disabled '" . ( $config{$_}->{'disabled'} ? "true" : "false") . "'\n";
+	print "  checklog '" . ( $config{$_}->{'checklog'} ? "true" : "false") . "'\n";
+	print "  checklog_opts '" . $config{$_}->{'checklog_opts'} . "'\n";
+        print "  filterlog '" . $config{$_}->{'filterlog'} . "'\n";
+	print "  compresslog '" . ( $config{$_}->{'compresslog'} ? "true" : "false") . "'\n";
+	print "  rootcomp '" . ( $config{$_}->{'rootcomp'} ? "true" : "false") . "'\n";
+	print "  rootcomp_cmd '" . $config{$_}->{'rootcomp_cmd'} . "'\n";
+	print "  rootcomp_file1 '" . $config{$_}->{'rootcomp_file1'} . "'\n";        
+	print "  rootcomp_file2 '" . $config{$_}->{'rootcomp_file2'} . "'\n";
+	print "  checkcount '" . ( $config{$_}->{'checkcount'} ? "true" : "false") . "'\n";
+	print "  checkcount_file '" . $config{$_}->{'checkcount_file'} . "'\n";
+	print "  checkcount_tolerance '" . $config{$_}->{'checkcount_tolerance'} . "'\n";
+	print "  checkcount_level '" . $config{$_}->{'checkcount_level'} . "'\n";
+	print "  checkmerge '" . ( $config{$_}->{'checkcount'} ? "true" : "false") . "'\n";
+	print "  checkmerge_file '" . $config{$_}->{'checkcount_file'} . "'\n";
+	print "  checkmerge_tolerance '" . $config{$_}->{'checkcount_tolerance'} . "'\n";
+	print "  checkmerge_reffile '" . $config{$_}->{'checkcount_file'} . "'\n";
+	print "  datafile '" . $config{$_}->{'datafile'} . "'\n";
+	print "  datafilelink '" . $config{$_}->{'datafilelink'} . "'\n";
+	print "  joboptions '" . $config{$_}->{'joboptions'} . "'\n";
+	for (@{$config{$_}->{'pre_condition'}}){
+	    print "  pre_condition $_'\n";
+	}
+	for (@{$config{$_}->{'pre_command'}}){
+	    print "  pre_command $_'\n";
+	}
+	for (@{$config{$_}->{'post_command'}}){
+	    print "  post_command $_'\n";
+	}
+	for (@{$config{$_}->{'post_test'}}){
+	    print "  post_test $_'\n";
+	}        
+        print "  athena_env'"  . $config{$_}->{'athena_env'} . "'\n";
+	print "  athena_cmd '" . $config{$_}->{'athena_cmd'} . "'\n";
+	print "  athena_args '" . $config{$_}->{'athena_args'} . "'\n";
+	printf "  exitmask %#.8b \n", $config{$_}->{'exitmask'};
+	print "  stdinfile '" . $config{$_}->{'stdinfile'} . "'\n";
+	if ($#{$config{$_}->{'regtest'}} == -1){
+	    print "  (no regtests defined)\n";
+	}
+	for (@{$config{$_}->{'regtest'}}){
+	    print "  regtest: algorithm name '" . $_->{'algoname'} . "'\n";
+	    print "           match message pattern '" . $_->{'match'} . "'\n";
+	    print "           reference file '" . $_->{'reffile'} . "'\n";
+	}
+	if ($#{$config{$_}->{'edmcheck'}} == -1){
+	    print "  (no edmtests defined)\n";
+	}
+	for (@{$config{$_}->{'edmcheck'}}){
+	    print "  edmcheck: algorithm name  '" . $_->{'algoname'} . "'\n";
+	    print "           edmfile          '" . $_->{'edmfile'} . "'\n";
+	    print "           reference file   '" . $_->{'edmreffile'} . "'\n";
+	}
+    }
+}
+
+# check that tests specified on command line exist
+# replace names by ids
+sub check_tests(){
+
+    # build map of tests by name
+    my $test_id_byname = {};
+    foreach (keys %config){
+	my $name = $config{$_}->{'name'};
+	if (exists $test_id_byname{$name}){
+	    print "$prog: error: test name $name is not unique\n";
+	} else {
+	    $test_id_byname{$name} = $_;
+	}
+    }   
+    
+    # check that tests specified on command line exist
+    # replace names by ids
+    for ( my $i=0; $i<=$#tests; $i++ ){
+	if ( exists $config{$tests[$i]} ){
+	    next;
+	} elsif ( exists $test_id_byname{$tests[$i]} ) {
+	    $tests[$i] = $test_id_byname{$tests[$i]};
+	    next;
+	} else {
+	    prog_error_exit ("test name/id $tests[$i] is not defined in the config file", 'SCRIPT_MISC');
+	}
+    }
+
+    # if no tests are specified, do them all in the order they were read in.
+    if ($#tests == -1){
+	@tests = @test_order;
+    }
+}
+
+
+# loop over tests, skip those that are disabled
+sub do_tests(){
+    my $first = TRUE;
+    for (@tests){
+	my $id = $_;	
+	@statuscodes = ( 'OK' ); # reset for status code of latest test
+	$exitmask = $config{$id}->{'exitmask'};	# exitmask of latest test
+	#print "-------------------------------------------------------\n";
+	print "=== Test $id: " . $config{$id}->{'name'};
+	if ($config{$id}->{'disabled'}) {
+	    print " is disabled\n";
+	} else {
+	    print "\n";
+	    if ($first){
+		first_test_prep();
+		$first = FALSE;
+	    }
+ 	    run_test($id);
+	    if ($#statuscodes>0){
+		$failures++;
+	    }
+	    $statuscode = process_error_codes(@statuscodes);
+	    $testresults{$id}=$statuscode;	    
+	}
+	print "--------------------------------------------------------------------------------\n";
+    }
+}
+
+# Timer subroutine
+# given an initial time t0 in seconds since the epoch (i.e. as given by perl time function), calculates and prints the total elapsed (aka wallclock) time, user time and system time. Do not expect these to add up, e.g. if the system is busy with other users or you have to wait for castor.
+# NB if called multiple times, the last call will overwrite previous output files.
+sub timer($){
+    my ($t0) = @_;
+    my $t1=time();
+    my ($tuser,$tsystem,$tcuser,$tcsystem) = times;
+    printf( "=== Timer: total elapsed %d s, total user %6.2f s, total system %6.2f s\n", 
+	    $t1-$t0, $tuser+$tcuser, $tsystem+$tcsystem);
+    open TIMER, ">$timerout";
+    printf TIMER "%d %f %f\n",$t1-$t0, $tuser+$tcuser, $tsystem+$tcsystem;
+    close TIMER;
+    
+}
+
+sub results_summary(){
+    return if (!$showsummary);
+    print "=== Test results summary\n";
+    printf "  %3s %-20s %-10s\n", "Id", "Test Name", "Result";
+    for (@tests){
+	my $id = $_;
+	printf "  %3s %-20s ", $id, $config{$id}->{'name'};
+	if ($config{$id}->{'disabled'}){
+	    print "(disabled)\n";
+	    next;
+	}
+	if ($testresults{$id} == 0){
+	    print "passed";
+	} else {
+	    print "failed ($testresults{$id})";
+	}
+	print "\n";
+    }
+}
+
+# preparations before first test is run
+sub first_test_prep {
+
+    # create run dir if it doesn't already exist
+    if ( $clear_dir ) {
+        system "rm -fr $run_dir";
+    }
+    if ( ! -d $run_dir ){
+	mkpath $run_dir 
+	    #or die "$prog: error: failed mkpath $run_dir: $!\n";
+    }
+    chdir $run_dir or prog_error_exit( "failed chdir $run_dir: $!\n", 'SCRIPT_MISC');
+
+    # get log file from env
+    my $ajl = $ENV{'ATN_JOB_LOGFILE'};
+    if (defined($ajl)){
+	system "echo $ajl > atn_job_logfile_name";
+    }
+
+    # run script to get relevant file
+    my $id = $_;
+    my $jobopts = $config{$id}->{'joboptions'};
+    print "$prog debug: job options:$jobopts\n" if ($debug);
+}
+
+# run a test
+sub run_test($){
+    my ($id) = @_;
+    my $name = $config{$id}->{'name'};
+
+    # prepare file names
+    my $jobopts = $config{$id}->{'joboptions'};
+    my $logfile = "atn_test.log";
+    my $logfiletail = "atn_tail.log";
+    my $local_jobopts = "";
+    print "$prog debug: job options:$jobopts\n" if ($debug);
+    systemcall("echo \"$config{$id}->{'doc'}\" > $docout");
+    if ( $jobopts  ne 'None' and $jobopts ne UNDEFINED ){
+        my @suffixlist = ( '.py', '.txt' );
+        my ($filename,$path,$suffix) = fileparse($jobopts,@suffixlist);
+        $local_jobopts = $filename . "_test" . $suffix;
+        $logfile = "$filename" . "_test.log";
+        $logfiletail = "$filename" . "_tail.log";
+        print "$prog debug: $jobopts  $local_jobopts $logfile\n" if ($debug);
+    
+    # get copy of joboptions file to customise for this job, 
+    # if it's not already there
+    # allow for the case of no jobotions (AthanMT)
+        if (! -e "$filename$suffix" ){
+	    print "$prog debug: $filename$suffix does not exist, so copying it with get_files\n" if ($debug);
+	    systemcall("get_files -jo $jobopts");
+        }
+        if (-e "$filename$suffix"){ # check: will not be there in verify mode
+	    copy "$filename$suffix", "$local_jobopts"
+	        or prog_error_exit( "failed copying $filename$suffix to $local_jobopts: $!\n", 'SCRIPT_MISC');
+        }
+        # check permissions on local joboptions file before trying to append to it
+        if (! -w $local_jobopts){
+	    chmod 0644, $local_jobopts
+	         or prog_error_exit( "failed to set write permission for $local_jobopts: $!\n", 'SCRIPT_MISC');
+        }
+     
+
+        # append joboptions to set algorithm output level to 2, 
+        # for algorithms to be regression tested.
+        open JOBOPTS, ">> $local_jobopts" 
+	    or prog_error_exit ("failed opening $local_jobopts: $!\n", 'SCRIPT_MISC');
+        print JOBOPTS "\n";
+#    for (@{$config{$id}->{'regtest'}}){
+#	my $algoname = $_->{'algoname'};
+	# require some alphanumeric chars for a valid algoname
+#	if ($algoname =~ /\w/){
+#	    print "$prog debug: appending to joboptions file: $algoname.Outputlevel = 2\n"  if ($debug);
+#	    print JOBOPTS "Algorithm(\"$algoname\").Outputlevel = DEBUG\n";
+#	print JOBOPTS "MessageSvc.debugLimit = 2000\n";
+#	    print JOBOPTS "MessageSvc.defaultLimit = 2000\n";
+#	} else {
+#	    print "$prog warning: not setting output level for algorithm \"$algoname\" since it doesn't look like a valid name (no alphanumeric chars)\n";
+#	}
+#    }
+        close JOBOPTS;
+    }
+    # run any pre-condition - they must all succeeed or else the job won't run
+    my $pre_condition; 
+    my $precondrc=TRUE;
+    for $pre_condition (@{$config{$id}->{'pre_condition'}}){
+	my $precondrc1=systemcall("$pre_condition");
+	print "$prog debug: pre_condition \"$pre_condition\" returned $precondrc1\n" if ($debug);
+	if ($precondrc1!=0){
+	    print "$prog info: pre_condition \"$pre_condition\" failed (exit code $precondrc1)\n";
+	    $precondrc=FALSE;
+	}
+    }
+    if ($precondrc){
+	print "$prog debug: pre-conditions met\n" if ($debug);
+    } else {
+	print "$prog info: pre-conditions failed so test cannot be run. This is not a test failure.\n";
+	push @statuscodes, 'PRECONDITION_FAILED_SO_NOT_RUN';
+	return;
+    }
+
+    # run any pre-command
+    my $pre_command; 
+    for $pre_command (@{$config{$id}->{'pre_command'}}){
+	systemcall("$pre_command");
+    }
+
+    # link data file if specified
+    my $datafile = $config{$id}->{'datafile'};
+    my $datafilelink = $config{$id}->{'datafilelink'};
+    if ($datafile ne UNDEFINED){
+	# expand environment variables in datafile
+	while ($datafile =~ /\$\{(.+)\}/){ 
+	    my $var = $1;
+	    if (exists $ENV{$var}){ 
+		my $sub=$ENV{$var};
+		$datafile =~ s/\$\{$var\}/$sub/;
+		print "$prog debug: expanding env var '$var' in datafile yields: $datafile\n" if ($debug);
+	    } else {
+		print "$prog: Warning: env var '$var' used in datafile definition is undefined, replacing with blank\n";
+		$datafile =~ s/\$\{$1\}//;
+	    }
+	}
+
+	print "$prog debug: linking data file to $datafilelink: $datafile\n"  
+	    if ($debug);
+	if (-e $datafilelink or -l $datafilelink){
+	    print "$prog debug: first removing $datafilelink\n" if ($debug);
+	    unlink $datafilelink
+		or die "$prog: error: failed to delete $datafilelink: $!\n";
+	}
+	symlink $datafile, $datafilelink
+	    or die "$prog: error: failed to symlink $datafilelink: $!\n";
+    }
+
+    # run athena
+    my $athena_env = $config{$id}->{'athena_env'};
+    my $athena_cmd = $config{$id}->{'athena_cmd'};
+    my $athena_args = $config{$id}->{'athena_args'};
+    my $filter_cmd = $config{$id}->{'filterlog'};
+    $filter_cmd = " 2>&1 | " . $filter_cmd if (length($filter_cmd)>0);
+    $athena_args = "" if ($athena_args eq UNDEFINED);
+    my $stdinfile = getStdinFile($config{$id}->{'stdinfile'});
+    print "=== Athena env '$athena_env' \n";
+    print "=== Running '$athena_cmd $athena_args $local_jobopts $stdinfile $filter_cmd'\n";
+    # the stderr redirection needs to be exactly at this place
+    my $athenarc = systemcall("$athena_env ; $athena_cmd $athena_args $local_jobopts $stdinfile $filter_cmd > $logfile 2>&1");
+
+    # the way to recognise a timeout
+    $timeout = FALSE;
+    if (! open LOG, "tail -600 $logfile|"){
+	print "$prog: error: failed opening $logfile to read: $!\n";
+	print "-> $failkey Aborting this test\n";
+	# will happen later: return; # go on to next test
+    }
+    while (<LOG>){
+	if (/CRITICAL stopped by user interrupt/ or
+        /ERROR Keyboard interruption caught/ or
+	    /^Signal handler: Killing [0-9]+ with 15/){
+	    $timeout = TRUE;
+	    last;
+	}
+
+    }
+    close LOG;
+
+    print "$prog: debug: timeout=$timeout " . ($timeout?"true":"false") . " athenarc=$athenarc \n" if ($debug);
+
+    # check athena return code
+    #print "-------------------------------------------------------\n";
+    if ($athenarc == 0 and not $timeout){
+	print "=== $name OK: Athena exited normally\n";
+        print "art-result: 0 athena.$name\n";
+    } elsif ($timeout){
+    # or $athenarc == 35584 -> sometimes this exit code is just a seg fault
+	print "=== $name $warnkey: Athena exceeded time limit and was killed\n";
+        print "art-result: 1 athena.$name\n";
+	push @statuscodes, 'ATN_TIME_LIMIT';
+    } else {
+	print "=== $name $failkey : Athena exited abnormally! Exit code: $athenarc\n";
+        print "art-result: 2 athena.$name\n";
+	push @statuscodes, 'ATHENA_BAD_EXIT';
+    }
+
+	
+    # run any post-commands
+    unlink "$postcmdout" if (-f "$postcmdout");
+#    if 
+    if (defined $config{$id}->{'post_command'} 
+	and   @{$config{$id}->{'post_command'}}>0) {
+      my $post_command;
+      @postrc=();
+
+      for $post_command (@{$config{$id}->{'post_command'}}){
+        # All post command share the same log file
+	push @postrc, systemcall("($post_command) >> $postcmdout 2>&1");
+      }
+      systemcall("cat $postcmdout");
+      print "$prog debug: post_command #commands: ".@postrc."  return codes: @postrc \n" if ($debug);
+    }
+
+    my %reldata = release_metadata();
+    my $nightly = (exists $reldata{'nightly name'} ? $reldata{'nightly name'} : "UNKNOWN");
+    # modification for ART (ATR-17618)
+    # $nightly = $nightly . "/latest";
+    print "$prog: looking for histograms and references for nightly $nightly \n";
+
+    # run any post-tests    
+    unlink "$posttestrc" if (-f "$posttestrc");
+    if ( defined(@{$config{$id}->{'post_test'}}) ) {
+      my $post_test;
+      my $total_rc = 0;
+      @postrc=();
+      open (POSTTEST, '>', $posttestrc);
+      for $post_test (@{$config{$id}->{'post_test'}}){
+        # Each post test has its own log file
+        my $post_test_log = "post_test_$post_test->{'name'}.log";
+        # Replace '$logfile' with the actual file name
+        my $post_test_cmd = $post_test->{'cmd'};
+        $post_test_cmd =~ s/\$logfile/$logfile/;
+	# If there is a comparison to a reference file, make sure that the correct path is used
+        $post_test_cmd =~ s/latest/$nightly/g;
+        my $rc = systemcall("($post_test_cmd) > $post_test_log 2>&1");
+        $total_rc += $rc;
+        # Save return codes in separate text file
+        print POSTTEST "$post_test->{'name'} $rc\n";
+      }
+      close POSTTEST;
+      if ($total_rc>0) {
+        push @statuscodes, 'POST_TEST_BAD_EXIT';
+      }
+    }
+
+    my $pwd = `pwd`;
+    chomp $pwd;
+    # make a URL by substituting the lxbuild local disk path for the web 
+    # server URL if it does not match the lxbuild local disk path then it 
+    # will be left as a file path instead. 
+    # NB gives wrong address for incremental nightlies because the build is always done in atlrel_0 then copied to altrel_1-5 as appropriate
+    my $logfileURL = $logfile;
+    $logfileURL =~ s%/pool/build/atnight/localbuilds/nightlies%http://atlas-computing.web.cern.ch/atlas-computing/links/buildDirectory/nightlies%;
+    print "=== Log file: " . $pwd . "/$logfileURL\nNB replace rel_0 with actual nightly in this URL.\n";
+    if (! -e $logfile or -z $logfile){
+	print "=== Error: log file does not exist or is empty, skipping the rest of this test\n";
+	return;
+    }
+    # get data file LFN/PFN from log file + pool file catalogue
+    if (! open LOG, "<$logfile"){
+	print "$prog: error: failed opening $logfile to read: $!\n";
+	print "-> $warnkey Aborting this test\n";
+	return; # go on to next test
+    }
+    my $dataLFN="unknown";
+    my $dataPFN="";
+    my $eventCounter=0;
+    while (my $line = <LOG>){
+      if ($line =~ /InputCollections\s+\= \['(.*)'\]/){  # athena
+	$dataLFN=$1;
+      }
+      elsif ($line =~ /event stream from file list\s+\['(.*)'\]/){  # athenaHLT
+	$dataLFN=$1;
+      }
+      # count events for athena job
+      ++$eventCounter if ($line =~ /AthenaEventLoopMgr\s+INFO\s+===>>>  done processing event/);
+      # handle athenaHLT case
+      if ($line =~ /Py:athenaHLT\s+INFO\s+Processed ([0-9]+) events/){
+        $eventCounter=$1;
+      }
+    }
+    close LOG;
+
+    print "$prog debug: dataLFN=$dataLFN\n" if ($debug);
+    if ($dataLFN ne "unknown"){
+	my $dataLFNstripped = $dataLFN;
+	$dataLFNstripped =~ s/^LFN\://;
+	my $cmdout1 = qx(FClistPFN -u xmlcatalog_file:PoolFileCatalog.xml -l $dataLFNstripped);
+	chomp $cmdout1;
+	if (length($cmdout1)>0){
+	    $dataPFN = $cmdout1;
+	}
+	print "$prog debug: dataLFNstripped=$dataLFNstripped dataPFN=$dataPFN\n" if ($debug);
+	print "$prog debug: cmdout1=$cmdout1\n" if ($debug);
+    }
+    print "=== Data file: $dataLFN   $dataPFN\n";
+
+    # write how many events processed
+    print "=== Events processed: $eventCounter\n";
+
+    # check log file for likely errors and known false positives
+    if ($config{$id}->{'checklog'}){
+      my $checklog_opts =  $config{$id}->{'checklog_opts'};
+      # ERRORs
+      my $logrc = systemcall("check_log.pl $checklog_opts $logfile > $checklogout 2>&1");
+      systemcall("cat $checklogout");
+      if ($logrc != 0){
+	print "=== $name $failkey : problem detected in log file\n";
+        print "art-result: 1 $name.CheckLog\n";
+	push @statuscodes, 'ATHENA_ERROR_IN_LOG';
+      } else {
+        print "art-result: 0 $name.CheckLog\n";
+      }
+      # WARNINGs
+      $rc = systemcall("check_log.pl $checklog_opts --noerrors --warnings $logfile > $warnout 2>&1");
+      # Ignore rc.
+    }
+
+    #make short file with last 600 lines only
+    systemcall("tail -600 $logfile > $logfiletail");
+ 
+
+    # rootcomp
+    if ($config{$id}->{'rootcomp'}){
+      	my $rootcomp_file1 =  $config{$id}->{'rootcomp_file1'};
+        my $rootcomp_file2 =  $config{$id}->{'rootcomp_file2'};
+        if( $nightly ne "" ) {
+           # allow for custom tests with two files
+           $rootcomp_file2  =~ s/latest/$nightly/g ;
+	}
+        $rootcomp_file1 = resolveSymlinks($rootcomp_file1);
+        $rootcomp_file2 = resolveSymlinks($rootcomp_file2);
+    
+    if (-e $rootcomp_file1) {
+        if (-e $rootcomp_file2) {
+	my $rc=systemcall("$config{$id}->{'rootcomp_cmd'} $rootcomp_file1 $rootcomp_file2 > $rootcompout 2>&1", TRUE);
+ 	if ($rc != 0){
+	    print "=== $name WARNING: monitoring histogram mismatch detected by rootcomp\n";
+            print "art-result: 1 $name.RootComp\n";
+	    push @statuscodes, 'ROOTCOMP_MISMATCH';
+	} else {
+	    print "=== $name: rootcomp: monitoring histograms match. \n";
+            print "art-result: 0 $name.RootComp\n";
+	}
+        }
+        else {
+            print "=== Alert: $rootcomp_file2 does not exist \n";
+            print "art-result: 2 $name.RootComp\n";
+        }
+    }
+        else {
+            print "=== Alert: $rootcomp_file1 does not exist \n";
+            print "art-result: 2 $name.RootComp\n";
+        }
+	#systemcall("cat $rootcompout");
+        if (-e $rootcompout) {
+	systemcall("grep -A 5 '^Summary' $rootcompout");
+        }
+      }
+
+    # checkcount
+    if ($config{$id}->{'checkcount'}){
+	my $checkcount_file =  $config{$id}->{'checkcount_file'};
+        my $checkcount_tolerance = $config{$id}->{'checkcount_tolerance'};
+        my $checkcount_level = $config{$id}->{'checkcount_level'};
+        if( $nightly ne "" ) {
+           $checkcount_file  =~ s/latest/$nightly/ ;
+	}
+        $checkcount_file = resolveSymlinks($checkcount_file);
+	print "$prog: checking trigger and TE counts \n";
+        print "=== Running $checkcount_cmd $checkcount_tolerance $checkcount_file $checkcount_level > $checkcountout 2>&1 \n";
+	my $rc=systemcall("$checkcount_cmd $checkcount_tolerance $checkcount_file $checkcount_level > $checkcountout 2>&1", TRUE);
+ 	if ($rc != 0){
+	    print "=== $name WARNING: trigger count mismatch detected by checkcount\nSee $checkcountout for details.\n";
+            print "art-result: 1 $name.CheckCounts\n";
+	    push @statuscodes, 'CHECKCOUNTS_FAILED';
+	} else {
+	    print "=== $name: countcheck: trigger counts match. \n";
+            print "art-result: 0 $name.CheckCounts\n";
+	}
+	#systemcall("cat $rootcompout");
+        #Grep for FAILURE here so that bad runs will be flagged as such  
+	systemcall("grep 'FAILURE' $checkcountout");
+	systemcall("grep 'test warning' $checkcountout");
+	systemcall("grep 'tolerance' $checkcountout");
+    }
+
+ # checkmerge
+    if ($config{$id}->{'checkmerge'}){
+	my $checkmerge_file =  $config{$id}->{'checkmerge_file'};
+        my $checkmerge_tolerance = $config{$id}->{'checkmerge_tolerance'};
+        my $checkmerge_reffile = $config{$id}->{'checkmerge_reffile'};
+        if( $nightly ne "" ) {
+           $checkmerge_file  =~ s/latest/$nightly/ ;
+	}
+        $checkmerge_file = resolveSymlinks($checkmerge_file);
+	print "$prog: checking trigger histograms for merged system \n";
+        print "=== Running $checkmerge_cmd $checkmerge_file $checkmerge_reffile $checkmerge_tolerance > $checkmergeout 2>&1 \n";
+	my $rc=systemcall("$checkmerge_cmd $checkmerge_file $checkmerge_reffile $checkmerge_tolerance > $checkmergeout 2>&1", TRUE);
+
+ 	if ($rc != 0){
+	    print "=== $name WARNING: Errors detected by checkmerge\nSee $checkmergeout for details.\n";
+            print "art-result: 1 $name.CheckMerge\n";  
+	    push @statuscodes, 'POST_TEST_BAD_EXIT';
+	} else {
+	    print "=== $name: mergecheck: the test passed successfully. \n";
+            print "art-result: 0 $name.CheckMerge\n";
+	}
+	systemcall("grep 'ERROR' $checkmergeout");
+	systemcall("grep 'WARNING' $checkmergeout");
+    }
+    
+   # EDM tests
+    my $emdcheckresult=TRUE;
+  EDMCHECK:
+    for (@{$config{$id}->{'edmcheck'}}){
+        # truncate algorithm name for 30 characters
+	my $algoname = $_->{'algoname'};
+	my $truncalgoname = substr($algoname, 0, 30);
+	my $edmfile = $_->{'edmfile'};
+	my $edmreffile = $_->{'edmreffile'};
+	# if file exist for this sepecfic nightly use it, otherwise
+	# use default
+        if( $nightly ne "" ) {
+	  $newedmreffile =  $edmreffile;
+	  # substitute  e.g. devval/latest for latest
+	  $newedmreffile =~ s/latest/$nightly/ ;
+	  # check if the reference file for this nightly exists
+	  if ( -e $edmreffile ) {
+	      $edmreffile = $newedmreffile;
+	      print "New reference file name $edmreffile \n";
+	  }
+	}
+        $edmreffile = resolveSymlinks($edmreffile);
+	my $rc=systemcall("$truncalgoname -f $edmfile -r $edmreffile >>$edmcheckout 2>&1", TRUE);
+        if ($rc != 0){
+	    print "=== $name WARNING: trigger edmcheck mismatch detected by $truncalgoname\nSee $edmcheckout for details.\n";
+            print "=== $name if differences are understood cp $edmfile  $edmreffile \n";
+            print "art-result: 1 $name.EdmCheck\n"; 
+	} else {
+	    print "=== $name: edmcheck: files matched \n";
+            print "art-result: 0 $name.EdmCheck\n";  
+	}
+    }
+
+    # regression tests
+    my $regtestresult=TRUE;
+  REGTEST:
+    for (@{$config{$id}->{'regtest'}}){
+        # truncate algorithm name for 15 characters
+	my $algoname = $_->{'algoname'};
+	my $truncalgoname = substr($algoname, 0, 30);
+	my $match = $_->{'match'};
+	my $reffile = $_->{'reffile'};
+	my $newfile = $reffile . ".new";
+        # reference file caser
+        if( substr($newfile, 0, 5) eq "/tmp/" ){ 
+	  # ref file is in /tmp, eg. from another tst (due to tmp filling up, avoid this)
+	  $newfile = substr($newfile, 5);
+	} elsif ( substr($newfile,0,3) eq "../"){
+	  # reference is to another test -- other test must be first in test/xxx_TestConfigruation.xml
+	  my $lslash = rindex $newfile, '/';
+          $newfile = substr($newfile, $lslash+1 );
+          # in this case ref-file for an existing test will end in .new
+          $reffile = $reffile . ".new";
+	}  elsif      ( substr($newfile, 0, 7) eq "/cvmfs/" ){
+          # should be usual case: ref file is in cvmfs for ART (was /afs/ for ATN)  
+          my $lslash = rindex $newfile, '/';
+          $newfile = substr($newfile, $lslash+1 );
+          if( $nightly ne "" ) {
+	    $newreffile =  $reffile;
+	    # substitute  e.g. devval/latest for latest
+	    $newreffile =~ s/latest/$nightly/ ;
+	    # check if the reference file for this nightly exists
+	    if ( -e $newreffile ) {
+	      $reffile = $newreffile;
+	      print "New reference file name $reffile \n";
+	    }
+	  }
+	}
+	print "$prog debug: truncated algoname $truncalgoname\n" if ($debug);
+	# extract regression test lines for this algorithm from log file
+	open NEW, ">$newfile"
+	    or die "$prog: error: failed opening $newfile to write: $!\nart-result: 2 $name.Regtest\n";
+	if (! open LOG, "<$logfile"){
+	    print "$prog: error: failed opening $logfile to read: $!\n";
+	    print "-> $warnkey Aborting this test\nart-result: 2 $name.Regtest\n";
+	    return FALSE; # go on to next test
+	}
+	my $lines=0;
+	if ($algoname eq $fullregtest){
+	    while (<LOG>){
+		if (/$match/){
+		    print NEW;
+		    $lines++;
+		}
+	    }
+	    print "$prog debug: fullregtest $lines lines matched $match in LOG\n" if ($debug);
+        } elsif ($algoname eq $customregtest){
+          $rc = systemcall("$match >> $regtestout", TRUE);
+          $regtestresult = ( $rc==0 ? TRUE : FALSE );
+          next REGTEST;
+        }
+        else {
+	    while (<LOG>){
+		if (/$truncalgoname.*$match/){
+		    print NEW;
+		    $lines++;
+		}
+	    }
+	    print "$prog debug: regtest $lines lines matched $truncalgoname $match in LOG\n" if ($debug);
+	}
+
+	close LOG;
+	close NEW;
+	# check whether any lines matched - if zero it's an error straight away
+	# and no point in doing the diff
+	if ($lines == 0){
+	    # print failure keyword here to flag it as an error
+	    print "=== Alert! $warnkey no lines matching $match were found for $truncalgoname in log file\n";
+            print "art-result: 2 $name.Regtest\n";
+	    $regtestresult = FALSE;
+	    next REGTEST;
+	}
+	# diff the output and the reference
+	# even if verify is off
+	my $rc = 0;
+        $reffile = resolveSymlinks($reffile);
+        print  "old/reference file $reffile\n";
+        print  "new/test      file $newfile\n";
+        print  "< old/reference\n> new/test\n";
+	print substr($reffile, 0, 4);
+# identify location of ref file
+	if( substr($reffile, 0, 4) eq "/tmp" ){
+	  print "=== This test looks for reference in /tmp directory\n";
+	} elsif( substr($reffile, 0, 3) eq "../" ){
+	  print "=== This test looks for reference in another directory\n";
+        } elsif (substr($reffile, 0, 1) eq "/" ){
+	  print "=== This test looks for reference in /cvmfs or /afs or /localhome directory\n";
+  	} else {
+	  print "=== This test looks for reference from svn\n";
+	}
+        if (-e $reffile) {
+            #            print "old/reference file exists!\n";
+	systemcall("echo -e 'total lines in old/reference:' `wc -l $reffile` >>$regtestout",TRUE); 
+	systemcall("echo -e 'total lines in new/test     :' `wc -l $newfile` >>$regtestout",TRUE); 
+	systemcall("echo -e '< old/reference\n> new/test' >> $regtestout", TRUE);
+	$rc = systemcall("diff $reffile $newfile", TRUE);
+	$rc = systemcall("diff $reffile $newfile >> $regtestout", TRUE);
+
+	# Do HTML diff if differences are small enough
+	$difflines = `wc -l $regtestout | cut -d' ' -f1`;
+	if ($difflines < 1000) {
+	    systemcall("htmldiff.py -w 80 $reffile $newfile > $htmldiffout 2>&1", TRUE);
+	}
+	if ($rc == 0){
+	    print "=== Output is the same as reference for $algoname\n";
+            print "art-result: 0 $name.Regtest\n";
+	} else {
+	    # print failure keyword here to flag it as an error
+	    print "=== Alert! $warnkey Output differs from reference for $algoname\n";
+	    print "    If this change is understood, please update the reference file";
+            if(substr($reffile, 0, 6) eq "/cvmfs" ){
+		print "by typing:\n    cp $newfile $reffile\n";
+	    } else {
+		print ".\n";
+	    }
+            print "art-result: 1 $name.Regtest\n";
+	    $regtestresult = FALSE;
+	    next REGTEST;
+	}
+        }
+        else {
+          print "=== Alert! old/reference file: $reffile does not exist - check if this is a new release!\n";  
+          print "art-result: 2 $name.Regtest\n";
+        }
+    }
+    if (!$regtestresult){
+	push @statuscodes, 'ATHENA_REGTEST_FAILED';
+    }
+
+    # compress log file
+    if ($config{$id}->{'compresslog'}){
+	systemcall("gzip -9 $logfile");
+    }
+
+#    print "$prog debug: returning result $result (" 
+#	. ($result ? "true" : "false") . ")\n"      if ($debug);
+    return;
+}
+
+
+# wrap system calls to provide for verify and debug modes.
+# second, optional argument overrides verify mode if TRUE
+sub systemcall($;$){
+    my $override_verify = FALSE;
+    my $command;
+    ($command, $override_verify) = @_;
+    
+    my $rc = 0;
+    if ($verify or $debug){
+	print "$prog: command: $command\n"; 
+    }
+    if (!$verify or $override_verify){
+        $rc = system ($command); 
+    }
+    $rc = ($rc >> 8);  # see http://perldoc.perl.org/functions/system.html
+    if ($debug){
+	print "$prog: return code " . $rc . "\n";
+    }
+    return $rc;
+}
+
+# Resolve all symlinks in given path
+sub resolveSymlinks() {
+  my ($path) = @_;
+  return $path if (length $path == 0);
+  my $respath = `readlink -f $path`;
+  if ($? != 0) {
+      return $path;    # failure: return original path
+  }
+  chomp $respath;
+  return $respath;
+}
+
+# Read ReleaseData file and return dictionary with content
+sub release_metadata() {
+    my %data;
+    my @dir = grep(/\/$ENV{'AtlasProject'}\//, split(':',$ENV{'LD_LIBRARY_PATH'}));
+    open RELDATA, "$dir[0]/../ReleaseData" or print "=== Alert! Cannot open ReleaseData file\n";
+    while (<RELDATA>) {
+        chomp;
+        my @kv = split(':');
+        $data{$kv[0]} = $kv[1];
+    }
+    return %data;
+}
diff --git a/Trigger/TrigValidation/TriggerTest/Testing/TriggerTest.conf b/Trigger/TrigValidation/TriggerTest/Testing/TriggerTest.conf
index 9d8cda7816c06997fe9dfa22adeb7603e72bec42..c30834d027cfebec6ae5a82310ce50fa2b111946 100644
--- a/Trigger/TrigValidation/TriggerTest/Testing/TriggerTest.conf
+++ b/Trigger/TrigValidation/TriggerTest/Testing/TriggerTest.conf
@@ -217,7 +217,7 @@ test 60
   name BjetSliceAthenaTrigRDO
   doc Bjet slice on top
   joboptions testCommonSliceAthenaTrigRDO.py
-  athena_args -c 'menu="MC_pp_v7_tightperf_mc_prescale"; sliceName="bjet" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"] '
+  athena_args -c 'menu="MC_pp_v7_TriggerValidation_mc_prescale"; sliceName="bjet" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"] '
   checklog --config checklogTriggerTest.conf --showexcludestats
   fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_BjetSliceAthenaTrigRDO.reference
   rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_BjetSliceAthenaTrigRDO.root
@@ -229,7 +229,7 @@ test 61
   name BphysicsSliceAthenaTrigRDO
   doc Bphysics on top
   joboptions testCommonSliceAthenaTrigRDO.py
-  athena_args -c 'menu="MC_pp_v7_tightperf_mc_prescale"; sliceName="bphysics"; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]'
+  athena_args -c 'menu="MC_pp_v7_TriggerValidation_mc_prescale"; sliceName="bphysics"; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]'
   checklog --config checklogTriggerTest.conf --showexcludestats
   fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_BphysicsSliceAthenaTrigRDO.reference
   rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_BphysicsSliceAthenaTrigRDO.root
@@ -241,7 +241,7 @@ test 62
   name ElectronSliceAthenaTrigRDO
   doc runs electron slice only on top
   joboptions testCommonSliceAthenaTrigRDO.py
-  athena_args -c 'menu="MC_pp_v7_tightperf_mc_prescale"; sliceName="egamma" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]'
+  athena_args -c 'menu="MC_pp_v7_TriggerValidation_mc_prescale"; sliceName="egamma" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]'
   checklog --config checklogTriggerTest.conf --showexcludestats
   fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_ElectronSliceAthenaTrigRDO.reference
   rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_ElectronSliceAthenaTrigRDO.root
@@ -253,7 +253,7 @@ test 63
   name JetSliceAthenaTrigRDO
   doc Jet slice on top
   joboptions testCommonSliceAthenaTrigRDO.py
-  athena_args -c 'menu="MC_pp_v7_tightperf_mc_prescale"; sliceName="jet" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]'
+  athena_args -c 'menu="MC_pp_v7_TriggerValidation_mc_prescale"; sliceName="jet" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]'
   checklog --config checklogTriggerTest.conf --showexcludestats
   fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_JetSliceAthenaTrigRDO.reference
   rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_JetSliceAthenaTrigRDO.root
@@ -265,7 +265,7 @@ test 64
   name METSliceAthenaTrigRDO
   doc MET slice on top  
   joboptions testCommonSliceAthenaTrigRDO.py
-  athena_args -c 'menu="MC_pp_v7_tightperf_mc_prescale"; sliceName="met" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]'
+  athena_args -c 'menu="MC_pp_v7_TriggerValidation_mc_prescale"; sliceName="met" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]'
   checklog --config checklogTriggerTest.conf --showexcludestats
   fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_METSliceAthenaTrigRDO.reference
   rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_METSliceAthenaTrigRDO.root
@@ -289,7 +289,7 @@ test 66
   name MuonSliceAthenaTrigRDO
   doc muon on top
   joboptions testCommonSliceAthenaTrigRDO.py
-  athena_args -c 'menu="MC_pp_v7_tightperf_mc_prescale"; sliceName="muon"; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]'
+  athena_args -c 'menu="MC_pp_v7_TriggerValidation_mc_prescale"; sliceName="muon"; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]'
   checklog --config checklogTriggerTest.conf --showexcludestats
   fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_MuonSliceAthenaTrigRDO.reference
   rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_MuonSliceAthenaTrigRDO.root
@@ -301,7 +301,7 @@ test 67
   name TauSliceAthenaTrigRDO
   doc Tau on top
   joboptions testCommonSliceAthenaTrigRDO.py
-  athena_args -c 'menu="MC_pp_v7_tightperf_mc_prescale"; sliceName="tau" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]'
+  athena_args -c 'menu="MC_pp_v7_TriggerValidation_mc_prescale"; sliceName="tau" ; jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(10); jp.AthenaCommonFlags.FilesInput=["root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00/RDO.07644622._000001.pool.root.1"]'
   checklog --config checklogTriggerTest.conf --showexcludestats
   fullregtest REGTEST /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_TauSliceAthenaTrigRDO.reference
   rootcomp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triggertest_TauSliceAthenaTrigRDO.root
diff --git a/Trigger/TrigValidation/TriggerTest/test/TriggerTest_TestConfiguration.xml b/Trigger/TrigValidation/TriggerTest/test/TriggerTest_TestConfiguration.xml
deleted file mode 100755
index e1ecb1b50f8aea0605e3d0e2286121b9d23ddd6f..0000000000000000000000000000000000000000
--- a/Trigger/TrigValidation/TriggerTest/test/TriggerTest_TestConfiguration.xml
+++ /dev/null
@@ -1,907 +0,0 @@
-<?xml version="1.0"?> 
-<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd"> 
-<!-- NB validate this file here before committing to svn:
- python /afs/cern.ch/user/r/rtt/public/xmlvalidate.py TriggerTest_TestConfiguration.xml
- see: http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/onlineValidation/validator.html
- ~rtt/public/xmlvalidate.py
- 
- This xml file is divided into the suites 
- to improve parallel running - see the conf file for more info :
- tt_0     
- tt_20    MC_pp_v6
- tt_21    Physics_pp_v7 
- tt_22    Physics_HI_v3 
- tt_23    Physics_HI_v4
- tt_24    MC_HI_v4
- tt_26    MC_pp_v7
- tt_27    MC_pp_v7_no_prescale_toxAOD_FTK
- the link setting (tt_3) below is not needed anymore ... 
- tt_3     linker (needs either MC_pp_v7 or Physics_pp_v7) run only 1! of these!
- tt_40    Leakcheck
- tt_41    StatusCodes
- tt_42    noFPE
- tt_50    chainorder asc
- tt_51    chainorder dsc
- tt_52    chainorder comp (needs 50&51)
- tt_61    1Signatures with MC-menu objects
- tt_62    2Signatures with MC-menu objects
- tt_7     Signatures with spcl. setup Tests
- tt_70    Signatures with spcl. setup Tests this is MB-Enhanced
- tt_index0 (check if all above are done)
- tt_index (run finalizing steps)
- -->
-
-<unifiedTestConfiguration>
-    <atn>
-        
-        <!-- 2 -->
-        
-        <TEST name="AthenaTrigRDO_Physics_pp_v7" type="script" suite="tt_21">
-            <options_atn>trigtest.pl --test AthenaTrigRDO_Physics_pp_v7 --run AthenaTrigRDO_Physics_pp_v7 --conf TriggerTest.conf</options_atn>
-            <timelimit>60</timelimit>
-            <author>Trigger Validation</author>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="AthenaTrigRDO_Physics_HI_v3" type="script" suite="tt_22">
-            <options_atn>trigtest.pl --test AthenaTrigRDO_Physics_HI_v3 --run AthenaTrigRDO_Physics_HI_v3 --conf TriggerTest.conf</options_atn>
-            <timelimit>60</timelimit>
-            <author>Trigger Validation</author>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="AthenaTrigRDO_Physics_HI_v4" type="script" suite="tt_23">
-            <options_atn>trigtest.pl --test AthenaTrigRDO_Physics_HI_v4 --run AthenaTrigRDO_Physics_HI_v4 --conf TriggerTest.conf</options_atn>
-            <timelimit>60</timelimit>
-            <author>Trigger Validation</author>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="AthenaTrigRDO_MC_HI_v3" type="script" suite="tt_24">
-            <options_atn>trigtest.pl --test AthenaTrigRDO_MC_HI_v3 --run AthenaTrigRDO_MC_HI_v3 --conf TriggerTest.conf</options_atn>
-            <timelimit>60</timelimit>
-            <author>Trigger Validation</author>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-
-        <TEST name="AthenaTrigRDO_MC_pp_v7" type="script" suite="tt_26">
-            <options_atn>trigtest.pl --test AthenaTrigRDO_MC_pp_v7 --run AthenaTrigRDO_MC_pp_v7 --conf TriggerTest.conf</options_atn>
-            <timelimit>60</timelimit>
-            <author>Trigger Validation</author>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-
-        <TEST name="AthenaTrigRDO_MC_pp_v7_no_prescale_toxAOD_FTK" type="script" suite="tt_27">
-            <options_atn>trigtest.pl --test AthenaTrigRDO_MC_pp_v7_no_prescale_toxAOD_FTK --run AthenaTrigRDO_MC_pp_v7_no_prescale_toxAOD_FTK --conf TriggerTest.conf</options_atn>
-            <timelimit>60</timelimit>
-            <author>Trigger Validation</author>
-            <expectations>
-                <errorMessage>FAILURE </errorMessage>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-
-        
-        <!-- 3 -->
-        <!-- EITHER -->
-        <!--TEST name="link_AthenaTrigRDO_MC" type="script" suite="tt_3">
-         <options_atn>trigtest.pl - -test link_AthenaTrigRDO_MC - -run link_AthenaTrigRDO_MC - -conf TriggerTest.conf ; rm -rf link_AthenaTrigRDO_MC</options_atn>
-         <timelimit>5</timelimit>
-         <author>Trigger Validation</author>
-         <prerequisite>tt_20</prerequisite>  
-         <expectations>
-         <errorMessage>FAILURE </errorMessage>
-         <returnValue>0</returnValue>
-         </expectations>
-         </TEST -->
-        
-        <!-- OR -->
-        <!--TEST name="link_AthenaTrigRDO_Physics" type="script" suite="tt_3">
-         <options_atn>trigtest.pl - -test link_AthenaTrigRDO_Physics - -run link_AthenaTrigRDO_Physics - -conf TriggerTest.conf ; rm -rf link_AthenaTrigRDO_Physics</options_atn>
-         <timelimit>5</timelimit>
-         <author>Trigger Validation</author>
-         <prerequisite>tt_21</prerequisite>  
-         <expectations>
-         <returnValue>0</returnValue>
-         </expectations>
-         </TEST-->
-        
-        <!-- 4 stop for now running in RTT anyhow-->
-        <!--TEST name="AthenaTrigRDO_leakcheck" type="script" suite="tt_40"> 
-         <options_atn>export LD_PRELOAD=/afs/cern.ch/sw/lcg/external/libunwind/5c2cade/${CMTCONFIG}/lib/libunwind.so ; trigtest.pl - -test AthenaTrigRDO_leakcheck - -run AthenaTrigRDO_leakcheck - -conf TriggerTest.conf</options_atn> 
-         <timelimit>30</timelimit> 
-         <author>Trigger Validation</author>
-         <platform>opt</platform>
-         <expectations> 
-         <errorMessage>FAILURE </errorMessage> 
-         <returnValue>0</returnValue> 
-         </expectations> 
-         </TEST--> 
-        
-        <!--TEST name="AthenaTrigRDO_StatusCodes" type="script" suite="tt_41"> 
-         <options_atn>trigtest.pl - -test AthenaTrigRDO_StatusCodes - -run AthenaTrigRDO_StatusCodes - -conf TriggerTest.conf</options_atn> 
-         <timelimit>30</timelimit> 
-         <author>Trigger Validation</author>
-         <platform>opt</platform>
-         <expectations> 
-         <errorMessage>FAILURE </errorMessage> 
-         <returnValue>0</returnValue> 
-         </expectations> 
-         </TEST--> 
-        
-        <!--TEST name="AthenaTrigRDO_noFPE" type="script" suite="tt_42"> 
-         <options_atn>trigtest.pl - -test AthenaTrigRDO_noFPE - -run AthenaTrigRDO_noFPE - -conf TriggerTest.conf</options_atn> 
-         <timelimit>30</timelimit>
-         <author>Trigger Validation</author>
-         <platform>opt</platform>
-         <expectations> 
-         <errorMessage>FAILURE </errorMessage> 
-         <returnValue>0</returnValue> 
-         </expectations> 
-         </TEST--> 
-        
-        <!-- 5 -->
-        <TEST name="AthenaTrigRDO_chainOrderAscend" type="script" suite="tt_50"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDO_chainOrderAscend --run AthenaTrigRDO_chainOrderAscend --conf TriggerTest.conf</options_atn> 
-            <timelimit>45</timelimit> 
-            <author>Trigger Validation</author>
-            <mailto> Tomasz.Bold@cern.ch </mailto> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="AthenaTrigRDO_chainOrderDescend" type="script" suite="tt_51"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDO_chainOrderDescend --run AthenaTrigRDO_chainOrderDescend --conf TriggerTest.conf</options_atn> 
-            <timelimit>45</timelimit> 
-            <author>Trigger Validation</author>
-            <mailto> Tomasz.Bold@cern.ch </mailto> 
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="AthenaTrigRDO_chainOrder_compare" type="script" suite="tt_52"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDO_chainOrder_compare --run AthenaTrigRDO_chainOrder_compare --conf TriggerTest.conf</options_atn> 
-            <timelimit>10</timelimit> 
-            <author>Trigger Validation</author>
-            <mailto> Tomasz.Bold@cern.ch </mailto> 
-            <prerequisite>tt_50</prerequisite> 
-            <prerequisite>tt_51</prerequisite>  
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <!-- 6 -->
-        <TEST name="BjetSliceAthenaTrigRDO" type="script" suite="tt_61"> 
-            <options_atn>trigtest.pl --test BjetSliceAthenaTrigRDO --run BjetSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>Trigger Validation</author>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="BphysicsSliceAthenaTrigRDO" type="script" suite="tt_61"> 
-            <options_atn>trigtest.pl --test BphysicsSliceAthenaTrigRDO --run BphysicsSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>Trigger Validation</author>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="ElectronSliceAthenaTrigRDO" type="script" suite="tt_61"> 
-            <options_atn>trigtest.pl --test ElectronSliceAthenaTrigRDO --run ElectronSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>Trigger Validation</author>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="JetSliceAthenaTrigRDO" type="script" suite="tt_61"> 
-            <options_atn>trigtest.pl --test JetSliceAthenaTrigRDO --run JetSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>Trigger Validation</author>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="METSliceAthenaTrigRDO" type="script" suite="tt_61"> 
-            <options_atn>trigtest.pl --test METSliceAthenaTrigRDO --run METSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>Trigger Validation</author>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="MinBiasSliceAthenaTrigRDO" type="script" suite="tt_62"> 
-            <options_atn>trigtest.pl --test MinBiasSliceAthenaTrigRDO --run MinBiasSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>Trigger Validation</author>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST>       
-        
-        <TEST name="MuonSliceAthenaTrigRDO" type="script" suite="tt_62"> 
-            <options_atn>trigtest.pl --test MuonSliceAthenaTrigRDO --run MuonSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>Trigger Validation</author>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="TauSliceAthenaTrigRDO" type="script" suite="tt_62"> 
-            <options_atn>trigtest.pl --test TauSliceAthenaTrigRDO --run TauSliceAthenaTrigRDO --conf TriggerTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>Trigger Validation</author>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <!-- 7 -->
-        <TEST name="MinBiasSliceAthenaTrigRDO_Enhanced" type="script" suite="tt_70"> 
-            <options_atn>trigtest.pl --test MinBiasSliceAthenaTrigRDO_Enhanced --run MinBiasSliceAthenaTrigRDO_Enhanced --conf TriggerTest.conf</options_atn> 
-            <timelimit>60</timelimit> 
-            <author>Trigger Validation</author>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="AthenaTrigRDO_LVL1CTP" type="script" suite="tt_7"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDO_LVL1CTP --run AthenaTrigRDO_LVL1CTP --conf TriggerTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>Trigger Validation</author>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <TEST name="AthenaTrigRDO_ID" type="script" suite="tt_7"> 
-            <options_atn>trigtest.pl --test AthenaTrigRDO_ID --run AthenaTrigRDO_ID --conf TriggerTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
-            <author>Trigger Validation</author>
-            <expectations> 
-                <errorMessage>FAILURE </errorMessage> 
-                <returnValue>0</returnValue> 
-            </expectations> 
-        </TEST> 
-        
-        <!-- FIN -->
-        <!-- Summary table -->
-        <TEST name="atn_timeline" type="script" suite="tt_index0">
-            <doc>ATN timeline</doc>
-            <options_atn>atn_timeline.py --atn -p TriggerTest </options_atn>
-            <timelimit>10</timelimit>
-            <author>Frank Winklmeier</author>
-            <!--prerequisite>tt_0</prerequisite>
-             <prerequisite>tt_10</prerequisite>
-             <prerequisite>tt_11</prerequisite>
-             <prerequisite>tt_12</prerequisite-->
-            <prerequisite>tt_20</prerequisite>
-            <prerequisite>tt_21</prerequisite>
-            <prerequisite>tt_22</prerequisite>
-            <prerequisite>tt_23</prerequisite>
-            <prerequisite>tt_24</prerequisite>
-            <prerequisite>tt_25</prerequisite>
-            <!--prerequisite>tt_3</prerequisite-->
-            <!--prerequisite>tt_40</prerequisite-->
-            <!--prerequisite>tt_41</prerequisite-->
-            <!--prerequisite>tt_42</prerequisite-->
-            <prerequisite>tt_52</prerequisite>
-            <prerequisite>tt_61</prerequisite>
-            <prerequisite>tt_62</prerequisite>
-            <prerequisite>tt_7</prerequisite>
-            <prerequisite>tt_70</prerequisite>
-            <expectations>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <TEST name="atn_xml_summary_table" type="script" suite="tt_index">
-            <options_atn>atn_summary.pl</options_atn>
-            <timelimit>10</timelimit>
-            <author>Trigger Validation</author>
-            <prerequisite>tt_index0</prerequisite>  
-            <expectations>
-                <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
-        
-        <!--TEST name="sendmail2shifter" type="script" suite="tt_index">
-         <options_atn>echo $ATN_PACKAGE | mail -s "TriggerTest ATN done" "czodrows@cern.ch" </options_atn>
-         <timelimit>2</timelimit>
-         <author>Trigger Validation</author>
-         <prerequisite>tt_index0</prerequisite>  
-         <expectations>
-         <returnValue>0</returnValue>
-         </expectations>
-         </TEST-->
-    </atn>
-    
-    <kv/>
-    
-    
-    <!-- RTT tests -->
-    <rtt xmlns="http://www.hep.ucl.ac.uk/atlas/AtlasTesting/rtt">
-        
-        <!--rttContactPerson>David Strom (dstrom@uoregon.edu)</rttContactPerson>
-         <rttContactPerson>Simon George (S.George@rhul.ac.uk)</rttContactPerson>
-         <rttContactPerson>Patrick Czodrowski (czodrows@cern)</rttContactPerson-->
-        <rttContactPerson>Oleg Kuprash (oleg.kuprash@cern.ch)</rttContactPerson>
-        
-        
-        <jobList>
-            <classification>
-                <displayClass>OfflineValidation</displayClass>
-                <displayProcess>Reco</displayProcess>
-                <displayComponent>Trig-Common</displayComponent>
-            </classification> 
-            
-            
-            <jobTransform userJobId="TimingTest_RDOtoRDOTrigger" >
-                <doc>
-                    TimingTest_RDOtoRDOTrigger menu on top events see: https://its.cern.ch/jira/browse/ATLASRECTS-2408 
-                </doc>
-                <jobTransformJobName>TimingTest_RDOtoRDOTrigger</jobTransformJobName>
-                <jobTransformCmd>
-                    cp /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/RDOtoRDOTrigger_template/* ./ ; ./runwrapper.RDOtoRDOTrigger.sh ; perl -i.clean -pe 's/^[\d:]+ //' log.RDOtoRDOTrigger ; grep -B1 -e "PMonSD..evt" log.RDOtoRDOTrigger | head -20 > timing.log ; if [[ `head -2 timing.log | grep -c 'Trig'` == 1 ]]; then echo "Timing   ERROR  : a TriggerChain runs longer than StreamBS - this should not be the case - please consult / check: timing.log - Thank you" &gt; timing_check_log; fi ; grep -B 1 -e "evtloop_time" log.RDOtoRDOTrigger &gt; average_time_per_event.log ; if [[ `grep "[0-9]" average_time_per_event.log | awk '{print $4}'` -gt 30000 ]]; then echo "Timing   ERROR  : the average cpu time per event is too large &gt; 30000 - this should not be the case - please consult / check: average_time_per_event.log - Thank you" &gt; average_time_per_event_ERROR_log; fi 
-                </jobTransformCmd>
-                <group>TriggerTestValidationJobs</group>
-                <queue>medium</queue>
-                <alwaysRunPostProc />
-            </jobTransform>
-            
-            <!-- Jobs to run each current menu and keep monitoring histograms -->
-            
-            <athena userJobId="Physics_pp_v7" doMonitoring="True">
-                <doc>
-                    Physics_pp_v7 menu on minbias RDO 
-                </doc>
-                <displayName>Physics_pp_v7</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='Physics_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="Physics_pp_v7_toAOD" doMonitoring="True" >
-                <doc>
-                    Runs Physics_pp_v7 menu on ttbar dumping 1k events in an xAOD 
-                </doc>
-                <displayName>Physics_pp_v7_toAOD</displayName>
-                <commandLineFlags>
-                    RunningRTT=True;menu='Physics_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] 
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDOtoAOD.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            
-            <athena userJobId="Physics_pp_v7_tight_physics" doMonitoring="True">
-                <doc>
-                    Physics_pp_v7_tight_physics menu on minbias RDO 
-                </doc>
-                <displayName>Physics_pp_v7_tight_physics</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='Physics_pp_v7_tight_physics_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena  userJobId="Physics_HI_v3" >
-                <doc>
-                    Test of Physics_HI_v3 menu on RDO
-                </doc>
-                <displayName>Physics_HI_v3</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='Physics_HI_v3';from AthenaCommon.GlobalFlags import globalflags;jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc15_5TeV.420000.Hijing_PbPb_5p02TeV_MinBias_Flow_JJFV6.recon.RDO.e3754_s2633_r7161';fileRange=[1,10]
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>   
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena  userJobId="Physics_HI_v4" >
-                <doc>
-                    Test of Physics_HI_v4 menu on RDO
-                </doc>
-                <displayName>Physics_HI_v4</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='Physics_HI_v4';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>   
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-
-	    <!-- MC_pp_v7 menu tests go here -->
-            <athena userJobId="MC_pp_v7" doMonitoring="True">
-                <doc>
-                    MC_pp_v7 menu on ttbar RDO 
-                </doc>
-                <displayName>MC_pp_v7</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-
-            <athena userJobId="MC_pp_v7_toAOD" doMonitoring="True" >
-                <doc>
-                    Runs MC_pp_v7 menu on ttbar dumping 1k events in an xAOD 
-                </doc>
-                <displayName>MC_pp_v7_toAOD</displayName>
-                <commandLineFlags>
-                    RunningRTT=True;menu='MC_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] 
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDOtoAOD.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="MC_pp_v7_no_prescale_toxAOD_FTK" doMonitoring="True" >
-                <doc>
-                    Runs MC_pp_v7_no_prescale menu on valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.digit.RDO_FTK.e4993_s2887_r8937_r9119 dumping events in an xAOD
-                </doc>
-                <displayName>MC_pp_v7_no_prescale_toxAOD_FTK</displayName>
-                <commandLineFlags>
-                    RunningRTT=True;menu='MC_pp_v7_no_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;from TriggerJobOpts.TriggerFlags import TriggerFlags;TriggerFlags.doFTK.set_Value_and_Lock(True);from RecExConfig.RecFlags import rec;rec.doFTK.set_Value_and_Lock(True);jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/RDO_FTK.10733709._000019.pool.root.1']
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDOtoAOD.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="MC_pp_v7_tight_mc_prescale" doMonitoring="True">
-                <doc>
-                    MC_pp_v7_tight_mc_prescale menu on ttbar RDO only 500 events
-                </doc>
-                <displayName>MC_pp_v7_tight_mc_prescale</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tight_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="MC_pp_v7_loose_mc_prescale" doMonitoring="True">
-                <doc>
-                    MC_pp_v7_loose_mc_prescale menu on minbias RDO 
-                </doc>
-                <displayName>MC_pp_v7_loose_mc_prescale</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_loose_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-
-            
-            <athena  userJobId="MC_HI_v3_tight_mc_prescale" >
-                <doc>
-                    Test of MC_HI_v3_tight_mc_prescale menu on RDO
-                </doc>
-                <displayName>MC_HI_v3_tight_mc_prescale</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='MC_HI_v3_tight_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(500);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;from AthenaCommon.GlobalFlags import jobproperties;jobproperties.Global.DetDescrVersion='ATLAS-R1-2010-02-00-00';dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc10_7TeV.119113.Hijing_PbPb_2p75TeV_MinBias_Flow_JJV2.digit.RDO.e844_s1345_s1300_d592_tid526760_00';fileRange=[1,2000]
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>   
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena  userJobId="MC_HI_v4" >
-                <doc>
-                    Test of MC_HI_v4 menu on ttbar RDO
-                </doc>
-                <displayName>MC_HI_v4</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='MC_HI_v3_tight_mc_prescale';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2]
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>   
-                <queue>long</queue>
-                <alwaysRunPostProc />
-            </athena>
-
-            <!-- Jobs to run each slice and keep monitoring histograms - RG 14/5/07 -->
-            <!-- MC based slice tests --> 
-            
-            <athena userJobId="Bjet" doMonitoring="True">
-                <doc>
-                    Runs B-jet signature on ttbar RDO 
-                </doc>
-                <displayName>Bjet</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale';sliceName='bjet';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] 
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>medium</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="Bphysics" doMonitoring="True" >
-                <doc>
-                    Runs B-physics slice on user.tursom.mc12_14TeV.208410.Pythia8B_AU2_CTEQ6L1_Bs_Jpsimu6mu6_phi_KK.recon.v6_EXT0 RDOs (until Bs->J/Psi mu mu RDO mc12_8TeV.208002.Pythia8B_AU2_CTEQ6L1_pp_Jpsimu6mu6.recon.RDO.e1331_a159_a190 is availible) 
-                </doc>
-                <displayName>BPhysics</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale';sliceName='bphysics';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc15_RTT_1000_Bphysics_toAOD_r6889/Bphysics_RDO_r6889_mixed.pool.root']
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>medium</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="Bphysics_toAOD" doMonitoring="True" >
-                <doc>
-                    Runs B-physics slice on user.tursom.mc12_14TeV.208410.Pythia8B_AU2_CTEQ6L1_Bs_Jpsimu6mu6_phi_KK.recon.v6_EXT0 RDOs (until Bs->J/Psi mu mu RDO mc12_8TeV.208002.Pythia8B_AU2_CTEQ6L1_pp_Jpsimu6mu6.recon.RDO.e1331_a159_a190 is availible) 
-                </doc>
-                <displayName>BPhysics_toAOD</displayName>
-                <commandLineFlags>
-                    RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale';sliceName='bphysics';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc15_RTT_1000_Bphysics_toAOD_r6889/Bphysics_RDO_r6889_mixed.pool.root']
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDOtoAOD.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>medium</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            
-            <athena userJobId="BphysExo_toAOD" doMonitoring="True" >
-                <doc>
-                    Runs B-physics AND Muon slice on mc15_13TeV.180593.Pythia8_AUMSTW2008LO_Wtaunu_3mu_noPhotos see ATR-13193 
-                </doc>
-                <displayName>BPhysics_toAOD</displayName>
-                <commandLineFlags>
-                    RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale';sliceName='mubphysics';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc15_13TeV.180593.Pythia8_AUMSTW2008LO_Wtaunu_3mu_noPhotos.recon.RDO.e3802_s2608_s2183_r6790/RDO.05594910._000008.pool.root.1']
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDOtoAOD.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>medium</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="Electron" doMonitoring="True" >
-                <doc>
-                    Runs Electron signature on ttbar RDO (until RDO mc12_14TeV.147806.PowhegPythia8_AU2CT10_Zee.recon.RDO.e1564_s1682_s1691_r4710 is availible) 
-                </doc>
-                <displayName>Electron</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale';sliceName='egamma';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] 
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package> 
-                <group>TriggerTestMonitorHistos</group>
-                <queue>medium</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="Electron_ID_Val" doMonitoring="True" >
-                <doc>
-                    Runs Electron slice on ttbar RDO (until mc10_14TeV.106046.PythiaZee_no_filter.digit.RDO.e662_s1107_d459 mu=46, no IBL is availible) 
-                </doc>
-                <displayName>Electron_ID_Val</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale';sliceName='egamma';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] 
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package> 
-                <group>TriggerTestMonitorHistos</group>
-                <queue>medium</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="Tau" doMonitoring="True" >
-                <doc>
-                    Runs Tau signature on ttbar RDO (until Z tau tau RDO is availible) 
-                </doc>
-                <displayName>Tau</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale'; sliceName='tau';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] 
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>medium</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="Jet" doMonitoring="True">
-                <doc>
-                    Runs Jet signature on ttbar RDO 
-                </doc>
-                <displayName>Jet</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale'; sliceName='jet';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] 
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>medium</queue>
-                <alwaysRunPostProc /> 
-            </athena>
-            
-            <athena userJobId="MET" doMonitoring="True" >
-                <doc>
-                    Runs MET signature on ttbar RDO 
-                </doc>
-                <displayName>MET</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale'; sliceName='met';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] 
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>medium</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="MinBias" doMonitoring="True">
-                <doc>
-                    Runs MinBias signature on ttbar RDO 
-                </doc>
-                <displayName>MinBias</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;sliceName='minbias';RunningRTT=True;menu='Physics_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;jp.AthenaCommonFlags.FilesInput=['root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc15_13TeV.361203.Pythia8_A2_MSTW2008LO_ND_minbias.recon.RDO.e3639_s2606_s2174_r7661_tid07858100_00/RDO.07858100._000087.pool.root.1'] 
-                </commandLineFlags>
-                <!--options>testMinBiasSliceAthenaTrigRDO.py</options-->
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="MinBias_Enhanced" doMonitoring="True">
-                <doc>
-                    Runs MinBias_Enhanced signature on ttbar RDO 
-                </doc>
-                <displayName>MinBias_Enhanced</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;sliceName='minbiasEnhanced';RunningRTT=True;menu='Physics_pp_v7';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(50);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] 
-                </commandLineFlags>
-                <!--options>testMinBiasSliceAthenaTrigRDO.py</options-->
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group>
-                <queue>medium</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="Muon" doMonitoring="True">
-                <doc>
-                    Runs Muon signature on ttbar RDO 
-                </doc>
-                <displayName>Muon</displayName>
-                <commandLineFlags>
-                    enableCostMonitoring=True;RunningRTT=True;menu='MC_pp_v7_tightperf_mc_prescale'; sliceName='muon';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] 
-                </commandLineFlags>
-                <options>testCommonSliceAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group> 
-                <queue>medium</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-            <athena userJobId="LVL1" doMonitoring="True">
-                <doc>
-                    LVL1 only test- with default menu
-                </doc>
-                <displayName>LVL1</displayName>
-                <commandLineFlags>
-                    RunningRTT=True;jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(1000);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r7572_tid07644622_00';fileRange=[1,2] 
-                </commandLineFlags>
-                <options>testLVL1CTPAthenaTrigRDO.py</options>
-                <package>Trigger/TrigValidation/TriggerTest</package>
-                <group>TriggerTestMonitorHistos</group> 
-                <queue>medium</queue>
-                <alwaysRunPostProc />
-            </athena>
-            
-        </jobList>   
-        <jobGroups>
-            <jobGroup name="TriggerTestValidationJobs" parent="RTT:Athena">
-                <keepFilePattern info="Log files" displayColor="red">*.txt</keepFilePattern>
-                <keepFilePattern info="Test log file" displayColor="blue">*test*.log</keepFilePattern>
-                <keepFilePattern info="Action log file" displayColor="blue">*action*.log</keepFilePattern>
-                <keepFilePattern info="Monitoring histograms">*-monitoring.root</keepFilePattern>
-                <keepFilePattern info="Timing histograms">timing-histograms.root</keepFilePattern>
-                <keepFilePattern info="checkfilelog">*checkFile*</keepFilePattern>
-                <keepFilePattern info="PerfMon ntuple">*.pmon.gz</keepFilePattern>
-                <keepFilePattern info="PerfMon Hephaestus file">*.heph.log</keepFilePattern>
-                <keepFilePattern info="PerfMon xml">*.xml</keepFilePattern>
-                <keepFilePattern info="POOL files">*.pool.root</keepFilePattern>
-                <keepFilePattern info="GIF files">*.gif</keepFilePattern>
-                <keepFilePattern info="PDF files">*.pdf</keepFilePattern>
-                <keepFilePattern info="ROOT files">*.root</keepFilePattern> 
-                <keepFilePattern info="ROOT macros">*.C</keepFilePattern>
-                <keepFilePattern info="ROOT macros">*.cxx</keepFilePattern>
-                <keepFilePattern info="Bytestream files">*.data</keepFilePattern>
-                <keepFilePattern info="Bytestream files">*.php</keepFilePattern>
-                <keepFilePattern info="igprof files"> igprof.*.gz</keepFilePattern>
-                <keepFilePattern info="igprof files"> cgi-bin/data/*.sql3</keepFilePattern>
-                <keepFilePattern info="igprof files"> cgi-bin/igprof-navigator</keepFilePattern>
-                <keepFilePattern info="TrigCostMon files"> costMonitoring*/* </keepFilePattern>
-                <keepFilePattern maxsize="100">*/TrigCostRoot_Results.root</keepFilePattern>
-                <keepFilePattern maxsize="100">trig_cost.root</keepFilePattern>
-                <keepFilePattern maxsize="100">costMonitoring*/*</keepFilePattern>
-                <keepFilePattern maxsize="100">*log</keepFilePattern>
-                <keepFilePattern maxsize="100">*log_1</keepFilePattern>                
-                
-                <!--binRefFile>*-monitoring.root</binRefFile-->
-                
-                <auxFilePattern>plotDecision.cxx</auxFilePattern>
-                <auxFilePattern>checklogTriggerTest.conf</auxFilePattern>
-                
-                <test position="1">
-                    <modulename>LogTail_TriggerTest</modulename>
-                    <testname>LogTail_TriggerTest</testname>
-                    <arg>
-                        <argname>command</argname>
-                        <argvalue>tail -10000 %JOBLOG >%JOBLOG.tail.txt</argvalue>
-                    </arg>
-                </test>
-                
-                <testToRemove>
-                    <jobGroupName>RTT:Top</jobGroupName>
-                    <testidentifier>CheckFileRunner0</testidentifier>
-                </testToRemove>
-                
-                <testToRemove>
-                    <jobGroupName>RTT:Top</jobGroupName>
-                    <testidentifier>PerfMonDozer0</testidentifier>
-                </testToRemove>
-                
-            </jobGroup>
-            
-            
-            <jobGroup name="TriggerTestMonitorHistos" parent="TriggerTestValidationJobs">
-                
-                <test position="1">
-                    <modulename>CheckLog_TriggerTest</modulename>
-                    <testname>CheckLog_TriggerTest</testname>
-                    <testidentifier>CheckLog_TriggerTest</testidentifier>
-                    <arg>
-                        <argname>command</argname>
-                        <argvalue>check_log.pl --config checklogTriggerTest.conf %JOBLOG</argvalue>
-                    </arg>
-                </test>
-                
-                <test position="2">
-                    <modulename>PerfMonRunner</modulename>
-                    <testname>PerfMonRunner</testname>
-                    <testidentifier>PerfMonRunner</testidentifier>
-                    <arg>
-                        <argname>fileName</argname>
-                        <argvalue>ntuple.pmon.gz</argvalue>
-                    </arg>
-                    <arg>
-                        <argname>options</argname>
-                        <argvalue>-f 0.90</argvalue>
-                    </arg>	
-                    <noalarm />
-                </test>
-                
-                <test position="3">
-                    <modulename>chainDump</modulename>
-                    <testname>chainDump</testname>
-                    <testidentifier>chainDump</testidentifier>
-                    <arg>
-                        <argname>rootFile</argname>
-                        <argvalue>expert-monitoring.root</argvalue>
-                    </arg>
-                    <noalarm />
-                </test>
-                
-                <test position="4">
-                    <modulename>CheckForTrigCostD3PD_TriggerTest</modulename>
-                    <testname>CheckForTrigCostD3PD_TriggerTest</testname>
-                    <arg>
-                        <argname>command</argname>
-                        <argvalue>if [ -f trig_cost.root ] ; then RunTrigCostD3PD.exe -f trig_cost.root --outputTagFromAthena --costMode --linkOutputDir ; else echo file trig_cost.root does not exist thus RunTrigCostD3PD.exe will not be run ; fi</argvalue>
-                    </arg>
-                    <noalarm />
-                </test>
-                <test position="5">
-                    <modulename>CheckForL1AllZero_TriggerTest</modulename>
-                    <testname>CheckForL1AllZero_TriggerTest</testname>
-                    <arg>
-                        <argname>command</argname>
-                        <argvalue>if [[ `sed 's|.*\(.* \)|\1|' L1AV.txt | sed 's/^[ \t]*//' |  sed '/^0/'d | wc -l` == 0 ]]; then echo L1 counts   ERROR  : all entires are ZERO please consult L1AV.txt ; fi </argvalue>
-                    </arg>
-                </test>
-                <test position="6">
-                    <modulename>CheckForHLTChainAllZero_TriggerTest</modulename>
-                    <testname>CheckForHLTChainAllZero_TriggerTest</testname>
-                    <arg>
-                        <argname>command</argname>
-                        <argvalue>if [[ `sed 's|.*\(.* \)|\1|' HLTChain.txt | sed 's/^[ \t]*//' |  sed '/^0/'d | wc -l` == 0 ]]; then echo HLTChain counts   ERROR  : all entires are ZERO please consult HLTChain.txt ; fi </argvalue>
-                    </arg>
-                </test>
-                <test position="7">
-                    <modulename>CheckForHLTTEAllZero_TriggerTest</modulename>
-                    <testname>CheckForHLTTEAllZero_TriggerTest</testname>
-                    <arg>
-                        <argname>command</argname>
-                        <argvalue>if [[ `sed 's|.*\(.* \)|\1|' HLTTE.txt | sed 's/^[ \t]*//' |  sed '/^0/'d | wc -l` == 0 ]]; then echo HLTTE counts   ERROR  : all entires are ZERO please consult HLTTE.txt ; fi </argvalue>
-                    </arg>
-                </test>
-            </jobGroup>
-        </jobGroups>
-    </rtt>
-</unifiedTestConfiguration>
diff --git a/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh b/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh
index c2cac9f981460deae2917e27ed67bd70757e0225..4d6738597507e7c76851fc9792bb2becaf4c7885 100755
--- a/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/exec_art_triggertest_post.sh
@@ -33,26 +33,28 @@ timeout 1m chainDump.py -S --rootFile=expert-monitoring.root
 export JOB_LOG_TAIL=${JOB_LOG%%.*}.tail.${JOB_LOG#*.}
 tail -10000  ${JOB_LOG} > ${JOB_LOG_TAIL}
 
-grep REGTEST athena.log > athena.regtest
+grep REGTEST athena.log > athena.regtest.new
 
 if [ -f ${REF_FOLDER}/athena.regtest ]; then
   echo $(date "+%FT%H:%M %Z")"     Running regtest"
-  grep REGTEST athena.log > athena.regtest
-  timeout 1m regtest.pl --inputfile athena.regtest --reffile ${REF_FOLDER}/athena.regtest | tee regtest.log
+  timeout 1m regtest.pl --inputfile athena.regtest.new --reffile ${REF_FOLDER}/athena.regtest | tee regtest.log
   echo "art-result: ${PIPESTATUS[0]} RegTest"
 else
   echo $(date "+%FT%H:%M %Z")"     No reference athena.regtest found in ${REF_FOLDER}"
+  echo "art-result: 999 RegTest"
 fi
 
 if [ -f ${REF_FOLDER}/expert-monitoring.root ]; then
   echo $(date "+%FT%H:%M %Z")"     Running rootcomp"
-  timeout 10m rootcomp.py ${REF_FOLDER}/expert-monitoring.root | tee rootcompout.log
+  timeout 10m rootcomp.py ${REF_FOLDER}/expert-monitoring.root expert-monitoring.root | tee rootcompout.log
   echo "art-result: ${PIPESTATUS[0]} RootComp"
   echo $(date "+%FT%H:%M %Z")"     Running checkcounts"
   timeout 10m trigtest_checkcounts.sh 0 expert-monitoring.root ${REF_FOLDER}/expert-monitoring.root HLT | tee checkcountout.log
   echo "art-result: ${PIPESTATUS[0]} CheckCounts"
 else
   echo $(date "+%FT%H:%M %Z")"     No reference expert-monitoring.root found in ${REF_FOLDER}"
+  echo "art-result:  999 RootComp"
+  echo "art-result:  999 CheckCounts"
 fi
 
 if [ -f trig_cost.root ]; then 
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v4_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v4_grid.sh
index be9ae8819b06bacf326b22645d027745c2a00c56..d09c06a6120f88166ee963a6424c07d7a87a08c1 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v4_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v4_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="mc_hi_v4_grid"
 export MENU="MC_HI_v4"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v5_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v5_grid.sh
index 8eb3a8efcfab89a4d493f1b69a9129e9d0a61948..6262c768fd933c55a219916b3a33ec830f0755a8 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v5_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_hi_v5_grid.sh
@@ -18,6 +18,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="mc_hi_v5_grid"
 export MENU="MC_HI_v5"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_build.sh
index 44a3d363e7ce43a3a4a769d084f747f35013a519..66a961e466290f02483fc3ca6f6abe41b2de6466 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_build.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="mc_pp_v7_build"
 export MENU="MC_pp_v7"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_bulkmcprod_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_bulkmcprod_grid.sh
new file mode 100755
index 0000000000000000000000000000000000000000..4f37f5321d6bec52414de297e86ff025dfe4e01e
--- /dev/null
+++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_bulkmcprod_grid.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+# art-description: MC v7 tight TriggerTest on MC
+# art-type: grid
+# art-include: 21.1/AthenaP1
+# art-include: 21.1-dev/AthenaP1
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: master/AthenaP1
+# art-output: HLTChain.txt
+# art-output: HLTTE.txt
+# art-output: L1AV.txt
+# art-output: HLTconfig*.xml
+# art-output: L1Topoconfig*.xml
+# art-output: LVL1config*.xml
+# art-output: *.log
+# art-output: costMonitoring_*
+# art-output: *.root
+# art-output: ntuple.pmon.gz
+# art-output: *perfmon*
+# art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
+
+export NAME="mc_pp_v7_bulkmcprod_grid"
+export MENU="MC_pp_v7_BulkMCProd_mc_prescale"
+export EVENTS="500"
+
+source exec_athena_art_trigger_validation.sh
+source exec_art_triggertest_post.sh
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_cpsampleprod_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_cpsampleprod_grid.sh
new file mode 100755
index 0000000000000000000000000000000000000000..27adba5c91672eeddf160e65657b54c71f1459e2
--- /dev/null
+++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_cpsampleprod_grid.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+# art-description: MC v7 tight TriggerTest on MC
+# art-type: grid
+# art-include: 21.1/AthenaP1
+# art-include: 21.1-dev/AthenaP1
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: master/AthenaP1
+# art-output: HLTChain.txt
+# art-output: HLTTE.txt
+# art-output: L1AV.txt
+# art-output: HLTconfig*.xml
+# art-output: L1Topoconfig*.xml
+# art-output: LVL1config*.xml
+# art-output: *.log
+# art-output: costMonitoring_*
+# art-output: *.root
+# art-output: ntuple.pmon.gz
+# art-output: *perfmon*
+# art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
+
+export NAME="mc_pp_v7_cpsampleprod_grid"
+export MENU="MC_pp_v7_CPSampleProd_mc_prescale"
+export EVENTS="500"
+
+source exec_athena_art_trigger_validation.sh
+source exec_art_triggertest_post.sh
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_grid.sh
index a08f198e72a3163174e8a4abb7b375b00ee28381..fe8720d2788bb9c769c54fdb92eb75d348a91ce0 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_grid.sh
@@ -21,6 +21,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="mc_pp_v7_grid"
 export MENU="MC_pp_v7"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_loose_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_loose_grid.sh
index c9c7cf4a36e83ad8c60eea80c793d4dd6c034d08..630cd4cc7f91347b19874c0030dd4b7614c78bfe 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_loose_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_loose_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="mc_pp_v7_loose_grid"
 export MENU="MC_pp_v7_loose_mc_prescale"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_build.sh
index 06825c187b86524d03e9d9311baee75ae38965dc..98577c38dee1853fa08d3d7520dd20b52886b551 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_build.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="mc_pp_v7_nops_aod_ftk_build"
 export MENU="Physics_pp_v7_primaries"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_grid.sh
index 93b7cdf7f88f96f92b1263a81c9aedcf16779d34..d8a691801658402d6ce3e2859440b1650a1bf59f 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_nops_aod_ftk_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="mc_pp_v7_nops_aod_ftk_grid"
 export MENU="Physics_pp_v7_primaries"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_tight_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_tight_grid.sh
index 5497bc02ed73e5b1e4b56fdb7b9a6f47e096540e..ed2eb0decf079f36ca1926d4b95fdfa0799f6153 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_tight_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_tight_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="mc_pp_v7_tight_grid"
 export MENU="MC_pp_v7_tight_mc_prescale"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_triggervalidation_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_triggervalidation_grid.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e09a3cfd38fd3618ee854c1295dd45c8f9357045
--- /dev/null
+++ b/Trigger/TrigValidation/TriggerTest/test/test_mc_pp_v7_triggervalidation_grid.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+# art-description: MC v7 tight TriggerTest on MC
+# art-type: grid
+# art-include: 21.1/AthenaP1
+# art-include: 21.1-dev/AthenaP1
+# art-include: 21.0/Athena
+# art-include: 21.0-TrigMC/Athena
+# art-include: master/Athena
+# art-include: master/AthenaP1
+# art-output: HLTChain.txt
+# art-output: HLTTE.txt
+# art-output: L1AV.txt
+# art-output: HLTconfig*.xml
+# art-output: L1Topoconfig*.xml
+# art-output: LVL1config*.xml
+# art-output: *.log
+# art-output: costMonitoring_*
+# art-output: *.root
+# art-output: ntuple.pmon.gz
+# art-output: *perfmon*
+# art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
+
+export NAME="mc_pp_v7_triggervalidation_grid"
+export MENU="MC_pp_v7_TriggerValidation_mc_prescale"
+export EVENTS="500"
+
+source exec_athena_art_trigger_validation.sh
+source exec_art_triggertest_post.sh
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_build.sh
index 512ae2aaf8ebe6a3a478e62f83b33a21f7b65563..e767ec41ee5a9fa8ec4413d2553dc56bcad1a05f 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_build.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="physics_hi_v4_build"
 export MENU="Physics_HI_v4"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_grid.sh
index 2ff6299cd5e7b63f1cebaeb77b5fc283f5dc08e2..f6266e655fa61275b52e56dce706f911179f2df5 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v4_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="physics_hi_v4_grid"
 export MENU="Physics_HI_v4"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_build.sh
index 120b8527adc7c89f002d9c1a606a665d970af5eb..f4c5094c686c72d96dc4a53e692ddcb5025b8343 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_build.sh
@@ -18,6 +18,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="physics_hi_v5_build"
 export MENU="Physics_HI_v5"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_grid.sh
index 38f3c83c8110529c7b4e30d288f92672692b77f6..48c24aea1574624c669e7f066bd11b056cc455b5 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_hi_v5_grid.sh
@@ -18,6 +18,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="physics_hi_v5_grid"
 export MENU="Physics_HI_v5"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_aod_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_aod_grid.sh
index 5a5a71f3934cc45c4216d95c3018b9042acf99b6..10c9c3b2a0df24af3e2d654abc7d1f1c51bc5c20 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_aod_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_aod_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="physics_pp_v7_aod_grid"
 export MENU="Physics_pp_v7"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_build.sh
index 1a94c97b5eb25dc6b26312634215e6ac8a18aa4e..003761568b4e117a17a841de67becc6a6b8c14e5 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_build.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="physics_pp_v7_build"
 export MENU="Physics_pp_v7"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_chainorder_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_chainorder_build.sh
index fbcdab08397d4292e78315b34952c8c44ac0adcf..d560ee9791cf51d409ea924d0cea9a1ad92bf3ea 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_chainorder_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_chainorder_build.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="physics_pp_v7_chainorder_build"
 export MENU="Physics_pp_v7"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_grid.sh
index edce3c6cc2b41e7c0542a35f039e2a4adebccdb2..2583f66e75d04738b99b868463dceb84f57d95f2 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_grid.sh
@@ -21,6 +21,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="physics_pp_v7_grid"
 export MENU="Physics_pp_v7"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_build.sh
index 66b04c9d57d8a340acf5bfe8db3230ff0b6cff30..66b54150a41c1acb9f00685629baa8e82ceaa69a 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_build.sh
@@ -16,6 +16,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="physics_pp_v7_build_primaries"
 export MENU="Physics_pp_v7_primaries"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_grid.sh
index aa6c9e0246628a17e7531da5e17b3e7375df6a02..2fb43fd56d7187ce5cb9f2022db4687d9b4723c5 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_primaries_grid.sh
@@ -16,6 +16,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="physics_pp_v7_grid_primaries"
 export MENU="Physics_pp_v7_primaries"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_tight_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_tight_grid.sh
index d313447a8d0ba2380b89152f50b1c5570f97af74..deca2daacfd6d6dbb7a63c9574fb3885c64723e4 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_tight_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_physics_pp_v7_tight_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export MENU="Physics_pp_v7_tight_physics_prescale"
 export EVENTS="500"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_build.sh
index 91c9b48c4d22311771f39d1979d3c9a52a666c1a..5d6a36647bc9c6ebd7898b6cffd55c1266a74ba9 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_build.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_bjet_build"
 export SLICE="bjet"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_grid.sh
index f6845600f5134e7ca2494561cd4d5b89bec0800c..cc999f2a49ef1b8107160e3f7949971a406003f4 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bjet_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_bjet_grid"
 export SLICE="bjet"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_aod_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_aod_grid.sh
index f72d360519c9f24bf379848016e818e380fedb69..45164f8868ffdd63356d654c157ce38787a7760c 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_aod_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_aod_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_bphysics_aod_grid"
 export SLICE="bphysics"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_build.sh
index 8d4c3c342282f4b87c6a4c9b88028d985f99cc85..2316b366a9809dc177678224c6932223ab2a79e8 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_build.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_bphysics_build"
 export SLICE="bphysics"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_grid.sh
index 1c8e105b1b501c503c11f5834daed688b57b3bb4..c6ce938851d139cb7e9102de702b8918aea94470 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysics_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_bphysics_grid"
 export SLICE="bphysics"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysicsexo_aod_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysicsexo_aod_grid.sh
index 4d84e74c0c9ff1ec7e7c33a34b9841440fcc1cc8..aeadbb07fa4963ee6bc7bd95a880f4fa627e351f 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysicsexo_aod_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_bphysicsexo_aod_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_bphysicsexo_aod_grid"
 export SLICE="mubphysics"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_build.sh
index 38f86e3dc55091d76e562f91a61ce6d1adc76c16..22ed460c8526bc44a189d7da3491d53867bc7dfd 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_build.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_electron_build"
 export SLICE="egamma"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_grid.sh
index c09f70306341c54b113f7d6da78fbbf17cc73477..f2bfb416ae25d1b1c2d42aefe5d3d3850de3b7f0 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_electron_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_electron_grid"
 export SLICE="egamma"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_id_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_id_build.sh
index 92023fd8aef4b9aff6719196ee9a673c73492cad..365c531d84d95a59b76770b7cfa5f27d1bd36605 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_id_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_id_build.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_id_build"
 export EVENTS="10"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_build.sh
index e5d08da24f72863d408f68bebfa7c71f3802df70..e9b5c6d7a44696cbcc58a2695e24933665213529 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_build.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_jet_build"
 export SLICE="jet"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_grid.sh
index 4520102479c95e76691627c8f6e285e2bc051473..8e21cda5ea4df2e70fb3f6758ad21b88d7ec3395 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_jet_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_jet_grid"
 export SLICE="jet"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_build.sh
index a2f17fba182e4509081a0a1132a2bb13e165cf50..6fab21a12abcaab4634e77ca9f0c068179f5c411 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_build.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_l1_build"
 export EVENTS="10"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh
index 27cf358ba9e03d583d1c275bef83f6400d242ae5..1c4c7a0be06990154b2d89d9f104739b78e01885 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_l1_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_l1_grid"
 export JOBOPTIONS="TriggerTest/testLVL1CTPAthenaTrigRDO.py"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_met_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_met_build.sh
index d281dd3e1e150534002064adb3946866f5d9ddb4..dd669c39099d8a5bf6047a15bdbc1c8ff466b449 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_met_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_met_build.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_met_build"
 export SLICE="met"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_met_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_met_grid.sh
index 0fc58c96e916a5a46a7ede53ad4e14c39de0447a..23e6e1b1cc3f3a924ba452fea19872c7a3a3a0c0 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_met_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_met_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_met_grid"
 export SLICE="met"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_build.sh
index c5c191661528c9c958cccd5e15255881d4d3c8c2..8f3fe85823928459430e514a803bca701a8c9f1d 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_build.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_minbias_build"
 export SLICE="minbias"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_grid.sh
index a5d353f10892c59c8c3bdb7badd132ec453cef50..8c22738628b534219055b3a2b67bb2526f3636b4 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_minbias_grid"
 export SLICE="minbias"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_hmt_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_hmt_grid.sh
index 78dbdc4feb41545e05596d4d4285299cfdb7ee14..791d453328aa334a8f1704f2811c639af782d9c3 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_hmt_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_minbias_hmt_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_minbias_hmt_grid"
 export SLICE="minbiasEnhanced"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_build.sh
index eb749ea51a17f375311b338451475897a516dc34..21755b3193c12a3f3cdd3911be55298d0ef759aa 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_build.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_muon_build"
 export SLICE="muon"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_grid.sh
index 353f627d3265be24191928c292ed3918c203d416..d2becffc2da914fd1267888e5e0a5ca51038584c 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_muon_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_muon_grid"
 export SLICE="muon"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_build.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_build.sh
index f9731ad143caadd4e362b0ffa4eceade908598c2..2ee6d99e31cca9426a1c495d8578e364ac456542 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_build.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_build.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_tau_build"
 export SLICE="tau"
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_grid.sh b/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_grid.sh
index 153bd8357ef7dc9cc2bc6abc826a9da426a3da93..167a490f06c2eb4589f2425394a781cd27f1b828 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_grid.sh
+++ b/Trigger/TrigValidation/TriggerTest/test/test_slice_tau_grid.sh
@@ -20,6 +20,7 @@
 # art-output: ntuple.pmon.gz
 # art-output: *perfmon*
 # art-output: TotalEventsProcessed.txt
+# art-output: *.regtest.new
 
 export NAME="slice_tau_grid"
 export SLICE="tau"
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/BunchGroupSet.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/BunchGroupSet.py
index 2836d05cd649888e2e5d50fdcd97f5154b07db1a..0ce0e5a4847459e59f5182e95b0f6cbe83320ada 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/BunchGroupSet.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/BunchGroupSet.py
@@ -1,6 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from copy import deepcopy
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 from Limits import Limits
 from Lvl1Flags import Lvl1Flags
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/CTPInfo.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/CTPInfo.py
index c19cb82c9330e77c9b17ef53d6ddb5cb2607989a..9111407367e5320c2e0cf7759182cff3e8ab2459 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/CTPInfo.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/CTPInfo.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 from BunchGroupSet import BunchGroupSet
 from Lvl1MenuUtil import oldStyle
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Cabling.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Cabling.py
index 282e615f20b9bc7b81ebbcbabf592f79c1b7bad8..ddb7272a491f62c70f16ee5630a4f19f23057aec 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Cabling.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Cabling.py
@@ -1,6 +1,6 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
-from Limits import Limits
+from Limits import Limits # noqa: F401
 from AthenaCommon.Logging import logging
 log = logging.getLogger("Cabling")
 log.setLevel(logging.INFO)
@@ -117,7 +117,7 @@ class Cabling:
                                 'TE'     : [(0,8,'EN1'),(8,16,'EN2')],
                                 'XE'     : [(0,8,'EN1'),(8,16,'EN2')],
                                 'XS'     : [(0,8,'EN1')],
-                                'MBTSSI' : [(0,12,'NIM1'),(12,24,'NIM2')],
+                                'MBTSSI' : [(0,16,'NIM1'),(16,32,'NIM2')],
                                 'MBTS'   : [(0,1,'NIM1'), (1,2,'NIM2')],
                                 'LUCID'  : [(0,6,'CTPCAL')],
                                 'ZDC'    : [(0,3,'CTPCAL')],
@@ -146,7 +146,7 @@ class Cabling:
     @staticmethod
     def calcBitnum(thrtype):
         # get the widths for the threshold types is defined in L1Common
-        exec("nbits = Limits.%s_bitnum" % thrtype)
+        nbits = getattr(Limits,'%s_bitnum' % thrtype)
         return nbits
 
 
@@ -264,8 +264,7 @@ class InputCable:
         """
         Gets the cable assignment from L1Common
         """
-        exec("cable = Limits.%s_cable" % thrtype)
-        
+        cable = getattr(Limits,'%s_cable' % thrtype)
         # we change the format for run 2, the tuple now contains also the bit multiplicity, as it is not constant per type
         infosize = (len(cable)-1)/cable[0]
 
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/CaloInfo.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/CaloInfo.py
index c2735dafb478d2871e6fb87c102ac06d9cef8f82..ed69578bb3c52973ae0c1ce0fb23da0512033dcb 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/CaloInfo.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/CaloInfo.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 from Lvl1MenuUtil import log
 from Lvl1MenuUtil import oldStyle
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/CoreLut.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/CoreLut.py
new file mode 100644
index 0000000000000000000000000000000000000000..fe17fae1319f7bad966575c28a413bc5563529c3
--- /dev/null
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/CoreLut.py
@@ -0,0 +1,113 @@
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+
+
+class CoreLut(object):
+
+    # LUT  0-19  of size 15 : tip   0 - 299
+    # LUT 20-36  of size 12 : tip 300 - 503
+    # LUT    37  of size  8 : tip 504 - 511
+
+    # maps LUT number to index of first TIP
+    lutDef = {
+        0 : 0,
+        1 : 15,
+        2 : 30,
+        3 : 45,
+        4 : 60,
+        5 : 75,
+        6 : 90,
+        7 : 105,
+        8 : 120,
+        9 : 135,
+        10 : 150,
+        11 : 165,
+        12 : 180,
+        13 : 195,
+        14 : 210,
+        15 : 225,
+        16 : 240,
+        17 : 255,
+        18 : 270,
+        19 : 285,
+        20 : 300,
+        21 : 312,
+        22 : 324,
+        23 : 336,
+        24 : 348,
+        25 : 360,
+        26 : 372,
+        27 : 384,
+        28 : 396,
+        29 : 408,
+        30 : 420,
+        31 : 432,
+        32 : 444,
+        33 : 456,
+        34 : 468,
+        35 : 480,
+        36 : 492,
+        37 : 504
+        }
+
+
+    def __init__(self):
+        pass
+
+    @staticmethod
+    def getLutSize(lutnumber):
+        if lutnumber>=0  and lutnumber<20 : return 15
+        if lutnumber>=20 and lutnumber<37 : return 12
+        if lutnumber==37:                   return 8
+        raise RuntimeError("CoreLut.py getLutSize(): LUT number %i does not exist" % lutnumber)
+
+
+    @staticmethod
+    def getLutRange(lutnumber):
+        if lutnumber>=0 and lutnumber<20 :
+            begin = 15 * lutnumber
+            end   = begin + 14
+        elif lutnumber>=20 and lutnumber<37 :
+            begin = 300 + 12 * (lutnumber-16)
+            end   = begin + 11
+        elif lutnumber==37:
+            begin = 504
+            end   = 511
+        else:
+            raise RuntimeError("CoreLut.py getLutRange(): LUT number %i does not exist" % lutnumber)
+        return (begin,end)
+
+
+
+    @staticmethod
+    def getLutAndBitFromTIP(tip):
+        tip = int(tip)
+        if tip>=0 and tip<300:
+            lut = tip/15
+        elif tip>=300 and tip<504:
+            lut = (tip-300)/12 + 20
+        elif tip>=504 and tip<512:
+            lut = 37
+        else:
+            raise RuntimeError("CoreLut.py getLutAndBitFromTIP(tip): tip %i does not exist" % tip)
+        return lut
+
+
+
+    @staticmethod
+    def getLutAndBit(connector, signal):
+        firstTIPofConnector = [320, 384, 448] # last if 511
+
+        tip = firstTIPofConnector[ connector ] + signal
+            
+        return CoreLut.getLutAndBitFromTIP(tip)
+
+
+    @staticmethod
+    def isOnOneLut(connector, phase, listOfCableBits):
+
+        occupiedLuts = set([ CoreLut.getLutAndBit(connector,2*b + phase)[0] for b in listOfCableBits])
+
+        if len(occupiedLuts)>1:
+            raise RuntimeError("logic stretches over more than one LUT")
+
+coreLut = CoreLut()
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Limits.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Limits.py
index 38da63573d2789d490952cdca9c2255c59989878..192d05a182683b60c0e46dd590925da7240b4e3a 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Limits.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Limits.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 """
 This temporarily holds CTP sizes
@@ -50,13 +50,13 @@ class Limits:
     @staticmethod
     def getCTPdataformat(version):
         module = __import__('CTPfragment.CTPdataformat_v%i' % version, globals(), locals(), ['CTPdataformat_v%i' % version], -1)
-        exec("CTPdataformat = module.CTPdataformat_v%i" % version)
+        CTPdataformat = getattr(module,'CTPdataformat_v%i' % version)
         return CTPdataformat
 
     @staticmethod
     def getL1Common(version):
         module = __import__('L1Common.L1Common_v%i' % version, globals(), locals(), ['L1Common_v%i' % version], -1)
-        exec("L1Common = module.L1Common_v%i" % version)
+        L1Common = getattr(module,'L1Common_v%i' % version)
         return L1Common
 
     @staticmethod
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Logic.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Logic.py
index ce8e6f034e606b675223d11764d2a769c0c2979d..3e44501697df1c848ee077338aa2422fcfc1672f 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Logic.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Logic.py
@@ -1,8 +1,8 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 __all__ = ['Logic', 'Not']
 
-from copy import copy,deepcopy
+from copy import copy
 
 from Lvl1MenuUtil import log
 
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Condition.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Condition.py
index 882a5f470ec5d7ae47e05e2c274db746a33dedfa..2803ae8d770e127fa8cfc72b40971d8f9d019794 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Condition.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Condition.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 
 from Logic import Logic
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Flags.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Flags.py
index 80fdc158b1a2a214c8d73c63028e73491a31a656..64ab976b79cbb0272815055c5e65ee444e319a00 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Flags.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Flags.py
@@ -1,11 +1,10 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 """
 Lvl1 specific flags
 """
 
-from AthenaCommon.JobProperties import JobProperty, JobPropertyContainer, jobproperties
-from TriggerMenu.menu.CommonSliceHelper import AllowedList
+from AthenaCommon.JobProperties import JobProperty, JobPropertyContainer
 from AthenaCommon.Logging import logging
 from Limits import Limits
 
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Menu.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Menu.py
index 22361ed88a3a8efce62825001b66a438bdff2a6f..c099fe517c09f5900def807754cc07352bfb1c49 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Menu.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Menu.py
@@ -1,7 +1,7 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
-from Lvl1Thresholds import LVL1Thresholds, LVL1Threshold, ThresholdValue
-from Lvl1MenuItems import LVL1MenuItems, LVL1MenuItem
+from Lvl1Thresholds import LVL1Thresholds
+from Lvl1MenuItems import LVL1MenuItems
 from Lvl1MonCounters import Lvl1MonCounters
 from CaloInfo import CaloInfo
 from MuctpiInfo import MuctpiInfo
@@ -128,7 +128,6 @@ class Lvl1Menu:
         All other checks should be implemented in TrigConfStorage/src/CheckConsistency.cxx
         This method is only for quick solutions but should be intermediate
         """
-        from Lvl1Flags import Lvl1Flags
 
         success = True
         
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuItems.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuItems.py
index 1678d4c0c0493352e4d2e97d5dd19f28524932c1..bbdd2db903d24682d24a8632cea131bfc9e84426 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuItems.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuItems.py
@@ -1,6 +1,6 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
-from PrescaleHelper import getCutFromPrescale, getPrescaleFromCut, maxPrescaleCut
+from PrescaleHelper import getCutFromPrescale, getPrescaleFromCut
 from Lvl1MenuUtil import oldStyle
 
 from AthenaCommon.Logging import logging
@@ -171,7 +171,6 @@ class PrescaleHandler(object):
         self.items = menuitems
         self.itemsByPartition = {}
 
-        from Lvl1Flags import Lvl1Flags
         for item in menuitems:
             self.itemsByPartition.setdefault(item.partition,[]).append(item)
 
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuUtil.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuUtil.py
index 857b4a7b32a4fe0fdbc3803cce0959d7b47f7996..4fc4c16fdaaf0eb245761f8196b365f9070894d4 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuUtil.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MenuUtil.py
@@ -1,6 +1,6 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
-__all__ = ['log', 'idgen', 'binstr', 'get_smk_psk_Name', 'applyLVL1Prescale', 'oldStyle']
+__all__ = ['log', 'idgen', 'binstr', 'get_smk_psk_Name', 'oldStyle']
 
 from AthenaCommon.Logging import logging
 log = logging.getLogger("TriggerConfigL1")
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MonCounters.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MonCounters.py
index 34e84410ab17dc00372a214da7be4164c250319a..2559756c4580d5fab68aeefa082cd8f705aedb47 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MonCounters.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1MonCounters.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 
 
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Thresholds.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Thresholds.py
index 4d0cd678b6acbbf0847c4379a6cb1a6acb530e86..8d889c80abfc20c8f430b61f5fd57167cffafc31 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Thresholds.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/Lvl1Thresholds.py
@@ -1,9 +1,8 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 from Limits import CaloLimits as CL
 IsolationOff = CL.IsolationOff
 
-from Lvl1MenuUtil import log
 from copy import deepcopy
 
 class ThresholdValue:
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/MuctpiInfo.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/MuctpiInfo.py
index b50ff1f4da5bee275b06c2770d913bb91efbf65a..843a147f60381a4c2c3ed8ed5f1ccf866d548ced 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/MuctpiInfo.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/MuctpiInfo.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 class MuctpiInfo:
     def __init__(self, low_pt=0, high_pt=0, max_cand=13):
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/PrescaleHelper.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/PrescaleHelper.py
index 39dcb8eeb3660f2fd34c96c9e176d07e7c8c39ca..d6453638378a06b974f5606415e304b3076bf1e3 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/PrescaleHelper.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/PrescaleHelper.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 """
 The prescaling uses a pseudo-random binary sequence generator of 24 bit width (31 bit internal)
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDef.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDef.py
index 8732502202b8502db65119a2306d2d90a65f29d4..8bc046d5eeda1281b306a85ad9907f323d7f70fd 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDef.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDef.py
@@ -1,7 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-
-from TriggerJobOpts.TriggerFlags import TriggerFlags as TF
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 class TT:
     """
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDefRun1.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDefRun1.py
index 6b537c1535093a9e426b481f4f610d63d212f59c..ef07604c0ab2e19a3d669b4306db6e355cb85360 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDefRun1.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/TriggerTypeDefRun1.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 
 from TriggerJobOpts.TriggerFlags import TriggerFlags as TF
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLMenuReader.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLMenuReader.py
index 0d7e538daac132f7b87f68f7e0c932e862c18304..5e46847f99fab0616656c5366ab5b3380a4dbac3 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLMenuReader.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLMenuReader.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 from Lvl1Thresholds import LVL1Threshold, LVL1TopoInput, ThresholdValue
 from Lvl1MenuItems import LVL1MenuItem
@@ -8,7 +8,7 @@ from PrescaleHelper import getCutFromPrescale
 from Logic import Logic
 from Lvl1Condition import Lvl1InternalTrigger, ThrCondition
 from CaloInfo import MinimumTOBPt
-from Lvl1MonCounters import Lvl1MonCounters, Lvl1CtpinCounter, Lvl1CtpmonCounter
+from Lvl1MonCounters import Lvl1CtpinCounter, Lvl1CtpmonCounter
 
 
 from AthenaCommon.Logging import logging
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLReader.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLReader.py
index 85d90a28916eaea4fd79145f2e8ee9a50e4753ad..917a2abba9fb84e17797897b0eaff949ac895e77 100755
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLReader.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/XMLReader.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
 
 import xml.etree.cElementTree as ET
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/l1/__init__.py b/Trigger/TriggerCommon/TriggerMenu/python/l1/__init__.py
index 74583d364ec2ca794156596c7254d9b234a940c6..10eda52d21555e116affa250b4cc4c7110c820f1 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/l1/__init__.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/l1/__init__.py
@@ -1,2 +1,2 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7_primaries.py b/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7_primaries.py
index e23a2e898728ec1c9449538c0959c0411989fdd2..2920c08f9ab81243c39f53c6416ec7affda41bd4 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7_primaries.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7_primaries.py
@@ -70,11 +70,23 @@ def setupMenu():
         ['mu20_ivarmedium_L1MU10_2J20', 'L1_MU10_2J20', [], [PhysicsStream], ['RATE:MuonJet', 'BW:Muon','BW:Jet'], -1],                
         ['mu20_ivarmedium_L1MU10_2J15_J20', 'L1_MU10_2J15_J20', [], [PhysicsStream], ['RATE:MuonJet', 'BW:Muon','BW:Jet'], -1],  
 
+        #low pt
+        ['mu6_nomucomb',                   'L1_MU6',           [], [PhysicsStream], ['RATE:SingleMuon', 'BW:Muon'], -1],
+        ['mu8',                    'L1_MU6',           [], [PhysicsStream], ['RATE:SingleMuon', 'BW:Muon'], -1],
+        ['mu10',                   'L1_MU10',           [], [PhysicsStream], ['RATE:SingleMuon', 'BW:Muon'], -1],
+
+        ['2mu4',                    'L1_2MU4',  [], [PhysicsStream], ['RATE:MultiMuon', 'BW:Muon'], -1],
+
         ]
 
 
     if TriggerFlags.doFTK():
         TriggerFlags.MuonSlice.signatures = TriggerFlags.MuonSlice.signatures() + [
+
+            ['mu6_idperf_FTK_L1MU6_FTK',             'L1_MU6_FTK',            [], [PhysicsStream, 'express'], ['RATE:IDMonitoring', 'BW:Muon', 'BW:ID'], -1],
+            ['mu6_idperf_FTKRefit_L1MU6_FTK',        'L1_MU6_FTK',            [], [PhysicsStream, 'express'], ['RATE:IDMonitoring', 'BW:Muon', 'BW:ID'], -1],
+            ['mu22_mu8noL1_FTKFS_L1MU20MU21_FTK',    'L1_MU20MU21_FTK', ['L1_MU20_FTK',''], [PhysicsStream], ['RATE:MultiMuon','BW:Muon'], -1,['serial',-1,['mu22','mu8noL1_FTKFS']]],
+
             ]
 
 
@@ -145,6 +157,13 @@ def setupMenu():
 
         ['10j40_L16J15', 'L1_6J15' , [], [PhysicsStream], ['RATE:MultiJet', 'BW:Jet'], -1],
 
+        #low pT
+        ['j15',                    'L1_RD0_FILLED', [], [PhysicsStream], ['RATE:SingleJet',  'BW:Jet'], -1],
+        ['j45',            'L1_J15', [], [PhysicsStream], ['RATE:SingleJet', 'BW:Jet'], -1],
+        ['j175',                   'L1_J50',  [], [PhysicsStream], ['RATE:SingleJet', 'BW:Jet'], -1],
+
+        ['j45_320eta490', 'L1_J15.31ETA49', [], [PhysicsStream], ['RATE:SingleJet', 'BW:Jet'], -1],
+
         
     ]
 
@@ -154,7 +173,10 @@ def setupMenu():
         ['j225_gsc360_bmv2c2085_split', 'L1_J100', [], [PhysicsStream], ['RATE:SingleBJet', 'BW:BJet'], -1],                   
         ['j55_gsc75_bmv2c2060_split_3j55_gsc75_boffperf_split_L14J20',       'L1_4J20',        [], [PhysicsStream], ['RATE:SingleBJet', 'BW:BJet'], -1],
         ['3j35_gsc55_bmv2c2070_split_L13J35.0ETA23', 'L1_3J35.0ETA23', [], [PhysicsStream], ['RATE:MultiBJet', 'BW:BJet'], -1],
-  
+
+        #low pT
+        ['j35_gsc45_boffperf_split_L1J15', 'L1_J15', [], [PhysicsStream,'express'], ['RATE:SingleBJet', 'BW:BJet'], -1],
+#        ['j45_gsc60_bmv2c1085_split_L1J12',      'L1_J12', [], [PhysicsStream], ['RATE:SingleBJet',  'BW:BJet'], -1],
   
         ] # BjetSlice
    
@@ -162,6 +184,10 @@ def setupMenu():
     if TriggerFlags.doFTK():
         TriggerFlags.BjetSlice.signatures = TriggerFlags.BjetSlice.signatures() + [
  
+           ['j35_boffperf_split_FTK_L1J15_FTK', 'L1_J15_FTK', [], [PhysicsStream], ['RATE:SingleBJet', 'BW:BJet'], -1],
+           ['j35_boffperf_split_FTKVtx_L1J15_FTK', 'L1_J15_FTK', [], [PhysicsStream], ['RATE:SingleBJet', 'BW:BJet'], -1],
+           ['j35_boffperf_split_FTKRefit_L1J15_FTK', 'L1_J15_FTK', [], [PhysicsStream], ['RATE:SingleBJet', 'BW:BJet'], -1],
+
            ] # Additional FTK for BjetSlise
 
 
@@ -169,7 +195,20 @@ def setupMenu():
     TriggerFlags.METSlice.signatures = [
  	['xe110_pufit_L1XE50',                'L1_XE50',[], [PhysicsStream], ['RATE:MET', 'BW:MET'], -1],
         ['xe110_pufit_L1XE55',                'L1_XE55',[], [PhysicsStream], ['RATE:MET', 'BW:MET'], -1],
+
+        #low pT
+        ['xe35',                                   'L1_XE35',[], [PhysicsStream], ['RATE:MET', 'BW:MET'], -1],
+        ['xe90_pufit_L1XE50',               'L1_XE50', [], [PhysicsStream], ['RATE:MET', 'BW:MET'], -1],
+
 			 ]
+
+    if TriggerFlags.doFTK():
+        TriggerFlags.METSlice.signatures = TriggerFlags.METSlice.signatures() + [
+            
+            ['xe35_trkmht_FTK', 'L1_XE35',[], [PhysicsStream], ['RATE:MET', 'BW:MET'], -1],
+            
+            ]
+ 
     
     TriggerFlags.TauSlice.signatures = [
 
@@ -193,6 +232,9 @@ def setupMenu():
     if TriggerFlags.doFTK():
             TriggerFlags.TauSlice.signatures = TriggerFlags.TauSlice.signatures() + [
               
+                ['tau12_idperf_FTK',              'L1_TAU12IM_FTK', [], [PhysicsStream], ['RATE:SingleTau', 'BW:Tau'], -1],
+                ['tau12_perf_FTKNoPrec',          'L1_TAU12IM_FTK', [], [PhysicsStream], ['RATE:SingleTau', 'BW:Tau'], -1],
+
                 ]
 
 
@@ -243,6 +285,10 @@ def setupMenu():
         ['e140_lhloose_nod0_L1EM24VHI', 'L1_EM24VHI', [], [PhysicsStream], ['RATE:SingleElectron', 'BW:Egamma'],-1],
         ['e32_lhtight_nod0_ivarloose',        'L1_EM24VHI', [], [PhysicsStream], ['RATE:SingleElectron', 'BW:Egamma'],-1],  
 
+        #low pT
+        ['g10_loose',                            'L1_EM7',  [], [PhysicsStream], ['RATE:SinglePhoton', 'BW:Egamma'],-1],
+
+        ['e9_lhvloose_nod0_L1EM7',                    'L1_EM7',    [], [PhysicsStream], ['RATE:SingleElectron', 'BW:Egamma'],-1],
 
 			 ]
 
@@ -251,6 +297,7 @@ def setupMenu():
         ['mu6_mu4_bJpsimumu',             'L1_MU6_2MU4', ['L1_MU6','L1_MU4'], [BPhysicsStream], [RATE_BphysTag,BW_BphysTag], -1],
         ['mu6_mu4_bUpsimumu',             'L1_MU6_2MU4', ['L1_MU6','L1_MU4'], [BPhysicsStream], [RATE_BphysTag,BW_BphysTag], -1],
 
+        ['mu11_mu6_bTau',                  'L1_MU11_2MU6', ['L1_MU11','L1_MU6'], [BPhysicsStream, 'express'], [RATE_BphysTag,BW_BphysTag], -1],
 
 ]
 
@@ -346,6 +393,8 @@ def setupMenu():
  #Beamspot chanis first try ATR-9847                                                                                                               
     TriggerFlags.BeamspotSlice.signatures = [
 
+        ['beamspot_allTE_trkfast_peb_L13J15', 'L1_3J15', [], ["BeamSpot"], ['RATE:BeamSpot', 'BW:BeamSpot'], -1],
+
 ]   
 
 
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py b/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py
index afc6da8f7bc24115e0e62a4998f4262b05b9f3c5..8f5531c650e36a9dd980a9855d7e5f547ade1b11 100755
--- a/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py
@@ -11,6 +11,14 @@ logging.getLogger().info("Importing %s",__name__)
 
 log = logging.getLogger("TriggerMenu.muon.MuonDef")
 
+# Conditions sequence for Athena MT
+from AthenaCommon.AlgSequence import AthSequencer
+condSeq = AthSequencer("AthCondSeq")
+if not hasattr(condSeq, "BeamSpotCondAlg"):
+   from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg
+   condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" )
+
+
 from TriggerMenu.menu.HltConfig import *
 
 from TrigInDetConf.TrigInDetSequence import TrigInDetSequence
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDefIdTest.py b/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDefIdTest.py
index 172ee62cdb85cf362dd694cf5b13869d9a04f486..2b250ac94a55e40f2fca4bf1617509c7471bd536 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDefIdTest.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDefIdTest.py
@@ -14,6 +14,12 @@ from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
 import re
 from TriggerMenu.menu.HltConfig import *
 
+# Conditions sequence for Athena MT
+from AthenaCommon.AlgSequence import AthSequencer
+condSeq = AthSequencer("AthCondSeq")
+if not hasattr(condSeq, "BeamSpotCondAlg"):
+   from BeamSpotConditions.BeamSpotConditionsConf import BeamSpotCondAlg
+   condSeq += BeamSpotCondAlg( "BeamSpotCondAlg" )
 
 #-----------------------------------
 class L2EFChain_mu(L2EFChainDef):
diff --git a/Trigger/TriggerRelease/share/runHLT_standalone.py b/Trigger/TriggerRelease/share/runHLT_standalone.py
index ee5ace84fd533dc0edb058457847506d4a9ef900..f400af1bf5080dddcf5176fe77c3741eafe25866 100755
--- a/Trigger/TriggerRelease/share/runHLT_standalone.py
+++ b/Trigger/TriggerRelease/share/runHLT_standalone.py
@@ -73,6 +73,10 @@ menuMap={
          #Run-3 preparation menu
          'LS2V1':           ('LS2_v1',                  'TriggerMenuXML/LVL1config_LS2_v1.xml'),         
 
+         #2018 menus:       menu name                   L1 xml file
+         'HIV5':            ('Physics_HI_v5',           'TriggerMenuXML/LVL1config_Physics_HI_v5.xml'),
+         'MCHIV5':          ('MC_HI_v5',                'TriggerMenuXML/LVL1config_Physics_HI_v5.xml'),
+
          #2017 menus:       menu name                   L1 xml file
          'PhysicsV7':       ('Physics_pp_v7',           'TriggerMenuXML/LVL1config_Physics_pp_v7.xml'),
          'MCV7':            ('MC_pp_v7',                'TriggerMenuXML/LVL1config_MC_pp_v7.xml'),