diff --git a/Calorimeter/CaloCalibHitRec/CaloCalibHitRec/ATLAS_CHECK_THREAD_SAFETY b/Calorimeter/CaloCalibHitRec/CaloCalibHitRec/ATLAS_CHECK_THREAD_SAFETY
new file mode 100644
index 0000000000000000000000000000000000000000..75457a05b3685f4f121cc71de72623a307603fbf
--- /dev/null
+++ b/Calorimeter/CaloCalibHitRec/CaloCalibHitRec/ATLAS_CHECK_THREAD_SAFETY
@@ -0,0 +1 @@
+Calorimeter/CaloCalibHitRec
diff --git a/Calorimeter/CaloCalibHitRec/src/CaloCalibClusterMomentsMaker2.cxx b/Calorimeter/CaloCalibHitRec/src/CaloCalibClusterMomentsMaker2.cxx
index bd66b91c6e292ded25a525aa0b91e98866cfdd8b..a3355b4cae8b448016cdc8a9032b1637528763b7 100644
--- a/Calorimeter/CaloCalibHitRec/src/CaloCalibClusterMomentsMaker2.cxx
+++ b/Calorimeter/CaloCalibHitRec/src/CaloCalibClusterMomentsMaker2.cxx
@@ -820,7 +820,6 @@ Calculation of energy fraction caused by particles of different types
 void CaloCalibClusterMomentsMaker2::get_calib_frac(const std::map<unsigned int,int>& truthBarcodeToPdgCodeMap,
                                                    const MyClusInfo& clusInfo, std::vector<double> &engFrac) const
 {
-  static unsigned int nWarnings = 0;
   engFrac.assign(kCalibFracMax, 0.0);
   if(clusInfo.engCalibIn.engTot <= 0.0) return;
   // each MyClusInfo has a map of particle's barcode and particle calibration deposits in given cluster
@@ -829,10 +828,7 @@ void CaloCalibClusterMomentsMaker2::get_calib_frac(const std::map<unsigned int,i
     int pdg_id = 0;
     try { pdg_id = truthBarcodeToPdgCodeMap.at(barcode); }
     catch (const std::out_of_range& e){
-      if (nWarnings < 10 ){
-	ATH_MSG_WARNING("truthBarcodeToPdgCodeMap cannot find an entry with barcode " << barcode);
-	nWarnings++;
-      }
+      ATH_MSG_WARNING("truthBarcodeToPdgCodeMap cannot find an entry with barcode " << barcode);
       continue;
     }
 
diff --git a/Calorimeter/CaloConditions/CaloConditions/CaloBadChannel.h b/Calorimeter/CaloConditions/CaloConditions/CaloBadChannel.h
index 07d639d123946b4d00dd4f7fa6cb63ef834ddca9..130c0664afe1ae8dea9227d9c303b23d1a72b1b7 100644
--- a/Calorimeter/CaloConditions/CaloConditions/CaloBadChannel.h
+++ b/Calorimeter/CaloConditions/CaloConditions/CaloBadChannel.h
@@ -16,14 +16,9 @@ class CaloBadChannel {
   CaloBadChannel( BitWord rawStatus) : m_word(rawStatus) {}
   CaloBadChannel() : m_word(0) {}
 
-  CaloBadChannel(const CaloBadChannel& rBad) {m_word=rBad.m_word;}
+  CaloBadChannel(const CaloBadChannel& rBad) = default;
   CaloBadChannel(const CaloBadChannel* pBad) {m_word=pBad->m_word;}
-  CaloBadChannel& operator= (const CaloBadChannel& rBad) {
-    if (this != &rBad) {
-      m_word = rBad.m_word;
-    }
-    return *this;
-  }
+  CaloBadChannel& operator= (const CaloBadChannel& rBad) = default;
 
   bool statusOK( ProblemType pb) const {
     BitWord mask = 1 << (PosType) pb;
diff --git a/Calorimeter/CaloConditions/CaloConditions/CaloLocalHadCoeff.h b/Calorimeter/CaloConditions/CaloConditions/CaloLocalHadCoeff.h
index 9ebc8e53b6d8e10f18cf9335939500438fddc25a..4ee43eaa910ceae92b00f4a2752f01d73acf613b 100644
--- a/Calorimeter/CaloConditions/CaloConditions/CaloLocalHadCoeff.h
+++ b/Calorimeter/CaloConditions/CaloConditions/CaloLocalHadCoeff.h
@@ -82,9 +82,13 @@ class CaloLocalHadCoeff {
         /**
          * @brief Copy constructor
          */
-        LocalHadDimension(const LocalHadDimension &other);
-        LocalHadDimension& operator= (const LocalHadDimension &other);
-
+        LocalHadDimension(const LocalHadDimension &other) = default;
+        LocalHadDimension& operator= (const LocalHadDimension &other) = default;
+        /**
+         * @brief Move constructor
+         */
+        LocalHadDimension( LocalHadDimension &&) noexcept = default;
+        LocalHadDimension& operator= ( LocalHadDimension &&)  noexcept = default;
         // access methods
 
         /// return dimension type
@@ -157,8 +161,10 @@ class CaloLocalHadCoeff {
         /**
          * @brief Copy constructor
          */
-        LocalHadArea(const LocalHadArea &other);
-        LocalHadArea& operator= (const LocalHadArea &other);
+        LocalHadArea(const LocalHadArea &other) = default;
+        LocalHadArea& operator= (const LocalHadArea &other) = default;
+        LocalHadArea( LocalHadArea &&other) noexcept = default;
+        LocalHadArea& operator= ( LocalHadArea &&other) noexcept = default;
 
         /// return area type
         inline unsigned int getType() const { return m_type; }
@@ -220,8 +226,11 @@ class CaloLocalHadCoeff {
     /**
      * @brief Copy constructor.
      */
-    CaloLocalHadCoeff(const CaloLocalHadCoeff &other);
-    CaloLocalHadCoeff& operator= (const CaloLocalHadCoeff &other);
+    CaloLocalHadCoeff(const CaloLocalHadCoeff &other) = default;
+    CaloLocalHadCoeff& operator= (const CaloLocalHadCoeff &other) = default;
+    //Move operators
+    CaloLocalHadCoeff(CaloLocalHadCoeff &&) noexcept = default;
+    CaloLocalHadCoeff& operator= (CaloLocalHadCoeff &&) noexcept = default;
 
     //
     // general access methods
diff --git a/Calorimeter/CaloConditions/src/CaloLocalHadCoeff.cxx b/Calorimeter/CaloConditions/src/CaloLocalHadCoeff.cxx
index 7b855389c18c768b69190214b58c17c1c5fc19cb..799829464168e3e1826f61e07bccce96f4fc7637 100644
--- a/Calorimeter/CaloConditions/src/CaloLocalHadCoeff.cxx
+++ b/Calorimeter/CaloConditions/src/CaloLocalHadCoeff.cxx
@@ -21,32 +21,6 @@
 LocalHadDimension ->
 *************************************************************************** */
 
-// copy constructor
-CaloLocalHadCoeff::LocalHadDimension::LocalHadDimension(const CaloLocalHadCoeff::LocalHadDimension &other)
-  : m_title (other.m_title),
-    m_type (other.m_type),
-    m_nbins (other.m_nbins),
-    m_xmin (other.m_xmin),
-    m_xmax (other.m_xmax),
-    m_dx (other.m_dx),
-    m_xbins (other.m_xbins)
-{
-}
-
-CaloLocalHadCoeff::LocalHadDimension&
-CaloLocalHadCoeff::LocalHadDimension::operator= (const CaloLocalHadCoeff::LocalHadDimension &other)
-{
-  if (this != &other) {
-    m_title = other.m_title;
-    m_type = other.m_type;
-    m_nbins = other.m_nbins;
-    m_xmin = other.m_xmin;
-    m_xmax = other.m_xmax;
-    m_dx = other.m_dx;
-    m_xbins = other.m_xbins;
-  }
-  return *this;
-}
 
 // return bin number for cluster variable
 int CaloLocalHadCoeff::LocalHadDimension::getBin(float &x) const
@@ -157,32 +131,6 @@ bool CaloLocalHadCoeff::isFilled(const int bin) const
 /* ***************************************************************************
 LocalHadArea ->
 *************************************************************************** */
-// copy constructor
-CaloLocalHadCoeff::LocalHadArea::LocalHadArea(const CaloLocalHadCoeff::LocalHadArea &other)
-  : m_title (other.m_title),
-    m_type (other.m_type),
-    m_npars (other.m_npars),
-    m_offset (other.m_offset),
-    m_length (other.m_length),
-    m_dims (other.m_dims),
-    m_dims_loc (other.m_dims_loc)
-{
-}
-
-CaloLocalHadCoeff::LocalHadArea&
-CaloLocalHadCoeff::LocalHadArea::operator=(const CaloLocalHadCoeff::LocalHadArea &other)
-{
-  if (this != &other) {
-    m_title = other.m_title;
-    m_type = other.m_type;
-    m_npars = other.m_npars;
-    m_offset = other.m_offset;
-    m_length = other.m_length;
-    m_dims = other.m_dims;
-    m_dims_loc = other.m_dims_loc;
-  }
-  return *this;
-}
 
 // add new dimension to the area
 void CaloLocalHadCoeff::LocalHadArea::addDimension(CaloLocalHadCoeff::LocalHadDimension &dim)
@@ -214,27 +162,9 @@ CaloLocalHadCoeff
 // default constructor
 CaloLocalHadCoeff::CaloLocalHadCoeff()
 {
-
-}
-
-// copy constructor
-CaloLocalHadCoeff::CaloLocalHadCoeff(const CaloLocalHadCoeff &other)
-  : m_title (other.m_title),
-    m_CoeffSet (other.m_CoeffSet),
-    m_AreaSet (other.m_AreaSet)
-{
-}
-
-
-
-CaloLocalHadCoeff& CaloLocalHadCoeff::operator=(const CaloLocalHadCoeff &other)
-{
-  if (this != &other) {
-    m_AreaSet = other.m_AreaSet;
-    m_CoeffSet = other.m_CoeffSet;
-    m_title = other.m_title;
-  }
-  return *this;
+   static_assert(std::is_nothrow_move_constructible<CaloLocalHadCoeff>::value);
+   static_assert(std::is_nothrow_move_constructible<LocalHadArea>::value);
+   static_assert(std::is_nothrow_move_constructible<LocalHadDimension>::value);
 }
 
 
diff --git a/Calorimeter/CaloRec/src/CaloTopoTmpHashCell.h b/Calorimeter/CaloRec/src/CaloTopoTmpHashCell.h
index fab172c42a1b82fc84a477a9d64aece0dc3a172b..7bf262aa5dfcff5680cf96a4691db367ae84d69f 100644
--- a/Calorimeter/CaloRec/src/CaloTopoTmpHashCell.h
+++ b/Calorimeter/CaloRec/src/CaloTopoTmpHashCell.h
@@ -40,10 +40,7 @@ public:
   }
 
 
-  CaloTopoTmpHashCell(const CaloTopoTmpHashCell &other)
-  {
-    m_clusterCell = other.m_clusterCell;
-  }
+  CaloTopoTmpHashCell(const CaloTopoTmpHashCell &other) = default;
 
 
   CaloTopoTmpHashCell(T* clusterCell) 
@@ -58,13 +55,7 @@ public:
     return (m_clusterCell == other.m_clusterCell);
   }
 
-  CaloTopoTmpHashCell & operator=(const CaloTopoTmpHashCell & other)
-  {
-    if ( this != &other ) {
-      m_clusterCell = other.m_clusterCell;
-    }
-    return *this;
-  }
+  CaloTopoTmpHashCell & operator=(const CaloTopoTmpHashCell & other) = default;
 
   T * getCaloTopoTmpClusterCell() const
   {
diff --git a/Control/AthLinks/AthLinks/ElementLinkVector.h b/Control/AthLinks/AthLinks/ElementLinkVector.h
index a42364ea9683c553742fa6b09ae43db204ef3ad9..cf36100154b197ebce3ebb8fdb0adbfa53c0c262 100644
--- a/Control/AthLinks/AthLinks/ElementLinkVector.h
+++ b/Control/AthLinks/AthLinks/ElementLinkVector.h
@@ -187,7 +187,7 @@ public:
 
   /// \name vector constructors (no Allocators)
   //@{
-  ElementLinkVector() : ElementLinkVectorBase() { }
+  ElementLinkVector();
  
   ElementLinkVector(size_type n, const ElemLink& link) :
     ElementLinkVectorBase(), m_shortRefs(n, ElemLinkRef(link))
@@ -217,7 +217,7 @@ public:
     ElementLinkVectorBase( vec ),
     m_shortRefs(vec.m_shortRefs), m_hostDObjs(vec.m_hostDObjs) { }
 
-  ElementLinkVector(ElemLinkVec&& vec) :
+  ElementLinkVector(ElemLinkVec&& vec) noexcept :
     ElementLinkVectorBase( std::move(vec) ),
     m_shortRefs(std::move(vec.m_shortRefs)),
     m_hostDObjs(std::move(vec.m_hostDObjs)) { }
@@ -233,7 +233,7 @@ public:
     return *this;
   }
 
-  ElementLinkVector& operator= (ElemLinkVec&& vec)
+  ElementLinkVector& operator= (ElemLinkVec&& vec) noexcept
   {
     if (this != &vec) {
       m_persKeys    = std::move(vec.m_persKeys);
@@ -416,6 +416,10 @@ private:
 
 }; // class ElementLinkVector
 
+template <typename DOBJ>
+  ElementLinkVector<DOBJ>::ElementLinkVector() : ElementLinkVectorBase() { 
+}
+
 /*
  * The following piece of code makes the Reflex dictionary think of
  * "ElementLinkVector< T, DataProxyStorage< T >,
diff --git a/Control/AthLinks/test/ElementLink_test.cxx b/Control/AthLinks/test/ElementLink_test.cxx
index 430cd90295d35b16149d71ed8795431b7d416444..1a603dbf050ccb209c9748b2104b39fbbd76abbf 100644
--- a/Control/AthLinks/test/ElementLink_test.cxx
+++ b/Control/AthLinks/test/ElementLink_test.cxx
@@ -672,6 +672,9 @@ void test3 (SGTest::TestStore& store)
 
   TestStore::sgkey_t sgkey = store.stringToKey ("foocont3", fooclid);
 
+  //Add check to see if Element link optimized for std::vector expansion
+  static_assert(std::is_nothrow_move_constructible<ElementLink<FooCont>>::value);
+
   FooCont* foocont3 = new FooCont;
   for (int i=0; i < 4; i++)
     foocont3->push_back (new Foo(i+200));
diff --git a/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/HandleKeyArray.h b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/HandleKeyArray.h
new file mode 100644
index 0000000000000000000000000000000000000000..0908e71f27eacaf779284a2507df10b818643bd6
--- /dev/null
+++ b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/HandleKeyArray.h
@@ -0,0 +1,139 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef ASG_DATA_HANDLES_HANDLE_KEY_ARRAY_H
+#define ASG_DATA_HANDLES_HANDLE_KEY_ARRAY_H
+
+#ifndef XAOD_STANDALONE
+#include <StoreGate/HandleKeyArray.h>
+#else
+
+#include "AsgDataHandles/VarHandleKeyArray.h"
+
+namespace SG {
+
+  /**
+   * @class SG::HandleKeyArray<T>
+   * @brief class to hold an array of HandleKeys
+   *
+   * See StoreGate/HandleKeyArray for details.
+   *
+   * This currently (13 Aug 20) contains a number of commented out
+   * members that were part of the original handle implementation, but
+   * have not yet been implemented in the standalone version.  The plan
+   * is to either implement or remove them, depending on what is needed
+   * in AnalysisBase as we add more packages.
+   */
+
+  template <class T_Handle, class T_HandleKey/*, Gaudi::DataHandle::Mode MODE*/>
+  class HandleKeyArray : public VarHandleKeyArrayCommon< T_HandleKey > {
+  public:
+    // /**
+    //  * @brief default Constructor from a HandleKeyArray
+    //  */
+    // HandleKeyArray(){}
+
+    // /**
+    //  * @brief Constructor from a HandleKeyArray that takes a vector
+    //  * of ReadHandleKeys
+    //  * @param v vector of HandleKey
+    //  */
+    // HandleKeyArray( const std::vector<T_HandleKey>& v ) :
+    //   VarHandleKeyArrayCommon<T_HandleKey> ( v ) {}
+
+    // /**
+    //  * @brief Constructor from a HandleKeyArray that takes an 
+    //  * initializer list of HandleKeys
+    //  * @param l initializer list of HandleKey
+    //  */
+    // HandleKeyArray( std::initializer_list<T_HandleKey> l ):
+    //   VarHandleKeyArrayCommon<T_HandleKey> {l} {}
+
+    // /**
+    //  * @brief Constructor from a HandleKeyArray that takes an 
+    //  * initializer list of std::strings.
+    //  * @param l initializer list of std::strings used to create the
+    //  *          HandleKeys
+    //  */
+    // HandleKeyArray( std::initializer_list<std::string> key_names):
+    //   VarHandleKeyArrayCommon<T_HandleKey> {key_names} {}
+
+    /**
+     * @brief auto-declaring Property Constructor from a HandleKeyArray 
+     * that takes an initializer list of std::strings, and associates the WHKA
+     * with the specified Property name
+     * @param name name of Property
+     * @param l initializer list of std::strings used to create the
+     *          HandleKeys
+     * @param doc documentation string
+     */
+    template <class OWNER>
+    inline HandleKeyArray( OWNER* owner,
+                                std::string name,
+                                std::initializer_list<std::string> l,
+                                std::string doc="") :
+      VarHandleKeyArrayCommon<T_HandleKey> {l} {
+      owner->declareProperty(std::move(name), *this, std::move(doc));
+    }
+
+
+    // /**
+    //  * @brief return the type (Read/Write/Update) of handle
+    //  */
+    // Gaudi::DataHandle::Mode mode() const { return MODE; }
+
+    /**
+     * @brief create a vector of Handles from the HandleKeys
+     * in the array
+     */
+    std::vector< T_Handle > makeHandles() const {
+      std::vector< T_Handle > hndl;
+      typename std::vector<T_HandleKey>::const_iterator itr;
+      for (itr = this->begin(); itr != this->end(); ++itr) {
+        hndl.push_back ( T_Handle( *itr) );
+      }
+      return hndl;
+    }
+
+    // /**
+    //  * @brief create a vector of Handles from the HandleKeys
+    //  * in the array, with explicit EventContext.
+    //  */
+    // std::vector< T_Handle > makeHandles (const EventContext& ctx) const
+    // {
+    //   std::vector< T_Handle > hndl;
+    //   typename std::vector<T_HandleKey>::const_iterator itr;
+    //   for (itr = this->begin(); itr != this->end(); ++itr) {
+    //     hndl.push_back ( T_Handle( *itr, ctx) );
+    //   }
+    //   return hndl;
+    // }
+
+  };
+
+} // namespace SG
+
+namespace asg
+{
+  namespace detail
+  {
+    template<typename T> struct GetStringHelper;
+
+    template<typename T1,typename T2> struct GetStringHelper<SG::HandleKeyArray<T1,T2> >
+      : public GetStringHelper<std::vector<T2> >
+    {
+    };
+
+    template<typename T> struct SetStringHelper;
+
+    template<typename T1,typename T2> struct SetStringHelper<SG::HandleKeyArray<T1,T2> >
+      : public SetStringHelper<std::vector<T2> >
+    {
+    };
+  }
+}
+
+#endif
+
+#endif
diff --git a/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/ReadHandle.h b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/ReadHandle.h
index de53f22450117dcbb087af8722f5eaa462092699..8def1a1c230d8be24d36b14044e870e32579bacd 100644
--- a/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/ReadHandle.h
+++ b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/ReadHandle.h
@@ -50,12 +50,12 @@ public:
   //
 
 
-  // /**
-  //  * @brief Default constructor.
-  //  *
-  //  * The handle will not be usable until a non-blank key is assigned.
-  //  */
-  // ReadHandle();
+  /**
+   * @brief Default constructor.
+   *
+   * The handle will not be usable until a non-blank key is assigned.
+   */
+  ReadHandle() = default;
 
 
   /**
@@ -134,6 +134,14 @@ public:
   const_pointer_type get (const EventContext& ctx) const;
 
 
+  /**
+   * @brief Is the referenced object present in SG?
+   *
+   * Const method; the handle does not change as a result of this.
+   */
+  bool isPresent() const;
+
+
   /**
    * @brief Is the referenced object present in SG?
    * @param key SG key to test.
diff --git a/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/ReadHandle.icc b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/ReadHandle.icc
index f35c97693e2b7378288eeb824940d6f5870ff352..f351894667bb15a46fbb4b0d81fb28cbab6c4f1c 100644
--- a/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/ReadHandle.icc
+++ b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/ReadHandle.icc
@@ -174,6 +174,18 @@ ReadHandle<T>::get (const EventContext& /*ctx*/) const
 }
 
 
+/**
+* @brief Is the referenced object present in SG?
+*
+* Const method; the handle does not change as a result of this.
+*/
+template <class T>
+bool ReadHandle<T>::isPresent() const
+{
+return isPresent_impl (key());
+}
+
+
 /**
  * @brief Is the referenced object present in SG?
  * @param key SG key to test.
diff --git a/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/ReadHandleKeyArray.h b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/ReadHandleKeyArray.h
new file mode 100644
index 0000000000000000000000000000000000000000..217824acc2b183a2372b97f52610b5fb1b337626
--- /dev/null
+++ b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/ReadHandleKeyArray.h
@@ -0,0 +1,39 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef ASG_DATA_HANDLES_READ_HANDLE_KEY_ARRAY_H
+#define ASG_DATA_HANDLES_READ_HANDLE_KEY_ARRAY_H
+
+#ifndef XAOD_STANDALONE
+#include "StoreGate/ReadHandleKeyArray.h"
+#else
+
+#include "AsgDataHandles/HandleKeyArray.h"
+
+#include "AsgDataHandles/ReadHandleKey.h"
+#include "AsgDataHandles/ReadHandle.h"
+
+namespace SG {
+
+  /**
+   * @class SG::ReadHandleKeyArray<T>
+   * @brief class to hold an array of ReadHandleKeys
+   *
+   * See StoreGate/ReadHandleKeyArray for details.
+   *
+   * This currently (13 Aug 20) contains a commented out template
+   * argument that was part of the original handle implementation, but
+   * has not yet been implemented in the standalone version.  The plan
+   * is to either implement or remove them, depending on what is
+   * needed in AnalysisBase as we add more packages.
+   */
+  template <class T>
+  using ReadHandleKeyArray = HandleKeyArray<ReadHandle<T>, ReadHandleKey<T>/*, Gaudi::DataHandle::Reader*/ >;
+
+
+} // namespace SG
+
+#endif
+
+#endif
diff --git a/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/VarHandleBase.h b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/VarHandleBase.h
index 4813b8d60e8de68f92912e247dc399b5294a6966..c833a27cfcb2fca0e732c5dbec03625ce7bcf8ca 100644
--- a/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/VarHandleBase.h
+++ b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/VarHandleBase.h
@@ -42,6 +42,13 @@ namespace SG {
   {
   public: 
 
+    /**
+     * @brief Default constructor.
+     *
+     * The handle will not be usable until a non-blank key is assigned.
+     */
+    VarHandleBase() = default;
+
     /**
      * @brief Constructor from a VarHandleKey.
      * @param key The key object holding the clid/key/store.
diff --git a/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/VarHandleKeyArray.h b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/VarHandleKeyArray.h
new file mode 100644
index 0000000000000000000000000000000000000000..868f200abd3cb2fb0a48b8c2d359ccdaa64cfa3e
--- /dev/null
+++ b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/VarHandleKeyArray.h
@@ -0,0 +1,173 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef ASG_DATA_HANDLES_VAR_HANDLE_KEY_ARRAY_H
+#define ASG_DATA_HANDLES_VAR_HANDLE_KEY_ARRAY_H
+
+#ifndef XAOD_STANDALONE
+#include <StoreGate/VarHandleKeyArray.h>
+#else
+
+/**
+ * @file StoreGate/VarHandleKeyArray.h
+ * @author Nils Krumnack <Nils.Erik.Krumnack@cern.h>
+ * @author C. Leggett (for original version)
+ * @brief Base class for VarHandleKeyArray for reading from StoreGate.
+ */
+
+#include <AsgMessaging/StatusCode.h>
+#include <vector>
+#include <string>
+
+namespace SG {
+
+  /**
+   * @class SG::VarHandleKeyArray<T>
+   * @brief untemplated base class for VarHandleKeyArrays
+   *
+   * See StoreGate/VarHandleKeyArray for details.
+   *
+   * This currently (13 Aug 20) contains a number of commented out
+   * members that were part of the original handle implementation, but
+   * have not yet been implemented in the standalone version.  The plan
+   * is to either implement or remove them, depending on what is needed
+   * in AnalysisBase as we add more packages.
+   */
+  class VarHandleKeyArray {
+  public:
+    VarHandleKeyArray(){};
+    virtual ~VarHandleKeyArray() = default;
+    // virtual StatusCode assign(const std::vector<std::string>& vs)=0;
+    virtual std::string toString() const = 0;
+    // virtual Gaudi::DataHandle::Mode mode() const = 0;
+
+    // virtual std::vector<SG::VarHandleKey*> keys() const = 0;
+
+    // virtual void renounce() = 0;
+    // virtual bool renounced() const = 0;
+    // virtual void declare(IDataHandleHolder*)  = 0;
+
+    // virtual void setOwner( IDataHandleHolder* o ) = 0;
+    // virtual const IDataHandleHolder* owner() const = 0;
+    // virtual IDataHandleHolder* owner() = 0;
+
+  };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+// mixin class for common functionality
+//
+
+  /**
+   * @class SG::VarHandleKeyArrayCommon<T>
+   * @brief mixin base class for VarHandleKeyArrays, inheriting from
+   * std::vector as well as VarHandleKeyArray to provide vector-like
+   * access
+   *
+   * See StoreGate/VarHandleKeyArrayCommon for details.
+   *
+   * This currently (13 Aug 20) contains a number of commented out
+   * members that were part of the original handle implementation, but
+   * have not yet been implemented in the standalone version.  The plan
+   * is to either implement or remove them, depending on what is needed
+   * in AnalysisBase as we add more packages.
+   *
+   */
+
+  template <class Base>
+  class VarHandleKeyArrayCommon : public VarHandleKeyArray, 
+                                  public std::vector<Base> {
+  public:
+    /**
+     * @brief default base Constructor of mixin
+     *
+     */
+    VarHandleKeyArrayCommon() : std::vector<Base>() {};
+    
+    /**
+     * @brief base Constructor from a VarHandleKeyArray that takes a vector
+     * @param v vector of Read/Write/UpdateHandleKey
+     */
+    VarHandleKeyArrayCommon( const std::vector<Base>& v ):
+      std::vector<Base>(v) {};
+    
+    /**
+     * @brief base Constructor from a VarHandleKeyArray that takes an 
+     * initializer list of VarHandleKeys
+     * @param l initializer list of Read/Write/UpdateHandleKey
+     */
+    VarHandleKeyArrayCommon( std::initializer_list<Base> l ):
+      std::vector<Base>{l} {};
+    
+    /**
+     * @brief base Constructor from a VarHandleKeyArray that takes an 
+     * initializer list of std::strings.
+     * @param l initializer list of std::strings used to create the
+     *          VarHandleKeys
+     */
+    VarHandleKeyArrayCommon( std::initializer_list<std::string> l ) {
+      for (auto &e : l) {
+        this->push_back( Base{e} );
+      }
+    }    
+    
+    /**
+     * @brief forward the initialization to the member VarHandleKeys
+     * @param used If false, then this handle is not to be used.
+     *             Instead of normal initialization, the key will be cleared.
+     */
+    StatusCode initialize (bool used = true);
+
+    // /**
+    //  * @brief Set the contents of the VarHandleKeyArray from a 
+    //  * vector of std::strings
+    //  * @param vs vector of initializer strings
+    //  */
+    // virtual StatusCode assign(const std::vector<std::string>& vs) override;
+
+    /**
+     * @brief string representation of the VarHandleKeyArray
+     */
+    virtual std::string toString() const override;
+
+    // /**
+    //  * @brief create array of all base VarHandleKeys in the Array
+    //  */
+    // virtual std::vector<SG::VarHandleKey*> keys() const override;
+    
+
+    // /**
+    //  * @brief if called, handles will not be declared in the algorithm I/O
+    //  */
+    // virtual void renounce() override { m_isRenounced = true; }
+    
+    // /**
+    //  * @brief query renounced state
+    //  **/ 
+    // virtual bool renounced() const override { return m_isRenounced; }
+
+    // virtual void declare( IDataHandleHolder* ) override;
+
+    // virtual void setOwner( IDataHandleHolder* o ) override { m_owner = o; }
+    // virtual const IDataHandleHolder* owner() const override { return m_owner; }
+    // virtual IDataHandleHolder* owner() override { return m_owner; }
+
+  private:
+    
+    // bool m_isRenounced{ false };
+    // IDataHandleHolder* m_owner{ nullptr };
+
+  };
+  
+} // namespace SG
+
+namespace std {
+  ostream& operator<<(ostream& s, const SG::VarHandleKeyArray& m);
+}
+
+
+#include "AsgDataHandles/VarHandleKeyArray.icc"
+
+#endif
+
+#endif
diff --git a/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/VarHandleKeyArray.icc b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/VarHandleKeyArray.icc
new file mode 100644
index 0000000000000000000000000000000000000000..d682c50ba5fa6fd1d42e1e730d23c257dd300a32
--- /dev/null
+++ b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/VarHandleKeyArray.icc
@@ -0,0 +1,105 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+
+
+#include <sstream>
+
+
+namespace SG {
+  /**
+   * @brief forward the initialization to the member VarHandleKeys
+   * @param used If false, then this handle is not to be used.
+   *             Instead of normal initialization, the key will be cleared.
+   */
+  template <class Base>
+  inline
+  StatusCode VarHandleKeyArrayCommon<Base>::initialize (bool used /*= true*/) {
+    StatusCode sc(StatusCode::SUCCESS);
+    if (used) {
+      // IDataHandleHolder* const owner = this->owner();
+      for (Base& b : *this) {
+        // if (owner != nullptr) {
+        //   b.setOwner(owner);
+        // }
+        if ( b.initialize().isFailure() ) {
+          sc = StatusCode::FAILURE;
+        }
+      }
+    }
+    else {
+      this->clear();
+    }
+    return sc;
+  }
+
+  // //
+  // // Set the VarHandleKey from a string
+  // //
+  // template <class Base>
+  // inline
+  // StatusCode VarHandleKeyArrayCommon<Base>::assign(const std::vector<std::string>& vs) {
+  //   StatusCode sc(StatusCode::SUCCESS);
+  //   this->clear();
+  //   for (auto & s : vs) {
+  //     Base b;
+  //     if (!b.assign(s)) {
+  //       sc = StatusCode::FAILURE;
+  //     } else {
+  //       // Skip blank keys
+  //       if (b.key() != "") {
+  //         this->push_back(b);
+  //       }
+  //     }
+  //   }
+  //   return sc;
+  // }
+  
+  //
+  // string representation of VarHandleKeyArray
+  //
+  template <class Base>
+  inline
+  std::string VarHandleKeyArrayCommon<Base>::toString() const {
+    std::ostringstream ost;
+    typename std::vector<Base>::const_iterator itr;
+    itr = this->begin();
+    size_t sz = this->size();
+    for ( size_t i=0; i < sz; ++i, ++itr) {
+      // ost << "'" << itr->objKey() << "'";
+      ost << "'" << itr->key() << "'";
+      if (i != sz-1) {
+        ost << ",";
+      }
+    }
+    return ost.str();      
+  }
+  
+  // //
+  // // create array of all base VarHandleKeys in the Array
+  // //
+  // template <class Base>
+  // inline  
+  // std::vector<SG::VarHandleKey*> VarHandleKeyArrayCommon<Base>::keys() const {
+  //   std::vector<SG::VarHandleKey*> keys;
+  //   for (const SG::VarHandleKey& k : *this) {
+  //     // FIXME: This is a rule violation, but we can't really fix it without
+  //     // changing the IDataHandleHolder base class from Gaudi.
+  //     SG::VarHandleKey* k_nc ATLAS_THREAD_SAFE = const_cast<SG::VarHandleKey*>(&k);
+  //     keys.push_back (k_nc);
+  //   }
+  //   return keys;
+  // }      
+ 
+  // template <class Base>
+  // inline  
+  // void VarHandleKeyArrayCommon<Base>::declare(IDataHandleHolder* owner) {
+  //   if ( renounced() ) {
+  //     return;
+  //   }     
+  //   for (auto k: keys() ) {
+  //     owner->declare ( *k );
+  //     k->setOwner( owner );
+  //   }
+  // }
+}
diff --git a/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/WriteHandle.h b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/WriteHandle.h
index c9eca0dcfd6881c73cf1282f28be09290bbf74c8..09cdf8b738dc88b38f2fb8badfa9d2b20bf476cf 100644
--- a/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/WriteHandle.h
+++ b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/WriteHandle.h
@@ -141,11 +141,11 @@ public:
   // pointer_type operator->();
 
 
-  // /**
-  //  * @brief Dereference the pointer.
-  //  * Returns the cached pointer.  Throws ExcNullWriteHandle if null.
-  //  */
-  // reference_type operator*();
+  /**
+   * @brief Dereference the pointer.
+   * Returns the cached pointer.  Throws ExcNullWriteHandle if null.
+   */
+  reference_type operator*();
 
 
   // /**
@@ -168,10 +168,10 @@ public:
   // pointer_type cachedPtr();
 
 
-  // /**
-  //  * @brief Can the handle be successfully dereferenced?
-  //  */
-  // virtual bool isValid() override final;
+  /**
+   * @brief Can the handle be successfully dereferenced?
+   */
+  bool isValid();
 
 
   //************************************************************************
@@ -179,11 +179,11 @@ public:
   //
 
 
-  // /**
-  //  * @brief Record a const object to the store.
-  //  * @param data The object to record.
-  //  */
-  // StatusCode record (std::unique_ptr<T> data);
+  /**
+   * @brief Record a const object to the store.
+   * @param data The object to record.
+   */
+  StatusCode record (std::unique_ptr<T> data);
 
 
   // /**
@@ -231,22 +231,22 @@ public:
   // StatusCode recordNonConst (SG::DataObjectSharedPtr<T> data);
 
 
-  // /**
-  //  * @brief Record an object to the store.
-  //  * @param data The object to record.
-  //  * @param returnExisting Allow an existing object?
-  //  *
-  //  * Unlike record(), this does not change the handle object.
-  //  * That means that one will not be able to get the object back
-  //  * by dereferencing the handle.
-  //  * Returns the object placed in the store, or nullptr if there
-  //  * was an error.
-  //  * If there was already an object in the store with the given key,
-  //  * then return null, unless @c returnExisting is true, in which case
-  //  * return success.  In either case, @c data is destroyed.
-  //  */
-  // const_pointer_type put (std::unique_ptr<T> data,
-  //                         bool returnExisting = false) const;
+  /**
+   * @brief Record an object to the store.
+   * @param data The object to record.
+   * @param returnExisting Allow an existing object?
+   *
+   * Unlike record(), this does not change the handle object.
+   * That means that one will not be able to get the object back
+   * by dereferencing the handle.
+   * Returns the object placed in the store, or nullptr if there
+   * was an error.
+   * If there was already an object in the store with the given key,
+   * then return null, unless @c returnExisting is true, in which case
+   * return success.  In either case, @c data is destroyed.
+   */
+  const_pointer_type put (std::unique_ptr<T> data/*,
+                          bool returnExisting = false*/) const;
 
 
   // /**
@@ -630,6 +630,9 @@ private:
   // /// set it const on the record, but instead set this and do the
   // /// setConst in the destructor.
   // SG::DataProxy* m_lockAuxPending = nullptr;
+
+  /// the cached pointer we recorded
+  T *m_ptr {nullptr};
 }; 
 
 
diff --git a/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/WriteHandle.icc b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/WriteHandle.icc
index a4df5df2e34646e81522ffc8d1de6d0d4c139b74..16a98097c0a9efed69f5432334dd7c5aaceb5a5a 100644
--- a/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/WriteHandle.icc
+++ b/Control/AthToolSupport/AsgDataHandles/AsgDataHandles/WriteHandle.icc
@@ -171,17 +171,19 @@ WriteHandle<T>::~WriteHandle()
 // }
 
 
-// /**
-//  * @brief Dereference the pointer.
-//  * Returns the cached pointer.  Throws ExcNullWriteHandle if null.
-//  */
-// template <class T>
-// inline
-// typename WriteHandle<T>::reference_type
-// WriteHandle<T>::operator*()
-// {
-//   return *WriteHandle<T>::checkedCachedPtr();
-// }
+/**
+ * @brief Dereference the pointer.
+ * Returns the cached pointer.  Throws ExcNullWriteHandle if null.
+ */
+template <class T>
+inline
+typename WriteHandle<T>::reference_type
+WriteHandle<T>::operator*()
+{
+  if (m_ptr == nullptr)
+    throw std::runtime_error ("dereferenced handle is null: " + key());
+  return *m_ptr;
+}
 
 
 // /**
@@ -222,32 +224,35 @@ WriteHandle<T>::~WriteHandle()
 // }
 
 
-// /**
-//  * @brief Can the handle be successfully dereferenced?
-//  */
-// template <class T>
-// inline
-// bool WriteHandle<T>::isValid()
-// {
-//   return this->m_ptr != nullptr;
-// }
+/**
+ * @brief Can the handle be successfully dereferenced?
+ */
+template <class T>
+inline
+bool WriteHandle<T>::isValid()
+{
+  return this->m_ptr != nullptr;
+}
 
 
 //************************************************************************
 // Record.
 
 
-// /**
-//  * @brief Record a const object to the store.
-//  * @param data The object to record.
-//  */
-// template <class T>
-// inline
-// StatusCode
-// WriteHandle<T>::WriteHandle::record (std::unique_ptr<T> data)
-// {
-//   return this->doRecord (std::move(data), true, false);
-// }
+/**
+ * @brief Record a const object to the store.
+ * @param data The object to record.
+ */
+template <class T>
+inline
+StatusCode
+WriteHandle<T>::WriteHandle::record (std::unique_ptr<T> data)
+{
+  m_ptr = data.get();
+  if (xAOD::TActiveStore::store()->record (std::move (data), key()).isFailure())
+    return StatusCode::FAILURE;
+  return StatusCode::SUCCESS;
+}
 
 
 // /**
@@ -276,6 +281,7 @@ StatusCode
 WriteHandle<T>::WriteHandle::record (std::unique_ptr<T> data,
                                      std::unique_ptr<AUXSTORE> auxstore)
 {
+  m_ptr = data.get();
   if (xAOD::TActiveStore::store()->record (std::move (auxstore), key() + "Aux.").isFailure())
     return StatusCode::FAILURE;
   if (xAOD::TActiveStore::store()->record (std::move (data), key()).isFailure())
@@ -330,29 +336,31 @@ WriteHandle<T>::WriteHandle::record (std::unique_ptr<T> data,
 // }
 
 
-// /**
-//  * @brief Record an object to the store.
-//  * @param data The object to record.
-//  * @param returnExisting Allow an existing object?
-//  *
-//  * Unlike record(), this does not change the handle object.
-//  * That means that one will not be able to get the object back
-//  * by dereferencing the handle.
-//  * Returns the object placed in the store, or nullptr if there
-//  * was an error.
-//  * If there was already an object in the store with the given key,
-//  * then return null, unless @c returnExisting is true, in which case
-//  * return success.  In either case, @c data is destroyed.
-//  */
-// template <class T>
-// inline
-// typename WriteHandle<T>::const_pointer_type
-// WriteHandle<T>::put (std::unique_ptr<T> data,
-//                      bool returnExisting /*= false*/) const
-// {
-//   IProxyDict* store = nullptr;
-//   return doPut (nullptr, std::move(data), returnExisting, store);
-// }
+/**
+ * @brief Record an object to the store.
+ * @param data The object to record.
+ * @param returnExisting Allow an existing object?
+ *
+ * Unlike record(), this does not change the handle object.
+ * That means that one will not be able to get the object back
+ * by dereferencing the handle.
+ * Returns the object placed in the store, or nullptr if there
+ * was an error.
+ * If there was already an object in the store with the given key,
+ * then return null, unless @c returnExisting is true, in which case
+ * return success.  In either case, @c data is destroyed.
+ */
+template <class T>
+inline
+typename WriteHandle<T>::const_pointer_type
+WriteHandle<T>::put (std::unique_ptr<T> data/*,
+                     bool returnExisting / *= false*/) const
+{
+  const_pointer_type result = data.get();
+  if (xAOD::TActiveStore::store()->record (std::move (data), key()).isFailure())
+    throw std::runtime_error ("failed to record object: " + key());
+  return result;
+}
 
 
 // /**
diff --git a/Control/AthToolSupport/AsgDataHandles/Root/VarHandleKeyArray.cxx b/Control/AthToolSupport/AsgDataHandles/Root/VarHandleKeyArray.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..49fec6e74e0e9986c8280972e3356cf04143aff4
--- /dev/null
+++ b/Control/AthToolSupport/AsgDataHandles/Root/VarHandleKeyArray.cxx
@@ -0,0 +1,70 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifdef XAOD_STANDALONE
+
+#include "AsgDataHandles/VarHandleKeyArray.h"
+
+// namespace Gaudi { 
+//   namespace Parsers {
+    
+    
+// /**
+//  * @brief Gaudi function used to initialize a property from a string.
+//  * @param v The object to initialize.
+//  * @param s The string from which to initialize.
+//  *
+//  * Used during Gaudi property handling to set object @c v from the string @c s.
+//  * Note that @c s is a representation of the property setting; thus, in the
+//  * case of setting a property from a string, @c s will contain quote marks.
+//  */
+//     StatusCode 
+//     GAUDI_API
+//     parse(SG::VarHandleKeyArray& v, const std::string& s)
+//     {
+//       std::vector<std::string> vp;
+//       StatusCode sc = Gaudi::Parsers::parse(vp, s);
+      
+//       if (sc.isSuccess())
+//         sc = v.assign( vp );
+      
+//       return sc;
+//     }
+    
+//   } //> ns Parsers
+
+//   namespace Utils {
+    
+    
+// /**
+//  * @brief Gaudi function used to convert a property to a string.
+//  * @param v The object to convert.
+//  * @param o Stream to which to do the conversion.
+//  *
+//  * Used during Gaudi property handling to get a string representation of @c v.
+//  * Note that if the representation is a string, it should be surrounded
+//  * by quote marks.
+//  */
+//     std::ostream& 
+//     GAUDI_API
+//     toStream(const SG::VarHandleKeyArray& v, std::ostream& o)
+//     {
+//       o << "[" << v.toString() << "]";      
+//       return o;
+//     }
+    
+//   } //> ns Utils
+// } //> ns Gaudi
+
+
+
+
+namespace std {
+  ostream& operator<<(ostream& s, const SG::VarHandleKeyArray& m) {
+    s << "[" <<  m.toString() << "]";
+    return s;
+  }
+}
+
+#endif
diff --git a/Control/AthToolSupport/AsgExampleTools/AsgExampleTools/DataHandleTestTool.h b/Control/AthToolSupport/AsgExampleTools/AsgExampleTools/DataHandleTestTool.h
index 50ebcd680701cdac544cccac3a5c479b6e147e2d..6f8489f0ebfdd9ae7ea2295f1d6ba5c5f77004bb 100644
--- a/Control/AthToolSupport/AsgExampleTools/AsgExampleTools/DataHandleTestTool.h
+++ b/Control/AthToolSupport/AsgExampleTools/AsgExampleTools/DataHandleTestTool.h
@@ -12,6 +12,7 @@
 #include <AsgTools/AsgTool.h>
 #include <AsgExampleTools/IDataHandleTestTool.h>
 #include <AsgDataHandles/ReadHandleKey.h>
+#include <AsgDataHandles/ReadHandleKeyArray.h>
 #include <AsgDataHandles/ReadDecorHandleKey.h>
 #include <AsgDataHandles/WriteHandleKey.h>
 
@@ -52,9 +53,11 @@ namespace asg
 #ifndef SIMULATIONBASE
     SG::ReadHandleKey<xAOD::MuonContainer> m_readKey {this, "readKey", "Muons", "regular read key"};
     SG::ReadDecorHandleKey<xAOD::MuonContainer> m_readDecorKey {this, "readDecorKey", "Muons.pt", "read decor key"};
+    SG::ReadHandleKeyArray<xAOD::MuonContainer> m_readKeyArray {this, "readKeyArray", {}, "array read key"};
     SG::WriteHandleKey<xAOD::MuonContainer> m_writeKey {this, "writeKey", "", "regular write key"};
 #endif
     bool m_readFailure {false};
+    bool m_readArray {false};
     bool m_readDecorFailure {false};
     std::string m_doWriteName;
   };
diff --git a/Control/AthToolSupport/AsgExampleTools/Root/DataHandleTestTool.cxx b/Control/AthToolSupport/AsgExampleTools/Root/DataHandleTestTool.cxx
index 8193fd471e4d5dd844297b0619c4f394585b6579..d7fa05bab3a299203b38cc0ecc6d86aaef5a9ab2 100644
--- a/Control/AthToolSupport/AsgExampleTools/Root/DataHandleTestTool.cxx
+++ b/Control/AthToolSupport/AsgExampleTools/Root/DataHandleTestTool.cxx
@@ -35,6 +35,7 @@ namespace asg
   {
     declareProperty ("readFailure", m_readFailure, "whether to expect a read failure");
     declareProperty ("readDecorFailure", m_readDecorFailure, "whether to expect a read decoration failure");
+    declareProperty ("readArray", m_readArray, "whether to read from the array");
     declareProperty ("doWriteName", m_doWriteName, "if we should write, the name we expect to write to");
   }
 
@@ -55,6 +56,7 @@ namespace asg
     ANA_CHECK (m_readDecorKey.initialize ());
     if (!m_writeKey.empty())
       ANA_CHECK (m_writeKey.initialize ());
+    ANA_CHECK (m_readKeyArray.initialize());
 #endif
     return StatusCode::SUCCESS;
   }
@@ -73,10 +75,12 @@ namespace asg
     auto readHandle = makeHandle (m_readKey);
     if (m_readFailure == true)
     {
+      EXPECT_FALSE (readHandle.isPresent());
       EXPECT_EQ (nullptr, readHandle.get());
       EXPECT_FALSE (readHandle.isValid());
     } else
     {
+      EXPECT_TRUE (readHandle.isPresent());
       EXPECT_EQ (muonsStore, readHandle.get());
       EXPECT_TRUE (readHandle.isValid());
     }
@@ -91,6 +95,16 @@ namespace asg
       EXPECT_EQ (acc (*testMuon), readDecorHandle (*testMuon));
     }
 
+    if (m_readArray)
+    {
+      EXPECT_EQ (1u, m_readKeyArray.size());
+      auto handles = m_readKeyArray.makeHandles();
+      EXPECT_EQ (muonsStore, handles[0].get());
+    } else
+    {
+      EXPECT_EQ (0u, m_readKeyArray.size());
+    }
+
     if (!m_doWriteName.empty())
     {
       auto writeHandle = makeHandle (m_writeKey);
diff --git a/Control/AthToolSupport/AsgExampleTools/test/gt_DataHandlesTest.cxx b/Control/AthToolSupport/AsgExampleTools/test/gt_DataHandlesTest.cxx
index 74f2a8e1db31b4d8b5f4415dea2659f795745c11..2122e8f24fb7c46fbbb50fe3bf12170dc69712ff 100644
--- a/Control/AthToolSupport/AsgExampleTools/test/gt_DataHandlesTest.cxx
+++ b/Control/AthToolSupport/AsgExampleTools/test/gt_DataHandlesTest.cxx
@@ -117,6 +117,17 @@ namespace asg
 
 
 
+  // test that the read-key-array works
+  TEST_F (DataHandlesTest, read_array)
+  {
+    config.setPropertyFromString ("readKeyArray", "['Muons']");
+    config.setPropertyFromString ("readArray", "1");
+    ASSERT_SUCCESS (config.makeTool (tool, cleanup));
+    tool->runTest ();
+  }
+
+
+
   // do a write handle test
   TEST_F (DataHandlesTest, write_handle)
   {
diff --git a/Control/AthToolSupport/AsgTools/AsgTools/PropertyWrapper.h b/Control/AthToolSupport/AsgTools/AsgTools/PropertyWrapper.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d69b11ff61cd5cab09791b0306dea977e9fa230
--- /dev/null
+++ b/Control/AthToolSupport/AsgTools/AsgTools/PropertyWrapper.h
@@ -0,0 +1,96 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+
+/// @author Nils Krumnack
+
+
+
+#ifndef ASG_TOOLS__PROPERTY_WRAPPER_H
+#define ASG_TOOLS__PROPERTY_WRAPPER_H
+
+
+#ifdef XAOD_STANDALONE
+
+#include <iosfwd>
+#include <string>
+#include <utility>
+
+namespace Gaudi
+{
+  /// \brief this is the standalone version of the \ref
+  /// Gaudi::Property wrapper
+  ///
+  /// This makes it simpler to declare properties by just wrapping the
+  /// property in this template and then using the inline constructor
+  /// for it in the class definition:
+  /// ```
+  /// Gaudi::Property<int> m_property {
+  ///   this, "propertyName", startingValue, "property description"};
+  /// ```
+
+  template<typename T> class Property final
+  {
+  public:
+    template<typename T2>
+    Property (T2 *owner, const std::string& name, const T& value,
+              const std::string& title = "");
+
+  public:
+    template<typename T2>
+    Property (T2 *owner, const std::string& name, T&& value,
+              const std::string& title = "");
+
+  public:
+    operator const T& () const noexcept;
+
+  private:
+    T m_value;
+  };
+
+
+
+  /// Template Methods
+  /// ================
+
+  template<typename T> template<typename T2>
+  Property<T> ::
+  Property (T2 *owner, const std::string& name, const T& value,
+            const std::string& title)
+    : m_value (value)
+  {
+    owner->declareProperty (name, m_value, title);
+  }
+
+
+
+  template<typename T> template<typename T2>
+  Property<T> ::
+  Property (T2 *owner, const std::string& name, T&& value,
+            const std::string& title)
+    : m_value (std::move (value))
+  {
+    owner->declareProperty (name, m_value, title);
+  }
+
+
+
+  template<typename T>
+  Property<T> ::
+  operator const T& () const noexcept
+  {
+    return m_value;
+  }
+
+
+
+  template<typename T>
+  std::ostream& operator << (std::ostream& str, const Property<T>& property)
+  {
+    return str << property.operator const T&();
+  }
+}
+
+#endif
+
+#endif
diff --git a/Control/AthToolSupport/AsgTools/AsgTools/ToolHandle.h b/Control/AthToolSupport/AsgTools/AsgTools/ToolHandle.h
index df8abf5522b8e03142fa3ac319462348bfba9cde..b9f73f58ec201cab1e1535eb5de0dd454f8107e9 100644
--- a/Control/AthToolSupport/AsgTools/AsgTools/ToolHandle.h
+++ b/Control/AthToolSupport/AsgTools/AsgTools/ToolHandle.h
@@ -86,6 +86,12 @@ public:
    /// Constructor from a tool name.
    ToolHandle( const std::string& toolname, INamedInterface* parent = 0 );
 
+   /// Constructor declaring a property
+   template<typename T2>
+   ToolHandle (T2 *parent, const std::string& propertyName,
+               const std::string& toolName,
+               const std::string& propertyTitle = "");
+
    /// Dereferencing operator
    T& operator*();
    /// Dereferencing operator
@@ -100,6 +106,9 @@ public:
    /// Returns success if pointer is non-null and of the correct type.
    StatusCode retrieve() const;
 
+   /// Clear out the tool
+   void disable () noexcept;
+
    /// Return true if tool has no pointer or name
    bool empty() const;
 
@@ -108,7 +117,7 @@ public:
 
 private:
    /// Pointer to the tool
-   mutable T* m_ptool;
+   mutable T* m_ptool {nullptr};
 
 }; // class ToolHandle
 
diff --git a/Control/AthToolSupport/AsgTools/AsgTools/ToolHandle.icc b/Control/AthToolSupport/AsgTools/AsgTools/ToolHandle.icc
index 7986a16352a97385bb7626cce1b901325a2490bc..bebde6798056c8d1211d9a97eb1856dd4d839be3 100644
--- a/Control/AthToolSupport/AsgTools/AsgTools/ToolHandle.icc
+++ b/Control/AthToolSupport/AsgTools/AsgTools/ToolHandle.icc
@@ -27,6 +27,16 @@ ToolHandle< T >::ToolHandle( const std::string& typeAndName, INamedInterface* pa
 
 }
 
+template<typename T> template<typename T2>
+ToolHandle<T> ::
+ToolHandle (T2 *parent, const std::string& propertyName,
+            const std::string& toolName,
+            const std::string& propertyTitle)
+  : ToolHandle (toolName, parent)
+{
+  parent->declareProperty (propertyName, *this, propertyTitle);
+}
+
 template< class T >
 T& ToolHandle< T >::operator*() {
 
@@ -114,6 +124,11 @@ StatusCode ToolHandle< T >::retrieve() const {
    }
 }
 
+template< class T >
+void ToolHandle< T >::disable () noexcept {
+  m_ptool = nullptr;
+}
+
 template< class T >
 bool ToolHandle< T >::empty() const {
 
diff --git a/Control/AthenaCommon/share/bootstrap.pkl b/Control/AthenaCommon/share/bootstrap.pkl
index f47ca3833841c2222ba5eff3774e56b02fa40232..044ddef8f837497bc320600ffa749dc69f6670cd 100644
Binary files a/Control/AthenaCommon/share/bootstrap.pkl and b/Control/AthenaCommon/share/bootstrap.pkl differ
diff --git a/Control/AthenaCommon/share/bootstrap_threaded.pkl b/Control/AthenaCommon/share/bootstrap_threaded.pkl
index d5cf4a78df80454ca1d06794a68f2994c2bcc026..b3064d2da12442802dbb8bdf73140b05893e90a5 100644
Binary files a/Control/AthenaCommon/share/bootstrap_threaded.pkl and b/Control/AthenaCommon/share/bootstrap_threaded.pkl differ
diff --git a/Control/AthenaConfiguration/python/DetectorConfigFlags.py b/Control/AthenaConfiguration/python/DetectorConfigFlags.py
index 7e8fa160fb2b1c99fc2f94393caefe2f35f3bb13..b66f9323971b6cb2a518a79a94452f60978a0c66 100644
--- a/Control/AthenaConfiguration/python/DetectorConfigFlags.py
+++ b/Control/AthenaConfiguration/python/DetectorConfigFlags.py
@@ -133,9 +133,15 @@ def createDetectorConfigFlags():
                                                              prevFlags.Detector.OverlaysTGC or prevFlags.Detector.OverlayMM))
     dcf.addFlag('Detector.Overlay',      lambda prevFlags : (prevFlags.Detector.OverlayID or prevFlags.Detector.OverlayCalo or
                                                              prevFlags.Detector.OverlayMuon))
-    # flag to generally turn off the Pixel detector
-    # TODO: can these replace other (more fine-grained) flags that only turned off subdetector systems for certain tasks (e.g. DCS)?
-    dcf.addFlag('Detector.PixelOn', True)
-    dcf.addFlag('Detector.SCTOn', True)
-    dcf.addFlag('Detector.TRTOn', True)
+
+    dcf.addFlag('Detector.RecoBCM',   False)
+    dcf.addFlag('Detector.RecoIBL', lambda prevFlags : (prevFlags.Detector.RecoPixel and prevFlags.GeoModel.Run in ["RUN2", "RUN3"])) # TODO Review if a separate RecoIBL flag is really required here
+    dcf.addFlag('Detector.RecoPixel', False)
+    dcf.addFlag('Detector.RecoSCT',   False)
+    dcf.addFlag('Detector.RecoTRT',   False)
+    dcf.addFlag('Detector.RecoID',    lambda prevFlags : (prevFlags.Detector.RecoBCM or prevFlags.Detector.RecoIBL or
+                                                          prevFlags.Detector.RecoPixel or prevFlags.Detector.RecoSCT or
+                                                          prevFlags.Detector.RecoTRT))
+#    dcf.addFlag('Detector.Reco',      lambda prevFlags : (prevFlags.Detector.RecoID or prevFlags.Detector.RecoCalo or
+#                                                          prevFlags.Detector.RecoMuon))
     return dcf
diff --git a/Control/AthenaKernel/AthenaKernel/DataBucket.icc b/Control/AthenaKernel/AthenaKernel/DataBucket.icc
index 5c6b33972b86ce8b1068ec4f3144d64dd698a07a..8c67051d2897b7ea5c89af95b0603c4d04d0ac96 100755
--- a/Control/AthenaKernel/AthenaKernel/DataBucket.icc
+++ b/Control/AthenaKernel/AthenaKernel/DataBucket.icc
@@ -55,7 +55,7 @@ void db_free_ptr (T* ptr, std::true_type)
 ///////////////////////////////////////////////////////////////////////////////
 // CONSTRUCTORS
 ///////////////////////////////////////////////////////////////////////////////
-template <typename T> 
+template <typename T>
 SG::DataBucket<T>::DataBucket(T* data)
   : m_ptr(data)
 {
@@ -77,7 +77,7 @@ SG::DataBucket<T>::DataBucket(std::unique_ptr<U> data)
 {
 }
 
-template <typename T> 
+template <typename T>
 SG::DataBucket<T>::DataBucket(SG::DataObjectSharedPtr<T> data)
   : m_ptr(data.detach())
 {
@@ -86,11 +86,11 @@ SG::DataBucket<T>::DataBucket(SG::DataObjectSharedPtr<T> data)
 ///////////////////////////////////////////////////////////////////////////////
 // DATAOBJECT
 ///////////////////////////////////////////////////////////////////////////////
-template <typename T> 
-const CLID& SG::DataBucket<T>::clID() const {return classID();}  
+template <typename T>
+const CLID& SG::DataBucket<T>::clID() const {return classID();}
 
-template <typename T> 
-const CLID& SG::DataBucket<T>::classID() { 
+template <typename T>
+const CLID& SG::DataBucket<T>::classID() {
   typedef typename std::remove_pointer<T>::type BareTp;
   typedef typename std::remove_const<BareTp>::type BareT;
   return ClassID_traits<BareT>::ID();
@@ -105,7 +105,7 @@ const CLID& SG::DataBucket<T>::classID() {
  * @param irt To be called if we make a new instance.
  * @param isConst True if the object being converted is regarded as const.
  */
-template <typename T> 
+template <typename T>
 void*
 SG::DataBucket<T>::cast (CLID clid,
                          IRegisterTransient* irt /*= 0*/,
@@ -150,7 +150,7 @@ SG::DataBucket<T>::cast (CLID clid,
  * @param irt To be called if we make a new instance.
  * @param isConst True if the object being converted is regarded as const.
  */
-template <typename T> 
+template <typename T>
 void* SG::DataBucket<T>::cast (const std::type_info& tinfo,
                                IRegisterTransient* irt /*= 0*/,
                                bool isConst /*= true*/)
@@ -182,8 +182,13 @@ void* SG::DataBucket<T>::cast (const std::type_info& tinfo,
   return 0;
 }
 
-template <typename T> 
-SG::DataBucket<T>::~DataBucket()
+// The DataBucket descructor is put into an explicit namespace scope to get rid
+// of a pesky warning from DPC++. Unfortunately Clang has an issue with the
+// class name having a scope declaration on the destructor for some reason.
+namespace SG {
+
+template <typename T>
+DataBucket<T>::~DataBucket()
 {
   // Delete any copies.
   vec_t::iterator end = m_cnvcopies.end();
@@ -198,6 +203,8 @@ SG::DataBucket<T>::~DataBucket()
     SG::db_free_ptr(m_ptr, tag());
 }
 
+} // namespace SG
+
 
 namespace {
 
@@ -228,4 +235,3 @@ void SG::DataBucket<T>::lock()
 {
   call_lock (m_ptr, typename std::is_polymorphic<T>::type());
 }
-
diff --git a/Control/SGTools/SGTools/safe_clid.h b/Control/AthenaKernel/AthenaKernel/tools/safe_clid.h
similarity index 82%
rename from Control/SGTools/SGTools/safe_clid.h
rename to Control/AthenaKernel/AthenaKernel/tools/safe_clid.h
index 5e2d36b25abc2030ba6e6059bfdad329bf9c7852..1e58a4d938558f96c24a98347dfb5f4f21e9f427 100755
--- a/Control/SGTools/SGTools/safe_clid.h
+++ b/Control/AthenaKernel/AthenaKernel/tools/safe_clid.h
@@ -1,13 +1,11 @@
 // This file's extension implies that it's C, but it's really -*- C++ -*-.
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-// $Id: safe_clid.h,v 1.2 2005-11-08 22:01:30 ssnyder Exp $
-
 /**
- * @file  SGTools/safe_clid.h
+ * @file  AthenaKernel/tools/safe_clid.h
  * @author scott snyder
  * @date Nov 2005
  * @brief Find the class ID of a type, without triggering an error
@@ -30,8 +28,8 @@
  * to include @a has_classID_tag, or this function won't work.
  */
 
-#ifndef SGTOOLS_SAFECLID_H
-#define SGTOOLS_SAFECLID_H
+#ifndef ATHENAKERNEL_SAFECLID_H
+#define ATHENAKERNEL_SAFECLID_H
 
 
 #include "GaudiKernel/ClassID.h"
@@ -46,13 +44,13 @@ namespace SG {
  *        is not defined.
  */
 template <class T>
-CLID safe_clid();
+constexpr CLID safe_clid();
 
 
 } // namespace SG
 
 
-#include "SGTools/safe_clid.icc"
+#include "AthenaKernel/tools/safe_clid.icc"
 
 
-#endif // not SGTOOLS_SAFECLID_H
+#endif // not ATHENAKERNEL_SAFECLID_H
diff --git a/Control/SGTools/SGTools/safe_clid.icc b/Control/AthenaKernel/AthenaKernel/tools/safe_clid.icc
similarity index 85%
rename from Control/SGTools/SGTools/safe_clid.icc
rename to Control/AthenaKernel/AthenaKernel/tools/safe_clid.icc
index b1e98dabdea3af706b4a74db82913045a8a48c93..ca6fdb9369b11ccc09fb04894b4c384e45650f0b 100755
--- a/Control/SGTools/SGTools/safe_clid.icc
+++ b/Control/AthenaKernel/AthenaKernel/tools/safe_clid.icc
@@ -1,10 +1,8 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
-
-// $Id: safe_clid.icc,v 1.2 2007-12-14 03:12:34 binet Exp $
 /**
- * @file  SGTools/safe_clid.icc
+ * @file  AthenaeKernel/tools/safe_clid.icc
  * @author scott snyder
  * @date Nov 2005
  * @brief Find the class ID of a type, without triggering an error
@@ -13,8 +11,7 @@
  */
 
 #include "AthenaKernel/ClassID_traits.h"
-#include "AthenaKernel/tools/type_tools.h"
-#include "boost/type_traits/remove_pointer.hpp"
+#include <type_traits>
 
 
 namespace SG {
@@ -55,15 +52,15 @@ namespace SG {
 
 // Decl 1
 template <class T>
-CLID safe_clid_1 (T*, typename ClassID_traits<T>::has_classID_tag);
+constexpr CLID safe_clid_1 (T*, typename ClassID_traits<T>::has_classID_tag);
 
 // Decl 2
 template <class T, class U>
-CLID safe_clid_1 (T, U);
+constexpr CLID safe_clid_1 (T, U);
 
 // This is the public entry point.
 template <class T>
-CLID safe_clid()
+constexpr CLID safe_clid()
 {
   return safe_clid_1 ((T*)0, std::true_type());
 }
@@ -75,7 +72,7 @@ CLID safe_clid()
 // So we can go ahead and ask for the ID in this case.
 
 template <class T>
-CLID safe_clid_1 (T*, typename ClassID_traits<T>::has_classID_tag)
+constexpr CLID safe_clid_1 (T*, typename ClassID_traits<T>::has_classID_tag)
 {
   return ClassID_traits<T>::ID();
 }
@@ -93,7 +90,7 @@ CLID safe_clid_1 (T*, typename ClassID_traits<T>::has_classID_tag)
 template <class T, bool B>
 struct safe_clid_2
 {
-  static CLID clid() { return CLID_NULL; }
+  constexpr static CLID clid() { return CLID_NULL; }
 };
 
 // This specialization is used if @a T does derive from @a DataObject.
@@ -101,7 +98,7 @@ struct safe_clid_2
 template <class T>
 struct safe_clid_2<T, true>
 {
-  static CLID clid() { return ClassID_traits<T>::ID(); }
+  constexpr static CLID clid() { return ClassID_traits<T>::ID(); }
 };
 
 // This is the definition corresponding to decl 2 above.
@@ -109,9 +106,9 @@ struct safe_clid_2<T, true>
 // Note that here @a T will be a pointer to the class we're
 // actually interested in, so we need to strip a pointer.
 template <class T, class U>
-CLID safe_clid_1 (T, U)
+constexpr CLID safe_clid_1 (T, U)
 {
-  typedef typename boost::remove_pointer<T>::type typ;
+  using typ = std::remove_pointer_t<T>;
   return safe_clid_2<typ, ClassID_traits<typ>::s_isDataObject>::clid();
 }
 
diff --git a/Control/AthenaKernel/CMakeLists.txt b/Control/AthenaKernel/CMakeLists.txt
index e170a93a179ecf848d0e2606a966d4be243d9155..73b43c7012098a82c6a61415e345516d2b989cdf 100644
--- a/Control/AthenaKernel/CMakeLists.txt
+++ b/Control/AthenaKernel/CMakeLists.txt
@@ -93,6 +93,10 @@ atlas_add_test( ClassName_test
    SOURCES test/ClassName_test.cxx
    LINK_LIBRARIES AthenaKernel )
 
+atlas_add_test( safe_clid_test
+   SOURCES test/safe_clid_test.cxx
+   LINK_LIBRARIES AthenaKernel )
+
 atlas_add_test( BaseInfo_test
    SOURCES test/BaseInfo_test.cxx
    LINK_LIBRARIES AthenaKernel )
diff --git a/Control/AthenaKernel/share/safe_clid_test.ref b/Control/AthenaKernel/share/safe_clid_test.ref
new file mode 100644
index 0000000000000000000000000000000000000000..ea30df1c36dcaa19bd40889a10f36b307cc6a992
--- /dev/null
+++ b/Control/AthenaKernel/share/safe_clid_test.ref
@@ -0,0 +1 @@
+AthenaKernel/safe_clid_test
diff --git a/Control/SGTools/test/safe_clid_test.cxx b/Control/AthenaKernel/test/safe_clid_test.cxx
similarity index 76%
rename from Control/SGTools/test/safe_clid_test.cxx
rename to Control/AthenaKernel/test/safe_clid_test.cxx
index f7ff6f251fbdd8949217f75095048b66d8b65b58..0bd9e160626e024a834cc7c286d099b886bdcbe6 100755
--- a/Control/SGTools/test/safe_clid_test.cxx
+++ b/Control/AthenaKernel/test/safe_clid_test.cxx
@@ -1,10 +1,10 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #undef NDEBUG
 
-#include "SGTools/safe_clid.h"
+#include "AthenaKernel/tools/safe_clid.h"
 #include "AthenaKernel/CLASS_DEF.h"
 #include "GaudiKernel/DataObject.h"
 #include <cassert>
@@ -22,6 +22,7 @@ struct C
 
 int main()
 {
+  std::cout << "AthenaKernel/safe_clid_test\n";
   assert (SG::safe_clid<int> () == 0);
   assert (SG::safe_clid<A> () == 0);
   assert (SG::safe_clid<B> () == 98765);
diff --git a/Control/AthenaPython/src/PyComponentMgr.cxx b/Control/AthenaPython/src/PyComponentMgr.cxx
index 893e93d2c9b5b2dceb0f9f16c011d5f387e1a22f..e4694938ba650fb1bd2c24b5039b4b6fcdfdc425 100755
--- a/Control/AthenaPython/src/PyComponentMgr.cxx
+++ b/Control/AthenaPython/src/PyComponentMgr.cxx
@@ -1,7 +1,7 @@
 ///////////////////////// -*- C++ -*- /////////////////////////////
 
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // PyComponentMgr.cxx 
@@ -15,8 +15,6 @@
 
 #include "AthenaKernel/CLASS_DEF.h"
 CLASS_DEF (PyObject, 72785480, 1)
-#include "AthenaKernel/BaseInfo.h"
-SG_BASES1(PyObject, SG::NoBase);
 
 // AthenaPython includes
 #include "PyComponentMgr.h"
diff --git a/Control/CxxUtils/CxxUtils/CachedPointer.h b/Control/CxxUtils/CxxUtils/CachedPointer.h
index 005acdaccfe0f9be6c87657212744654e001c23a..624d182912b3e3076c2cc400205e42f6f67df59e 100644
--- a/Control/CxxUtils/CxxUtils/CachedPointer.h
+++ b/Control/CxxUtils/CxxUtils/CachedPointer.h
@@ -70,8 +70,10 @@ public:
 
 
   /// Copy constructor.
-  CachedPointer (const CachedPointer& other);
+  CachedPointer (const CachedPointer& other) noexcept;
 
+  /// Move constructor.
+  CachedPointer ( CachedPointer&& other) noexcept;
 
   /// Assignment.
   CachedPointer& operator= (const CachedPointer& other);
diff --git a/Control/CxxUtils/CxxUtils/CachedPointer.icc b/Control/CxxUtils/CxxUtils/CachedPointer.icc
index 07648b869b581c2bc2594db8efcb004a11d29770..099f11284de2b5dfbbd885b2ebe044e3c10bd736 100644
--- a/Control/CxxUtils/CxxUtils/CachedPointer.icc
+++ b/Control/CxxUtils/CxxUtils/CachedPointer.icc
@@ -40,11 +40,23 @@ CachedPointer<T>::CachedPointer (pointer_t elt)
  */
 template <class T>
 inline
-CachedPointer<T>::CachedPointer (const CachedPointer& other)
+CachedPointer<T>::CachedPointer (const CachedPointer& other) noexcept
   : m_a (other.get())
 {
 }
 
+/**
+ * @brief Move constructor.
+ */
+template <class T>
+inline
+CachedPointer<T>::CachedPointer ( CachedPointer&& other) noexcept
+  : m_a (other.get())
+{
+   //Does not own pointer so don't need to null
+}
+
+
 
 /**
  * @brief Assignment.
diff --git a/Control/CxxUtils/CxxUtils/features.h b/Control/CxxUtils/CxxUtils/features.h
index dcd5c1b86a22810e1ecec4a51084331c95c67e9f..25369243eb64753169385d366114b33592409142 100644
--- a/Control/CxxUtils/CxxUtils/features.h
+++ b/Control/CxxUtils/CxxUtils/features.h
@@ -17,7 +17,8 @@
 /// Do we have function multiversioning?  GCC and clang > 7 support
 /// the target attribute
 #if defined(__ELF__) && defined(__GNUC__) && !defined(__CLING__) &&            \
-  !defined(__ICC) && !defined(__COVERITY__) && !defined(__CUDACC__)
+  !defined(__ICC) && !defined(__COVERITY__) && !defined(__CUDACC__) &&         \
+  !defined(CL_SYCL_LANGUAGE_VERSION)
 # define HAVE_FUNCTION_MULTIVERSIONING 1
 #else
 # define HAVE_FUNCTION_MULTIVERSIONING 0
diff --git a/Control/SGTools/CMakeLists.txt b/Control/SGTools/CMakeLists.txt
index 70140c28792bd978cdecb47ba16c78cb82684dc1..e0b684dd9af58c71b5952da5a80f43a6d167bf5b 100644
--- a/Control/SGTools/CMakeLists.txt
+++ b/Control/SGTools/CMakeLists.txt
@@ -25,11 +25,6 @@ atlas_add_test( VersionedKey_test
                 test/VersionedKey_test.cxx
                 LINK_LIBRARIES SGTools )
 
-atlas_add_test( safe_clid_test
-                SOURCES
-                test/safe_clid_test.cxx
-                LINK_LIBRARIES SGTools )
-
 atlas_add_test( exceptions_test
                 SOURCES
                 test/exceptions_test.cxx
diff --git a/Control/SGTools/share/safe_clid_test.ref b/Control/SGTools/share/safe_clid_test.ref
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/DataQuality/DataQualityTools/CMakeLists.txt b/DataQuality/DataQualityTools/CMakeLists.txt
index 766347768658e94a41d2f9e5cab7867e4b2d345f..a488cbe17d9e65c6f1c8e70bd8a37836e645e0f5 100644
--- a/DataQuality/DataQualityTools/CMakeLists.txt
+++ b/DataQuality/DataQualityTools/CMakeLists.txt
@@ -5,52 +5,6 @@
 # Declare the package name:
 atlas_subdir( DataQualityTools )
 
-# Declare the package's dependencies:
-atlas_depends_on_subdirs( 
-                          Calorimeter/CaloGeoHelpers
-                          Control/AthenaBaseComps
-                          Control/AthenaMonitoring
-                          Control/StoreGate
-                          Event/xAOD/xAODCaloEvent
-                          Event/xAOD/xAODEventInfo
-                          Event/xAOD/xAODJet
-                          Event/xAOD/xAODMissingET
-                          Event/xAOD/xAODMuon
-                          Event/xAOD/xAODTracking
-                          ForwardDetectors/LUCID/LUCID_RawEvent
-                          ForwardDetectors/ZDC/ZdcEvent
-                          ForwardDetectors/ZDC/ZdcIdentifier
-                          GaudiKernel
-                          InnerDetector/InDetDetDescr/InDetIdentifier
-                          InnerDetector/InDetRawEvent/InDetRawData
-                          InnerDetector/InDetDetDescr/InDetReadoutGeometry
-                          InnerDetector/InDetRecEvent/InDetPrepRawData
-                          LArCalorimeter/LArRawEvent
-                          LArCalorimeter/LArRecEvent
-                          MagneticField/MagFieldInterfaces
-                          MuonSpectrometer/MuonCalib/MuonCalibITools
-                          MuonSpectrometer/MuonIdHelpers
-                          MuonSpectrometer/MuonRDO
-                          MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools
-                          PhysicsAnalysis/AnalysisCommon/IsolationSelection
-                          PhysicsAnalysis/EventTag/TagEvent
-                          PhysicsAnalysis/MuonID/MuonSelectorTools
-                          Reconstruction/RecBackground/RecBackgroundEvent
-                          Reconstruction/RecoTools/RecoToolInterfaces
-                          TileCalorimeter/TileEvent
-                          Tools/LWHists
-                          Tracking/TrkEvent/TrkParameters
-                          Tracking/TrkExtrapolation/TrkExInterfaces
-                          Trigger/TrigAnalysis/TrigDecisionTool
-                          Trigger/TrigEvent/TrigCaloEvent
-                          Trigger/TrigEvent/TrigMuonEvent
-                          Trigger/TrigEvent/TrigParticle
-                          Trigger/TrigT1/TrigT1Result 
-                          PhysicsAnalysis/MuonID/MuonSelectorTools
-                          MagneticField/MagFieldElements
-                          MagneticField/MagFieldConditions
-)
-
 # External dependencies:
 find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
 
@@ -62,7 +16,7 @@ atlas_add_component( DataQualityTools
                      src/*.cxx
                      src/components/*.cxx
                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${ROOT_LIBRARIES} CaloGeoHelpers AthenaBaseComps AthenaMonitoringLib StoreGateLib SGtests xAODCaloEvent xAODEventInfo xAODJet xAODMissingET xAODMuon xAODTracking LUCID_RawEvent ZdcEvent ZdcIdentifier GaudiKernel InDetIdentifier InDetRawData InDetReadoutGeometry InDetPrepRawData LArRawEvent LArRecEvent MagFieldInterfaces MuonCalibITools MuonIdHelpersLib MuonRDO MuonRecHelperToolsLib TagEvent RecBackgroundEvent RecoToolInterfaces TileEvent LWHists TrkParameters TrkExInterfaces TrkVertexAnalysisUtilsLib TrigDecisionToolLib TrigCaloEvent TrigMuonEvent TrigParticle TrigT1Result MuonSelectorToolsLib MagFieldElements MagFieldConditions)
+                     LINK_LIBRARIES ${ROOT_LIBRARIES} CaloGeoHelpers AthenaBaseComps AthenaMonitoringLib StoreGateLib SGtests xAODCaloEvent xAODEventInfo xAODJet xAODMissingET xAODMuon xAODTracking LUCID_RawEvent ZdcEvent ZdcIdentifier GaudiKernel InDetIdentifier InDetRawData InDetReadoutGeometry InDetPrepRawData LArRawEvent LArRecEvent MagFieldInterfaces MuonCalibITools MuonIdHelpersLib MuonRDO MuonRecHelperToolsLib TagEvent RecBackgroundEvent RecoToolInterfaces TileEvent LWHists TrkParameters TrkExInterfaces TrkVertexAnalysisUtilsLib TrigDecisionToolLib TrigCaloEvent TrigMuonEvent TrigParticle TrigT1Result MuonSelectorToolsLib MagFieldElements MagFieldConditions IsolationSelectionLib )
 
 # Install files from the package:
 atlas_install_python_modules( python/*.py )
diff --git a/DataQuality/DataQualityUtils/DataQualityUtils/HanOutputFile.h b/DataQuality/DataQualityUtils/DataQualityUtils/HanOutputFile.h
index b952560ce644fd082dbc442882b9d2aebc0d0088..9a497a51d5c816cce827e2ecb0a429cd90bc1e47 100644
--- a/DataQuality/DataQualityUtils/DataQualityUtils/HanOutputFile.h
+++ b/DataQuality/DataQualityUtils/DataQualityUtils/HanOutputFile.h
@@ -73,6 +73,8 @@ public:
   /**
    * cnvsType: 1=pngOnly;2=jsonOnly;3=pngAndJson
    */
+  const static int GENERATE_PNG        = 1; // Make PNG with TImage
+  const static int GENERATE_JSON       = 2; // Make JSON
   virtual int  saveAllHistograms( std::string location, bool drawRefs, std::string run_min_LB,int cnvsType = 1);
   static bool containsDir(std::string dirname, std::string maindir);
 
diff --git a/DataQuality/DataQualityUtils/src/HanOutputFile.cxx b/DataQuality/DataQualityUtils/src/HanOutputFile.cxx
index 75777b0477f4145249cf20a2db42c7d04cef6e73..cc6c4bbbe024296fadcf29241e6068f485870d16 100644
--- a/DataQuality/DataQualityUtils/src/HanOutputFile.cxx
+++ b/DataQuality/DataQualityUtils/src/HanOutputFile.cxx
@@ -1535,7 +1535,8 @@ std::pair<std::string,std::string> HanOutputFile:: getHistogram( std::string nam
   }
 
 
-  std::string rv(x, y);
+  std::string rv;
+  if (cnvsType & GENERATE_PNG) { rv.assign(x, y); };
   std::pair<std::string,std::string>rvPair{rv,json};
 
   delete img;
@@ -2784,8 +2785,6 @@ writeToFile(std::string fname ,std::string content)
 void HanOutputFile::
 convertToGraphics(int cnvsType, TCanvas* myC,std::string &json, TImage *img,char **x, int *y)
 {
-    int GENERATE_PNG        = 1; // Make PNG with TImage
-    int GENERATE_JSON       = 2; // Make JSON
     if (cnvsType & GENERATE_PNG) 
     {
         if(img) getImageBuffer(img,myC,x,y);
@@ -2799,8 +2798,6 @@ convertToGraphics(int cnvsType, TCanvas* myC,std::string &json, TImage *img,char
 void HanOutputFile::
 convertToGraphics(int cnvsType, TCanvas* myC,std::string namePNG,std::string nameJSON)
 {
-    int GENERATE_PNG        = 1; // Make PNG with TImage
-    int GENERATE_JSON       = 2; // Make JSON
     if (cnvsType & GENERATE_PNG) 
     {
         myC->SaveAs(namePNG.c_str());
@@ -2815,9 +2812,6 @@ convertToGraphics(int cnvsType, TCanvas* myC,std::string namePNG,std::string nam
 bool HanOutputFile::
 saveFile(int cnvsType, std::string pngfName,std::string pngContent, std::string jsonfName, std::string jsonfContent)
 {
-    int GENERATE_PNG        = 1; // Make PNG with TImage
-    int GENERATE_JSON       = 2; // Make JSON
-
     bool png =false;
     bool json=false;
     if (cnvsType & GENERATE_PNG) 
diff --git a/DetectorDescription/DetDescrCond/DetDescrConditions/DetDescrConditions/DetStatus.h b/DetectorDescription/DetDescrCond/DetDescrConditions/DetDescrConditions/DetStatus.h
index dc690b6f0e4bb7718db0e43fa924136f017ebaf6..412fb1d7a1418234297f60a5f924e097a4f7922c 100755
--- a/DetectorDescription/DetDescrCond/DetDescrConditions/DetDescrConditions/DetStatus.h
+++ b/DetectorDescription/DetDescrCond/DetDescrConditions/DetDescrConditions/DetStatus.h
@@ -9,14 +9,14 @@
 
 #include<string>
 
-class DetStatus {
+class DetStatus final {
  public:
   DetStatus();
   // constructor with parameters
   DetStatus(const int fullcode, 
 	    const float deadfrac, const float deadthrust);
 
-  virtual ~DetStatus();
+  ~DetStatus() = default;
 
   // access functions
   int code() const;
@@ -31,8 +31,6 @@ class DetStatus {
   float m_deadthrust;
 };
 
-inline DetStatus::~DetStatus() {}
-
 inline int DetStatus::code() const { return m_code<0 ? m_code : m_code & 3; }
 inline int DetStatus::fullCode() const { return m_code; }
 inline float DetStatus::deadFrac() const { return m_deadfrac;}
diff --git a/DetectorDescription/Identifier/Identifier/Identifier32.h b/DetectorDescription/Identifier/Identifier/Identifier32.h
index a35b9b8f3c7bd6b176b1a6b0769cd2120809908a..6b2882856ce16dbee07de035c08ca7ba92fbb7ff 100644
--- a/DetectorDescription/Identifier/Identifier/Identifier32.h
+++ b/DetectorDescription/Identifier/Identifier/Identifier32.h
@@ -44,10 +44,10 @@ public:
     explicit Identifier32 (value_type value);
 
     /// Copy constructor
-    Identifier32 (const Identifier32& other);
+    Identifier32 (const Identifier32& other) = default;
 
     /// Assignment.
-    Identifier32& operator= (const Identifier32& other);
+    Identifier32& operator= (const Identifier32& other) = default;
 
     ///----------------------------------------------------------------
     /// Modifications
@@ -130,18 +130,6 @@ inline Identifier32::Identifier32 ()
     : m_id(max_value)
 {}
 
-//-----------------------------------------------
-inline Identifier32::Identifier32 (const Identifier32& other)
-    : m_id(other.m_id)
-{}
-
-//-----------------------------------------------
-inline Identifier32& Identifier32::operator= (const Identifier32& other)
-{
-  if (this != &other)
-    m_id = other.m_id;
-  return *this;
-}
 
 //-----------------------------------------------
 inline Identifier32::Identifier32 (value_type value)
diff --git a/DetectorDescription/RegSelLUT/RegSelLUT/RegSelRoI.h b/DetectorDescription/RegSelLUT/RegSelLUT/RegSelRoI.h
index de67d3f6772a293636d35a5b71a4b059fc0d85bf..b454784d6ebe96e6329fa94ebffc1695afc9353a 100644
--- a/DetectorDescription/RegSelLUT/RegSelLUT/RegSelRoI.h
+++ b/DetectorDescription/RegSelLUT/RegSelLUT/RegSelRoI.h
@@ -39,7 +39,7 @@ public:
 	    double phiMin, double phiMax, 
 	    double etaMin, double etaMax);
 
-  ~RegSelRoI() { } 
+  ~RegSelRoI() = default;
 
   double getzMin()   const { return m_zMin; } 
   double getzMax()   const { return m_zMax; } 
diff --git a/Event/EventBookkeeperTools/CMakeLists.txt b/Event/EventBookkeeperTools/CMakeLists.txt
index 4f364c640fdd205cceab125b3867c42398f43081..0f7d1f44b870a5f51829f6b0da422c1e8eed5ceb 100644
--- a/Event/EventBookkeeperTools/CMakeLists.txt
+++ b/Event/EventBookkeeperTools/CMakeLists.txt
@@ -6,44 +6,22 @@
 atlas_subdir( EventBookkeeperTools )
 
 if( XAOD_STANDALONE )
-   set( xaod_access_deps Control/xAODRootAccess )
    set( xaod_access_lib xAODRootAccess )
 # ... for AthAnalysisBase (Athena calls this POOLRootAccess)
 else()
-   set( xaod_access_deps PhysicsAnalysis/POOLRootAccess )
    set( xaod_access_lib POOLRootAccessLib )
 endif()
 
-# Declare the package's dependencies:
-atlas_depends_on_subdirs( PUBLIC
-                          Control/AthToolSupport/AsgTools
-                          Control/AthenaBaseComps
-                          Control/AthenaKernel
-                          Event/xAOD/xAODCutFlow
-                          GaudiKernel
-                          PRIVATE
-                          ${xaod_access_deps}
-                          Control/SGTools
-                          Control/StoreGate
-                          Event/EventBookkeeperMetaData
-                          Event/EventInfo
-                          Event/xAOD/xAODEventInfo )
-
-# External dependencies:
-find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
-
 # Component(s) in the package:
 atlas_add_component( EventBookkeeperTools
                      src/*.cxx
                      src/components/*.cxx
-                     INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools AthenaBaseComps AthenaKernel xAODCutFlow
-                                    GaudiKernel SGTools StoreGateLib SGtests EventBookkeeperMetaData EventInfo xAODEventInfo )
+                     LINK_LIBRARIES AsgTools AthenaBaseComps AthenaKernel GaudiKernel
+                                    SGTools StoreGateLib EventBookkeeperMetaData EventInfo xAODCutFlow xAODEventInfo )
 
 atlas_add_executable( dump-cbk
                       util/dump-cbk.cxx
-                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
-                      LINK_LIBRARIES ${ROOT_LIBRARIES} ${xaod_access_lib} AsgTools )  
+                      LINK_LIBRARIES ${xaod_access_lib} AsgTools )  
 
 # Install files from the package:
 atlas_install_python_modules( python/*.py )
diff --git a/Event/EventBookkeeperTools/src/BookkeeperTool.cxx b/Event/EventBookkeeperTools/src/BookkeeperTool.cxx
index ac8ce9e8f80cb1bab716d3a820832908ee91bb8f..a198cbd6687aa92e4d68e6acf5847f6df76137fc 100644
--- a/Event/EventBookkeeperTools/src/BookkeeperTool.cxx
+++ b/Event/EventBookkeeperTools/src/BookkeeperTool.cxx
@@ -1,52 +1,28 @@
-///////////////////////// -*- C++ -*- /////////////////////////////
-
 /*
   Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // Implementation file for class BookkeeperTool
-// Authors: Jack Cranshaw <Jack.Cranshaw@cern.ch>
-///////////////////////////////////////////////////////////////////
+// Authors: Tadej Novak <tadej@cern.ch>
+//          Jack Cranshaw <Jack.Cranshaw@cern.ch>
 
 #include "BookkeeperTool.h"
-
-// STL include
-#include <algorithm>
-
-// #include "FillEBCFromFlat.h"
-
-#include "AthenaKernel/errorcheck.h"
-#include "AthenaBaseComps/AthCheckMacros.h"
-
+#include "CutBookkeeperUtils.h"
 #include "CutFlowSvc.h"
 
 
 BookkeeperTool::BookkeeperTool(const std::string& name)
-  : asg::AsgMetadataTool(name),
-    m_cutflowTaken(false)
+  : asg::AsgMetadataTool(name)
 {
-  declareProperty("OutputCollName", m_outputCollName="CutBookkeepers",  
-    "The default name of the xAOD::CutBookkeeperContainer for output files");
-  declareProperty("InputCollName", m_inputCollName = "CutBookkeepers",
-    "The default name of the xAOD::CutBookkeeperContainer for input files");
-
 #ifndef XAOD_STANDALONE
   declareInterface< ::IMetaDataTool >( this );
 #endif // XAOD_STANDALONE
 }
 
 
-
-BookkeeperTool::~BookkeeperTool()
+StatusCode BookkeeperTool::initialize()
 {
-}
-
-
-
-StatusCode
-BookkeeperTool::initialize()
-{
-  ATH_MSG_DEBUG( "Initializing " << name() << " - package version " << PACKAGE_VERSION );
+  ATH_MSG_DEBUG("Initializing " << name());
 
   ATH_MSG_DEBUG("InputCollName = " << m_inputCollName);
   ATH_MSG_DEBUG("OutputCollName = " << m_outputCollName);
@@ -59,178 +35,138 @@ BookkeeperTool::initialize()
 }
 
 
-//__________________________________________________________________________
-StatusCode BookkeeperTool::beginInputFile(const SG::SourceID&)
+StatusCode BookkeeperTool::beginInputFile(const SG::SourceID &source)
 {
-  //OPENING NEW INPUT FILE
-  //Things to do:
-  // 1) note that a file is currently opened
-  // 2) Load CutBookkeepers from input file
-  //    2a) if incomplete from input, directly propagate to output
-  //    2b) if complete from input, wait for EndInputFile to decide what to do in output
-
-  // reset cutflow taken marker
-  m_cutflowTaken = false;
+  // OPENING NEW INPUT FILE
+  // Things to do:
+  // 1) Load CutBookkeepers from input file
+  //    a) if incomplete from input, directly propagate to output
+  //    b) if complete from input, wait for EndInputFile to decide what to do in output
+
+  // Prepare local cache
+  ATH_CHECK(prepareContainers(m_completeContainers));
+  ATH_CHECK(prepareContainers(m_incompleteContainers));
+
+  // Check if a local container is there. IT SHOULD NOT BE
+  auto sit = m_inputContainers.find(source);
+  if (sit != m_inputContainers.end()) {
+    ATH_MSG_ERROR("Undefined behaviour: this file has already been processed");
+    return StatusCode::FAILURE;
+  }
 
   // Get the incomplete bookkeeper collection of the input metadata store
-  const xAOD::CutBookkeeperContainer* input_inc = 0;
+  const xAOD::CutBookkeeperContainer *inIncomplete{};
   // Construct input and output incomplete names
-  std::string inCollName = "Incomplete" + m_inputCollName;
-  std::string outCollName = "Incomplete" + m_outputCollName;
-  if (inputMetaStore()->contains<xAOD::CutBookkeeperContainer>(inCollName) ) {
-    StatusCode ssc = inputMetaStore()->retrieve( input_inc, inCollName );
-    if (ssc.isSuccess()) {
-      // First make sure there is an incomplete container in the output store
-      if( !(outputMetaStore()->contains<xAOD::CutBookkeeperContainer>(outCollName)) ) {
-        xAOD::CutBookkeeperContainer* inc = new xAOD::CutBookkeeperContainer();
-        xAOD::CutBookkeeperAuxContainer* auxinc = new xAOD::CutBookkeeperAuxContainer();
-        inc->setStore(auxinc);
-        ATH_CHECK(outputMetaStore()->record(inc,outCollName));
-        ATH_CHECK(outputMetaStore()->record(auxinc,outCollName+"Aux."));
-      }
-      // retrieve the incomplete output container
-      xAOD::CutBookkeeperContainer* incompleteBook(NULL);
-      ATH_CHECK(outputMetaStore()->retrieve( incompleteBook, outCollName));
+  std::string incompleteCollName = "Incomplete" + m_inputCollName;
+  if (inputMetaStore()->contains<xAOD::CutBookkeeperContainer>(incompleteCollName)) {
+    if (inputMetaStore()->retrieve(inIncomplete, incompleteCollName).isSuccess()) {
       // update incomplete output with any incomplete input
-      ATH_CHECK(this->updateContainer(incompleteBook,input_inc));
+      ATH_CHECK(xAOD::CutBookkeeperUtils::updateContainer(m_incompleteContainers.at(0), inIncomplete));
       ATH_MSG_DEBUG("Successfully merged input incomplete bookkeepers with output");
     }
-  }
-  else {
-    ATH_MSG_INFO("No incomplete bookkeepers in this file " << inCollName);
+  } else {
+    ATH_MSG_INFO("No incomplete bookkeepers in this file with name " << incompleteCollName);
   }
 
   // Get the complete bookkeeper collection of the input metadata store
-  const xAOD::CutBookkeeperContainer* input_com = 0;
-  inCollName = m_inputCollName;
-  outCollName = m_outputCollName;
-  if (inputMetaStore()->contains<xAOD::CutBookkeeperContainer>(inCollName) ) {
-    if ( (inputMetaStore()->retrieve( input_com, inCollName )).isSuccess() ) {
-      // Check if a tmp is there. IT SHOULD NOT BE
-      //xAOD::CutBookkeeperContainer* incompleteBook(NULL);
-      if( !(outputMetaStore()->contains<xAOD::CutBookkeeperContainer>(outCollName+"tmp")) ) {
-        // Now create the tmp container
-        xAOD::CutBookkeeperContainer* tmp = new xAOD::CutBookkeeperContainer();
-        xAOD::CutBookkeeperAuxContainer* auxtmp = new xAOD::CutBookkeeperAuxContainer();
-        tmp->setStore(auxtmp);
-        if (updateContainer(tmp,input_com).isSuccess()) {
-          ATH_CHECK(outputMetaStore()->record(tmp,outCollName+"tmp"));
-          ATH_CHECK(outputMetaStore()->record(auxtmp,outCollName+"tmpAux."));
-        }
-        else {
-          ATH_MSG_WARNING("Could not update tmp container from input complete conatiner");
-        }
-      }
+  const xAOD::CutBookkeeperContainer *inComplete{};
+  if (inputMetaStore()->contains<xAOD::CutBookkeeperContainer>(m_inputCollName)) {
+    if (inputMetaStore()->retrieve(inComplete, m_inputCollName).isSuccess()) {
+      // Create the temporary container
+      auto [it, status] = m_inputContainers.emplace(source, LocalContainers());
+      ATH_CHECK(prepareContainers(it->second));
+
+      ATH_CHECK(xAOD::CutBookkeeperUtils::updateContainer(it->second.at(0), inComplete));
+      ATH_MSG_DEBUG("Successfully copied complete bookkeepers to temp container");
+    } else {
+      ATH_MSG_INFO("No complete bookkeepers in this file with name " << m_inputCollName);
     }
-    else {
-      ATH_MSG_WARNING("tmp collection already exists");
-      return StatusCode::SUCCESS;
-    }
-    ATH_MSG_DEBUG("Successfully copied complete bookkeepers to temp container");
   }
 
-  //  Now make sure the output containers are in the output store
-  //
-  //  Make sure complete container exists in output
-  if( !(outputMetaStore()->contains<xAOD::CutBookkeeperContainer>(m_outputCollName)) ) {
-      // Now create the complete container
-    xAOD::CutBookkeeperContainer* inc = new xAOD::CutBookkeeperContainer();
-    xAOD::CutBookkeeperAuxContainer* auxinc = new xAOD::CutBookkeeperAuxContainer();
-    inc->setStore(auxinc);
-    ATH_CHECK(outputMetaStore()->record(inc,m_outputCollName));
-    ATH_CHECK(outputMetaStore()->record(auxinc,m_outputCollName+"Aux."));
-  }
-  else {
-    ATH_MSG_WARNING("complete collection already exists");
-    //return StatusCode::SUCCESS;
-  }
-  //  Make sure incomplete container exists in output
-  std::string inc_name = "Incomplete"+m_outputCollName;
-  if( !(outputMetaStore()->contains<xAOD::CutBookkeeperContainer>(inc_name)) ) {
-      // Now create the complete container
-    xAOD::CutBookkeeperContainer* coll = new xAOD::CutBookkeeperContainer();
-    xAOD::CutBookkeeperAuxContainer* auxcoll = new xAOD::CutBookkeeperAuxContainer();
-    coll->setStore(auxcoll);
-    ATH_CHECK(outputMetaStore()->record(coll,inc_name));
-    ATH_CHECK(outputMetaStore()->record(auxcoll,inc_name+"Aux."));
-  }
-  else {
-    ATH_MSG_WARNING("incomplete collection already exists");
-  }
-  
   return StatusCode::SUCCESS;
 }
 
 
-StatusCode BookkeeperTool::endInputFile(const SG::SourceID&)
+StatusCode BookkeeperTool::endInputFile(const SG::SourceID &source)
 {
+  ATH_CHECK(copyInputContainersToOutput(m_completeContainers, source));
 
-  if (copyContainerToOutput(m_outputCollName).isFailure()) return StatusCode::FAILURE;
-
-  if (!m_cutflowTaken) {
-    if (addCutFlow().isFailure()) {
-      ATH_MSG_ERROR("Could not add CutFlow information");
-    }
-    m_cutflowTaken = true;
-  }
-  else {
-    ATH_MSG_DEBUG("Cutflow information written into container before endInputFile");
-  }
-    
   return StatusCode::SUCCESS;
 }
 
 StatusCode BookkeeperTool::metaDataStop()
 {
-  //TERMINATING THE JOB (EndRun)
-  //Things to do:
+  // TERMINATING THE JOB (EndRun)
+  // Things to do:
   // 1) Create new incomplete CutBookkeepers if relevant
-  // 2) Print cut flow summary
-  // 3) Write root file if requested
-  //  Make sure incomplete container exists in output
-  std::string inc_name = "Incomplete"+m_outputCollName;
-  if (copyContainerToOutput(inc_name).isFailure()) return StatusCode::FAILURE;
+  // 2) Copy cutflow from the service
+  // 3) Copy containers to output
+
+  // All files that have not been fully processed are incomplete
+  ATH_CHECK(copyInputContainersToOutput(m_incompleteContainers));
 
+  // Copy cutflow from the service
+  ATH_CHECK(copyCutflowFromService());
 
-  if (!m_cutflowTaken) {
-    if (addCutFlow().isFailure()) {
-      ATH_MSG_ERROR("Could not add CutFlow information");
+  // Write out the containers
+  for (std::size_t i = 0; i < m_completeContainers.cont.size(); ++i) {
+    std::string name = m_outputCollName;
+    if (i != 0) {
+      name.append("_weight_");
+      name.append(std::to_string(i));
     }
-  }
-  else {
-    ATH_MSG_DEBUG("Cutflow information written into container before metaDataStop");
+
+    ATH_CHECK(outputMetaStore()->record(std::move(m_completeContainers.cont[i]), name));
+    ATH_CHECK(outputMetaStore()->record(std::move(m_completeContainers.aux[i]), name + "Aux."));
+    ATH_CHECK(outputMetaStore()->record(std::move(m_incompleteContainers.cont[i]), "Incomplete" + name));
+    ATH_CHECK(outputMetaStore()->record(std::move(m_incompleteContainers.aux[i]), "Incomplete" + name + "Aux."));
   }
 
-  // Reset after metadata stop
-  m_cutflowTaken = false;
-  
+  m_incompleteContainers.clear();
+  m_completeContainers.clear();
+
   return StatusCode::SUCCESS;
 }
 
 
-StatusCode
-BookkeeperTool::finalize()
+StatusCode BookkeeperTool::copyInputContainersToOutput(LocalContainers &target,
+                                                       const SG::SourceID &source)
 {
-  ATH_MSG_DEBUG( "Finalizing " << name() << " - package version " << PACKAGE_VERSION );
+  ATH_CHECK(prepareContainers(target));
+
+  if (!source.empty()) {
+    auto it = m_inputContainers.find(source);
+    if (it == m_inputContainers.end()) {
+      ATH_MSG_DEBUG("No input containers for this file");
+      return StatusCode::SUCCESS;
+    }
+
+    for (std::size_t i = 0; i < it->second.size(); ++i) {
+      ATH_CHECK(xAOD::CutBookkeeperUtils::updateContainer(target.at(i), it->second.at(i)));
+    }
+    m_inputContainers.erase(it);
+
+    return StatusCode::SUCCESS;
+  }
+
+  for (auto &[s, list] : m_inputContainers) {
+    for (std::size_t i = 0; i < list.size(); ++i) {
+      ATH_CHECK(xAOD::CutBookkeeperUtils::updateContainer(target.at(i), list.at(i)));
+    }
+  }
+  m_inputContainers.clear();
+
   return StatusCode::SUCCESS;
 }
 
-
-StatusCode BookkeeperTool::addCutFlow()
+StatusCode BookkeeperTool::copyCutflowFromService()
 {
-  // Add the information from the current processing to the complete output
-  // --> same paradigm as original CutFlowSvc
-  // Get the complete bookkeeper collection of the output meta-data store
-  xAOD::CutBookkeeperContainer* completeBook(NULL); 
-  if( !(outputMetaStore()->retrieve( completeBook, m_outputCollName) ).isSuccess() ) {
-    ATH_MSG_ERROR( "Could not get complete CutBookkeepers from output MetaDataStore" );
-    return StatusCode::FAILURE;
-  }
+  ATH_CHECK(prepareContainers(m_completeContainers));
 
   // Get the bookkeeper from the current processing
   const xAOD::CutBookkeeperContainer* cbkCont = m_cutFlowSvcPrivate->getCutBookkeepers();
   if (cbkCont != nullptr) {
-    ATH_CHECK(this->updateContainer(completeBook, cbkCont));
+    ATH_CHECK(xAOD::CutBookkeeperUtils::updateContainer(m_completeContainers.at(0), cbkCont));
   } else {
     ATH_MSG_ERROR("No cutflow container in the CutFlowSvc");
     return StatusCode::FAILURE;
@@ -240,170 +176,20 @@ StatusCode BookkeeperTool::addCutFlow()
 }
 
 
-namespace {
-
-
-xAOD::CutBookkeeper*
-resolveLink (const xAOD::CutBookkeeper* old,
-             xAOD::CutBookkeeperContainer& contToUpdate,
-             const xAOD::CutBookkeeperContainer& otherCont,
-             const std::vector<size_t>& otherIndices)
+StatusCode BookkeeperTool::prepareContainers(LocalContainers &target)
 {
-  {
-    xAOD::CutBookkeeperContainer::iterator matchIter = 
-      std::find( contToUpdate.begin(),
-                 contToUpdate.end(),
-                 old );
-    if (matchIter != contToUpdate.end())
-      return *matchIter;
+  if (!target.empty()) {
+    return StatusCode::SUCCESS;
   }
 
-  {
-    xAOD::CutBookkeeperContainer::const_iterator matchIter = 
-      std::find( otherCont.begin(),
-                 otherCont.end(),
-                 old );
-    if (matchIter != contToUpdate.end()) {
-      size_t pos = matchIter - otherCont.begin();
-      return contToUpdate[otherIndices[pos]];
-    }
-  }
-
-  // If we didn't find it, we need to add it
-  xAOD::CutBookkeeper* newEBK = new xAOD::CutBookkeeper();
-  if ( newEBK->usingPrivateStore() ) { newEBK->releasePrivateStore(); }
-  newEBK->makePrivateStore(old);
-  contToUpdate.push_back( newEBK );
-  return newEBK;
-}
-
-
-} // anonymous namespace
-
-StatusCode
-BookkeeperTool::updateContainer( xAOD::CutBookkeeperContainer* contToUpdate,
-                             const xAOD::CutBookkeeperContainer* otherCont ) 
-{
-  ATH_MSG_DEBUG("calling updateContainer(...)" );
-  ATH_MSG_VERBOSE("Have container to update with size=" << contToUpdate->size()
-                  << ", and other container with size=" << otherCont->size() );
-
-  size_t origSize = contToUpdate->size();
-
-  // Vector of indices in contToUpdate of elements in otherCont.
-  std::vector< std::size_t > otherIndices (otherCont->size());
-  // Loop through otherCont.
-  // If element already in contToUpdate, update event counts, otherwise create new element
-  for ( std::size_t i=0; i<otherCont->size(); ++i ) {
-    const xAOD::CutBookkeeper* otherEBK = otherCont->at(i);
-    ATH_MSG_VERBOSE("Looping through otherCont at index " << i);
-    ATH_MSG_VERBOSE("Have otherEBK with: name=" << otherEBK->name()
-                    << ", cycle=" << otherEBK->cycle()
-                    << ", nAcceptedEvents=" << otherEBK->nAcceptedEvents()
-                    << ", inputStream=" << otherEBK->inputStream() );
-
-
-    // Loop through the container to be updated (contToUpdate) and see if we find a match
-    bool foundEBKToUpdate(false);
-    for ( std::size_t j=0; j<contToUpdate->size(); ++j ) {
-      xAOD::CutBookkeeper* ebkToUpdate = contToUpdate->at(j);
-      // Check if they are identical, if so, update; else add otherEBK
-      if ( otherEBK->isEqualTo(ebkToUpdate) ) {
-        ebkToUpdate->setPayload( ebkToUpdate->payload() + otherEBK->payload() );
-        otherIndices[i] = j;
-        foundEBKToUpdate = true;
-        break;
-      }
-    } // End: Inner loop over contToUpdate
-    if (!foundEBKToUpdate) {
-      xAOD::CutBookkeeper* newEBK = new xAOD::CutBookkeeper();
-      if ( newEBK->usingPrivateStore() ) { newEBK->releasePrivateStore(); }
-      newEBK->makePrivateStore(otherEBK);
-      contToUpdate->push_back( newEBK );
-      std::size_t ebIdx = newEBK->index();
-      otherIndices[i] = ebIdx;
-    }
-  } // End: Outer loop over contToUpdate
-
-  // Now, we still need to fix the cross-referencing of the newly added CutBookkkeepers
-  for ( std::size_t i=origSize; i<contToUpdate->size(); ++i ) {
-    xAOD::CutBookkeeper* ebkToModify = contToUpdate->at(i);
-
-    // Parent check
-    if ( ebkToModify->hasParent() ) {
-      const xAOD::CutBookkeeper* oldParent = ebkToModify->parent();
-      const xAOD::CutBookkeeper* newParent = resolveLink (oldParent,
-                                                          *contToUpdate,
-                                                          *otherCont,
-                                                          otherIndices);
-      ebkToModify->setParent (newParent);
-    } // Done fixing parent
-
-    // Children check
-    std::vector< xAOD::CutBookkeeper* > newChildren;
-    for ( std::size_t oldIdx=0; oldIdx<ebkToModify->nChildren(); ++oldIdx ) {
-      const xAOD::CutBookkeeper* oldEBK = ebkToModify->child(oldIdx);
-      newChildren.push_back (resolveLink (oldEBK,
-                                          *contToUpdate,
-                                          *otherCont,
-                                          otherIndices));
-    } // Done fixing children
-    ebkToModify->setChildren (newChildren);
-
-    // Used others check
-    std::vector< xAOD::CutBookkeeper* > newOthers;
-    for ( std::size_t oldIdx=0; oldIdx<ebkToModify->nUsedOthers(); ++oldIdx ) {
-      const xAOD::CutBookkeeper* oldEBK = ebkToModify->usedOther(oldIdx);
-      newOthers.push_back (resolveLink (oldEBK,
-                                        *contToUpdate,
-                                        *otherCont,
-                                        otherIndices));
-    } // Done fixing used others
-    ebkToModify->setUsedOthers (newOthers);
-
-    // Siblings check
-    std::vector< xAOD::CutBookkeeper* > newSiblings;
-    for ( std::size_t oldIdx=0; oldIdx<ebkToModify->nSiblings(); ++oldIdx ) {
-      const xAOD::CutBookkeeper* oldEBK = ebkToModify->sibling(oldIdx);
-      newSiblings.push_back (resolveLink (oldEBK,
-                                          *contToUpdate,
-                                          *otherCont,
-                                          otherIndices));
-    } // Done fixing siblings
-    ebkToModify->setSiblings (newSiblings);
-  } // Done fixing all cross references
-  return StatusCode::SUCCESS;
-}
-
-
-StatusCode BookkeeperTool::copyContainerToOutput(const std::string& outname)
-{
-
-  // Get the complete bookkeeper collection of the output meta-data store
-  xAOD::CutBookkeeperContainer* contBook(nullptr); 
-  if( !(outputMetaStore()->retrieve( contBook, outname) ).isSuccess() ) {
-    ATH_MSG_ERROR( "Could not get " << outname << " CutBookkeepers from output MetaDataStore" );
-    return StatusCode::FAILURE;
+  std::size_t size{1}; // TODO: determine actual size
+  for (std::size_t i = 0; i < size; ++i) {
+    auto container = std::make_unique<xAOD::CutBookkeeperContainer>();
+    auto auxContainer = std::make_unique<xAOD::CutBookkeeperAuxContainer>();
+    container->setStore(auxContainer.get());
+    target.cont.push_back(std::move(container));
+    target.aux.push_back(std::move(auxContainer));
   }
 
-  // Get the tmp bookkeeper from the input
-  const xAOD::CutBookkeeperContainer* tmpBook(NULL);
-  if ( outputMetaStore()->contains<xAOD::CutBookkeeperContainer>(m_outputCollName+"tmp") ) {
-    ATH_MSG_DEBUG("Copying data to the output container " << outname);
-    if( !(outputMetaStore()->retrieve( tmpBook, m_outputCollName+"tmp") ).isSuccess() ) {
-      ATH_MSG_WARNING( "Could not get tmp CutBookkeepers from output MetaDataStore" );
-    }
-    else {
-      // update the complete output with the complete input
-      ATH_CHECK(this->updateContainer(contBook,tmpBook));
-      // remove the tmp container
-      const SG::IConstAuxStore* tmpBookAux = tmpBook->getConstStore();
-      ATH_CHECK(outputMetaStore()->removeDataAndProxy(tmpBook));
-      ATH_CHECK(outputMetaStore()->removeDataAndProxy(tmpBookAux));
-    }
-  }
-    
   return StatusCode::SUCCESS;
 }
-
-
diff --git a/Event/EventBookkeeperTools/src/BookkeeperTool.h b/Event/EventBookkeeperTools/src/BookkeeperTool.h
index a60223fd2122c871fd3455141b1cb9f154c62062..3562be7cdd64286edeabe99d45c1ef26bdf20366 100644
--- a/Event/EventBookkeeperTools/src/BookkeeperTool.h
+++ b/Event/EventBookkeeperTools/src/BookkeeperTool.h
@@ -8,20 +8,22 @@
 /** @file BookkeeperTool.h
  *  @brief This class is an implementation of the AsgMetadataTool
  *  for the xAOD::CutBookkeeperContainer.
+ *  @author Tadej Novak <tadej@cern.ch>
  *  @author Jack Cranshaw <cranshaw@anl.gov>
- *  $Id: $
  **/
 
-//#include "GaudiKernel/AlgTool.h"
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "AsgTools/AsgMetadataTool.h"
-#include "AthenaKernel/ICutFlowSvc.h"
+#include <memory>
+
+#include <AsgTools/AsgMetadataTool.h>
+#include <AthenaBaseComps/AthAlgTool.h>
+#include <AthenaKernel/ICutFlowSvc.h>
 #ifndef XAOD_STANDALONE
-#include "AthenaKernel/IMetaDataTool.h"
+#include <AthenaKernel/IMetaDataTool.h>
 #endif // XAOD_STANDALONE
-#include "GaudiKernel/ServiceHandle.h"
+#include <GaudiKernel/ServiceHandle.h>
 
 #include <xAODCutFlow/CutBookkeeperContainer.h>
+#include <xAODCutFlow/CutBookkeeperAuxContainer.h>
 
 class CutFlowSvc;
 
@@ -30,48 +32,63 @@ class BookkeeperTool : public asg::AsgMetadataTool
                      , public virtual ::IMetaDataTool
 #endif // XAOD_STANDALONE
 {
-   ASG_TOOL_CLASS0(BookkeeperTool)
+  ASG_TOOL_CLASS0(BookkeeperTool)
 public: // Constructor and Destructor
-   /// Standard Service Constructor
-   BookkeeperTool(const std::string& name = "BookkeeperTool");
-   /// Destructor
-   virtual ~BookkeeperTool();
+  /// Standard Service Constructor
+  BookkeeperTool(const std::string& name = "BookkeeperTool");
+  /// Destructor
+  virtual ~BookkeeperTool() = default;
 
+  /// Standard reimplemented functions
 public:
-   virtual StatusCode metaDataStop() override;
-   virtual StatusCode beginInputFile() override {return StatusCode::SUCCESS;}
-   virtual StatusCode endInputFile() override {return StatusCode::SUCCESS;}
-   virtual StatusCode beginInputFile(const SG::SourceID&) override;
-   virtual StatusCode endInputFile(const SG::SourceID&) override;
-   virtual StatusCode initialize() override;
-   virtual StatusCode finalize() override;
+  virtual StatusCode initialize() override;
+  virtual StatusCode metaDataStop() override;
+  virtual StatusCode beginInputFile() override {return StatusCode::SUCCESS;}
+  virtual StatusCode endInputFile() override {return StatusCode::SUCCESS;}
+  virtual StatusCode beginInputFile(const SG::SourceID &source) override;
+  virtual StatusCode endInputFile(const SG::SourceID &source) override;
 
 private:
-  
-  /// Helper class to update a container with information from another one
-  StatusCode updateContainer( xAOD::CutBookkeeperContainer* contToUpdate,
-                              const xAOD::CutBookkeeperContainer* otherCont );
+  /// Helper in-memory structure
+  struct LocalContainers {
+    std::vector<std::unique_ptr<xAOD::CutBookkeeperContainer>> cont;
+    std::vector<std::unique_ptr<xAOD::CutBookkeeperAuxContainer>> aux;
+
+    bool empty() { return cont.empty(); }
+    std::size_t size() { return cont.size(); }
+    xAOD::CutBookkeeperContainer *at(std::size_t n) { return cont.at(n).get(); }
+    void clear() { cont.clear(); aux.clear(); }
+  };
+
+  /// Copy input containers to the output
+  StatusCode copyInputContainersToOutput(LocalContainers &target,
+                                         const SG::SourceID &source = "");
 
-  StatusCode copyContainerToOutput(const std::string& outname);
+  /// Fill Cutflow information from the service
+  StatusCode copyCutflowFromService();
+
+  /// Prepare containers
+  StatusCode prepareContainers(LocalContainers &target);
 
-  /// Fill Cutflow information
-  StatusCode addCutFlow();
- 
   /// Pointer to the public CutFlowSvc interface
   ServiceHandle<ICutFlowSvc> m_cutFlowSvc{ this, "CutFlowSvc", "CutFlowSvc/CutFlowSvc", "Pointer to the CutFlowSvc"};
   /// Direct pointer to the CutFlowSvc for "private" methods access
   const CutFlowSvc *m_cutFlowSvcPrivate;
 
-  /// The name of the output CutBookkeeperContainer
-  std::string m_outputCollName;
-  
   /// The name of the input CutBookkeeperContainer
-  std::string  m_inputCollName;
+  Gaudi::Property<std::string> m_inputCollName{this, "InputCollName", "CutBookkeepers",
+    "The default name of the xAOD::CutBookkeeperContainer for input files"};
 
-  bool m_cutflowTaken;
-
-};
+  /// The name of the output CutBookkeeperContainer
+  Gaudi::Property<std::string> m_outputCollName{this, "OutputCollName", "CutBookkeepers",
+    "The default name of the xAOD::CutBookkeeperContainer for output files"};
 
-#endif
+  /// Input CutBookkeeperContainers
+  std::unordered_map<SG::SourceID, LocalContainers> m_inputContainers;
 
+  /// Local CutBookkeeperContainers
+  LocalContainers m_completeContainers;
+  LocalContainers m_incompleteContainers;
+};
 
+#endif // BOOKKEEPERTOOL_H
diff --git a/Event/EventBookkeeperTools/src/CutBookkeeperUtils.cxx b/Event/EventBookkeeperTools/src/CutBookkeeperUtils.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..b1ef7692ef35e95bd56da8f534139bd2b93521ad
--- /dev/null
+++ b/Event/EventBookkeeperTools/src/CutBookkeeperUtils.cxx
@@ -0,0 +1,124 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "CutBookkeeperUtils.h"
+
+namespace xAOD::CutBookkeeperUtils
+{
+
+xAOD::CutBookkeeper *resolveLink(const xAOD::CutBookkeeper *old,
+                                 xAOD::CutBookkeeperContainer &contToUpdate,
+                                 const xAOD::CutBookkeeperContainer &otherCont,
+                                 const std::vector<size_t> &otherIndexMap)
+{
+  {
+    xAOD::CutBookkeeperContainer::iterator matchIter = 
+      std::find(contToUpdate.begin(), contToUpdate.end(), old);
+    if (matchIter != contToUpdate.end()) {
+      return *matchIter;
+    }
+  }
+
+  {
+    xAOD::CutBookkeeperContainer::const_iterator matchIter = 
+      std::find(otherCont.begin(), otherCont.end(), old);
+    if (matchIter != contToUpdate.end()) {
+      std::size_t pos = matchIter - otherCont.begin();
+      return contToUpdate[otherIndexMap[pos]];
+    }
+  }
+
+  // If we didn't find it, we need to add it
+  xAOD::CutBookkeeper *newEBK = new xAOD::CutBookkeeper(); // will be owned by the container
+  if (newEBK->usingPrivateStore()) { newEBK->releasePrivateStore(); }
+  newEBK->makePrivateStore(old);
+  contToUpdate.push_back(newEBK);
+  return newEBK;
+}
+
+StatusCode updateContainer(xAOD::CutBookkeeperContainer *contToUpdate,
+                           const xAOD::CutBookkeeperContainer *otherCont) 
+{
+  size_t origSize = contToUpdate->size();
+
+  // Vector of indices in contToUpdate of elements in otherCont.
+  std::vector<std::size_t> otherIndexMap(otherCont->size());
+  // Loop through otherCont.
+  // If element already in contToUpdate, update event counts, otherwise create new element
+  for (std::size_t i = 0; i < otherCont->size(); ++i) {
+    const xAOD::CutBookkeeper *otherEBK = otherCont->at(i);
+
+    // Loop through the container to be updated (contToUpdate) and see if we find a match
+    bool foundEBKToUpdate{false};
+    for (std::size_t j = 0; j < contToUpdate->size(); ++j) {
+      xAOD::CutBookkeeper *ebkToUpdate = contToUpdate->at(j);
+      // Check if they are identical, if so, update; else add otherEBK
+      if (otherEBK->isEqualTo(ebkToUpdate)) {
+        ebkToUpdate->setPayload(ebkToUpdate->payload() + otherEBK->payload());
+        otherIndexMap[i] = j;
+        foundEBKToUpdate = true;
+        break;
+      }
+    } // End: Inner loop over contToUpdate
+    if (!foundEBKToUpdate) {
+      xAOD::CutBookkeeper *newEBK = new xAOD::CutBookkeeper(); // will be owned by the container
+      if (newEBK->usingPrivateStore()) { newEBK->releasePrivateStore(); }
+      newEBK->makePrivateStore(otherEBK);
+      contToUpdate->push_back(newEBK);
+      std::size_t ebIdx = newEBK->index();
+      otherIndexMap[i] = ebIdx;
+    }
+  } // End: Outer loop over contToUpdate
+
+  // Now, we still need to fix the cross-referencing of the newly added CutBookkkeepers
+  for (std::size_t i = origSize; i < contToUpdate->size(); ++i) {
+    xAOD::CutBookkeeper *ebkToModify = contToUpdate->at(i);
+
+    // Parent check
+    if (ebkToModify->hasParent()) {
+      const xAOD::CutBookkeeper *oldParent = ebkToModify->parent();
+      const xAOD::CutBookkeeper *newParent = resolveLink (oldParent,
+                                                          *contToUpdate,
+                                                          *otherCont,
+                                                          otherIndexMap);
+      ebkToModify->setParent (newParent);
+    } // Done fixing parent
+
+    // Children check
+    std::vector<xAOD::CutBookkeeper *> newChildren;
+    for ( std::size_t oldIdx = 0; oldIdx < ebkToModify->nChildren(); ++oldIdx) {
+      const xAOD::CutBookkeeper *oldEBK = ebkToModify->child(oldIdx);
+      newChildren.push_back(resolveLink(oldEBK,
+                                        *contToUpdate,
+                                        *otherCont,
+                                        otherIndexMap));
+    } // Done fixing children
+    ebkToModify->setChildren(newChildren);
+
+    // Used others check
+    std::vector<xAOD::CutBookkeeper *> newOthers;
+    for (std::size_t oldIdx = 0; oldIdx < ebkToModify->nUsedOthers(); ++oldIdx) {
+      const xAOD::CutBookkeeper *oldEBK = ebkToModify->usedOther(oldIdx);
+      newOthers.push_back(resolveLink(oldEBK,
+                                      *contToUpdate,
+                                      *otherCont,
+                                      otherIndexMap));
+    } // Done fixing used others
+    ebkToModify->setUsedOthers(newOthers);
+
+    // Siblings check
+    std::vector<xAOD::CutBookkeeper*> newSiblings;
+    for (std::size_t oldIdx = 0; oldIdx < ebkToModify->nSiblings(); ++oldIdx) {
+      const xAOD::CutBookkeeper *oldEBK = ebkToModify->sibling(oldIdx);
+      newSiblings.push_back(resolveLink(oldEBK,
+                                        *contToUpdate,
+                                        *otherCont,
+                                        otherIndexMap));
+    } // Done fixing siblings
+    ebkToModify->setSiblings(newSiblings);
+  } // Done fixing all cross references
+  return StatusCode::SUCCESS;
+}
+
+} // xAOD::CutBookkeeperUtils
diff --git a/Event/EventBookkeeperTools/src/CutBookkeeperUtils.h b/Event/EventBookkeeperTools/src/CutBookkeeperUtils.h
new file mode 100644
index 0000000000000000000000000000000000000000..beaaef324bf0fd0d7a8ae9b58bce350bc093a2ac
--- /dev/null
+++ b/Event/EventBookkeeperTools/src/CutBookkeeperUtils.h
@@ -0,0 +1,19 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef CUTBOOKKEEPERUTILS_H
+#define CUTBOOKKEEPERUTILS_H
+
+#include <xAODCutFlow/CutBookkeeperContainer.h>
+
+namespace xAOD::CutBookkeeperUtils
+{
+
+  /// @brief Helper function to update a container with information from another one
+  StatusCode updateContainer(xAOD::CutBookkeeperContainer *contToUpdate,
+                             const xAOD::CutBookkeeperContainer *otherCont);
+
+} // xAOD::CutBookkeepersUtils
+
+#endif // CUTBOOKKEEPERUTILS_H
diff --git a/Event/EventContainers/EventContainers/I_InternalIDC.h b/Event/EventContainers/EventContainers/I_InternalIDC.h
index c336d4b964b0e4e5b47e9862b9aff113f065b705..71d7a0f2550d103ec661fa52e21ebe7174ca1398 100644
--- a/Event/EventContainers/EventContainers/I_InternalIDC.h
+++ b/Event/EventContainers/EventContainers/I_InternalIDC.h
@@ -8,7 +8,6 @@
 #include "Identifier/IdentifierHash.h"
 #include "GaudiKernel/StatusCode.h"
 #include <vector>
-#include <utility>
 
 namespace EventContainers{
 class IDC_WriteHandleBase;
@@ -22,9 +21,19 @@ virtualised.
 
 A standard iterator is provided for fast iteration in a sequential order.
 */
+template<typename T>
+struct hashPair{
+   IdentifierHash::value_type first;
+   const T*                second;
+   constexpr hashPair(IdentifierHash::value_type f, const T* s) : first(f), second(s) {  }
+   bool operator <(const hashPair &b) const noexcept{
+      return first < b.first;
+   }
+};
+
 class I_InternalIDC{
 public:
-    typedef std::pair < IdentifierHash::value_type, const void* > hashPair;
+    typedef EventContainers::hashPair<void> hashPair;
     typedef std::vector < hashPair >::const_iterator InternalConstItr;
     #include "EventContainers/deleter.h"
     virtual InternalConstItr cbegin() const=0;
diff --git a/Event/EventContainers/EventContainers/IdentifiableContainerMT.h b/Event/EventContainers/EventContainers/IdentifiableContainerMT.h
index b2fbf7afa34b74fb226159338f4f9fe8a6cbc0e3..35174e751c92bd268998a66c3cc52a03b3bb99a1 100644
--- a/Event/EventContainers/EventContainers/IdentifiableContainerMT.h
+++ b/Event/EventContainers/EventContainers/IdentifiableContainerMT.h
@@ -215,9 +215,10 @@ public:
         return IdentifiableContainerBase::numberOfCollections();
     }
 
-    const std::vector < std::pair<IdentifierHash::value_type, const T*> >& GetAllHashPtrPair() const{
+    const std::vector < EventContainers::hashPair<T> >& GetAllHashPtrPair() const{
         static_assert(sizeof(const T*) == sizeof(const void*) && std::is_pointer<const T*>::value);
-        return reinterpret_cast<const std::vector < std::pair<IdentifierHash::value_type, const T*> >&>
+        static_assert(sizeof(EventContainers::hashPair<T>) == sizeof(EventContainers::hashPair<void>));
+        return reinterpret_cast<const std::vector < EventContainers::hashPair<T> >&>
                 (m_link->getAllHashPtrPair());
     }
     
diff --git a/Event/EventContainers/EventContainers/InternalOffline.h b/Event/EventContainers/EventContainers/InternalOffline.h
index ed8e2d9d28c3dae0a9d0a7adebce2333a4d4e3a5..e9ee8e106d8ab71512f7f901b83ed67e5d8c31a1 100644
--- a/Event/EventContainers/EventContainers/InternalOffline.h
+++ b/Event/EventContainers/EventContainers/InternalOffline.h
@@ -38,7 +38,7 @@ public:
     virtual void* removeCollection( IdentifierHash hashId ) override;
     virtual void destructor(deleter_f*) noexcept override;
 private:
-    std::vector<std::pair<IdentifierHash::value_type, const void*>> m_map;
+    std::vector<I_InternalIDC::hashPair> m_map;
     size_t m_maximumSize;
 };
 
diff --git a/Event/EventContainers/EventContainers/InternalOfflineFast.h b/Event/EventContainers/EventContainers/InternalOfflineFast.h
index a78aae631afce51190e2c474bf67bbc1ff7db85c..16cf509c7300bc9e1ddb5b9425b9f7666b74796e 100644
--- a/Event/EventContainers/EventContainers/InternalOfflineFast.h
+++ b/Event/EventContainers/EventContainers/InternalOfflineFast.h
@@ -39,7 +39,7 @@ public:
     virtual void* removeCollection( IdentifierHash hashId ) override;
     virtual void destructor(deleter_f*) noexcept override;
 private:
-    mutable std::vector<std::pair<IdentifierHash::value_type, const void*>> m_map;
+    mutable std::vector<I_InternalIDC::hashPair> m_map;
     std::vector<const void*> m_fullMap;
     mutable std::mutex m_waitMutex ATLAS_THREAD_SAFE;
     mutable std::atomic<bool> m_needsupdate ATLAS_THREAD_SAFE; //These mutables are carefully thought out, do not change
diff --git a/Event/EventContainers/EventContainers/InternalOfflineMap.h b/Event/EventContainers/EventContainers/InternalOfflineMap.h
index d101cef3f561931d93290193bd5472553472e249..dbd9b57180f08f80783eb6b7a168cd1fb6bb7edc 100644
--- a/Event/EventContainers/EventContainers/InternalOfflineMap.h
+++ b/Event/EventContainers/EventContainers/InternalOfflineMap.h
@@ -40,7 +40,7 @@ public:
     virtual void* removeCollection( IdentifierHash hashId ) override;
     virtual void destructor(deleter_f*) noexcept override;
 private:
-    mutable std::vector<std::pair<IdentifierHash::value_type, const void*>> m_map;
+    mutable std::vector<I_InternalIDC::hashPair> m_map;
     std::unordered_map<IdentifierHash::value_type, const void*> m_fullMap;
     mutable std::mutex m_waitMutex ATLAS_THREAD_SAFE;
     mutable std::atomic<bool> m_needsupdate ATLAS_THREAD_SAFE; //These mutables are carefully thought out, do not change
diff --git a/Event/EventContainers/EventContainers/InternalOnline.h b/Event/EventContainers/EventContainers/InternalOnline.h
index aa90b41816b3bac1d250e42651792e9f91043731..219b902295291b3a52de58d023f5450c2016a3fe 100644
--- a/Event/EventContainers/EventContainers/InternalOnline.h
+++ b/Event/EventContainers/EventContainers/InternalOnline.h
@@ -49,7 +49,7 @@ public:
 private:
     EventContainers::IdentifiableCacheBase *m_cacheLink;
     mutable std::vector< IdentifierHash > m_waitlist ATLAS_THREAD_SAFE;
-    mutable std::vector<std::pair<IdentifierHash::value_type, const void*>> m_map ATLAS_THREAD_SAFE;
+    mutable std::vector<I_InternalIDC::hashPair> m_map ATLAS_THREAD_SAFE;
     mutable std::mutex m_waitMutex ATLAS_THREAD_SAFE;
     mutable std::vector<bool> m_mask ATLAS_THREAD_SAFE;
     mutable std::atomic<bool> m_waitNeeded ATLAS_THREAD_SAFE; //These mutables are carefully thought out, do not change
diff --git a/Event/EventContainers/src/InternalOffline.cxx b/Event/EventContainers/src/InternalOffline.cxx
index 85165e6ff305e3ad6bb196244d85335970d82b25..c3acec4f8764dccf82729716d3069a502347e925 100644
--- a/Event/EventContainers/src/InternalOffline.cxx
+++ b/Event/EventContainers/src/InternalOffline.cxx
@@ -9,7 +9,13 @@
 
 using namespace EventContainers;
 typedef I_InternalIDC::InternalConstItr InternalConstItr;
-InternalOffline::InternalOffline(size_t max) : m_maximumSize(max) {}
+InternalOffline::InternalOffline(size_t max) : m_maximumSize(max) {
+  //Check optimization assumptions
+  static_assert(std::is_trivially_copyable<hashPair>::value);
+  static_assert(std::is_trivially_destructible<hashPair>::value);
+  static_assert(std::is_trivially_copyable<IdentifierHash>::value);
+  static_assert(std::is_trivially_destructible<IdentifierHash>::value);
+}
 
 
 bool InternalOffline::tryAddFromCache(IdentifierHash hash, EventContainers::IDC_WriteHandleBase&) {
diff --git a/Event/EventInfoMgt/src/TagInfoMgr.cxx b/Event/EventInfoMgt/src/TagInfoMgr.cxx
index 78fcae24d6cedc1b4f90ee557b76052f13b6c176..6c45e39c9f2aa1aeb91ac48d0d5e81c93c2305c7 100755
--- a/Event/EventInfoMgt/src/TagInfoMgr.cxx
+++ b/Event/EventInfoMgt/src/TagInfoMgr.cxx
@@ -366,6 +366,7 @@ TagInfoMgr::fillTagInfo(const CondAttrListCollection* tagInfoCond, TagInfo* tagI
 
 }
 
+
 StatusCode
 TagInfoMgr::fillMetaData   (const TagInfo* tagInfo, const CondAttrListCollection* tagInfoCond) 
 {
@@ -393,11 +394,17 @@ TagInfoMgr::fillMetaData   (const TagInfo* tagInfo, const CondAttrListCollection
         runNumber = m_currentRun;
     }
     else if( m_conditionsRun != EventIDBase::UNDEFNUM ) {
-        // For HLT use the conditionsRun retrieved from the first BeginRun incident
+        // Not completely sure of the use-case for the setting of the conditions run number, but
+        // this will be used if the current run number has not been set. RDS 2020/08
         runNumber = m_conditionsRun;
+        ATH_MSG_INFO( "fillMetaData: Using conditions run number: " << m_conditionsRun << " rather then current run number: " << m_currentRun);
     } else {
-        ATH_MSG_ERROR( "fillMetaData:  Could not get event info neither via retrieve nor from the EventSelector");      
-        return (StatusCode::FAILURE);
+       // For simulation, we may be in the initialization phase and
+       // must get the run number from the event selector
+       if (StatusCode::SUCCESS != getRunNumber (runNumber)) {
+           ATH_MSG_ERROR( "fillMetaData:  Could not get event info neither via retrieve nor from the EventSelectror");      
+           return (StatusCode::FAILURE);
+       }
     }
     
     // Copy tags to AttributeList
@@ -470,6 +477,67 @@ TagInfoMgr::fillMetaData   (const TagInfo* tagInfo, const CondAttrListCollection
 }
 
 
+StatusCode          
+TagInfoMgr::getRunNumber (unsigned int& runNumber)
+{
+    // check if EventSelector is being used to override run numbers if
+    // so, we return the runNumber from the properties of the
+    // EventSelector
+
+    // Get run number parameter from the EventSelector 
+    ATH_MSG_DEBUG( "getRunNumber: check if tag is set in jobOpts");
+    // Get name of event selector from the application manager to
+    // make sure we get the one for MC signal events
+    IProperty* propertyServer(0); 
+    StatusCode sc = serviceLocator()->service("ApplicationMgr", propertyServer); 
+    if (sc != StatusCode::SUCCESS ) {
+        ATH_MSG_ERROR( "getRunNumber: Cannot get ApplicationMgr "); 
+        return StatusCode::FAILURE;
+    }
+    StringProperty property("EvtSel", "");
+    sc = propertyServer->getProperty(&property);
+    if (!sc.isSuccess()) {
+        ATH_MSG_ERROR( "getRunNumber: unable to get EvtSel: found " << property.value());
+        return StatusCode::FAILURE;
+    }
+    // Get EventSelector for ApplicationMgr
+    std::string eventSelector = property.value();
+    sc = serviceLocator()->service(eventSelector, propertyServer); 
+    if (sc != StatusCode::SUCCESS ) {
+        ATH_MSG_ERROR( "getRunNumber: Cannot get EventSelector " << eventSelector); 
+        return StatusCode::FAILURE;
+    }
+    BooleanProperty overrideRunNumber = BooleanProperty("OverrideRunNumber", false);
+    sc = propertyServer->getProperty(&overrideRunNumber);
+    if (!sc.isSuccess()) {
+        // Not all EventSelectors have this property, but we should
+        // not get here if the ES is not one for simulation => return failure
+        ATH_MSG_WARNING( "getRunNumber: unable to get OverrideRunNumber property from EventSelector ");
+        return StatusCode::FAILURE;
+    }
+    if (overrideRunNumber.value()) {
+        IntegerProperty runNumberProp = IntegerProperty("RunNumber", 0);
+        sc = propertyServer->getProperty(&runNumberProp);
+        if (!sc.isSuccess()) {
+            ATH_MSG_ERROR( "getRunNumber: unable to get RunNumber from EventSelector: found " 
+                << runNumberProp.value());
+            return StatusCode::FAILURE;
+        }
+        else {
+            runNumber = runNumberProp.value();
+            ATH_MSG_DEBUG( "getRunNumber: Run number:  "
+                  << runNumber << " obtained from "
+                  << eventSelector);
+        }
+    }
+    else {
+        ATH_MSG_ERROR( "getRunNumber: OverrideRunNumber from EventSelector is false ");
+        return StatusCode::FAILURE;
+    }
+    return StatusCode::SUCCESS;
+}
+
+
 
 void 
 TagInfoMgr::handle(const Incident& inc) {
diff --git a/Event/EventInfoMgt/src/TagInfoMgr.h b/Event/EventInfoMgt/src/TagInfoMgr.h
index 17e14a62ebcc45ae2d3fee442a15b0ab92565381..1813e63fc6fb52b3ee7aa55c801c19863e85f363 100755
--- a/Event/EventInfoMgt/src/TagInfoMgr.h
+++ b/Event/EventInfoMgt/src/TagInfoMgr.h
@@ -175,6 +175,7 @@ private:
     TagInfoMgr();
     TagInfoMgr(const TagInfoMgr&);
     TagInfoMgr &operator=(const TagInfoMgr&);
+    StatusCode getRunNumber (unsigned int& runNumber);
   
     ///////////////////////////////////////////////////////////////////
     // Private data:
diff --git a/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/cleanup.sh b/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/cleanup.sh
deleted file mode 100755
index a85b4571ffe8090ba695bdce69c62d38140a6925..0000000000000000000000000000000000000000
--- a/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/cleanup.sh
+++ /dev/null
@@ -1,7 +0,0 @@
- rm -rf output_stream*
- rm lbn_anal_map_stream*
- rm lbnevents_*
- rm runs_lbn_files.txt
- rm log_lbn_anal*
- rm lbn_anal_map.txt
-
diff --git a/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/lbn_anal_map_splitter.py b/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/lbn_anal_map_splitter.py
deleted file mode 100644
index 4aa40c66b1720bbcc657f11bbfa7242993a88555..0000000000000000000000000000000000000000
--- a/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/lbn_anal_map_splitter.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-import sys
-
-#get the list of special run,lbn with more than 1 file
-special_run_lbn = {}
-with open("runs_lbn_files.txt") as f:
-    for line in f:
-        #print line
-        if not line.startswith("root"):
-            print "WARNING: line doesn't start with 'root'"
-            print line
-            continue
-        filenm=line.rstrip()
-        print filenm
-        finfo=filenm.split(".")
-        run=finfo[3]
-	lbi=4 #index of the lbn info
-	while "_lb" not in finfo[lbi] and lbi<20:
-            lbi=lbi+1
-        if lbi>=20:
-	    print finfo[lbi], "doesnt contain _lb"
-	    exit(1)
-        lbn=finfo[lbi].replace("_lb","")
-        print run+"_"+lbn
-        if run+"_"+lbn in special_run_lbn:
-            if filenm in special_run_lbn[run+"_"+lbn]:
-                print filenm, "already in map for ",run,lbn
-            else:
-                special_run_lbn[run+"_"+lbn].append(filenm)
-        else:
-            special_run_lbn[run+"_"+lbn]=[filenm]
-    for key in special_run_lbn.keys():
-        #if len(special_run_lbn[key])>1: print special_run_lbn[key]
-        pass
-    print "done with special_run_lbn"
-
-#do the work
-maxstream = int(sys.argv[1])
-print "maxstream=",maxstream
-for s in range(0,maxstream+1): #50
-    with open("lbn_anal_map_stream"+str(s)+".txt") as f:
-        tot=0
-        nfile=1
-        of=open("output_stream"+str(s)+"/lbn_anal_map_"+str(nfile)+".txt","w")
-        of2=open("output_stream"+str(s)+"/filelist_"+str(nfile)+".txt","w")
-        for line in f:
-            linfo=line.split(" ")
-            #print line
-            #print linfo[16]
-            tot+=int(linfo[16])
-            run=linfo[3].replace(",","").zfill(8)
-            lbn=linfo[5].replace(",","").zfill(4)
-            if tot>100:
-                #replace last bit of line and also write it to the new file
-                extra=tot-100
-                forthisone=int(linfo[16])-extra
-                rline=line.replace(linfo[16]+" wanted",str(forthisone)+" wanted")
-                of.write(rline)
-                if run+"_"+lbn in special_run_lbn:
-                    for f in special_run_lbn[run+"_"+lbn]:
-                        #print of2.tell()
-                        if of2.tell()>0: of2.write(",")
-                        of2.write(f)
-                else:
-                    print run,lbn," not in files map!"
-                #print line, rline
-                #print run, lbn
-
-                of.close(); of2.close(); nfile+=1
-                of=open("output_stream"+str(s)+"/lbn_anal_map_"+str(nfile)+".txt","w")
-                of2=open("output_stream"+str(s)+"/filelist_"+str(nfile)+".txt","w")
-                tot=extra #the number left over from the last set
-            
-                rline=line.replace(linfo[16]+" wanted",str(extra)+" wanted")
-                of.write(rline)
-                if run+"_"+lbn in special_run_lbn:
-                    for f in special_run_lbn[run+"_"+lbn]:
-                        if of2.tell()>0: of2.write(",")
-                        of2.write(f)
-                else:
-                    print run,lbn," not in files map!"
-
-            elif tot==100:
-                of.write(line)
-                if run+"_"+lbn in special_run_lbn:
-                    for f in special_run_lbn[run+"_"+lbn]:
-                        if of2.tell()>0: of2.write(",")
-                        of2.write(f)
-                else:
-                    print run,lbn," not in files map!"            
-
-                of.close(); of2.close(); nfile+=1
-                of=open("output_stream"+str(s)+"/lbn_anal_map_"+str(nfile)+".txt","w")
-                of2=open("output_stream"+str(s)+"/filelist_"+str(nfile)+".txt","w")
-                tot=0
-            else:
-                of.write(line)
-                if run+"_"+lbn in special_run_lbn:
-                    for f in special_run_lbn[run+"_"+lbn]:
-                        #print of2.tell()
-                        if of2.tell()>0: of2.write(",")
-                        of2.write(f)
-                else:
-                    print run,lbn," not in files map!"
-
-        print "done ",s
-        of.close(); of2.close()
-
diff --git a/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/lbn_analyze.C b/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/lbn_analyze.C
deleted file mode 100644
index 6a16bff3c6c8febf0172b3f007fa995a74d9d9eb..0000000000000000000000000000000000000000
--- a/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/lbn_analyze.C
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#include <map>
-#include "TRandom3.h"
-
-class lbn_info{
-public:
- lbn_info(){nevt=0; intlumi=0; nevtwanted=0;}
- int nevt;
- float intlumi;
- int nevtwanted;
-};
-
-class run_info{
-public:
- run_info(){nevt=0; intlumi=0; nevtwanted=0;}
- int nevt;
- float intlumi;
- std::map<int,lbn_info> lbnmap;
- int nevtwanted;
-};
-
-FILE *outfile=fopen("lbn_anal_map.txt","w");
-int debug=1;
-
-std::map< int, int > eventcounts;
-void readeventcounts(int run){
-  eventcounts.clear();
-  char buf[50];
-  sprintf(buf,"lbnevents_%d.txt",run);
-  if (debug) printf("Opening %s, eventcounts size is %lu\n",buf,eventcounts.size());
-  FILE *fp = fopen(buf,"r");
-  if (!fp) printf("Failed to open %s!!!\n",buf);
-  char *line=new char[500];
-  while (fgets(line,480,fp)) {
-     int lbn,ne,nf,runn;
-     float mb;
-     int s=sscanf(&line[0]," ... Run %d, LB %d has %d events, %d RAW files and %f MB",&runn,&lbn,&ne,&nf,&mb);
-     if (s>4){
-       assert(run==runn);
-       if (debug) printf("run %d lbn %d has %d events\n",run,lbn,ne);
-       eventcounts[lbn]=ne;
-     }
-     else {
-       printf("s=%d, bad read?\n",s);
-       assert(false);
-     }
-  }
-  if (debug) printf("Closing %s, eventcounts size is %lu\n",buf,eventcounts.size());
-  fclose(fp); 
-}
-
-void lbn_analyze(int stream, int nwanted)
-{
-   FILE *fp = fopen("lbn","r");
-   if (!fp) printf("Failed to open lbn input file!!!\n");
-   char *line=new char[500];
-   int run,lbn,L1Acc,beforeps,afterps,valid; //L1p,L2p,L3p
-   int liveL1,livebp,liveap;
-   float instlumi,dt,avevtperbx,live,L1p,HLTp,LARp;
-   //float intlumi,intlumitrig;
-   int grun=0;
-   float gtotaltotallumi=0,gtotaltotallumiprescaled=0;
-   float gtotallumi=0, gtotallumiprescaled=0;
-
-   TRandom myrand;
-   myrand.SetSeed(0);
-   printf("- myrand seed is %u\n",myrand.GetSeed());
-   myrand.SetSeed(myrand.Integer(10000000)+stream);
-   printf("- myrand seed is now %u\n",myrand.GetSeed());
-
-   std::map<int,run_info> runmap;
-
-   while (fgets(line,480,fp)) {
-     if (line[0]!='-') continue;
-     
-//   int s=sscanf(&line[0],"--- LumiCalculator      : %d[%d]: L1Acc: %d, Livetime trigger L1Acc: %d, InstLumi: %f, deltaT: %f, AvEvtsPerBX: %f, BeforePrescale: %d, AfterPrescale: %d, Livetime trigger BeforePrescale: %d Livetime trigger AfterPrescale: %d, Livefrac: %f, L1Presc: %d, L2Presc: %d, L3Presc: %d, Valid: %d", &run,&lbn,&L1Acc,&liveL1,&instlumi,&dt,&avevtperbx,&beforeps,&afterps,&livebp,&liveap,&live,&L1p,&L2p,&L3p,&valid);
-     int s=sscanf(&line[0],"--- LumiCalculator      : %d[%d]: L1Acc: %d, Livetime trigger L1Acc: %d, InstLumi: %f, deltaT: %f, AvEvtsPerBX: %f, BeforePrescale: %d, AfterPrescale: %d, Livetime trigger BeforePrescale: %d Livetime trigger AfterPrescale: %d, Livefrac: %f, L1Presc: %f, HLTPresc: %f, Valid: %d, LAr ready fraction: %f", &run,&lbn,&L1Acc,&liveL1,&instlumi,&dt,&avevtperbx,&beforeps,&afterps,&livebp,&liveap,&live,&L1p,&HLTp,&valid,&LARp);
-
-     if (s>8){
-       if (debug) printf("Got %d values : run=%d, lbn=%d, L1Acc=%d, instlumi=%f, L1p=%f, dt=%f, live=%f, afterps=%d \n",s,run,lbn,L1Acc,instlumi,L1p,dt,live,afterps);
-       
-       if (run!=grun){
-	 if (grun>0){//change of run
-	   runmap[grun].intlumi=gtotallumi; printf("Setting lumi for run %d to %f\n",grun,gtotallumi);
-	   if (debug) printf("Adding to totaltotal lumis\n");
-	   gtotaltotallumi+=gtotallumi; gtotaltotallumiprescaled+=gtotallumiprescaled;
-	   gtotallumi=0;gtotallumiprescaled=0;//reset the int lumi calculation for this run
-	   //runmap[grun].nevt=0;
-	 }
-	 grun=run;//save the run number
-	 printf("Setting grun to %d\n",run);
-
-	 //read in event counts from runquery file for run
-	 readeventcounts(run);
- 
-       }//new run
-       
-       if (L1p<0) {
-	 runmap[run].lbnmap[lbn].nevt=0;
-	 if (eventcounts[lbn]!=0) printf("For lbn %d, L1p<0 but eventcounts is %d\n",lbn,eventcounts[lbn]);
-       }
-       else{
-	 int ne = L1Acc;//afterps
-	 if (ne!=eventcounts[lbn]){
-	   if (0==stream) printf("For lbn %d, ne from lumicalc is %d but we will trust runquery value of %d\n",lbn,ne,eventcounts[lbn]);
-	   ne=eventcounts[lbn];
-	 }
-	 if (0==ne){dt=0; printf("For lbn %d, setting lumi to 0 since 0 events were recorded\n",lbn);}
-	 runmap[run].lbnmap[lbn].nevt=ne; 
-	 runmap[run].lbnmap[lbn].intlumi=instlumi*dt*live;
-	 runmap[run].nevt+=ne;
-	 gtotallumiprescaled+= instlumi*dt*live/L1p;
-	 gtotallumi+= instlumi*dt*live;
-       }
-       if (debug) printf("grun=%d, gtotallumi=%f, gtotallumiprescaled=%f\n",grun,gtotallumi,gtotallumiprescaled);
-     }//good line
-   }//loop over lines in file
-   
-   //after last run
-   runmap[grun].intlumi=gtotallumi; printf("Setting lumi for run %d to %f\n",grun,gtotallumi);
-   if (debug) printf("Adding to totaltotal lumis for last run\n");
-   gtotaltotallumi+=gtotallumi; gtotaltotallumiprescaled+=gtotallumiprescaled;
-
-   fclose(fp);
-   printf("- %lu runs, gtotaltotallumi=%f, gtotaltotallumiprescaled=%f\n",runmap.size(),gtotaltotallumi,gtotaltotallumiprescaled);
-
-   if (runmap.size()<1) {printf("- runmap size is %lu, quitting!\n",runmap.size()); return;}
-   //return;
-
-   //check the total lumi...
-   double tempr=0;
-   for (std::map<int,run_info>::const_iterator r=runmap.begin(); r!=runmap.end(); ++r){
-     tempr += r->second.intlumi;
-   }
-   if (fabs(tempr-gtotaltotallumi)/tempr>0.001){
-     printf("tempr=%f and gtotaltotallumi=%f\n",tempr,gtotaltotallumi);
-     assert(false);
-   }
-   
-   for (int e=0;e<nwanted;++e){     
-     
-     //pick a random run, proportional to intlumi
-     double rnd = myrand.Uniform(tempr);
-     run=-1;
-     for (std::map<int,run_info>::const_iterator r=runmap.begin(); r!=runmap.end(); ++r){
-       if (rnd<r->second.intlumi) {run=r->first; break;}
-       rnd -= r->second.intlumi;
-     }
-     assert(run>=0);
-
-     //check the total run lumi...
-     double tempt=0;
-     for (std::map<int,lbn_info>::const_iterator l=runmap[run].lbnmap.begin(); l!=runmap[run].lbnmap.end(); ++l){
-       tempt += l->second.intlumi;
-     }
-     if (fabs(tempt-runmap[run].intlumi)/tempt>0.001){
-       printf("tempt=%f and runmap[%d].intlumi=%f\n",tempt,run,runmap[run].intlumi);
-       assert(false);
-     }
-
-     //pick a random lbn, proportional to intlumi
-     rnd = myrand.Uniform(tempt);
-     lbn=-1;
-     for (std::map<int,lbn_info>::const_iterator l=runmap[run].lbnmap.begin(); l!=runmap[run].lbnmap.end(); ++l){
-       if (rnd<l->second.intlumi) {lbn=l->first; break;}
-       rnd -= l->second.intlumi;
-     }
-     assert(lbn>=0);
-     
-     runmap[run].nevtwanted++; runmap[run].lbnmap[lbn].nevtwanted++;
-     if (debug) printf("- stream %d, run %d, lbn %d, choose %d of out %d\n",stream,run,lbn,runmap[run].lbnmap[lbn].nevtwanted,runmap[run].lbnmap[lbn].nevt);
-
-   }//loop over nwanted
-
-   for (std::map<int,run_info>::const_iterator r=runmap.begin(); r!=runmap.end(); ++r){
-     int totnevt=0; float totintlumi=0;
-     printf("stream %d, run %d, has %d events and %f/ub, %f intlumi of total, and %d wanted\n", stream, 
-        r->first,r->second.nevt,r->second.intlumi,r->second.intlumi/gtotaltotallumi,r->second.nevtwanted);
-     for (std::map<int,lbn_info>::const_iterator l=r->second.lbnmap.begin(); l!=r->second.lbnmap.end(); ++l){
-       fprintf(outfile,"stream %d, run %d, lbn %d, has %d events and %f/ub, %f intlumi of run, and %d wanted", stream, r->first, 
-        l->first,l->second.nevt,l->second.intlumi,l->second.intlumi/r->second.intlumi,l->second.nevtwanted);
-       if (l->second.nevtwanted>l->second.nevt) fprintf(outfile," : WARNING, more than available, will be duplicates!\n"); else fprintf(outfile,"\n");
-       totnevt+=l->second.nevt; totintlumi+=l->second.intlumi;
-     }
-     if (totnevt!=r->second.nevt) printf("  XXX events do not agree !!! \n");
-     if (totintlumi>0.0 && fabs(totintlumi - r->second.intlumi)/totintlumi>.001) printf("  XXX intlumi does not agree !!! %f %f \n",totintlumi,r->second.intlumi);
-
-   } 
-   printf("--\n\n");
-}
-
diff --git a/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/query.sh b/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/query.sh
deleted file mode 100755
index f59b17565f64db0b838eeb77955eb036f3df72d0..0000000000000000000000000000000000000000
--- a/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/query.sh
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/bin/bash
-
-#setupATLAS
-#lsetup rucio
-#voms-proxy-init -voms atlas
-
-#use GRL, from: http://atlasdqm.web.cern.ch/atlasdqm/grlgen/All_Good/?C=M;O=D
-#consult: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/GoodRunListsForAnalysisRun2
-#and: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DataMCForAnalysis
-
-#dq="data15_13TeV.periodAllYear_DetStatus-v73-pro19-08_DQDefects-00-01-02_PHYS_StandardGRL_All_Good.xml"
-#wget -nc http://atlasdqm.web.cern.ch/atlasdqm/grlgen/All_Good/$dq
-
-#Can just go here: https://atlas-lumicalc.cern.ch/  ... note use --online lumi tag for HI, unless a better one is available
-#and request --verbose output and use physics trigger HLT_noalg_zb_L1ZB, 
-#then wget "Raw iLimuiCalc.exe output", and "mv output.txt lbn_2015; ln -s lbn_2015 lbn"
-#rm -f lbn # if you want to redo this
-if [ ! -f "lbn" ]; then 
-iLumiCalc.exe -t L1_ZB -V -x $dq --livetrigger=L1_EM12 > lbn
-fi
-grep ": Total" lbn ; echo
-
-#get info on number of events and files per lumi block in each run
-#rm -f lbnevents* # if you want to redo this
-#rm -f runs_lbn_files.txt # if you want to redo this
-#sstream="physics_ZeroBias" #pp or UPC
-sstream="physics_MinBiasOverlay" #HI
-#suf="merge"
-suf="daq"
-rm -f runs_temp.txt
-for runn in `grep "subchild node value" lbn|cut -f 3 -d : |sed 's/[\x01-\x1F\x7F]//g'|sed 's%\[0m%%g'|sed 's%\[34m%%g'|sed ':a;N;$!ba;s/\n/ /g' `; do
- if [ ! -f lbnevents_${runn}.txt ]; then 
-   echo "Getting Nevent info for run $runn "; 
-   python GetNEventsLB.py -r $runn -s $sstream |grep "... Run" > lbnevents_${runn}.txt;# Only works on lxplus now!
- fi 
- if [ ! -f runs_lbn_files.txt ]; then 
-   echo "Getting file info for run $runn "
-   rucio list-file-replicas data16_hip8TeV.00${runn}.${sstream}.${suf}.RAW | grep "CERN-PROD_TZDISK" | cut -d '|' -f 6|sed "s% CERN-PROD_TZDISK: gsiftp://eosatlassftp.cern.ch:2811/%root://eosatlas.cern.ch//%" | sed -r 's/\s+//g' | grep "_lb" > runs_temp_temp.txt
-   cat runs_temp_temp.txt >> runs_temp.txt
-   echo -n "Replicated? : "; rucio list-dataset-replicas data16_hip8TeV.00${runn}.${sstream}.${suf}.RAW|grep CERN-PROD_TZDISK
-   nfound=`grep -c data runs_temp_temp.txt`
-   echo "Found $nfound files on TZDISK"
-   if [ $nfound -eq 0 ]; then #look also on DATADISK if not found on TZDISK
-     echo "Getting file info for run $runn "
-     rucio list-file-replicas data16_hip8TeV.00${runn}.${sstream}.${suf}.RAW | grep "CERN-PROD_DATADISK" | cut -d '|' -f 6|sed "s% CERN-PROD_DATADISK: gsiftp://eosatlassftp.cern.ch:2811/%root://eosatlas.cern.ch//%" | sed -r 's/\s+//g' | grep "_lb" > runs_temp_temp.txt
-     cat runs_temp_temp.txt >> runs_temp.txt
-     echo -n "Replicated? : "; rucio list-dataset-replicas data16_hip8TeV.00${runn}.${sstream}.${suf}.RAW|grep CERN-PROD_DATADISK
-     nfound=`grep -c data runs_temp_temp.txt`
-     echo "Found $nfound files on DATADISK"
-   fi
- fi
-done #loop over all runs
-rm runs_temp_temp.txt
-if [ ! -f runs_lbn_files.txt ]; then mv runs_temp.txt runs_lbn_files.txt ; fi
-
-#rm -f lbn_anal_map.txt # if you want to redo this
-if [ ! -f lbn_anal_map.txt ]; then root -l -b -q run_lbn_analyze.C > log_lbn_analyze.txt ; fi
-
-echo -n "Total events in dataset before GRL: "
-cat lbnevents_*.txt |tr -s ' ' | cut -d ' ' -f 8 |awk '{total = total + $1}END{print total}'
-echo -n "Total events in dataset from log_lbn_analyze.txt: "
-grep "stream 0" log_lbn_analyze.txt|cut -d ' ' -f 6 |awk '{total = total + $1}END{print total}'
-echo -n "Total events in dataset from lbn_anal_map: "
-grep "stream 1," lbn_anal_map.txt |cut -d ' ' -f 8 |awk '{total = total + $1}END{print total}'
-echo -n "Selected events per stream: "
-grep "stream 8," lbn_anal_map.txt |cut -d ' ' -f 17 |awk '{total = total + $1}END{print total}'
-
-maxstream=19 #0 up to 49 - 19 does 1M events
-#split into all the desired streams
-for s in $(seq 0 $maxstream); do 
-  grep "stream ${s}," lbn_anal_map.txt | grep -v "and 0 wanted" > lbn_anal_map_stream${s}.txt
-  mkdir -p output_stream${s}
-done
-
-#split into jobs for each stream and make filelist and lbn_anal_map files
-rm -f output_stream*/filelist_*.txt output_stream*/lbn_anal_map_*.txt
-python lbn_anal_map_splitter.py $maxstream > log_lbn_anal_map_splitter.txt
-rm output_stream*/*501.txt
-grep "doesnt contain" log_lbn_anal_map_splitter.txt
-if [ $? == 0 ]; then exit; fi
-grep -c "not in files map" log_lbn_anal_map_splitter.txt
-#if [ $? == 0 ]; then exit; fi
-echo "$? files not found in map..."
-
-for s in $(seq 1 $maxstream); do
- echo "renaming stream $s to 0"
- for f in {1..500}; do sed -i -e "s%stream $s,%stream 0,%g" output_stream${s}/lbn_anal_map_${f}.txt; done
-done
-
-it=2016_hip8TeV_1 #just a name to tag this set of files
-for s in $(seq 0 $maxstream); do cd output_stream${s}; tar cfz stream${s}_${it}.tar.gz *.txt; cd ..; done
-mv -v output_stream*/stream*_${it}.tar.gz ~/public/overlay/lists/
-
-#to check the events in each map:
-for s in $(seq 0 $maxstream); do
- echo -n "files with 100 events in stream $s :"
- for f in {1..500}; do cat output_stream${s}/lbn_anal_map_$f.txt | cut -d ' ' -f 17 |awk '{total = total + $1}END{print total}'; done |grep -c 100
-done
-
-#to show number of files in each filelist:
-echo ; echo "files in each filelist (in stream 0)..." ; for f in output_stream0/filelist_*.txt; do echo -n `grep -o $sstream $f | wc -l`; echo " : $f"; done |sort -n
-
diff --git a/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/run_lbn_analyze.C b/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/run_lbn_analyze.C
deleted file mode 100644
index 608315cc64c89f9c3602d1a666b4c06affb3bd77..0000000000000000000000000000000000000000
--- a/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/run_lbn_analyze.C
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-{
- gROOT->ProcessLine(".L lbn_analyze.C+");
-
- for (int i=0; i<50; ++i){//number of zerobias streams to make
-   //gSystem->Sleep(2000);//to get new random number seed
-   lbn_analyze(i,50000);//number of events per zerobias stream
- }
-
-}
-
diff --git a/Event/xAOD/xAODEventInfoAthenaPool/share/AOD-20.0.0.3-full.pool.root.ref b/Event/xAOD/xAODEventInfoAthenaPool/share/AOD-20.0.0.3-full.pool.root.ref
new file mode 100644
index 0000000000000000000000000000000000000000..dacd4675bbdad4f8decacea4f56789c6865463da
--- /dev/null
+++ b/Event/xAOD/xAODEventInfoAthenaPool/share/AOD-20.0.0.3-full.pool.root.ref
@@ -0,0 +1,500 @@
+Event index 0
+--> EventInfo
+xAOD::EventInfo_v1 
+     actualInteractionsPerCrossing:  30.0 
+     averageInteractionsPerCrossing:  30.0 
+     backgroundFlags:  16554 
+     bcid:  43 
+     beamPosSigmaX:  0.0 
+     beamPosSigmaXY:  -0.0 
+     beamPosSigmaY:  0.0 
+     beamPosSigmaZ:  56.4 
+     beamPosX:  -0.0 
+     beamPosY:  1.1 
+     beamPosZ:  -6.1 
+     beamStatus:  0 
+     beamTiltXZ:  -0.0 
+     beamTiltYZ:  -0.0 
+     coreFlags:  0 
+     detDescrTags:  [] 
+     detectorMask0:  0 
+     detectorMask1:  0 
+     detectorMask2:  0 
+     detectorMask3:  0 
+     eventNumber:  35002 
+     eventTypeBitmask:  1 
+     extendedLevel1ID:  0 
+     forwardDetFlags:  0 
+     larFlags:  0 
+     level1TriggerType:  0 
+     lumiBlock:  116 
+     lumiFlags:  0 
+     mcChannelNumber:  105200 
+     mcEventNumber:  35002 
+     mcEventWeights:  [1.0] 
+     muonFlags:  0 
+     pixelFlags:  0 
+     runNumber:  189751 
+     sctFlags:  0 
+     statusElement:  0 
+     streamTagDets:  [] 
+     streamTagNames:  [] 
+     streamTagObeysLumiblock:  [] 
+     streamTagRobs:  [] 
+     streamTagTypes:  [] 
+     tileFlags:  65551 
+     timeStamp:  1316868299 
+     timeStampNSOffset:  0 
+     trtFlags:  0 
+     
+
+Event index 1
+--> EventInfo
+xAOD::EventInfo_v1 
+     actualInteractionsPerCrossing:  30.0 
+     averageInteractionsPerCrossing:  30.0 
+     backgroundFlags:  168 
+     bcid:  219 
+     beamPosSigmaX:  0.0 
+     beamPosSigmaXY:  -0.0 
+     beamPosSigmaY:  0.0 
+     beamPosSigmaZ:  56.4 
+     beamPosX:  -0.0 
+     beamPosY:  1.1 
+     beamPosZ:  -6.1 
+     beamStatus:  0 
+     beamTiltXZ:  -0.0 
+     beamTiltYZ:  -0.0 
+     coreFlags:  0 
+     detDescrTags:  [] 
+     detectorMask0:  0 
+     detectorMask1:  0 
+     detectorMask2:  0 
+     detectorMask3:  0 
+     eventNumber:  35003 
+     eventTypeBitmask:  1 
+     extendedLevel1ID:  0 
+     forwardDetFlags:  0 
+     larFlags:  0 
+     level1TriggerType:  0 
+     lumiBlock:  116 
+     lumiFlags:  0 
+     mcChannelNumber:  105200 
+     mcEventNumber:  35003 
+     mcEventWeights:  [-1.0] 
+     muonFlags:  0 
+     pixelFlags:  0 
+     runNumber:  189751 
+     sctFlags:  0 
+     statusElement:  0 
+     streamTagDets:  [] 
+     streamTagNames:  [] 
+     streamTagObeysLumiblock:  [] 
+     streamTagRobs:  [] 
+     streamTagTypes:  [] 
+     tileFlags:  65551 
+     timeStamp:  1316868299 
+     timeStampNSOffset:  0 
+     trtFlags:  0 
+     
+
+Event index 2
+--> EventInfo
+xAOD::EventInfo_v1 
+     actualInteractionsPerCrossing:  30.0 
+     averageInteractionsPerCrossing:  30.0 
+     backgroundFlags:  16549 
+     bcid:  33 
+     beamPosSigmaX:  0.0 
+     beamPosSigmaXY:  -0.0 
+     beamPosSigmaY:  0.0 
+     beamPosSigmaZ:  56.4 
+     beamPosX:  -0.0 
+     beamPosY:  1.1 
+     beamPosZ:  -6.1 
+     beamStatus:  0 
+     beamTiltXZ:  -0.0 
+     beamTiltYZ:  -0.0 
+     coreFlags:  0 
+     detDescrTags:  [] 
+     detectorMask0:  0 
+     detectorMask1:  0 
+     detectorMask2:  0 
+     detectorMask3:  0 
+     eventNumber:  35004 
+     eventTypeBitmask:  1 
+     extendedLevel1ID:  0 
+     forwardDetFlags:  0 
+     larFlags:  0 
+     level1TriggerType:  0 
+     lumiBlock:  116 
+     lumiFlags:  32767 
+     mcChannelNumber:  105200 
+     mcEventNumber:  35004 
+     mcEventWeights:  [1.0] 
+     muonFlags:  0 
+     pixelFlags:  0 
+     runNumber:  189751 
+     sctFlags:  0 
+     statusElement:  0 
+     streamTagDets:  [] 
+     streamTagNames:  [] 
+     streamTagObeysLumiblock:  [] 
+     streamTagRobs:  [] 
+     streamTagTypes:  [] 
+     tileFlags:  65551 
+     timeStamp:  1316868299 
+     timeStampNSOffset:  0 
+     trtFlags:  0 
+     
+
+Event index 3
+--> EventInfo
+xAOD::EventInfo_v1 
+     actualInteractionsPerCrossing:  30.0 
+     averageInteractionsPerCrossing:  30.0 
+     backgroundFlags:  16552 
+     bcid:  217 
+     beamPosSigmaX:  0.0 
+     beamPosSigmaXY:  -0.0 
+     beamPosSigmaY:  0.0 
+     beamPosSigmaZ:  56.4 
+     beamPosX:  -0.0 
+     beamPosY:  1.1 
+     beamPosZ:  -6.1 
+     beamStatus:  0 
+     beamTiltXZ:  -0.0 
+     beamTiltYZ:  -0.0 
+     coreFlags:  0 
+     detDescrTags:  [] 
+     detectorMask0:  0 
+     detectorMask1:  0 
+     detectorMask2:  0 
+     detectorMask3:  0 
+     eventNumber:  35005 
+     eventTypeBitmask:  1 
+     extendedLevel1ID:  0 
+     forwardDetFlags:  0 
+     larFlags:  0 
+     level1TriggerType:  0 
+     lumiBlock:  116 
+     lumiFlags:  32767 
+     mcChannelNumber:  105200 
+     mcEventNumber:  35005 
+     mcEventWeights:  [1.0] 
+     muonFlags:  0 
+     pixelFlags:  0 
+     runNumber:  189751 
+     sctFlags:  0 
+     statusElement:  0 
+     streamTagDets:  [] 
+     streamTagNames:  [] 
+     streamTagObeysLumiblock:  [] 
+     streamTagRobs:  [] 
+     streamTagTypes:  [] 
+     tileFlags:  65551 
+     timeStamp:  1316868299 
+     timeStampNSOffset:  0 
+     trtFlags:  0 
+     
+
+Event index 4
+--> EventInfo
+xAOD::EventInfo_v1 
+     actualInteractionsPerCrossing:  30.0 
+     averageInteractionsPerCrossing:  30.0 
+     backgroundFlags:  16554 
+     bcid:  304 
+     beamPosSigmaX:  0.0 
+     beamPosSigmaXY:  -0.0 
+     beamPosSigmaY:  0.0 
+     beamPosSigmaZ:  56.4 
+     beamPosX:  -0.0 
+     beamPosY:  1.1 
+     beamPosZ:  -6.1 
+     beamStatus:  0 
+     beamTiltXZ:  -0.0 
+     beamTiltYZ:  -0.0 
+     coreFlags:  0 
+     detDescrTags:  [] 
+     detectorMask0:  0 
+     detectorMask1:  0 
+     detectorMask2:  0 
+     detectorMask3:  0 
+     eventNumber:  35006 
+     eventTypeBitmask:  1 
+     extendedLevel1ID:  0 
+     forwardDetFlags:  0 
+     larFlags:  0 
+     level1TriggerType:  0 
+     lumiBlock:  116 
+     lumiFlags:  32767 
+     mcChannelNumber:  105200 
+     mcEventNumber:  35006 
+     mcEventWeights:  [1.0] 
+     muonFlags:  0 
+     pixelFlags:  0 
+     runNumber:  189751 
+     sctFlags:  0 
+     statusElement:  0 
+     streamTagDets:  [] 
+     streamTagNames:  [] 
+     streamTagObeysLumiblock:  [] 
+     streamTagRobs:  [] 
+     streamTagTypes:  [] 
+     tileFlags:  65551 
+     timeStamp:  1316868299 
+     timeStampNSOffset:  0 
+     trtFlags:  0 
+     
+
+Event index 5
+--> EventInfo
+xAOD::EventInfo_v1 
+     actualInteractionsPerCrossing:  30.0 
+     averageInteractionsPerCrossing:  30.0 
+     backgroundFlags:  16552 
+     bcid:  246 
+     beamPosSigmaX:  0.0 
+     beamPosSigmaXY:  -0.0 
+     beamPosSigmaY:  0.0 
+     beamPosSigmaZ:  56.4 
+     beamPosX:  -0.0 
+     beamPosY:  1.1 
+     beamPosZ:  -6.1 
+     beamStatus:  0 
+     beamTiltXZ:  -0.0 
+     beamTiltYZ:  -0.0 
+     coreFlags:  0 
+     detDescrTags:  [] 
+     detectorMask0:  0 
+     detectorMask1:  0 
+     detectorMask2:  0 
+     detectorMask3:  0 
+     eventNumber:  35007 
+     eventTypeBitmask:  1 
+     extendedLevel1ID:  0 
+     forwardDetFlags:  0 
+     larFlags:  0 
+     level1TriggerType:  0 
+     lumiBlock:  116 
+     lumiFlags:  32767 
+     mcChannelNumber:  105200 
+     mcEventNumber:  35007 
+     mcEventWeights:  [1.0] 
+     muonFlags:  0 
+     pixelFlags:  0 
+     runNumber:  189751 
+     sctFlags:  0 
+     statusElement:  0 
+     streamTagDets:  [] 
+     streamTagNames:  [] 
+     streamTagObeysLumiblock:  [] 
+     streamTagRobs:  [] 
+     streamTagTypes:  [] 
+     tileFlags:  65551 
+     timeStamp:  1316868299 
+     timeStampNSOffset:  0 
+     trtFlags:  0 
+     
+
+Event index 6
+--> EventInfo
+xAOD::EventInfo_v1 
+     actualInteractionsPerCrossing:  30.0 
+     averageInteractionsPerCrossing:  30.0 
+     backgroundFlags:  147625 
+     bcid:  15 
+     beamPosSigmaX:  0.0 
+     beamPosSigmaXY:  -0.0 
+     beamPosSigmaY:  0.0 
+     beamPosSigmaZ:  56.4 
+     beamPosX:  -0.0 
+     beamPosY:  1.1 
+     beamPosZ:  -6.1 
+     beamStatus:  0 
+     beamTiltXZ:  -0.0 
+     beamTiltYZ:  -0.0 
+     coreFlags:  0 
+     detDescrTags:  [] 
+     detectorMask0:  0 
+     detectorMask1:  0 
+     detectorMask2:  0 
+     detectorMask3:  0 
+     eventNumber:  35008 
+     eventTypeBitmask:  1 
+     extendedLevel1ID:  0 
+     forwardDetFlags:  0 
+     larFlags:  0 
+     level1TriggerType:  0 
+     lumiBlock:  116 
+     lumiFlags:  32767 
+     mcChannelNumber:  105200 
+     mcEventNumber:  35008 
+     mcEventWeights:  [1.0] 
+     muonFlags:  0 
+     pixelFlags:  0 
+     runNumber:  189751 
+     sctFlags:  0 
+     statusElement:  0 
+     streamTagDets:  [] 
+     streamTagNames:  [] 
+     streamTagObeysLumiblock:  [] 
+     streamTagRobs:  [] 
+     streamTagTypes:  [] 
+     tileFlags:  65551 
+     timeStamp:  1316868299 
+     timeStampNSOffset:  0 
+     trtFlags:  0 
+     
+
+Event index 7
+--> EventInfo
+xAOD::EventInfo_v1 
+     actualInteractionsPerCrossing:  30.0 
+     averageInteractionsPerCrossing:  30.0 
+     backgroundFlags:  147625 
+     bcid:  217 
+     beamPosSigmaX:  0.0 
+     beamPosSigmaXY:  -0.0 
+     beamPosSigmaY:  0.0 
+     beamPosSigmaZ:  56.4 
+     beamPosX:  -0.0 
+     beamPosY:  1.1 
+     beamPosZ:  -6.1 
+     beamStatus:  0 
+     beamTiltXZ:  -0.0 
+     beamTiltYZ:  -0.0 
+     coreFlags:  0 
+     detDescrTags:  [] 
+     detectorMask0:  0 
+     detectorMask1:  0 
+     detectorMask2:  0 
+     detectorMask3:  0 
+     eventNumber:  35009 
+     eventTypeBitmask:  1 
+     extendedLevel1ID:  0 
+     forwardDetFlags:  0 
+     larFlags:  0 
+     level1TriggerType:  0 
+     lumiBlock:  116 
+     lumiFlags:  0 
+     mcChannelNumber:  105200 
+     mcEventNumber:  35009 
+     mcEventWeights:  [1.0] 
+     muonFlags:  0 
+     pixelFlags:  0 
+     runNumber:  189751 
+     sctFlags:  0 
+     statusElement:  0 
+     streamTagDets:  [] 
+     streamTagNames:  [] 
+     streamTagObeysLumiblock:  [] 
+     streamTagRobs:  [] 
+     streamTagTypes:  [] 
+     tileFlags:  65551 
+     timeStamp:  1316868299 
+     timeStampNSOffset:  0 
+     trtFlags:  0 
+     
+
+Event index 8
+--> EventInfo
+xAOD::EventInfo_v1 
+     actualInteractionsPerCrossing:  30.0 
+     averageInteractionsPerCrossing:  30.0 
+     backgroundFlags:  16553 
+     bcid:  167 
+     beamPosSigmaX:  0.0 
+     beamPosSigmaXY:  -0.0 
+     beamPosSigmaY:  0.0 
+     beamPosSigmaZ:  56.4 
+     beamPosX:  -0.0 
+     beamPosY:  1.1 
+     beamPosZ:  -6.1 
+     beamStatus:  0 
+     beamTiltXZ:  -0.0 
+     beamTiltYZ:  -0.0 
+     coreFlags:  0 
+     detDescrTags:  [] 
+     detectorMask0:  0 
+     detectorMask1:  0 
+     detectorMask2:  0 
+     detectorMask3:  0 
+     eventNumber:  35010 
+     eventTypeBitmask:  1 
+     extendedLevel1ID:  0 
+     forwardDetFlags:  0 
+     larFlags:  0 
+     level1TriggerType:  0 
+     lumiBlock:  116 
+     lumiFlags:  32767 
+     mcChannelNumber:  105200 
+     mcEventNumber:  35010 
+     mcEventWeights:  [1.0] 
+     muonFlags:  0 
+     pixelFlags:  0 
+     runNumber:  189751 
+     sctFlags:  0 
+     statusElement:  0 
+     streamTagDets:  [] 
+     streamTagNames:  [] 
+     streamTagObeysLumiblock:  [] 
+     streamTagRobs:  [] 
+     streamTagTypes:  [] 
+     tileFlags:  65551 
+     timeStamp:  1316868299 
+     timeStampNSOffset:  0 
+     trtFlags:  0 
+     
+
+Event index 9
+--> EventInfo
+xAOD::EventInfo_v1 
+     actualInteractionsPerCrossing:  30.0 
+     averageInteractionsPerCrossing:  30.0 
+     backgroundFlags:  16554 
+     bcid:  150 
+     beamPosSigmaX:  0.0 
+     beamPosSigmaXY:  -0.0 
+     beamPosSigmaY:  0.0 
+     beamPosSigmaZ:  56.4 
+     beamPosX:  -0.0 
+     beamPosY:  1.1 
+     beamPosZ:  -6.1 
+     beamStatus:  0 
+     beamTiltXZ:  -0.0 
+     beamTiltYZ:  -0.0 
+     coreFlags:  0 
+     detDescrTags:  [] 
+     detectorMask0:  0 
+     detectorMask1:  0 
+     detectorMask2:  0 
+     detectorMask3:  0 
+     eventNumber:  35011 
+     eventTypeBitmask:  1 
+     extendedLevel1ID:  0 
+     forwardDetFlags:  0 
+     larFlags:  0 
+     level1TriggerType:  0 
+     lumiBlock:  116 
+     lumiFlags:  32767 
+     mcChannelNumber:  105200 
+     mcEventNumber:  35011 
+     mcEventWeights:  [1.0] 
+     muonFlags:  0 
+     pixelFlags:  0 
+     runNumber:  189751 
+     sctFlags:  0 
+     statusElement:  0 
+     streamTagDets:  [] 
+     streamTagNames:  [] 
+     streamTagObeysLumiblock:  [] 
+     streamTagRobs:  [] 
+     streamTagTypes:  [] 
+     tileFlags:  65551 
+     timeStamp:  1316868299 
+     timeStampNSOffset:  0 
+     trtFlags:  0 
+     
+
diff --git a/Event/xAOD/xAODEventInfoAthenaPool/share/xAODEventInfoAthenaPool_20.0.0.3.ref b/Event/xAOD/xAODEventInfoAthenaPool/share/xAODEventInfoAthenaPool_20.0.0.3.ref
index cdc9f7ebdaf745c9ac76f01155c64a8eaa03d9ac..697ff3d25a2bd1eed381c4c380d4b6cab43710fb 100644
--- a/Event/xAOD/xAODEventInfoAthenaPool/share/xAODEventInfoAthenaPool_20.0.0.3.ref
+++ b/Event/xAOD/xAODEventInfoAthenaPool/share/xAODEventInfoAthenaPool_20.0.0.3.ref
@@ -1,84 +1,87 @@
-Thu Jan 30 12:26:06 CET 2020
-Preloading tcmalloc_minimal.so
+Fri Aug 14 17:09:27 EDT 2020
 Py:Athena            INFO including file "AthenaCommon/Preparation.py"
-Py:Athena            INFO using release [WorkDir-22.0.9] [x86_64-centos7-gcc8-opt] [xAODEventInfoEvolution-master-20200128/240ecd7] -- built on [2020-01-30T1225]
+Py:Athena            INFO using release [?-22.0.0] [?] [?/?] -- built on [?]
 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 "xAODEventInfoAthenaPool/xAODEventInfoAthenaPool_20.0.0.3_test.py"
 Py:Athena            INFO including file "AthenaPoolUtilities/TPCnvTest.py"
-Py:ConfigurableDb    INFO Read module info for 5610 configurables from 4 genConfDb files
+Py:ConfigurableDb    INFO Read module info for 907 configurables from 2 genConfDb files
 Py:ConfigurableDb    INFO No duplicates have been found: that's good !
-Warning in <TInterpreter::ReadRootmapFile>: class  CP::IMuonCalibrationAndSmearingTool found in libMuonMomentumCorrectionsDict.so  is already in libMuonAnalysisInterfacesDict.so 
-Warning in <TInterpreter::ReadRootmapFile>: class  CP::IMuonSelectionTool found in libMuonSelectorToolsDict.so  is already in libMuonAnalysisInterfacesDict.so 
 Py:Athena            INFO Importing MuonRecExample.MuonRecUtils
 Py:Athena            INFO Importing MuonCnvExample.MuonCnvUtils
-EventInfoMgtInit: Got release version  Athena-22.0.9
+EventInfoMgtInit: Got release version  sss-22.0.0
 Py:IOVDbSvc.CondDB    INFO Setting up conditions DB access to instance OFLP200
 Py:MuonAlign         INFO Running a reconstruction job on geant4 or a digitization job: UseAlines='none' UseBlines='none' UseIlines=False UseAsBuilt=False
 Py:MuonAlign         INFO Running a reconstruction job on geant4 or a digitization job: UseAlines='none' UseBlines='none' UseIlines=False UseAsBuilt=False
 Py:MuonRec           INFO Reading alignment constants from DB
 Py:Athena            INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py"
-Py:ConfiguredFactory    INFO imported 136 confDb modules in 0.53 seconds
+Py:ConfiguredFactory    INFO imported 15 confDb modules in 0.01 seconds
 Py:Athena            INFO SetGeometryVersion.py obtained major release version 22
 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
+# setting LC_ALL to "C"
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on eec2226d49c4 on Thu Jan 30 12:26:44 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99)
+                                          running on karma on Fri Aug 14 17:10:02 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Application Manager Configured successfully
-ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
-StatusCodeSvc        INFO initialize
 JobIDSvc             INFO Initializing JobIDSvc - package version AthenaServices-00-00-00
 AthDictLoaderSvc     INFO in initialize...
 AthDictLoaderSvc     INFO acquired Dso-registry
-ClassIDSvc           INFO  getRegistryEntries: read 7486 CLIDRegistry entries for module ALL
-CoreDumpSvc          INFO install f-a-t-a-l handler... (flag = -1)
+ClassIDSvc           INFO  getRegistryEntries: read 9574 CLIDRegistry entries for module ALL
 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-ai.cern.ch:8000/atlr)(serverurl=http://frontier-atlas.lcg.triumf.ca:3128/ATLAS_frontier)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(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/2020-01-27T2131/Athena/22.0.9/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config
+DBReplicaSvc         INFO Read replica configuration from /home/sss/atlas/dvtest/build/share/dbreplica.config
 DBReplicaSvc         INFO No specific match for domain found - use default fallback
-DBReplicaSvc         INFO Total of 2 servers found for host eec2226d49c4 [ATLF atlas_dd ]
+DBReplicaSvc         INFO Total of 1 servers found for host karma [atlas_dd ]
 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 Resolved path (via DATAPATH) is /home/sss/atlas/DBRelease/current/poolcond/PoolCat_oflcond.xml
+PoolSvc              INFO Resolved path (via DATAPATH) is /home/sss/atlas/DBRelease/current/poolcond/PoolCat_oflcond.xml
+PoolSvc              INFO Resolved path (via ATLAS_POOLCOND_PATH) is /home/sss/atlas/DBRelease/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] 
 MetaDataSvc          INFO Found MetaDataTools = PublicToolHandleArray(['IOVDbMetaDataTool'])
 EventSelector        INFO EventSelection with query 
 PoolSvc              INFO File is not in Catalog! Attempt to open it anyway.
+Warning in <TClass::Init>: no dictionary for class TileMuContainer_p1 is available
+Warning in <TClass::Init>: no dictionary for class egammaContainer_p5 is available
+Warning in <TClass::Init>: no dictionary for class TauJetContainer_p5 is available
+Warning in <TClass::Init>: no dictionary for class LArNoisyROSummary_p3 is available
+Warning in <TClass::Init>: no dictionary for class RawInfoSummaryForTag_p1 is available
+Warning in <TClass::Init>: no dictionary for class TauDetailsContainer_tlp4 is available
+Warning in <TClass::Init>: no dictionary for class JetCollection_tlp6 is available
 Warning in <TClass::Init>: no dictionary for class CosmicMuonCollection_tlp1 is available
 Warning in <TClass::Init>: no dictionary for class MdtTrackSegmentCollection_p2 is available
+Warning in <TClass::Init>: no dictionary for class MuonCaloEnergyContainer_p1 is available
+Warning in <TClass::Init>: no dictionary for class TileMu_p1 is available
+Warning in <TClass::Init>: no dictionary for class TauDetailsContainer_p1 is available
+Warning in <TClass::Init>: no dictionary for class JetCollection_p6 is available
 Warning in <TClass::Init>: no dictionary for class CosmicMuonCollection_p1 is available
 DbSession            INFO     Open     DbSession    
-Domain[ROOT_All]     INFO ->  Access   DbDatabase   READ      [ROOT_All] 2E8B319A-926C-EAC6-1E34-21E75E56342A
-Domain[ROOT_All]     INFO                           /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/aod/AOD-20.0.0.3/AOD-20.0.0.3-full.pool.root
-RootDatabase.open    INFO /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/aod/AOD-20.0.0.3/AOD-20.0.0.3-full.pool.root File version:53424
-/cvmfs/atlas-ni...   INFO Database being retired...
-Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] 2E8B319A-926C-EAC6-1E34-21E75E56342A
+Domain[ROOT_All]     INFO ->  Access   DbDatabase   READ      [ROOT_All] 0648B630-D9C5-F049-B4F8-EC2538BD8678
+Domain[ROOT_All]     INFO                           /home/sss/nobackup/referencefiles/aod/AOD-20.0.0.3/AOD-20.0.0.3-full.pool.root
+RootDatabase.open    INFO /home/sss/nobackup/referencefiles/aod/AOD-20.0.0.3/AOD-20.0.0.3-full.pool.root File version:53424
+/home/sss/nobac...   INFO Database being retired...
+Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] 0648B630-D9C5-F049-B4F8-EC2538BD8678
 Domain[ROOT_All]     INFO >   Deaccess DbDomain     READ      [ROOT_All] 
 DbSession            INFO     Open     DbSession    
 Domain[ROOT_All]     INFO >   Access   DbDomain     READ      [ROOT_All] 
 Domain[ROOT_All]     INFO ->  Access   DbDatabase   READ      [ROOT_All] 76376094-4CF4-084F-B321-C5E2CEE3F29D
-Domain[ROOT_All]     INFO                           /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/aod/AOD-20.0.0.3/AOD-20.0.0.3-full.pool.root
-RootDatabase.open    INFO /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/aod/AOD-20.0.0.3/AOD-20.0.0.3-full.pool.root File version:53424
-ClassIDSvc           INFO  getRegistryEntries: read 21465 CLIDRegistry entries for module ALL
+Domain[ROOT_All]     INFO                           /home/sss/nobackup/referencefiles/aod/AOD-20.0.0.3/AOD-20.0.0.3-full.pool.root
+RootDatabase.open    INFO /home/sss/nobackup/referencefiles/aod/AOD-20.0.0.3/AOD-20.0.0.3-full.pool.root File version:53424
+ClassIDSvc           INFO  getRegistryEntries: read 17412 CLIDRegistry entries for module ALL
 EventPersistenc...   INFO Added successfully Conversion service:AthenaPoolCnvSvc
-ClassIDSvc           INFO  getRegistryEntries: read 7 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 21 CLIDRegistry entries for module ALL
+OutputStreamSeq...   INFO Initializing OutputStreamSequencerSvc - package version AthenaServices-00-00-00
 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
 IOVDbFolder          INFO Read from meta data only for folder /TagInfo
 IOVDbSvc             INFO Initialised with 4 connections and 15 folders
 IOVDbSvc             INFO Service IOVDbSvc initialised successfully
@@ -94,9 +97,9 @@ IOVDbSvc             INFO Opening COOL connection for COOLOFL_INDET/OFLP200
 IOVDbSvc             INFO Disconnecting from COOLOFL_TRT/OFLP200
 IOVDbSvc             INFO Disconnecting from COOLOFL_INDET/OFLP200
 IOVDbSvc             INFO Added taginfo remove for /TagInfo
-ClassIDSvc           INFO  getRegistryEntries: read 53 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 268 CLIDRegistry entries for module ALL
 ClassIDSvc           INFO  getRegistryEntries: read 13 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 38 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 22 CLIDRegistry entries for module ALL
 DetDescrCnvSvc       INFO  initializing 
 DetDescrCnvSvc       INFO Found DetectorStore service
 DetDescrCnvSvc       INFO  filling proxies for detector managers 
@@ -165,7 +168,6 @@ MuGM:MuonFactory     INFO                    BOG cutouts are activated 1 , all o
 MuGM:MuonFactory     INFO Manager created for geometry version R.06.04 from DB MuonVersion <MuonSpectrometer-R.06.04>
 MuonGeoModel.MYSQL   INFO GeometryVersion set to <R.06.04>
 MuGM:MuonFactory     INFO Mysql helper class created here for geometry version R.06.04 from DB MuonVersion <MuonSpectrometer-R.06.04>
-MuGM:MuonFactory     INFO MDTIDHELPER retrieved from DetStore
 EventPersistenc...   INFO Added successfully Conversion service:TagInfoMgr
 EventPersistenc...   INFO Added successfully Conversion service:DetDescrCnvSvc
 MDT_IDDetDescrCnv    INFO in createObj: creating a MdtIdHelper object in the detector store
@@ -201,7 +203,7 @@ MdtIdHelper          INFO Initializing MDT hash indices ...
 MdtIdHelper          INFO The element hash max is 1172
 MdtIdHelper          INFO The detector element hash max is 2296
 MdtIdHelper          INFO Initializing MDT hash indices for finding neighbors ... 
-MuGM:MuonFactory     INFO RPCIDHELPER retrieved from DetStore
+MuGM:MuonFactory     INFO MDTIDHELPER retrieved from DetStore
 RPC_IDDetDescrCnv    INFO in createObj: creating a RpcIdHelper object in the detector store
 AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0
 AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0
@@ -215,7 +217,7 @@ RpcIdHelper          INFO Initializing RPC hash indices ...
 RpcIdHelper          INFO The element hash max is 594
 RpcIdHelper          INFO The detector element hash max is 1116
 RpcIdHelper          INFO Initializing RPC hash indices for finding neighbors ... 
-MuGM:MuonFactory     INFO TGCIDHELPER retrieved from DetStore
+MuGM:MuonFactory     INFO RPCIDHELPER retrieved from DetStore
 TGC_IDDetDescrCnv    INFO in createObj: creating a TgcIdHelper object in the detector store
 AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0
 AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0
@@ -229,7 +231,7 @@ TgcIdHelper          INFO Initializing TGC hash indices ...
 TgcIdHelper          INFO The element hash max is 1578
 TgcIdHelper          INFO The detector element hash max is 1578
 TgcIdHelper          INFO Initializing TGC hash indices for finding neighbors ... 
-MuGM:MuonFactory     INFO CSCIDHELPER retrieved from DetStore
+MuGM:MuonFactory     INFO TGCIDHELPER retrieved from DetStore
 CSC_IDDetDescrCnv    INFO in createObj: creating a CcscIdHelper object in the detector store
 AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find mm region index: group, region size 0 0
 AtlasDetectorIDHelper::initialize_from_dictionary - Warning: unable to find stgc region index: group, region size 0 0
@@ -244,6 +246,7 @@ CscIdHelper          INFO The element hash max is 32
 CscIdHelper          INFO The detector element hash max is 64
 CscIdHelper          INFO The channel hash max is 61440
 CscIdHelper          INFO Initializing CSC hash indices for finding neighbors ... 
+MuGM:MuonFactory     INFO CSCIDHELPER retrieved from DetStore
 MuGM:MuonFactory     INFO  **************** MuonDetectorFactory001 ************************
 MuGM:MuonFactory     INFO  *** Start building the Muon Geometry Tree **********************
 MuGM:RDBReadAtlas    INFO Start retriving dbObjects with tag = <ATLAS-R1-2012-03-01-00> node <ATLAS>
@@ -252,7 +255,6 @@ MuGM:RDBReadAtlas    INFO After getQuery XtomoData
 In DblQ00Xtomo(data)
 No XtomoData table in the MuonDD Database
 MuGM:RDBReadAtlas    INFO After new DblQ00Xtomo
-MuGM:RDBReadAtlas    INFO After m_dhxtomo.data()
 MuGM:RDBReadAtlas    INFO No Ascii aszt input found: looking for A-lines in ORACLE
 MuGM:RDBReadAtlas    INFO ASZT table found in Oracle
 MuGM:RDBReadAtlas    INFO ASZT size is 32
@@ -273,7 +275,6 @@ MuGM:ProcPosition    INFO  *** : 1740 physical stations in space - according to
 MuGM:ProcCutouts     INFO  Processing Cutouts for geometry layout R.06
 MuGM:ProcCutouts     INFO  Processing Cutouts DONE
 MuGM:RDBReadAtlas    INFO  ProcessTGCreadout - version 7 wirespacing 1.8
-MGM::MuonDetect...   INFO Creating now the CscInternalAlignmentMapContainer
 MuGM:RDBReadAtlas    INFO Intermediate Objects built from primary numbers
 MuGM:MuonFactory     INFO  theMaterialManager retrieven successfully from the DetStore
 MuGM:MuonFactory     INFO MuonSystem description from OracleTag=<ATLAS-R1-2012-03-01-00> and node=<ATLAS>
@@ -302,7 +303,7 @@ MGM::MuonDetect...   INFO Init A/B Line Containers - done - size is respectively
 MGM::MuonDetect...   INFO I-Line for CSC wire layers loaded (Csc Internal Alignment)
 MGM::MuonDetect...   INFO According to configuration parameters they WILL BE UPDATED FROM CONDDB 
 MGM::MuonDetect...   INFO Filling cache
-GeoModelSvc          INFO GeoModelSvc.MuonDetectorTool	 SZ= 171360Kb 	 Time = 2.33S
+GeoModelSvc          INFO GeoModelSvc.MuonDetectorTool	 SZ= 210072Kb 	 Time = 51.11S
 GeoModelSvc.Pix...   INFO Building Pixel Detector with Version Tag: ATLAS-R1-2012-03-01-00 at Node: ATLAS
 GeoModelSvc.Pix...   INFO Pixel Version: Pixel-GEO-13  Package Version: PixelGeoModel-00-00-00
 PixelIDDetDescrCnv   INFO in createObj: creating a PixelID helper object in the detector store
@@ -340,9 +341,9 @@ PixelGeoModel        INFO ... Record Sets retrieved.
 PixelGeoModel        INFO DBM switch = SetDBMFlag: 0
 PixelGeoModel        INFO Building Pixel Detector
 PixelGeoModel        INFO  Version: Pixel-GEO-13, Name: DC3, Layout: Final, Code Version: 5.01.00, Description: DC3 Geometry
-GEOPIXELSERVICES pixel : 40.0000 245.0000 //  3460.0000
-GEOPIXELSERVICES barrel : 42.0000 143.0000 //  -460.0000 460.0000
-GEOPIXELSERVICES endcap : 82.0000 175.0000 //  484.0000 670.0000
+GEOPIXELSERVICES pixel : 40 245 //  3460
+GEOPIXELSERVICES barrel : 42 143 //  -460 460
+GEOPIXELSERVICES endcap : 82 175 //  484 670
 PixelGeoModel        INFO *** LAYER 0  planar/3D modules : 0 0
 PixelGeoModel        INFO Layer 0 in/out radius 46.2723  64.1329
 PixelGeoModel        INFO *** LAYER 1  planar/3D modules : 0 0
@@ -365,21 +366,12 @@ PixelDetectorMa...   INFO Registering alignment channel with key /Indet/Align/PI
 PixelDetectorMa...   INFO Registering alignment channel with key /Indet/Align/PIXEC1, level 0, with frame local.
 PixelDetectorMa...   INFO Registering alignment channel with key /Indet/Align/PIXEC2, level 0, with frame local.
 PixelDetectorMa...   INFO Registering alignment channel with key /Indet/Align/PIXEC3, level 0, with frame local.
-GeoModelSvc          INFO GeoModelSvc.PixelDetectorTool	 SZ= 7824Kb 	 Time = 0.2S
+GeoModelSvc          INFO GeoModelSvc.PixelDetectorTool	 SZ= 11288Kb 	 Time = 0.73S
 GeoModelSvc.SCT...   INFO Building SCT with Version Tag: ATLAS-R1-2012-03-01-00 at Node: ATLAS
 GeoModelSvc.SCT...   INFO SCT Version: SCT-GEO-01  Package Version: SCT_GeoModel-00-00-00
 SCT_IDDetDescrCnv    INFO in createObj: creating a SCT_ID helper object in the detector store
-SCT_ID               INFO Initialize from dictionary
+SCT_ID               INFO 
 AtlasDetectorID      INFO initialize_from_dictionary - OK
-indet 1 2,4,5,7,10,11,12,13 7 1fffffffffffffff 61 3 0
-sct1 1:3 3 e7ffffffffffffff 59 2 3
-bec1 -2,0,2 3 f9ffffffffffffff 57 2 5
-lay_disk0 0:8 f fe1fffffffffffff 53 4 7
-phi_mod0 0:55 3f ffe07fffffffffff 47 6 11
-eta_mod1 -6:6 f ffff87ffffffffff 43 4 17
-side0 0:1 1 fffffbffffffffff 42 1 21
-strip0 0:767 3ff fffffc00ffffffff 32 10 22
-SCT_ID               INFO  SCT_ID::initialize_from_dict 
 SCT_GeoModel         INFO Retrieving Record Sets from database ...
 SCT_GeoModel         INFO Building SCT Detector.
 SCT_GeoModel         INFO  Version: SCT-GEO-01, Name: GEO, Layout: Final, Code Version: 3.06.00, Description: Atlas Geometry 2008
@@ -407,7 +399,13 @@ SCTDetectorManager   INFO Registering alignment channel with key /Indet/Align/SC
 SCTDetectorManager   INFO Registering alignment channel with key /Indet/Align/SCTEC7, level 1, with frame local.
 SCTDetectorManager   INFO Registering alignment channel with key /Indet/Align/SCTEC8, level 1, with frame local.
 SCTDetectorManager   INFO Registering alignment channel with key /Indet/Align/SCTEC9, level 1, with frame local.
-GeoModelSvc          INFO GeoModelSvc.SCT_DetectorTool	 SZ= 16384Kb 	 Time = 0.15S
+GeoModelSvc          INFO GeoModelSvc.SCT_DetectorTool	 SZ= 17000Kb 	 Time = 1.21S
+ClassIDSvc           INFO  getRegistryEntries: read 6452 CLIDRegistry entries for module ALL
+GeoModelSvc.TRT...   INFO TRT_StrawStatusSummaryTool initialize method called
+TRT_IDDetDescrCnv    INFO in createObj: creating a TRT_ID helper object in the detector store
+TRT_ID               INFO Initialize from dictionary msgSvc 0x5567d1081848
+AtlasDetectorID      INFO initialize_from_dictionary - OK
+GeoModelSvc.TRT...   INFO TRT_StrawStatusSummaryTool initialized successfully  
 GeoModelSvc.TRT...   INFO Building TRT with Version Tag: ATLAS-R1-2012-03-01-00 at Node: ATLAS
 GeoModelSvc.TRT...   INFO TRT Version: TRT-GEO-00  Package Version: TRT_GeoModel-00-00-00
 GeoModelSvc.TRT...   INFO Creating the TRT
@@ -420,12 +418,6 @@ GeoModelSvc.TRT...   INFO   InitialLayout                  = true
 GeoModelSvc.TRT...   INFO   Alignable                      = true
 GeoModelSvc.TRT...   INFO   VersioName                     = DC3
 GeoModelSvc.TRT...   INFO  Building TRT geometry from GeoModel factory TRTDetectorFactory_Full
-TRT_GeoModel      WARNING The folder of /TRT/Cond/StatusHT is NOT available, WHOLE TRT RUNNING XENON
-TRT_GeoModel      WARNING Tool setup will force to NOT to use ARGON. Ignore this warning if you are running RECONSTRUCTION or DIGI, but cross-check if you are running SIMULATION
-TRT_GeoModel      WARNING Tool setup will force to NOT to use KRYPTON. Ignore this warning if you are running RECONSTRUCTION or DIGI, but cross-check if you are running SIMULATION
-TRT_IDDetDescrCnv    INFO in createObj: creating a TRT_ID helper object in the detector store
-TRT_ID               INFO Initialize from dictionary msgSvc 0x2cc9c698
-AtlasDetectorID      INFO initialize_from_dictionary - OK
 TRT_GeoModel         INFO In TRT Detector Factory (For DC2 and later geometries)
 TRT_GeoModel         INFO  Version: TRT-GEO-00, Name: DC3, Layout: Initial, Code Version: 4.01.01, Description: DC3 Geometry
 TRTDetectorManager   INFO Registering alignment channel with key /TRT/Align/TRT, level 3, with frame global.
@@ -434,22 +426,21 @@ TRTDetectorManager   INFO Registering alignment channel with key /TRT/Align/B1,
 TRTDetectorManager   INFO Registering alignment channel with key /TRT/Align/B2, level 2, with frame global.
 TRTDetectorManager   INFO Registering alignment channel with key /TRT/Align/L2A, level 1, with frame global.
 TRTDetectorManager   INFO Registering alignment channel with key /TRT/Align/L2C, level 1, with frame global.
-GeoModelSvc          INFO GeoModelSvc.TRT_DetectorTool	 SZ= 23224Kb 	 Time = 0.13S
+GeoModelSvc          INFO GeoModelSvc.TRT_DetectorTool	 SZ= 20860Kb 	 Time = 0.71S
 GeoModelSvc.InD...   INFO InDetServMat Package Version: InDetServMatGeoModel-00-00-00
 GeoModelSvc.InD...   INFO Building Inner Detector Service Material. Version: CSC
-GeoModelSvc          INFO GeoModelSvc.InDetServMatTool	 SZ= 0Kb 	 Time = 0.04S
+GeoModelSvc          INFO GeoModelSvc.InDetServMatTool	 SZ= 0Kb 	 Time = 0.18S
 GeoModelSvc.Bea...   INFO Building Beam Pipe
-GeoModelSvc          INFO GeoModelSvc.BeamPipeDetectorTool	 SZ= 0Kb 	 Time = 0S
-ClassIDSvc           INFO  getRegistryEntries: read 4177 CLIDRegistry entries for module ALL
+GeoModelSvc          INFO GeoModelSvc.BeamPipeDetectorTool	 SZ= 0Kb 	 Time = 0.02S
 AthenaEventLoopMgr   INFO Initializing AthenaEventLoopMgr - package version AthenaServices-00-00-00
-ClassIDSvc           INFO  getRegistryEntries: read 1948 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 740 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 2572 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 1169 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 2190 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 743 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 4158 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 1197 CLIDRegistry entries for module ALL
 CondInputLoader      INFO Initializing CondInputLoader...
 CondInputLoader      INFO Adding base classes:
-  +  ( 'AlignableTransformContainer' , 'ConditionStore+/Indet/Align' )   -> no bases
-  +  ( 'AlignableTransformContainer' , 'ConditionStore+/TRT/Align' )   -> no bases
+  +  ( 'AlignableTransformContainer' , 'ConditionStore+/Indet/Align' )   ->
+  +  ( 'AlignableTransformContainer' , 'ConditionStore+/TRT/Align' )   ->
   +  ( 'CondAttrListCollection' , 'ConditionStore+/Indet/IBLDist' )   ->
   +  ( 'CondAttrListCollection' , 'ConditionStore+/MUONALIGN/ERRS' )   ->
   +  ( 'CondAttrListCollection' , 'ConditionStore+/MUONALIGN/MDT/BARREL' )   ->
@@ -458,9 +449,9 @@ CondInputLoader      INFO Adding base classes:
   +  ( 'CondAttrListCollection' , 'ConditionStore+/MUONALIGN/TGC/SIDEA' )   ->
   +  ( 'CondAttrListCollection' , 'ConditionStore+/MUONALIGN/TGC/SIDEC' )   ->
   +  ( 'DetCondCFloat' , 'ConditionStore+/Indet/PixelDist' )   -> no bases
-  +  ( 'TRTCond::StrawStatusMultChanContainer' , 'ConditionStore+/TRT/Cond/Status' )   -> no bases
-  +  ( 'TRTCond::StrawStatusMultChanContainer' , 'ConditionStore+/TRT/Cond/StatusHT' )   -> no bases
-  +  ( 'TRTCond::StrawStatusMultChanContainer' , 'ConditionStore+/TRT/Cond/StatusPermanent' )   -> no bases
+  +  ( 'TRTCond::StrawStatusMultChanContainer' , 'ConditionStore+/TRT/Cond/Status' )   ->
+  +  ( 'TRTCond::StrawStatusMultChanContainer' , 'ConditionStore+/TRT/Cond/StatusHT' )   ->
+  +  ( 'TRTCond::StrawStatusMultChanContainer' , 'ConditionStore+/TRT/Cond/StatusPermanent' )   ->
 CondInputLoader      INFO Will create WriteCondHandle dependencies for the following DataObjects:
     +  ( 'AlignableTransformContainer' , 'ConditionStore+/Indet/Align' ) 
     +  ( 'AlignableTransformContainer' , 'ConditionStore+/TRT/Align' ) 
@@ -483,7 +474,7 @@ PyComponentMgr       INFO Initializing PyComponentMgr...
 dumper               INFO Initializing dumper...
 AthenaEventLoopMgr   INFO Setup EventSelector service EventSelector
 ApplicationMgr       INFO Application Manager Initialized successfully
-ClassIDSvc           INFO  getRegistryEntries: read 687 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 636 CLIDRegistry entries for module ALL
 CondInputLoader      INFO created CondCont<AlignableTransformContainer> with key 'ConditionStore+/Indet/Align'
 CondInputLoader      INFO created CondCont<AlignableTransformContainer> with key 'ConditionStore+/TRT/Align'
 CondInputLoader      INFO created CondCont<CondAttrListCollection> with key 'ConditionStore+/Indet/IBLDist'
@@ -501,8 +492,7 @@ ApplicationMgr       INFO Application Manager Started successfully
 AlgResourcePool      INFO TopAlg list empty. Recovering the one of Application Manager
 ClassIDSvc           INFO  getRegistryEntries: read 21 CLIDRegistry entries for module ALL
 ClassIDSvc           INFO  getRegistryEntries: read 41 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 53 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 1 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 110 CLIDRegistry entries for module ALL
 AthenaEventLoopMgr   INFO   ===>>>  start of run 189751    <<<===
 IOVDbSvc             INFO Global tag: OFLCOND-SDR-BS7T-05-24 set from input file
 IOVDbSvc             INFO Opening COOL connection for COOLOFL_INDET/OFLP200
@@ -518,18 +508,18 @@ IOVDbFolder          INFO HVS tag OFLCOND-SDR-BS7T-05-24 resolved to TrtStrawSta
 IOVDbFolder          INFO HVS tag OFLCOND-SDR-BS7T-05-24 resolved to TrtStrawStatusPermCol-02 for folder /TRT/Cond/StatusPermanent
 IOVDbSvc             INFO Disconnecting from COOLOFL_TRT/OFLP200
 Domain[ROOT_All]     INFO ->  Access   DbDatabase   READ      [ROOT_All] D0709FD7-6A55-E011-925D-002481043EC0
-Domain[ROOT_All]     INFO                           /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0001.pool.root
-RootDatabase.open    INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0001.pool.root File version:52600
+Domain[ROOT_All]     INFO                           /home/sss/atlas/DBRelease/current/poolcond/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0001.pool.root
+RootDatabase.open    INFO /home/sss/atlas/DBRelease/current/poolcond/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0001.pool.root File version:52600
 PixelDetectorMa...   INFO Processing IBLDist alignment container with key (/Indet/IBLDist) and alignment folder pointing to /Indet/Align
 Domain[ROOT_All]     INFO ->  Access   DbDatabase   READ      [ROOT_All] 0E3CF1E5-143D-DB11-92C7-000CF1DA62DD
-Domain[ROOT_All]     INFO                           /cvmfs/atlas-condb.cern.ch/repo/conditions/cmccond/cmccond.000001.conditions.simul.pool.v0000/oflcond.000002.conditions.simul.pool.v0000._0029.pool.root__DQ2-1250194490
+Domain[ROOT_All]     INFO                           /home/sss/atlas/DBRelease/current/poolcond/oflcond.000002.conditions.simul.pool.v0000/oflcond.000002.conditions.simul.pool.v0000._0029.pool.root
 Warning in <TClass::Init>: no dictionary for class DataHeader_p1 is available
 Warning in <TClass::Init>: no dictionary for class DataHeaderElement_p1 is available
-RootDatabase.open    INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cmccond/cmccond.000001.conditions.simul.pool.v0000/oflcond.000002.conditions.simul.pool.v0000._0029.pool.root__DQ2-1250194490 File version:51000
+RootDatabase.open    INFO /home/sss/atlas/DBRelease/current/poolcond/oflcond.000002.conditions.simul.pool.v0000/oflcond.000002.conditions.simul.pool.v0000._0029.pool.root File version:51000
 Domain[ROOT_All]     INFO ->  Access   DbDatabase   READ      [ROOT_All] D67CA215-C5CB-DF11-954C-000423DC2158
-Domain[ROOT_All]     INFO                           /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000019.gen.COND/cond09_mc.000019.gen.COND._0010.pool.root
-RootDatabase.open    INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000019.gen.COND/cond09_mc.000019.gen.COND._0010.pool.root File version:52200
-/cvmfs/atlas-ni...   INFO Database being retired...
+Domain[ROOT_All]     INFO                           /home/sss/atlas/DBRelease/current/poolcond/cond09_mc.000019.gen.COND/cond09_mc.000019.gen.COND._0010.pool.root
+RootDatabase.open    INFO /home/sss/atlas/DBRelease/current/poolcond/cond09_mc.000019.gen.COND/cond09_mc.000019.gen.COND._0010.pool.root File version:52200
+/home/sss/nobac...   INFO Database being retired...
 Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] 76376094-4CF4-084F-B321-C5E2CEE3F29D
 GeoModelSvc       WARNING *** *** Geometry configured through jobOptions does not match TagInfo tags! *** ***
 GeoModelSvc          INFO ** Job Option configuration: 
@@ -556,52 +546,60 @@ IOVDbFolder          INFO HVS tag OFLCOND-SDR-BS7T-05-24 resolved to MuonAlignMD
 IOVDbFolder          INFO HVS tag OFLCOND-SDR-BS7T-05-24 resolved to MuonAlignTGCEndCapAAlign-0001-DEFAULT for folder /MUONALIGN/TGC/SIDEA
 IOVDbFolder          INFO HVS tag OFLCOND-SDR-BS7T-05-24 resolved to MuonAlignTGCEndCapCAlign-0001-DEFAULT for folder /MUONALIGN/TGC/SIDEC
 IOVDbSvc             INFO Disconnecting from COOLOFL_MUONALIGN/OFLP200
+IOVDbSvc             INFO Opening COOL connection for COOLOFL_MUONALIGN/OFLP200
+IOVDbSvc             INFO Disconnecting from COOLOFL_MUONALIGN/OFLP200
+IOVDbSvc             INFO Opening COOL connection for COOLOFL_MUONALIGN/OFLP200
+IOVDbSvc             INFO Disconnecting from COOLOFL_MUONALIGN/OFLP200
+IOVDbSvc             INFO Opening COOL connection for COOLOFL_MUONALIGN/OFLP200
+IOVDbSvc             INFO Disconnecting from COOLOFL_MUONALIGN/OFLP200
+IOVDbSvc             INFO Opening COOL connection for COOLOFL_MUONALIGN/OFLP200
+IOVDbSvc             INFO Disconnecting from COOLOFL_MUONALIGN/OFLP200
+IOVDbSvc             INFO Opening COOL connection for COOLOFL_MUONALIGN/OFLP200
+IOVDbSvc             INFO Disconnecting from COOLOFL_MUONALIGN/OFLP200
 Domain[ROOT_All]     INFO ->  Access   DbDatabase   READ      [ROOT_All] A01A6C89-05C8-DF11-B56E-002481043EC0
-Domain[ROOT_All]     INFO                           /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000019.gen.COND/cond09_mc.000019.gen.COND._0009.pool.root
-RootDatabase.open    INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000019.gen.COND/cond09_mc.000019.gen.COND._0009.pool.root File version:52600
+Domain[ROOT_All]     INFO                           /home/sss/atlas/DBRelease/current/poolcond/cond09_mc.000019.gen.COND/cond09_mc.000019.gen.COND._0009.pool.root
+RootDatabase.open    INFO /home/sss/atlas/DBRelease/current/poolcond/cond09_mc.000019.gen.COND/cond09_mc.000019.gen.COND._0009.pool.root File version:52600
 Domain[ROOT_All]     INFO ->  Access   DbDatabase   READ      [ROOT_All] AC64B64A-71FE-E011-83C1-001E4F3E59B1
-Domain[ROOT_All]     INFO                           /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000037.gen.COND/cond09_mc.000037.gen.COND._0001.pool.root
-RootDatabase.open    INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000037.gen.COND/cond09_mc.000037.gen.COND._0001.pool.root File version:52800
+Domain[ROOT_All]     INFO                           /home/sss/atlas/DBRelease/current/poolcond/cond09_mc.000037.gen.COND/cond09_mc.000037.gen.COND._0001.pool.root
+RootDatabase.open    INFO /home/sss/atlas/DBRelease/current/poolcond/cond09_mc.000037.gen.COND/cond09_mc.000037.gen.COND._0001.pool.root File version:52800
 Domain[ROOT_All]     INFO ->  Access   DbDatabase   READ      [ROOT_All] 564393DD-6BBF-E111-9C06-003048D3C892
-Domain[ROOT_All]     INFO                           /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000045.gen.COND/cond09_mc.000045.gen.COND._0001.pool.root
-RootDatabase.open    INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000045.gen.COND/cond09_mc.000045.gen.COND._0001.pool.root File version:53005
-/cvmfs/atlas-co...   INFO Database being retired...
+Domain[ROOT_All]     INFO                           /home/sss/atlas/DBRelease/current/poolcond/cond09_mc.000045.gen.COND/cond09_mc.000045.gen.COND._0001.pool.root
+RootDatabase.open    INFO /home/sss/atlas/DBRelease/current/poolcond/cond09_mc.000045.gen.COND/cond09_mc.000045.gen.COND._0001.pool.root File version:53005
+/home/sss/atlas...   INFO Database being retired...
 Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] 0E3CF1E5-143D-DB11-92C7-000CF1DA62DD
-/cvmfs/atlas-co...   INFO Database being retired...
+/home/sss/atlas...   INFO Database being retired...
 Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] D0709FD7-6A55-E011-925D-002481043EC0
-/cvmfs/atlas-co...   INFO Database being retired...
+/home/sss/atlas...   INFO Database being retired...
 Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] D67CA215-C5CB-DF11-954C-000423DC2158
 Domain[ROOT_All]     INFO ->  Access   DbDatabase   READ      [ROOT_All] 26AD0F0C-EC4D-DF11-99D0-001EC959A004
-Domain[ROOT_All]     INFO                           /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000010.gen.COND/cond09_mc.000010.gen.COND._0002.pool.root
-RootDatabase.open    INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000010.gen.COND/cond09_mc.000010.gen.COND._0002.pool.root File version:52200
-/cvmfs/atlas-co...   INFO Database being retired...
+Domain[ROOT_All]     INFO                           /home/sss/atlas/DBRelease/current/poolcond/cond09_mc.000010.gen.COND/cond09_mc.000010.gen.COND._0002.pool.root
+RootDatabase.open    INFO /home/sss/atlas/DBRelease/current/poolcond/cond09_mc.000010.gen.COND/cond09_mc.000010.gen.COND._0002.pool.root File version:52200
+/home/sss/atlas...   INFO Database being retired...
 Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] A01A6C89-05C8-DF11-B56E-002481043EC0
 MuonAlignmentCo...   INFO Load alignment parameters from DB folder </MUONALIGN/MDT/BARREL>
 MuonAlignmentCo...   INFO Size of /MUONALIGN/MDT/BARREL CondAttrListCollection  ( 'CondAttrListCollection' , 'ConditionStore+/MUONALIGN/MDT/BARREL' )  readCdo->size()= 1
-MuonAlignmentCo...   INFO Range of /MUONALIGN/MDT/BARREL input is, ALines: {[0,0,t:0] - [t:4294967294.854775807]} BLines: {[0,0,t:0] - [t:4294967294.854775807]}
+MuonAlignmentCo...   INFO Range of /MUONALIGN/MDT/BARREL input is, ALines: {[0,0,t:1316868299] - [t:1316868899]} BLines: {[0,0,t:1316868299] - [t:1316868899]}
 MuonAlignmentCo...   INFO A- and B-Lines parameters from DB folder </MUONALIGN/MDT/BARREL> loaded
 MuonAlignmentCo...   INFO Load alignment parameters from DB folder </MUONALIGN/MDT/ENDCAP/SIDEA>
 MuonAlignmentCo...   INFO Size of /MUONALIGN/MDT/ENDCAP/SIDEA CondAttrListCollection  ( 'CondAttrListCollection' , 'ConditionStore+/MUONALIGN/MDT/ENDCAP/SIDEA' )  readCdo->size()= 1
-MuonAlignmentCo...   INFO Range of /MUONALIGN/MDT/ENDCAP/SIDEA input is, ALines: {[0,0,t:0] - [t:4294967294.854775807]} BLines: {[0,0,t:0] - [t:4294967294.854775807]}
+MuonAlignmentCo...   INFO Range of /MUONALIGN/MDT/ENDCAP/SIDEA input is, ALines: {[0,0,t:1316868299] - [t:1316868899]} BLines: {[0,0,t:1316868299] - [t:1316868899]}
 MuonAlignmentCo...   INFO A- and B-Lines parameters from DB folder </MUONALIGN/MDT/ENDCAP/SIDEA> loaded
 MuonAlignmentCo...   INFO Load alignment parameters from DB folder </MUONALIGN/MDT/ENDCAP/SIDEC>
 MuonAlignmentCo...   INFO Size of /MUONALIGN/MDT/ENDCAP/SIDEC CondAttrListCollection  ( 'CondAttrListCollection' , 'ConditionStore+/MUONALIGN/MDT/ENDCAP/SIDEC' )  readCdo->size()= 1
-MuonAlignmentCo...   INFO Range of /MUONALIGN/MDT/ENDCAP/SIDEC input is, ALines: {[0,0,t:0] - [t:4294967294.854775807]} BLines: {[0,0,t:0] - [t:4294967294.854775807]}
+MuonAlignmentCo...   INFO Range of /MUONALIGN/MDT/ENDCAP/SIDEC input is, ALines: {[0,0,t:1316868299] - [t:1316868899]} BLines: {[0,0,t:1316868299] - [t:1316868899]}
 MuonAlignmentCo...   INFO A- and B-Lines parameters from DB folder </MUONALIGN/MDT/ENDCAP/SIDEC> loaded
 MuonAlignmentCo...   INFO Load alignment parameters from DB folder </MUONALIGN/TGC/SIDEA>
 MuonAlignmentCo...   INFO No BLines decoding will be attempted for folder named /MUONALIGN/TGC/SIDEA
 MuonAlignmentCo...   INFO Size of /MUONALIGN/TGC/SIDEA CondAttrListCollection  ( 'CondAttrListCollection' , 'ConditionStore+/MUONALIGN/TGC/SIDEA' )  readCdo->size()= 1
-MuonAlignmentCo...   INFO Range of /MUONALIGN/TGC/SIDEA input is, ALines: {[0,0,t:0] - [t:4294967294.854775807]}
+MuonAlignmentCo...   INFO Range of /MUONALIGN/TGC/SIDEA input is, ALines: {[0,0,t:1316868299] - [t:1316868899]}
 MuonAlignmentCo...   INFO A- and B-Lines parameters from DB folder </MUONALIGN/TGC/SIDEA> loaded
 MuonAlignmentCo...   INFO Load alignment parameters from DB folder </MUONALIGN/TGC/SIDEC>
 MuonAlignmentCo...   INFO No BLines decoding will be attempted for folder named /MUONALIGN/TGC/SIDEC
 MuonAlignmentCo...   INFO Size of /MUONALIGN/TGC/SIDEC CondAttrListCollection  ( 'CondAttrListCollection' , 'ConditionStore+/MUONALIGN/TGC/SIDEC' )  readCdo->size()= 1
-MuonAlignmentCo...   INFO Range of /MUONALIGN/TGC/SIDEC input is, ALines: {[0,0,t:0] - [t:4294967294.854775807]}
+MuonAlignmentCo...   INFO Range of /MUONALIGN/TGC/SIDEC input is, ALines: {[0,0,t:1316868299] - [t:1316868899]}
 MuonAlignmentCo...   INFO A- and B-Lines parameters from DB folder </MUONALIGN/TGC/SIDEC> loaded
-MGM::MuonDetect...WARNING Empty temporary A-line container - nothing to do here
-MuonAlignmentCo...   INFO recorded new ALineMapContainer with range {[0,0,t:0,l:0] - [t:4294967294.854775807]} into Conditions Store
-MGM::MuonDetect...   INFO Mdt deformations are not enabled - nothing to do here
-MuonAlignmentCo...   INFO recorded new BLineMapContainer with range {[0,0,t:0,l:0] - [t:4294967294.854775807]} into Conditions Store
+MuonAlignmentCo...   INFO recorded new ALineMapContainer with range {[0,0,t:1316868299,l:0] - [t:1316868899]} into Conditions Store
+MuonAlignmentCo...   INFO recorded new BLineMapContainer with range {[0,0,t:1316868299,l:0] - [t:1316868899]} into Conditions Store
 MuonAlignmentEr...   INFO Size of CondAttrListCollection  ( 'CondAttrListCollection' , 'ConditionStore+/MUONALIGN/ERRS' )  readCdo->size()= 1
 MuonAlignmentEr...   INFO Range of input is {[0,0,t:0] - [t:4294967294.854775807]}
 MuonAlignmentEr...   INFO *****************************************
@@ -642,7 +640,6 @@ MuGM:RDBReadAtlas    INFO After getQuery XtomoData
 In DblQ00Xtomo(data)
 No XtomoData table in the MuonDD Database
 MuGM:RDBReadAtlas    INFO After new DblQ00Xtomo
-MuGM:RDBReadAtlas    INFO After m_dhxtomo.data()
 MuGM:RDBReadAtlas    INFO No Ascii aszt input found: looking for A-lines in ORACLE
 MuGM:RDBReadAtlas    INFO ASZT table found in Oracle
 MuGM:RDBReadAtlas    INFO ASZT size is 32
@@ -663,7 +660,6 @@ MuGM:ProcPosition    INFO  *** : 1740 physical stations in space - according to
 MuGM:ProcCutouts     INFO  Processing Cutouts for geometry layout R.06
 MuGM:ProcCutouts     INFO  Processing Cutouts DONE
 MuGM:RDBReadAtlas    INFO  ProcessTGCreadout - version 7 wirespacing 1.8
-MGM::MuonDetect...   INFO Creating now the CscInternalAlignmentMapContainer
 MuGM:RDBReadAtlas    INFO Intermediate Objects built from primary numbers
 MuGM:MuonFactory     INFO  theMaterialManager retrieven successfully from the DetStore
 MuGM:MuonFactory     INFO MuonSystem description from OracleTag=<ATLAS-R1-2012-03-01-00> and node=<ATLAS>
@@ -693,22 +689,23 @@ MGM::MuonDetect...   INFO I-Line for CSC wire layers loaded (Csc Internal Alignm
 MGM::MuonDetect...   INFO According to configuration parameters they WILL BE UPDATED FROM CONDDB 
 MGM::MuonDetect...   INFO Filling cache
 MGM::MuonDetect...WARNING Empty temporary A-line container - nothing to do here
+MGM::MuonDetect...   INFO In updateDeformations()
 MGM::MuonDetect...   INFO Mdt deformations are not enabled - nothing to do here
-MuonDetectorCon...   INFO recorded new MuonDetectorManager with range {[0,0,t:0,l:0] - [t:4294967294.854775807]} into Conditions Store
+MuonDetectorCon...   INFO recorded new MuonDetectorManager with range {[0,0,t:1316868299,l:0] - [t:1316868899]} into Conditions Store
 TRTAlignCondAlg      INFO recorded new CDO GeoAlignmentStore with range {[0,l:0] - [9999999,l:9999999]} into Conditions Store
 TRTAlignCondAlg      INFO recorded new CDO TRT_DetElementContainer with range {[0,l:0] - [9999999,l:9999999]} with size of 14912 into Conditions Store
-SCT_AlignCondAlg     INFO recorded new CDO SCTAlignmentStore with range {[189750,l:4294777545] - [189751,l:4294777544]} into Conditions Store
-SCT_DetectorEle...   INFO recorded new CDO SCT_DetectorElementCollection with range {[189750,l:4294777545] - [189751,l:4294777544]} with size of 8176 into Conditions Store
+SCT_AlignCondAlg     INFO recorded new CDO SCTAlignmentStore with range {[189751,l:0] - [189752,l:115]} into Conditions Store
+SCT_DetectorEle...   INFO recorded new CDO SCT_DetectorElementCollection with range {[189751,l:0] - [189752,l:115]} with size of 8176 into Conditions Store
 PixelDetectorMa...   INFO Processing IBLDist alignment container with key /Indet/IBLDist
-PixelAlignCondAlg    INFO recorded new CDO PixelAlignmentStore with range {[189750,t:0,l:4294777545] - [189751,l:4294777544]} into Conditions Store
-PixelDetectorEl...   INFO recorded new CDO PixelDetectorElementCollection with range {[189750,t:0,l:4294777545] - [189751,l:4294777544]} with size of 1744 into Conditions Store
-ClassIDSvc           INFO  getRegistryEntries: read 58 CLIDRegistry entries for module ALL
-RootDatabase.open    INFO /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/aod/AOD-20.0.0.3/AOD-20.0.0.3-full.pool.root File version:53424
-/cvmfs/atlas-co...   INFO Database being retired...
+PixelAlignCondAlg    INFO recorded new CDO PixelAlignmentStore with range {[189751,t:0,l:0] - [189752,l:115]} into Conditions Store
+PixelDetectorEl...   INFO recorded new CDO PixelDetectorElementCollection with range {[189751,t:0,l:0] - [189752,l:115]} with size of 1744 into Conditions Store
+ClassIDSvc           INFO  getRegistryEntries: read 54 CLIDRegistry entries for module ALL
+RootDatabase.open    INFO /home/sss/nobackup/referencefiles/aod/AOD-20.0.0.3/AOD-20.0.0.3-full.pool.root File version:53424
+/home/sss/atlas...   INFO Database being retired...
 Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] AC64B64A-71FE-E011-83C1-001E4F3E59B1
-ClassIDSvc           INFO  getRegistryEntries: read 22 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 26 CLIDRegistry entries for module ALL
 AthenaEventLoopMgr   INFO   ===>>>  done processing event #35002, run #189751 1 events processed so far  <<<===
-ClassIDSvc           INFO  getRegistryEntries: read 8 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 9 CLIDRegistry entries for module ALL
 AthenaEventLoopMgr   INFO   ===>>>  start processing event #35003, run #189751 1 events processed so far  <<<===
 AthenaEventLoopMgr   INFO   ===>>>  done processing event #35003, run #189751 2 events processed so far  <<<===
 AthenaEventLoopMgr   INFO   ===>>>  start processing event #35004, run #189751 2 events processed so far  <<<===
@@ -728,57 +725,56 @@ AthenaEventLoopMgr   INFO   ===>>>  done processing event #35010, run #189751 9
 AthenaEventLoopMgr   INFO   ===>>>  start processing event #35011, run #189751 9 events processed so far  <<<===
 AthenaEventLoopMgr   INFO   ===>>>  done processing event #35011, run #189751 10 events processed so far  <<<===
 EventSelector        INFO Disconnecting input sourceID: 76376094-4CF4-084F-B321-C5E2CEE3F29D
-/cvmfs/atlas-ni...   INFO Database being retired...
+/home/sss/nobac...   INFO Database being retired...
 Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] 76376094-4CF4-084F-B321-C5E2CEE3F29D
 AthenaEventLoopMgr   INFO No more events in event selection 
-/cvmfs/atlas-co...   INFO Database being retired...
-/cvmfs/atlas-co...   INFO Database being retired...
-/cvmfs/atlas-co...   INFO Database being retired...
-/cvmfs/atlas-co...   INFO Database being retired...
+/home/sss/atlas...   INFO Database being retired...
+/home/sss/atlas...   INFO Database being retired...
+/home/sss/atlas...   INFO Database being retired...
 Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] 26AD0F0C-EC4D-DF11-99D0-001EC959A004
-/cvmfs/atlas-co...   INFO Database being retired...
+/home/sss/atlas...   INFO Database being retired...
 Domain[ROOT_All]     INFO ->  Deaccess DbDatabase   READ      [ROOT_All] 564393DD-6BBF-E111-9C06-003048D3C892
-/cvmfs/atlas-co...   INFO Database being retired...
-/cvmfs/atlas-co...   INFO Database being retired...
+/home/sss/atlas...   INFO Database being retired...
+/home/sss/atlas...   INFO Database being retired...
+/home/sss/atlas...   INFO Database being retired...
 Domain[ROOT_All]     INFO >   Deaccess DbDomain     READ      [ROOT_All] 
 ApplicationMgr       INFO Application Manager Stopped successfully
 IncidentProcAlg1     INFO Finalize
 CondInputLoader      INFO Finalizing CondInputLoader...
 dumper               INFO Finalizing dumper...
-ERROR running diff with reference
-diff: ../../share/AOD-20.0.0.3-full.pool.root.ref: No such file or directory
 IncidentProcAlg2     INFO Finalize
 PyComponentMgr       INFO Finalizing PyComponentMgr...
 IdDictDetDescrCnv    INFO in finalize
-IOVDbFolder          INFO Folder /Indet/Align (PoolRefColl) db-read 1/2 objs/chan/bytes 34/43/5440 ((     0.03 ))s
-IOVDbFolder          INFO Folder /Indet/IBLDist (AttrListColl) db-read 1/2 objs/chan/bytes 14/14/280 ((     0.01 ))s
-IOVDbFolder          INFO Folder /Indet/PixelDist (PoolRef) db-read 1/1 objs/chan/bytes 1/1/174 ((     0.02 ))s
-IOVDbFolder          INFO Folder /MUONALIGN/ERRS (AttrListColl) db-read 1/1 objs/chan/bytes 1/1/3489 ((     0.03 ))s
-IOVDbFolder          INFO Folder /MUONALIGN/MDT/BARREL (AttrListColl) db-read 1/1 objs/chan/bytes 1/1/84 ((     0.02 ))s
-IOVDbFolder          INFO Folder /MUONALIGN/MDT/ENDCAP/SIDEA (AttrListColl) db-read 1/1 objs/chan/bytes 1/1/84 ((     0.02 ))s
-IOVDbFolder          INFO Folder /MUONALIGN/MDT/ENDCAP/SIDEC (AttrListColl) db-read 1/1 objs/chan/bytes 1/1/84 ((     0.02 ))s
-IOVDbFolder          INFO Folder /MUONALIGN/TGC/SIDEA (AttrListColl) db-read 1/1 objs/chan/bytes 1/1/1106 ((     0.02 ))s
-IOVDbFolder          INFO Folder /MUONALIGN/TGC/SIDEC (AttrListColl) db-read 1/1 objs/chan/bytes 1/1/1106 ((     0.03 ))s
-IOVDbFolder          INFO Folder /TRT/Align (PoolRefColl) db-read 1/2 objs/chan/bytes 32/32/5120 ((     0.03 ))s
-IOVDbFolder          INFO Folder /TRT/Calib/DX (PoolRef) db-read 1/1 objs/chan/bytes 1/1/183 ((     0.02 ))s
-IOVDbFolder          INFO Folder /TRT/Cond/Status (PoolRefColl) db-read 1/1 objs/chan/bytes 36/36/6552 ((     0.02 ))s
-IOVDbFolder          INFO Folder /TRT/Cond/StatusHT (PoolRefColl) db-read 1/1 objs/chan/bytes 35/35/6370 ((     0.02 ))s
-IOVDbFolder          INFO Folder /TRT/Cond/StatusPermanent (PoolRefColl) db-read 1/1 objs/chan/bytes 35/36/6370 ((     0.02 ))s
+IOVDbFolder          INFO Folder /Indet/Align (PoolRefColl) db-read 1/2 objs/chan/bytes 34/43/5440 ((     0.08 ))s
+IOVDbFolder          INFO Folder /Indet/IBLDist (AttrListColl) db-read 1/2 objs/chan/bytes 14/14/280 ((     0.00 ))s
+IOVDbFolder          INFO Folder /Indet/PixelDist (PoolRef) db-read 1/1 objs/chan/bytes 1/1/174 ((     0.00 ))s
+IOVDbFolder          INFO Folder /MUONALIGN/ERRS (AttrListColl) db-read 1/1 objs/chan/bytes 1/1/3489 ((     0.07 ))s
+IOVDbFolder          INFO Folder /MUONALIGN/MDT/BARREL (AttrListColl) db-read 6/1 objs/chan/bytes 6/3/504 ((     0.35 ))s
+IOVDbFolder          INFO Folder /MUONALIGN/MDT/ENDCAP/SIDEA (AttrListColl) db-read 6/1 objs/chan/bytes 6/3/504 ((     0.01 ))s
+IOVDbFolder          INFO Folder /MUONALIGN/MDT/ENDCAP/SIDEC (AttrListColl) db-read 6/1 objs/chan/bytes 6/3/504 ((     0.01 ))s
+IOVDbFolder          INFO Folder /MUONALIGN/TGC/SIDEA (AttrListColl) db-read 6/1 objs/chan/bytes 6/3/6636 ((     0.01 ))s
+IOVDbFolder          INFO Folder /MUONALIGN/TGC/SIDEC (AttrListColl) db-read 6/1 objs/chan/bytes 6/3/6636 ((     0.01 ))s
+IOVDbFolder          INFO Folder /TRT/Align (PoolRefColl) db-read 1/2 objs/chan/bytes 32/32/5120 ((     0.07 ))s
+IOVDbFolder          INFO Folder /TRT/Calib/DX (PoolRef) db-read 1/1 objs/chan/bytes 1/1/183 ((     0.00 ))s
+IOVDbFolder          INFO Folder /TRT/Cond/Status (PoolRefColl) db-read 1/1 objs/chan/bytes 36/36/6552 ((     0.00 ))s
+IOVDbFolder          INFO Folder /TRT/Cond/StatusHT (PoolRefColl) db-read 1/1 objs/chan/bytes 35/35/6370 ((     0.00 ))s
+IOVDbFolder          INFO Folder /TRT/Cond/StatusPermanent (PoolRefColl) db-read 1/1 objs/chan/bytes 35/36/6370 ((     0.00 ))s
 IOVDbFolder          INFO Folder /TagInfo (AttrListColl) db-read 0/2 objs/chan/bytes 2/0/0 ((     0.00 ))s
-IOVDbSvc             INFO  bytes in ((      0.32 ))s
+IOVDbSvc             INFO  bytes in ((      0.61 ))s
 IOVDbSvc             INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: ((     0.00 ))s
-IOVDbSvc             INFO Connection COOLOFL_MUONALIGN/OFLP200 : nConnect: 2 nFolders: 6 ReadTime: ((     0.16 ))s
-IOVDbSvc             INFO Connection COOLOFL_TRT/OFLP200 : nConnect: 2 nFolders: 5 ReadTime: ((     0.11 ))s
-IOVDbSvc             INFO Connection COOLOFL_INDET/OFLP200 : nConnect: 2 nFolders: 3 ReadTime: ((     0.06 ))s
+IOVDbSvc             INFO Connection COOLOFL_MUONALIGN/OFLP200 : nConnect: 7 nFolders: 6 ReadTime: ((     0.45 ))s
+IOVDbSvc             INFO Connection COOLOFL_TRT/OFLP200 : nConnect: 2 nFolders: 5 ReadTime: ((     0.08 ))s
+IOVDbSvc             INFO Connection COOLOFL_INDET/OFLP200 : nConnect: 2 nFolders: 3 ReadTime: ((     0.08 ))s
 XMLCatalog           INFO File 'PoolFileCatalog.xml' does not exist. New file created.
 AthDictLoaderSvc     INFO in finalize...
 ToolSvc              INFO Removing all tools created by ToolSvc
+GeoModelSvc.TRT...   INFO  in finalize() 
 *****Chrono*****     INFO ****************************************************************************************************
 *****Chrono*****     INFO  The Final CPU consumption ( Chrono ) Table (ordered)
 *****Chrono*****     INFO ****************************************************************************************************
-cObjR_ALL            INFO Time User   : Tot=  200 [ms] Ave/Min/Max=0.694(+- 7.28)/    0/  120 [ms] #=288
-cObj_ALL             INFO Time User   : Tot=  260 [ms] Ave/Min/Max= 4.81(+- 19.4)/    0/  140 [ms] #= 54
-ChronoStatSvc        INFO Time User   : Tot= 11.3  [s]                                             #=  1
+cObjR_ALL            INFO Time User   : Tot=  220 [ms] Ave/Min/Max=   0.764(+-    8.46)/       0/     140 [ms] #=288
+cObj_ALL             INFO Time User   : Tot=  370 [ms] Ave/Min/Max=    6.85(+-    25.2)/       0/     180 [ms] #= 54
+ChronoStatSvc        INFO Time User   : Tot=  156  [s]  #=  1
 *****Chrono*****     INFO ****************************************************************************************************
 ChronoStatSvc.f...   INFO  Service finalized successfully 
 ApplicationMgr       INFO Application Manager Finalized successfully
diff --git a/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/CMakeLists.txt b/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/CMakeLists.txt
deleted file mode 100644
index dad6c4d4a5c7760b3750e2852945691768f1f827..0000000000000000000000000000000000000000
--- a/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/CMakeLists.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-################################################################################
-# Package: TrigConf2COOLOnline
-################################################################################
-
-# Declare the package name:
-atlas_subdir( TrigConf2COOLOnline )
-
-# External dependencies:
-find_package( Boost COMPONENTS program_options )
-find_package( COOL COMPONENTS CoolKernel CoolApplication )
-find_package( tdaq COMPONENTS daq-core-dal daq-hlt-dal 
-              rc_CmdLine rc_ItemCtrl rc_OnlSvc rc_RCCommands omniORB4 omnithread owl is ipc config TTCInfo)
-find_package( tdaq-common COMPONENTS ers )
-find_package( TBB )
-
-# Component(s) in the package:
-atlas_add_library( TrigConf2COOLOnline
-   src/*.cxx
-   PUBLIC_HEADERS TrigConf2COOLOnline
-   INCLUDE_DIRS ${TDAQ-COMMON_INCLUDE_DIRS} ${TDAQ_INCLUDE_DIRS}
-   PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${COOL_INCLUDE_DIRS}
-   ${TBB_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}
-   LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} ${TDAQ_LIBRARIES}
-   PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} ${COOL_LIBRARIES} ${TBB_LIBRARIES}
-   TrigConfHLTData TrigConfL1Data TrigConfStorage )
-
-atlas_add_executable( TrigConf2CoolOnline
-   src/TrigConf2CoolOnline.cxx
-   INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${TDAQ-COMMON_INCLUDE_DIRS}
-   ${TDAQ_INCLUDE_DIRS}
-   LINK_LIBRARIES ${Boost_LIBRARIES} ${TDAQ-COMMON_LIBRARIES} ${TDAQ_LIBRARIES}
-   TrigConf2COOLOnline )
-
diff --git a/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/TrigConf2COOLOnline/OnlTrigC2CWriter.h b/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/TrigConf2COOLOnline/OnlTrigC2CWriter.h
deleted file mode 100644
index 1a0a9a735dbb963f5f7226d813c63d2f9a33168f..0000000000000000000000000000000000000000
--- a/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/TrigConf2COOLOnline/OnlTrigC2CWriter.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-*/
-
-/*
- * @file OnlTrigC2CWriter.h
- * @author Joerg Stelzer
- * $Author: stelzer $
- * $Revision: 1.1 $
- * $Date: 2008-07-28 13:58:08 $
- *
- * @brief the online controlable class for writing configuration
- * information from the TriggerDB to COOL
- */
-
-#ifndef TRIGCONF_ONLTRIGC2CWRITER_H
-#define TRIGCONF_ONLTRIGC2CWRITER_H
-
-#include <string>
-#include <iostream>
-#include "TrigConf2COOLOnline/TC2CConfig.h"
-#include "RunControl/Common/Controllable.h"
-#include "ipc/partition.h"
-#include "is/infodictionary.h"
-
-namespace TrigConf {
-  class OnlTrigC2CWriter;
-  class TrigConfCoolWriter;
-  class HLTFrame;
-  class CTPConfig;
-}
-
-class ISInfoReceiver;
-class ISCallbackInfo;
-class ISInfoDictionary;
-class IPCPartition;
-
-class TrigConf::OnlTrigC2CWriter : public daq::rc::Controllable {
-public:
-
-   /**@brief:constructor.
-    * @param name: this is the named published in IPC (required)
-    */
-   OnlTrigC2CWriter(const std::string & partitionName, const std::string & cooldb, const std::string& triggerdb, bool l1is, bool l1cool, bool mckcool = false );
-   OnlTrigC2CWriter(const OnlTrigC2CWriter&) = delete;
-   OnlTrigC2CWriter& operator=(OnlTrigC2CWriter const&) = delete;
-  
-   virtual ~OnlTrigC2CWriter() noexcept;
-   virtual void configure    (const daq::rc::TransitionCmd&) override;
-   virtual void connect      (const daq::rc::TransitionCmd&) override;     //< connect to COOL and to TriggerDB
-   virtual void prepareForRun(const daq::rc::TransitionCmd&) override;
-   virtual void unconfigure  (const daq::rc::TransitionCmd&) override;
-   virtual void user         (const daq::rc::UserCmd& usrCmd) override;
-   virtual void stopArchiving(const daq::rc::TransitionCmd& cmd) override;
-
-   TC2CConfig& conf() { return m_jobConfig; }
-
-private:
-
-   bool readOKS(); // reading the configuration from OKS
-
-   bool subscribeToIS(); // subscribe to IS
-
-   void publishToIS(); // publish to IS
-
-   void readTriggerDb(); // read HLT menu from TriggerDB
-
-   void runNumberCallback(ISCallbackInfo *isc);
-
-   void readRunNumberFromIS();
-
-   void writeHLTPrescaleSetToCool(unsigned int lb, unsigned int pskey, std::string& name);
-
-   TC2CConfig                       m_jobConfig; // object to hold different configuration parameters
-   TrigConf::TrigConfCoolWriter*    m_conf2Cool; // the class that does all the work
-   std::string                      m_triggerDB;
-   ISInfoReceiver*                  m_infoRec;
-   IPCPartition*                    m_IPCPartition; // the ipc partition object
-
-   TrigConf::HLTFrame*              m_HLTFrame;  // pointer to the HLTFrame (could be skipped at the moment since it is still a singleton)
-   TrigConf::CTPConfig*             m_CTPConfig; // the pointer to the lvl1 ctpc;
-   bool m_forceTriggerDBReadAtPrepareForRun { false };
-    
-};
-
-#endif
diff --git a/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/TrigConf2COOLOnline/TC2CConfig.h b/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/TrigConf2COOLOnline/TC2CConfig.h
deleted file mode 100644
index 4b323b40abcedb389d52b23316c980ec906fbda0..0000000000000000000000000000000000000000
--- a/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/TrigConf2COOLOnline/TC2CConfig.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef TRIGCONF_TC2CCONFIG
-#define TRIGCONF_TC2CCONFIG
-
-#include <string>
-#include <iosfwd>
-
-class TC2CConfig;
-
-std::ostream& operator<<( std::ostream& os, const TC2CConfig& event );
-
-class TC2CConfig {
-     
-   friend std::ostream& operator<<( std::ostream& os, const TC2CConfig& event );
-
-public:
-   TC2CConfig();
-   ~TC2CConfig();
-
-   std::string&     PartitionName()        { return fPartitionName; }
-   std::string&     CoolDb()               { return fCoolDb; }
-   std::string&     DBType()               { return fDBType; }
-   std::string&     DBServer()             { return fDBServer; }
-   std::string&     DBConnection()         { return fDBConnection; }
-   std::string&     DBUser()               { return fDBUser; }
-   std::string&     DBPasswd()             { return fDBPasswd; }
-   std::string&     DBName()               { return fDBName; }
-   unsigned long&   DBSMK()                { return fDBSMK; }
-   unsigned long&   DBL1PSK()              { return fDBL1PSK; }
-   unsigned long&   DBHLTPSK()             { return fDBHLTPSK; }
-   std::string&     DBSMcomment()          { return fDBSMcomment; }
-   std::string&     DBL1PScomment()        { return fDBL1PScomment; }
-   std::string&     DBHLTPScomment()       { return fDBHLTPScomment; }
-   bool&            UseTriggerDB()         { return fUseTriggerDB; }
-   uint32_t&        CurrentRunNumber()     { return fCurrentRunNumber; }
-   uint32_t&        LastWrittenRunNumber() { return fLastWrittenRunNumber; }
-   bool&            COOLconnStat()         { return fCOOLconnStat; }
-   bool&            TriggerDBconnStat()    { return fTriggerDBconnStat; }
-   bool&            L1toIS()               { return fL1toIS; }
-   bool&            L1toCOOL()             { return fL1toCOOL; }
-
-   void             TriggerDbConnectionParams(std::string& conn, std::string& user, std::string& pw);
-    
-   bool&                MCKtoCOOL() { return fMCKtoCOOL; }
-    
-   unsigned long&       DBMCK() { return fDBMCK; }
-   std::string&         DBMCKrelease() { return fDBMCKrelease; }
-   std::string&         DBMCKinfo() { return fDBMCKinfo; }
-
-
-private:
-   std::string        fPartitionName {""};
-   std::string        fCoolDb        {""};
-   std::string        fDBType        {""};
-   std::string        fDBServer      {""};
-   std::string        fDBConnection  {""};
-   std::string        fDBUser        {""};
-   std::string        fDBPasswd      {""};
-   std::string        fDBName        {""};
-   unsigned long      fDBSMK    {0};
-   unsigned long      fDBL1PSK  {0};
-   unsigned long      fDBHLTPSK {0};
-   std::string        fDBSMcomment    {""};
-   std::string        fDBL1PScomment  {""};
-   std::string        fDBHLTPScomment {""};
-   bool               fUseTriggerDB {false};
-   uint32_t           fCurrentRunNumber     {0};
-   uint32_t           fLastWrittenRunNumber {0};
-   bool               fCOOLconnStat {false};
-   bool               fTriggerDBconnStat {false};
-   bool               fL1toIS {false};
-   bool               fL1toCOOL {false};
-    
-    bool                fMCKtoCOOL {false};
-    
-    unsigned long       fDBMCK {0};
-    std::string         fDBMCKrelease {""};
-    std::string         fDBMCKinfo {""};
-
-};
-#endif																																											
diff --git a/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/src/OnlTrigC2CWriter.cxx b/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/src/OnlTrigC2CWriter.cxx
deleted file mode 100644
index 0054daf58941193c2ef10be1169b7eae4b519524..0000000000000000000000000000000000000000
--- a/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/src/OnlTrigC2CWriter.cxx
+++ /dev/null
@@ -1,685 +0,0 @@
-/*
-  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
-*/
-
-
-#undef PACKAGE_VERSION
-
-#include "TrigConfStorage/TrigConfCoolWriter.h"
-#include "TrigConfStorage/StorageMgr.h"
-#include "TrigConfStorage/MCKLoader.h"
-
-#include "CoolKernel/Exception.h"
-
-#include "TrigConfL1Data/CTPConfig.h"
-#include "TrigConfHLTData/HLTFrame.h"
-#include "TrigConfHLTData/HLTPrescaleSet.h"
-
-#include "TrigConf2COOLOnline/OnlTrigC2CWriter.h"
-
-#include "TTCInfo/TrigConfSmKeyNamed.h"
-#include "TTCInfo/TrigConfL1PsKeyNamed.h"
-#include "TTCInfo/TrigConfHltPsKeyNamed.h"
-#include "TTCInfo/TrigConfReleaseNamed.h"
-
-#include "config/Configuration.h"
-
-#include "dal/Partition.h"
-#include "dal/TriggerConfiguration.h"
-#include "dal/TriggerDBConnection.h"
-#include "dal/L1TriggerConfiguration.h"
-#include "HLTPUDal/HLTImplementationDB.h"
-
-#include "RunControl/Common/Exceptions.h"
-#include "RunControl/Common/RunControlCommands.h"
-#include "RunControl/Common/OnlineServices.h"
-
-#include "ipc/partition.h"
-#include "is/inforeceiver.h"
-#include "is/infoany.h"
-#include "is/info.h"
-#include "is/infodictionary.h"
-
-#include "ers/ers.h"
-
-#include "rc/RunParams.h"
-#include "rc/RunParamsNamed.h"
-
-#include "boost/lexical_cast.hpp"
-#include "boost/algorithm/string.hpp"
-
-#include <algorithm>
-#include <iostream>
-
-ERS_DECLARE_ISSUE( TrigConf,
-                   BadCoolDB,
-                   "Archiving to COOL failed because " << explanation,
-                   ((const char*) explanation)
-                   )
-
-ERS_DECLARE_ISSUE( TrigConf,
-                   CoolWriting,
-                   "Archiving to COOL failed because " << explanation,
-                   ((const char*) explanation)
-                   )
-
-ERS_DECLARE_ISSUE( TrigConf,
-                   InvalidConfiguration,
-                   "Configuration error - " << explanation,
-                   ((const char*) explanation)
-                   )
-
-ERS_DECLARE_ISSUE( TrigConf,
-                   TriggerDBReadError,
-                   "Error when reading TriggerDB: " << explanation,
-                   ((const char*) explanation)
-                   )
-
-ERS_DECLARE_ISSUE( TrigConf,
-                   ISPublishing,
-                   "IS publishing error: " << explanation,
-                   ((const char*) explanation)
-                   )
-
-ERS_DECLARE_ISSUE( TrigConf,
-                   InvalidUserCommand,
-                   "Invalid user command: " << explanation,
-                   ((const char*) explanation)
-                   )
-
-using namespace std;
-using namespace TrigConf;
-
-OnlTrigC2CWriter::OnlTrigC2CWriter(const std::string & partitionName, const std::string& cooldb, const std::string& triggerdb, bool l1is, bool l1cool, bool mckcool ) :
-   Controllable()
-   , m_conf2Cool( new TrigConfCoolWriter(cooldb) )
-   , m_triggerDB(triggerdb)
-   , m_infoRec(0)
-   , m_IPCPartition(0)
-   , m_HLTFrame(0)
-   , m_CTPConfig(0)
-{
-    conf().CoolDb()        = cooldb;
-    conf().L1toIS()        = l1is;
-    conf().L1toCOOL()      = l1cool;
-    conf().PartitionName() = partitionName;
-    conf().MCKtoCOOL()     = mckcool;
-
-    m_IPCPartition = new IPCPartition( conf().PartitionName() );
-}
-
-TrigConf::OnlTrigC2CWriter::~OnlTrigC2CWriter() noexcept {
-   delete m_IPCPartition;
-   delete m_HLTFrame;
-   delete m_CTPConfig;
-   delete m_conf2Cool;
-   delete m_infoRec;
-}
-
-
-bool
-OnlTrigC2CWriter::readOKS() {
-
-    ERS_INFO("Reading configuration for partition " << conf().PartitionName());
-
-    try {
-        Configuration& oks = daq::rc::OnlineServices::instance().getConfiguration();
-
-        // get partition
-        const daq::core::Partition& partition = daq::rc::OnlineServices::instance().getPartition();
-
-        // get trigger configuration
-        const daq::core::TriggerConfiguration* triggerConfig = partition.get_TriggerConfiguration();
-        if( triggerConfig == 0)
-            throw daq::rc::ConfigurationIssue(ERS_HERE, "No trigger configuration object in partition!");
-
-
-        // LVL1 configuration object (to get L1 PSK)
-        const daq::core::L1TriggerConfiguration * l1Config = triggerConfig->get_l1();
-        if(l1Config!=0) {
-            conf().DBL1PSK() = l1Config->get_Lvl1PrescaleKey();
-            ERS_INFO("Read L1 PSK " << conf().DBL1PSK() );
-        } else {
-            conf().DBL1PSK() = 0;
-            ERS_INFO("No LVL1 configuration.");
-        }
-
-
-        // get the HLT configuration
-        const daq::core::HLTImplementation * hlt = triggerConfig->get_hlt();
-        if(hlt==0) {
-            ERS_INFO("No HLTImplementation configured");
-            return false;
-        } else {
-            ERS_INFO("Found HLT Implementation" << *hlt << " ... " << hlt->UID());
-        }
-
-        const daq::hlt::HLTImplementationDB* hltDB = oks.get<daq::hlt::HLTImplementationDB>( hlt->UID() );
-        if(hltDB==0)
-            ERS_INFO("HLT implementation '" << hlt->UID() << "' is not for running from TriggerDB.");
-
-        // setting the HLT prescale key
-        conf().DBHLTPSK() = hltDB!=0 ? boost::lexical_cast<unsigned long,std::string>( hltDB->get_hltPrescaleKey() ) : 0;
-
-        // get the DB connection
-        const daq::core::TriggerDBConnection * trigDb = triggerConfig->get_TriggerDBConnection();
-        conf().UseTriggerDB() = (trigDb!=0);
-        if( conf().UseTriggerDB() ) {
-            conf().DBSMK()    = trigDb->get_SuperMasterKey();
-            if (trigDb->get_Alias()!="") {
-                conf().DBType()   = "dblookup";
-                conf().DBServer() = trigDb->get_Alias();
-            }
-            else {
-                conf().DBType()   = trigDb->get_Type();
-                conf().DBServer() = trigDb->get_Server();
-                conf().DBUser()   = trigDb->get_User();
-                conf().DBPasswd() = trigDb->get_Password();
-                conf().DBName()   = trigDb->get_Name();
-            }
-        } else {
-            ERS_INFO("TriggerDBConnection not set in '" << triggerConfig->full_name() << "'");
-        }
-    }
-    catch (const daq::rc::ConfigurationIssue & e) {
-        InvalidConfiguration issue(ERS_HERE, e.what());
-        ers::fatal(issue);
-        return false;
-    }
-    catch (const daq::config::Generic & e) {
-        InvalidConfiguration issue(ERS_HERE, e.what());
-        ers::fatal(issue);
-        return false;
-    }
-
-    //ERS_LOG("" << "\nRead configuration needed for " << getName() << " from oks\n");  // this is like cout but with time and line info
-
-    return true;
-}
-
-bool
-TrigConf::OnlTrigC2CWriter::subscribeToIS() {
-
-    ERS_INFO("subscribing to IS (RunParams).");
-
-    if(!m_infoRec) m_infoRec = new ISInfoReceiver(*m_IPCPartition);
-
-    try {
-        m_infoRec->subscribe("RunParams.SOR_RunParams", &OnlTrigC2CWriter::runNumberCallback, this);
-    }
-    catch (const daq::is::Exception & ex ) {
-        ers::fatal(ex);
-        return false;
-    }
-    return true;
-}
-
-
-void
-TrigConf::OnlTrigC2CWriter::readRunNumberFromIS() {
-
-    ERS_INFO("readRunNumberFromIS entered");
-
-    RunParamsNamed rp(*m_IPCPartition,"RunParams.SOR_RunParams");
-
-    rp.checkout();
-
-    conf().CurrentRunNumber() = rp.run_number;
-
-    ERS_INFO("Read new run number: " << conf().CurrentRunNumber());
-
-}
-
-void
-TrigConf::OnlTrigC2CWriter::runNumberCallback(ISCallbackInfo *isc) {
-    if (isc->reason() == is::Deleted)
-        return;
-
-    RunParams sor;
-    isc->value(sor);
-
-    conf().CurrentRunNumber() = sor.run_number;
-
-    ERS_INFO("Received new run number: " << conf().CurrentRunNumber());
-
-    return;
-}
-
-void
-TrigConf::OnlTrigC2CWriter::publishToIS() {
-    ERS_INFO("Publish to IS");
-
-    TrigConfSmKeyNamed sm(*m_IPCPartition,"RunParams.TrigConfSmKey");
-    sm.SuperMasterKey     = conf().DBSMK();
-    sm.SuperMasterComment = conf().DBSMcomment();
-
-    TrigConfL1PsKeyNamed l1ps(*m_IPCPartition,"RunParams.TrigConfL1PsKey");
-    l1ps.L1PrescaleKey     = conf().DBL1PSK();
-    l1ps.L1PrescaleComment = conf().DBL1PScomment();
-
-    TrigConfHltPsKeyNamed hltps(*m_IPCPartition,"RunParams.TrigConfHltPsKey");
-    hltps.HltPrescaleKey     = conf().DBHLTPSK();
-    hltps.HltPrescaleComment = conf().DBHLTPScomment();
-
-    TrigConfReleaseNamed rel(*m_IPCPartition,"RunParams.TrigConfRelease");
-    rel.HLTReleaseVersion = getenv("AtlasVersion")?getenv("AtlasVersion"):"Unknown Version";
-
-    if(getenv("AtlasProject")) {
-        rel.HLTPatchProject = getenv("AtlasProject");
-    } else {
-        rel.HLTPatchProject = "Unknown Project";
-    }
-    rel.HLTExtraPatch = "";
-
-    sm.print(std::cout);
-    l1ps.print(std::cout);
-    hltps.print(std::cout);
-    rel.print(std::cout);
-
-    try {
-        sm.checkin();
-        if(conf().L1toIS()) l1ps.checkin();
-        hltps.checkin();
-        rel.checkin();
-    }
-    catch (daq::is::Exception& ex) {
-        TrigConf::ISPublishing issue(ERS_HERE, ex.what());
-        ers::fatal(issue);
-    }
-    catch (std::exception & ex) {
-        TrigConf::ISPublishing issue(ERS_HERE, ex.what());
-        ers::fatal(issue);
-    }
-    catch (CORBA::SystemException& ex) {
-        TrigConf::ISPublishing issue(ERS_HERE, ex._name());
-        ers::fatal(issue);
-    }
-    catch (...) {
-        TrigConf::ISPublishing issue(ERS_HERE,"unknown exception");
-        ers::fatal(issue);
-        //throw;
-    }
-
-}
-
-void
-TrigConf::OnlTrigC2CWriter::readTriggerDb() {
-
-    if(!conf().UseTriggerDB()) return;
-
-    m_forceTriggerDBReadAtPrepareForRun = false;
-
-    // clear the menu
-    delete m_HLTFrame; m_HLTFrame = 0;
-
-
-    // get the TriggerDB connection
-    std::string conn, user, pw;
-    conf().TriggerDbConnectionParams(conn,user,pw);
-    if(m_triggerDB!="") {
-        conn = m_triggerDB;
-    }
-    cout << "Using triggerdb connection : " << conn << endl;
-    //    cout << "user : " << user << endl;
-    //    cout << "pw   : " << pw << endl;
-
-    std::unique_ptr< StorageMgr > sm( new StorageMgr(conn,user,pw, cout) );
-
-    sm->sessionMgr();
-
-    conf().DBConnection() = sm->sessionMgr().connection();
-
-    if(conf().DBSMK()!=0 && conf().DBHLTPSK()!=0) {
-
-        m_HLTFrame = new HLTFrame();
-
-        ERS_INFO("Reading HLT menu from the TriggerDB with SMK " << conf().DBSMK() << " and HLT PSK " << conf().DBHLTPSK() << ".");
-
-        m_HLTFrame->setSMK(conf().DBSMK());
-        m_HLTFrame->thePrescaleSetCollection().set_prescale_key_to_load( conf().DBHLTPSK() );
-        try {
-            sm->hltFrameLoader().load( *m_HLTFrame );
-        }
-        catch(const std::exception & e) {
-            TrigConf::TriggerDBReadError issue(ERS_HERE, e.what());
-            ers::fatal(issue);
-        }
-        //fHLTPrescaleSet->fillFromFrame(m_HLTFrame);
-        conf().DBSMcomment() = m_HLTFrame->name();
-        conf().DBHLTPScomment() = m_HLTFrame->getPrescaleSetCollection().prescaleSet()->name();
-
-        ERS_INFO("Done reading HLT menu");
-
-    } else {
-        ERS_INFO("Will not read SMK since one of these keys is 0: SMK = " << conf().DBSMK() << ", HLT PSK = " << conf().DBHLTPSK() << ".");
-        conf().DBHLTPScomment() = "No HLT Prescale key specified";
-        conf().DBSMcomment() = "Not read since HLT prescale key was not specified";
-        conf().DBHLTPSK()=0;
-    }
-
-    if ( conf().MCKtoCOOL() ) {
-        if ( conf().DBSMK()!=0 ) {
-            ERS_INFO("Reading Menu-aware Monitoring MCK from the TriggerDB with SMK " << conf().DBSMK() << ".");
-
-            try {
-                // get the mck
-                uint mck {0};
-                std::string release {""};
-                auto fMCKLoader = new MCKLoader(*sm);
-                fMCKLoader->loadMCKlinkedToSMK(conf().DBSMK(), mck);
-                conf().DBMCK() = mck;
-                if ( conf().DBMCK() !=0 ) {
-                    fMCKLoader->loadReleaseLinkedToMCK(conf().DBMCK(), release);
-                    conf().DBMCKrelease() = release;
-                }
-            }
-            catch(const std::exception & e) {
-                TrigConf::TriggerDBReadError issue(ERS_HERE, e.what());
-                ers::error(issue);
-            }
-
-            ERS_INFO("Done reading MCK " << conf().DBMCK() << " for release " << conf().DBMCKrelease() << ".");
-        } else {
-            ERS_INFO("Will not read MCK since SMK is 0: SMK = " << conf().DBSMK() << ".");
-            conf().DBMCKinfo() = "Not read since SMK not specified";
-        }
-    } else {
-        ERS_INFO("Writing of MCK in HLT archiver is disabled");
-    }
-
-    if( conf().L1toCOOL() ) {
-        if( conf().DBSMK()!=0 ) {
-            ERS_INFO("Reading LVL1 menu from the TriggerDB");
-
-            // write also the L1 stuff to COOL (key+menu+prescales)
-            // should only happen in rare circumstances
-            delete m_CTPConfig;
-            m_CTPConfig = new CTPConfig();
-
-            m_CTPConfig->setSuperMasterTableId(conf().DBSMK());
-            try {
-                sm->masterTableLoader().load(*m_CTPConfig);
-            }
-            catch(const std::exception& e) {
-                TrigConf::TriggerDBReadError issue(ERS_HERE, e.what());
-                ers::fatal(issue);
-            }
-            ERS_INFO("LVL1 menu read");
-
-            // prescales
-            PrescaleSet l1pss;
-            l1pss.setId(conf().DBL1PSK());
-            try {
-                sm->prescaleSetLoader().load(l1pss);
-            }
-            catch(const std::exception& e) {
-                TrigConf::TriggerDBReadError issue(ERS_HERE, e.what());
-                ers::fatal(issue);
-            }
-            ERS_INFO("LVL1 prescales read");
-
-            m_CTPConfig->setPrescaleSet( l1pss );
-
-        }
-    } else {
-        ERS_INFO("Writing of LVL1 menu in HLT archiver is disabled");
-    }
-}
-
-void
-TrigConf::OnlTrigC2CWriter::configure(const daq::rc::TransitionCmd& cmd) {
-    ERS_INFO("CONFIGURE(" << cmd.toString() << ") -> read OKS, subscribe to IS for run number, read hlt config from TriggerDB.");
-    readOKS();
-    ERS_INFO(conf());
-    subscribeToIS();
-    readTriggerDb();
-}
-
-
-void
-TrigConf::OnlTrigC2CWriter::connect(const daq::rc::TransitionCmd& cmd) {
-    if(conf().UseTriggerDB()) {
-        ERS_INFO("CONNECT(" << cmd.toString() << ") -> check COOL connection, publish to IS");
-    } else {
-        ERS_INFO("CONNECT(" << cmd.toString() << ") -> nothing to do since we are not running from the TriggerDB");
-        return;
-    }
-    // first thing to do is to check the connection to COOL. We quickly open and close.
-    ERS_INFO("Checking COOL DB connection.");
-    try {
-        m_conf2Cool->checkDbConnection(false);
-    }
-    catch(cool::Exception& e) {
-        TrigConf::BadCoolDB issue(ERS_HERE, e.what());
-        ers::fatal(issue);
-        return;
-    }
-
-    publishToIS();
-}
-
-
-void
-TrigConf::OnlTrigC2CWriter::prepareForRun(const daq::rc::TransitionCmd& cmd) {
-
-    ERS_INFO("Entered prepareForRun");
-
-    if(m_forceTriggerDBReadAtPrepareForRun) {
-        ERS_INFO("m_forceTriggerDBReadAtPrepareForRun is true, rereading from triggerDB with this configuration.");
-        ERS_INFO(conf());
-        readTriggerDb();
-    }
-
-
-
-    readRunNumberFromIS();
-
-    if(conf().UseTriggerDB()) {
-        ERS_INFO("PREPAREFORRUN(" << cmd.toString() << ") -> write hlt config to COOL. Current run number " << conf().CurrentRunNumber());
-    } else {
-        ERS_INFO("PREPAREFORRUN(" << cmd.toString() << ") -> nothing to do since we are not running from the TriggerDB");
-        return;
-    }
-
-    TrigConf::ThresholdConfig thrcfg;
-    TrigConf::CaloInfo ci;
-
-    std::string configurationSource = conf().DBConnection() + ",";
-    if(getenv("AtlasVersion")) {
-        configurationSource += std::string(getenv("AtlasVersion")) + std::string(",");
-    } else {
-        configurationSource += std::string("Unknown Version,");
-    }
-    if(getenv("AtlasProject")) {
-        configurationSource += std::string(getenv("AtlasProject"));
-    } else {
-        configurationSource += std::string("Unknown Project");
-    }
-
-    // write the payload
-    std::cout << "Configuration source: " << configurationSource << std::endl;
-    std::cout << "=====================================================" << std::endl;
-    std::cout << m_CTPConfig << std::endl;
-    if(m_CTPConfig)
-        std::cout << *m_CTPConfig << std::endl;
-    std::cout << "=====================================================" << std::endl;
-    std::cout << m_HLTFrame << std::endl;
-    if(m_HLTFrame)
-        std::cout << *m_HLTFrame << std::endl;
-    std::cout << "=====================================================" << std::endl;
-
-
-    if(m_HLTFrame) {
-        if(0!=m_HLTFrame && 0!=m_CTPConfig) {
-            m_conf2Cool->writeRunPayload(conf().CurrentRunNumber(),
-                                        (unsigned int) conf().DBSMK(),
-                                        (unsigned int) conf().DBHLTPSK(), // if 0 then no menu will be saved
-                                        thrcfg,  // ignored
-                                        *m_CTPConfig,
-                                        ci, // ignored
-                                        *m_HLTFrame,
-                                        configurationSource);
-        } else if (0!=m_HLTFrame && 0==m_CTPConfig) {
-            m_conf2Cool->writeHLTPayload( ValidityRange( conf().CurrentRunNumber() ), *m_HLTFrame, configurationSource);
-            ERS_INFO("Prescale Set ptr = " << (void*)m_HLTFrame->getPrescaleSetCollection().prescaleSet());
-            m_conf2Cool->writeHltPrescalePayload( conf().CurrentRunNumber(), 1, *m_HLTFrame->getPrescaleSetCollection().prescaleSet());
-        }
-    } else {
-        ERS_INFO("Menu will not be written to COOL, since it was not read from the TriggerDB");
-    }
-
-    if(conf().MCKtoCOOL()) {
-        if (conf().DBMCK() != 0){
-            m_conf2Cool->writeMCKPayload( conf().CurrentRunNumber(), conf().DBMCK(), conf().DBMCKrelease(), conf().DBMCKinfo());
-            ERS_INFO("Done writing MCK " << conf().DBMCK() << " for release " << conf().DBMCKrelease() << " to COOL.");
-        } else {
-            ERS_INFO("MCK not written to COOL since it is 0");
-        }
-    }
-}
-
-
-void
-TrigConf::OnlTrigC2CWriter::unconfigure(const daq::rc::TransitionCmd& cmd) {
-    ERS_INFO("UNCONFIGURE(" << cmd.toString() << ") -> unsubscribe from IS");
-
-    // unsubscribe from IS
-    try {
-        m_infoRec->unsubscribe(".*");
-    }
-    catch(ers::Issue & e) {
-    }
-    delete m_infoRec; m_infoRec = 0;
-}
-
-
-
-void
-TrigConf::OnlTrigC2CWriter::writeHLTPrescaleSetToCool(unsigned int lb, unsigned int pskey, std::string& name) {
-
-    ERS_INFO("Entered writeHLTPrescaleSetToCool with LB = " << lb << " and HLT psk " << pskey);
-
-    if(!conf().UseTriggerDB()) return;
-
-    if(!m_HLTFrame) {
-        ERS_INFO("Running without the HLT, can not write HLT prescales to COOL");
-        return;
-    }
-
-    readRunNumberFromIS();
-
-    std::string conn(""), user(""), pw("");
-    conf().TriggerDbConnectionParams(conn,user,pw);
-    std::unique_ptr< TrigConf::StorageMgr > sm(new TrigConf::StorageMgr(conn,user,pw));
-
-    HLTPrescaleSet* hltPrescaleSet = new HLTPrescaleSet();
-
-    hltPrescaleSet->setId(pskey);
-    sm->hltPrescaleSetLoader().load( *hltPrescaleSet );
-    name = hltPrescaleSet->name();
-
-    ERS_INFO("writeHLTPrescaleSetToCool: HLT psk " << pskey << ", name " << name << " for Run " << conf().CurrentRunNumber() << " and LB " << lb);
-
-    m_HLTFrame->thePrescaleSetCollection().addPrescaleSet( lb, hltPrescaleSet );
-
-    m_conf2Cool->writeHltPrescalePayload( conf().CurrentRunNumber(), lb, *hltPrescaleSet );
-}
-
-
-void
-TrigConf::OnlTrigC2CWriter::user(const daq::rc::UserCmd& usrCmd) {
-
-    string commandName = usrCmd.commandName();
-    vector<string> arguments = usrCmd.commandParameters();
-
-    ERS_INFO("Received '" << commandName << "'  [" << usrCmd.toString() << "]");
-
-    // this is a hack until the CTP controller sends the correct user command
-
-    ERS_INFO("Received command " << commandName << " (" << usrCmd.toString() << ")");
-    if(commandName == "USER") {
-        ERS_INFO("User command " << usrCmd.toString() << " not formed correctly, need to apply parser hack.");
-
-        vector<string> splitarg;
-        boost::split(splitarg, arguments[0], boost::is_any_of(" "));
-
-        arguments.clear();
-        bool first(true);
-        for(const string& s : splitarg) {
-            if(first) {
-                commandName = s;
-                first = false;
-            } else {
-                arguments.push_back(s);
-            }
-        }
-    }
-
-    ERS_INFO("Command " << commandName);
-    unsigned int i(0);
-    for(const string& s :arguments) {
-        ERS_INFO("   arg " << i++ << "  " << s);
-    }
-
-
-    if( commandName == "HLTPRESCALE2COOL" ) {
-
-        if( arguments.size() != 2) {
-            TrigConf::InvalidUserCommand issue(ERS_HERE,"'HLTPRESCALE2COOL' needs exactly 2 arguments: LB and HLT PS key");
-            ers::warning(issue);
-            return;
-        }
-
-        unsigned int lb    = boost::lexical_cast<unsigned int, std::string>(arguments[0]);
-        unsigned int pskey = boost::lexical_cast<unsigned int, std::string>(arguments[1]);
-
-        std::string pssname("");
-        try {
-            writeHLTPrescaleSetToCool(lb, pskey, pssname);
-        }
-        catch(std::exception & ex) {
-            TrigConf::CoolWriting issue(ERS_HERE, ex.what());
-            ers::error(issue);
-        }
-
-        // updating the internally held key
-        conf().DBHLTPSK() = pskey;
-
-
-        // publish to IS RunParams
-        TrigConfHltPsKeyNamed hltps(*m_IPCPartition,"RunParams.TrigConfHltPsKey");
-        hltps.HltPrescaleKey = pskey;
-        hltps.HltPrescaleComment = pssname;
-
-        try {
-            hltps.checkin();
-            ERS_INFO("Published current hlt pskey " << pskey << " to RunParams.TrigConfHltPsKey");
-
-        }
-        catch (daq::is::Exception& ex) {
-            TrigConf::ISPublishing issue(ERS_HERE, ex.what());
-            ers::error(issue);
-        }
-        catch (std::exception & ex) {
-            TrigConf::ISPublishing issue(ERS_HERE, ex.what());
-            ers::error(issue);
-        }
-        catch (CORBA::SystemException& ex) {
-            TrigConf::ISPublishing issue(ERS_HERE, ex._name());
-            ers::error(issue);
-        }
-        catch (...) {
-            TrigConf::ISPublishing issue(ERS_HERE,"unknown exception");
-            ers::error(issue);
-        }
-    }
-}
-
-
-void
-TrigConf::OnlTrigC2CWriter::stopArchiving(const daq::rc::TransitionCmd&) {
-    ERS_INFO("stopArchiving");
-    ERS_INFO("setting m_forceTriggerDBReadAtPrepareForRun to true");
-    m_forceTriggerDBReadAtPrepareForRun = true;
-
-}
diff --git a/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/src/TC2CConfig.cxx b/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/src/TC2CConfig.cxx
deleted file mode 100644
index 78054157b7e68474ee8ab0b44a0f19ec2d38d84e..0000000000000000000000000000000000000000
--- a/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/src/TC2CConfig.cxx
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#include <iostream>
-#include <algorithm>
-
-#include "TrigConf2COOLOnline/TC2CConfig.h"
-
-using std::endl;
-
-TC2CConfig::TC2CConfig()
-{}
-
-TC2CConfig::~TC2CConfig()
-{}
-
-void
-TC2CConfig::TriggerDbConnectionParams(std::string& conn, std::string& user, std::string& pw) {
-  user = DBUser();
-  pw = DBPasswd();
-
-  std::string dbtype = DBType();
-  std::transform(dbtype.begin(),dbtype.end(),dbtype.begin(),tolower);
-  if (dbtype == "oracle") {
-    conn = "oracle://" + DBServer() + "/" + DBName();
-  } else if (dbtype == "mysql") {
-    conn = "mysql://" + DBServer() + "/" + DBName();
-  } else if (dbtype == "sqlite") {
-    conn = "sqlite://" + DBServer() + "/" + DBName();
-  } else if (dbtype == "dblookup") {
-    conn = DBServer();
-    user = pw = "";
-  }
-}
-
-
-std::ostream& operator<<(std::ostream& os, const TC2CConfig& c) {
-  os << "Job configuration:" << endl
-     << "  COOL connection : " << c.fCoolDb << endl
-     << "  Use TriggerDB   : " << (c.fUseTriggerDB?"true":"false") << endl;
-  if(c.fUseTriggerDB)
-    os << "    Trigger DB connection parameter" << endl
-       << "      Type   : " << c.fDBType << endl
-       << "      Server : " << c.fDBServer << endl
-       << "      User   : " << c.fDBUser << endl
-       << "      Passwd : " << c.fDBPasswd << endl
-       << "      Name   : " << c.fDBName << endl
-       << "    SMK             : " << c.fDBSMK << endl
-       << "    L1 PSK          : " << c.fDBL1PSK << endl
-       << "    HLT PSK         : " << c.fDBHLTPSK << endl;
-  os << "  Current run number: " << c.fCurrentRunNumber << endl;
-  os << "  Last run number written to COOL: " << c.fLastWrittenRunNumber << endl;
-  os << "  COOL connection status: " << (c.fCOOLconnStat?"connected":"disconnected") << endl;
-  os << "  TriggerDB connection status: " << (c.fTriggerDBconnStat?"connected":"disconnected") << endl;
-  
-  return os;
-}
diff --git a/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/src/TrigConf2CoolOnline.cxx b/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/src/TrigConf2CoolOnline.cxx
deleted file mode 100644
index b371a66d6d3f9142b6a6555ca8ed6af11b3125a4..0000000000000000000000000000000000000000
--- a/HLT/Trigger/TrigConfiguration/TrigConf2COOLOnline/src/TrigConf2CoolOnline.cxx
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/**
- * @file TrigConf2CoolOnline.cxx
- * @author Joerg Stelzer
- * $Author: stelzer $
- * $Revision: 1.1 $
- * $Date: 2008-07-28 13:58:08 $
- *
- * @brief Application to write trigger configuration from TriggerDB to COOL
- *
- */
-
-#undef PACKAGE_VERSION
-
-#include "TrigConf2COOLOnline/OnlTrigC2CWriter.h"
-
-#include "ipc/core.h"
-#include "ers/ers.h"
-#include "cmdl/cmdargs.h"
-
-#include <string>
-#include "RunControl/Common/CmdLineParser.h"
-#include "RunControl/Common/Exceptions.h"
-#include "RunControl/ItemCtrl/ItemCtrl.h"
-
-#include <boost/program_options.hpp>
-
-namespace po = boost::program_options;
-
-using namespace std;
-using namespace daq;
-using namespace TrigConf;
-
-ERS_DECLARE_ISSUE (TrigConf, ExitNow, "FATAL ERROR: ", )
-
-
-
-
-ERS_DECLARE_ISSUE(TrigConf, Exception, ERS_EMPTY, ERS_EMPTY)
-
-ERS_DECLARE_ISSUE_BASE (  TrigConf,
-                          CmdLineError,
-                          TrigConf::Exception,
-                          "Error parsing the command line options: " << reason,
-                          ERS_EMPTY,
-                          ((std::string) reason)
-                          )
-
-
-
-int main (int argc, char **argv) {
-
-   for(int i=0; i<argc; ++i)
-      cout << argv[i] << " ";
-   cout << endl;
-  
-   try {
-      IPCCore::init(argc,argv);
-   }
-   catch(daq::ipc::CannotInitialize& e) {
-      ers::fatal(e);
-      abort();
-   }
-   catch(daq::ipc::AlreadyInitialized& e) {
-      ers::warning(e);
-   }
-  
-   // parse commandline parameters
-   po::options_description desc("This program writes the trigger configuration for the current run to COOL");
-   desc.add_options()
-      ("help,h", "print usage and exit")
-      ("cooldb",  po::value<string>(), "COOL db connection tech://schema=;dbname=\nsqlite://;schema=trigconf.db;dbname=TRIGCONF")
-      ("triggerdb",  po::value<string>(), "TriggerDB connection alias")
-      ("l1is",  "if set L1 key is written to IS")
-      ("l1cool", "if set L1 information is written to COOL")
-      ("name,n",  po::value<string>(), "application name")
-      ("mckcool", "if set MCK is written to COOL")
-      ;
-  
-   // Get commandline parameters
-   po::variables_map vm;
-   po::store( po::command_line_parser(argc, argv).options(desc).allow_unregistered().run(), vm);
-   po::notify(vm);
-  
-   string cooldb("sqlite://;schema=trigconf.db;dbname=TRIGCONF");
-
-   if(vm.count("cooldb")) {
-      cooldb = vm["cooldb"].as<string>();
-      cout << "Application parameter cooldb=" << cooldb << endl;
-   } else if(!vm.count("help")) {
-      ers::fatal( TrigConf::CmdLineError(ERS_HERE, "No cool connection parameter has been defined") );
-      return EXIT_FAILURE;
-   }
-   bool l1is = vm.count("l1is")>0;
-   bool l1cool = vm.count("l1cool")>0;
-   bool mckcool = vm.count("mckcool")>0;
-   string triggerdb( vm.count("triggerdb") ? vm["triggerdb"].as<string>() : string("") );
-
-   rc::CmdLineParser cmdParser(argc, argv, true);
-
-   try {
-      rc::ItemCtrl itemCtrl(cmdParser,
-                            shared_ptr<rc::Controllable>(new OnlTrigC2CWriter(cmdParser.partitionName(), cooldb, triggerdb, l1is, l1cool, mckcool)));
-      itemCtrl.init();
-      itemCtrl.run();
-   }
-   catch(daq::rc::CmdLineHelp& ex) {
-      cout << desc << endl;
-      cout << ex.message() << endl;
-   }
-   catch(ers::Issue& ex) {
-      TrigConf::ExitNow issue(ERS_HERE, ex);
-      ers::fatal(ex);
-      return EXIT_FAILURE;
-   }
-   catch(po::error& ex) {
-      ers::fatal(rc::CmdLineError(ERS_HERE, ex.what(), ex));
-      return EXIT_FAILURE;
-   }
-  
-   return EXIT_SUCCESS;
-
-}
diff --git a/InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/HitInfo.h b/InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/HitInfo.h
index a79b6589accf1525eb39e4239c177f7d0e1369e5..79bdf5404bce73b65ea6007dbb9ffb059f1f6ba3 100755
--- a/InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/HitInfo.h
+++ b/InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/HitInfo.h
@@ -101,17 +101,13 @@ namespace TRT{
   public:
     // Constructors
     HitInfo() : m_Ints(Hit::TNOIV),m_Floats(Hit::TNOFV) {}
-    HitInfo(const HitInfo& orig): m_Ints(orig.m_Ints),m_Floats(orig.m_Floats) {}
+    HitInfo(const HitInfo& orig)= default;
+    HitInfo(HitInfo&& orig) noexcept = default;
     //assignment
-    HitInfo & operator=(const HitInfo & other){
-      if (this!=&other){
-        m_Ints = other.m_Ints;
-        m_Floats = other.m_Floats;
-      }
-      return *this;
-    }
+    HitInfo & operator=(const HitInfo & other)=default;
+    HitInfo & operator=(HitInfo && other) noexcept =default;
     // Destructor
-    ~HitInfo(){}
+    ~HitInfo()=default;
     // Access
     const int& operator[](const Hit::IntVariables& theIndex) const {return m_Ints[theIndex];}
     const float& operator[](const Hit::FloatVariables& theIndex) const {return m_Floats[theIndex];}
diff --git a/InnerDetector/InDetConditions/PixelCoralClientUtils/PixelCoralClientUtils/PixelCalibData.hh b/InnerDetector/InDetConditions/PixelCoralClientUtils/PixelCoralClientUtils/PixelCalibData.hh
index 4d356a3bd65ea30feb3cfb9290dab0c056069060..7a5fad1ad345f2e464db2bc90587dbf76857e3dc 100644
--- a/InnerDetector/InDetConditions/PixelCoralClientUtils/PixelCoralClientUtils/PixelCalibData.hh
+++ b/InnerDetector/InDetConditions/PixelCoralClientUtils/PixelCoralClientUtils/PixelCalibData.hh
@@ -37,7 +37,7 @@ class PixelCalibData{
   PixelCalibData(unsigned int ident,int nmax); 
 
   /** default destructor */
-  ~PixelCalibData ();
+  ~PixelCalibData () = default;
 
   const static int nPixelChipSummaryDataMax = 16; /** maximum number of chips per module */
   /** embedded class PixelChipSummaryData holds all the calibration data for a chip */ 
@@ -46,7 +46,7 @@ class PixelCalibData{
 
   public: 
     PixelChipSummaryData();
-    ~PixelChipSummaryData(){};
+    ~PixelChipSummaryData() = default;
 
     /** Methods to access the calibration data */ 
     int getChipID() const { return (int)m_chip; } //<! get the chip id inside a module from 0 to 15 
@@ -349,7 +349,6 @@ inline PixelCalibData::PixelChipSummaryData::PixelChipSummaryData(){
   }
 }
 
-inline PixelCalibData::~PixelCalibData(){}
 
 inline int PixelCalibData::size() const
    { return (int)m_vec.size();}
diff --git a/InnerDetector/InDetConfig/python/InDetConfigFlags.py b/InnerDetector/InDetConfig/python/InDetConfigFlags.py
index 1c3c920e8dcb8aa08b1627584a8d714563f7cf2e..fc36ba07c72bbe939b19c3c05f2b6e5682150bb0 100644
--- a/InnerDetector/InDetConfig/python/InDetConfigFlags.py
+++ b/InnerDetector/InDetConfig/python/InDetConfigFlags.py
@@ -181,6 +181,6 @@ def createInDetConfigFlags():
   icf.addFlag("InDet.doHIP300", False) # Switch for running MinBias settings with a 300 MeV pT cut (for Heavy Ion Proton)
   icf.addFlag("InDet.checkDeadElementsOnTrack", True) # Enable check for dead modules and FEs 
   icf.addFlag("InDet.doDigitalROTCreation",False) # use PixelClusterOnTrackToolDigital during ROT creation to save CPU 
-  icf.addFlag("InDet.usePixelDCS",  lambda prevFlags : (prevFlags.InDet.useDCS and prevFlags.Detector.PixelOn))
-  icf.addFlag("InDet.useSctDCS",  lambda prevFlags : (prevFlags.InDet.useDCS and prevFlags.Detector.SCTOn))
+  icf.addFlag("InDet.usePixelDCS",  lambda prevFlags : (prevFlags.InDet.useDCS and prevFlags.Detector.RecoPixel))
+  icf.addFlag("InDet.useSctDCS",  lambda prevFlags : (prevFlags.InDet.useDCS and prevFlags.Detector.RecoSCT))
   return icf
diff --git a/InnerDetector/InDetConfig/python/InDetRecToolConfig.py b/InnerDetector/InDetConfig/python/InDetRecToolConfig.py
index d14bcad6591e00433935ae495335dd24516ab261..08ed16b2ed400dabc28adbf6ea26e0495e48e6ad 100644
--- a/InnerDetector/InDetConfig/python/InDetRecToolConfig.py
+++ b/InnerDetector/InDetConfig/python/InDetRecToolConfig.py
@@ -27,7 +27,7 @@ def InDetBoundaryCheckToolCfg(flags, name='InDetBoundaryCheckTool', **kwargs):
   result = ComponentAccumulator()
 
   if 'SctSummaryTool' not in kwargs:
-    if flags.Detector.SCTOn:
+    if flags.Detector.RecoSCT:
       tmpAcc = InDetSCT_ConditionsSummaryToolCfg(flags)
       kwargs.setdefault("SctSummaryTool", tmpAcc.popPrivateTools())
       result.merge(tmpAcc)
@@ -39,8 +39,8 @@ def InDetBoundaryCheckToolCfg(flags, name='InDetBoundaryCheckTool', **kwargs):
     kwargs.setdefault("PixelLayerTool", tmpAcc.getPrimary())
     result.merge(tmpAcc)
 
-  kwargs.setdefault("UsePixel", flags.Detector.PixelOn)
-  kwargs.setdefault("UseSCT", flags.Detector.SCTOn)
+  kwargs.setdefault("UsePixel", flags.Detector.RecoPixel)
+  kwargs.setdefault("UseSCT", flags.Detector.RecoSCT)
 
   indet_boundary_check_tool = CompFactory.InDet.InDetBoundaryCheckTool(name, **kwargs)
   result.setPrivateTools(indet_boundary_check_tool)
diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiLocalPosition.h b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiLocalPosition.h
index 9a0e48741596158075830cb3b34c1c8572f6972b..11befcef68a3f5fabfe050a1c5d6753355b3b160 100755
--- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiLocalPosition.h
+++ b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiLocalPosition.h
@@ -53,7 +53,7 @@ namespace InDetDD {
   		  const double xDepth=0);
 
     /** Destructor: */
-    ~SiLocalPosition();
+    ~SiLocalPosition()=default;
 
     /** Assignment operator: */
     SiLocalPosition &operator=(const SiLocalPosition &) = default;
@@ -121,8 +121,6 @@ namespace InDetDD {
 ///////////////////////////////////////////////////////////////////
 // Inline methods:
 ///////////////////////////////////////////////////////////////////
-inline SiLocalPosition::~SiLocalPosition()
-{}
 
 inline double SiLocalPosition::xEta() const
 {
diff --git a/InnerDetector/InDetDigitization/TRT_Digitization/src/TRTDigit.h b/InnerDetector/InDetDigitization/TRT_Digitization/src/TRTDigit.h
index 3c5d95a70f259e02c9dc22168939f95b998d3581..bf1714bf62e3c5bba7f227fe4be5d12da4d1ec37 100644
--- a/InnerDetector/InDetDigitization/TRT_Digitization/src/TRTDigit.h
+++ b/InnerDetector/InDetDigitization/TRT_Digitization/src/TRTDigit.h
@@ -18,7 +18,7 @@ public:
   /** Empty, useless digit */
   TRTDigit() : m_strawID(0), m_digit(0) {}
 
-  ~TRTDigit() {}
+  ~TRTDigit() = default;
 
   /** Get straw ID */
   int GetStrawID() const { return m_strawID; }
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetPreProcessingTRT.py b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetPreProcessingTRT.py
index bf91fd9e6f8a176b45fdfb32aaeab8da7153b19e..a4289a2f4d3d8fe32565fd55634ca37775f6e43a 100644
--- a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetPreProcessingTRT.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetPreProcessingTRT.py
@@ -114,35 +114,45 @@ class ConfiguredInDetPreProcessingTRT:
          MaxDriftTime    = 60.0*ns
          LowGate         = 14.0625*ns # 4.5*3.125 ns
          HighGate        = 42.1875*ns # LowGate + 9*3.125 ns
+         LowGateArgon         = LowGate
+         HighGateArgon        = HighGate
+
          if InDetFlags.doCosmics():
             LowGate         = 19.0*ns
             HighGate        = 44.0*ns
+            LowGateArgon    = 19.0*ns
+            HighGateArgon   = 44.0*ns
+
          if globalflags.DataSource == 'data':
             MinTrailingEdge = 11.0*ns
             MaxDriftTime    = 60.0*ns
-            LowGate         = 14.0625*ns # 4.5*3.125 ns
-            HighGate        = 42.1875*ns # LowGate + 9*3.125 ns
+            LowGate         = 17.1875*ns
+            HighGate        = 45.3125*ns
+            LowGateArgon    = 18.75*ns
+            HighGateArgon   = 43.75*ns
             if InDetFlags.doCosmics():
                LowGate         = 19.0*ns
                HighGate        = 44.0*ns
+               LowGateArgon    = 19.0*ns
+               HighGateArgon   = 44.0*ns
 
          InDetTRT_DriftCircleTool = InDet__TRT_DriftCircleTool(name                            = prefix+"DriftCircleTool",
                                                                TRTDriftFunctionTool            = InDetTRT_DriftFunctionTool,
                                                                ConditionsSummaryTool           = InDetTRTStrawStatusSummaryTool,
                                                                UseConditionsStatus             = True,
                                                                UseConditionsHTStatus           = True,
-                                                               SimpleOutOfTimePileupSupression = InDetFlags.doCosmics(),
+                                                               SimpleOutOfTimePileupSupression = False,
                                                                RejectIfFirstBit                = False, # fixes 50 nsec issue 
                                                                MinTrailingEdge                 = MinTrailingEdge,
                                                                MaxDriftTime                    = MaxDriftTime,
-                                                               ValidityGateSuppression         = not InDetFlags.doCosmics(),
+                                                               ValidityGateSuppression         =  InDetFlags.InDet25nsec(),
                                                                LowGate                         = LowGate,
                                                                HighGate                        = HighGate,
-                                                               SimpleOutOfTimePileupSupressionArgon = InDetFlags.doCosmics(),
+                                                               SimpleOutOfTimePileupSupressionArgon = False,
                                                                RejectIfFirstBitArgon                = False, # fixes 50 nsec issue 
                                                                MinTrailingEdgeArgon                 = MinTrailingEdge,
                                                                MaxDriftTimeArgon                    = MaxDriftTime,
-                                                               ValidityGateSuppressionArgon         = not InDetFlags.doCosmics(),
+                                                               ValidityGateSuppressionArgon         = InDetFlags.InDet25nsec(),
                                                                LowGateArgon                         = LowGate,
                                                                HighGateArgon                        = HighGate,
                                                                useDriftTimeHTCorrection        = True,
@@ -151,14 +161,6 @@ class ConfiguredInDetPreProcessingTRT:
             from InDetRecExample import TrackingCommon
             InDetTRT_DriftCircleTool.LumiDataKey = TrackingCommon.getLumiCondDataKeyForTRTMuScaling()
 
-         from AthenaCommon.BeamFlags import jobproperties 
-         if InDetFlags.InDet25nsec() and jobproperties.Beam.beamType()=="collisions": 
-            InDetTRT_DriftCircleTool.ValidityGateSuppression=True  
-            InDetTRT_DriftCircleTool.SimpleOutOfTimePileupSupression=False  
-         if jobproperties.Beam.beamType()=="cosmics": 
-            InDetTRT_DriftCircleTool.SimpleOutOfTimePileupSupression=False 
-
-
          ToolSvc += InDetTRT_DriftCircleTool
          if (InDetFlags.doPrintConfigurables()):
             printfunc (InDetTRT_DriftCircleTool)
diff --git a/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigCommonTools.py b/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigCommonTools.py
index fec9295de25df6771e132d5f3d0d7af894ff0fa3..d0d684c84850d5e656ec4c88a64e2551bdfdba3a 100644
--- a/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigCommonTools.py
+++ b/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigCommonTools.py
@@ -83,14 +83,22 @@ from TRT_DriftCircleTool.TRT_DriftCircleToolConf import InDet__TRT_DriftCircleTo
 import AthenaCommon.SystemOfUnits as Units
 MinTrailingEdge = 11.0*Units.ns
 MaxDriftTime = 60.0*Units.ns
-LowGate = 18.0*Units.ns
-HighGate = 38.0*Units.ns
+LowGate         = 14.0625*Units.ns # 4.5*3.125 ns
+HighGate        = 42.1875*Units.ns # LowGate + 9*3.125 ns
+LowGateArgon         = LowGate
+HighGateArgon        = HighGate
+
 from AthenaCommon.GlobalFlags import globalflags
-if  globalflags.DataSource != 'data':
-    MinTrailingEdge = 16.0*Units.ns
-    MaxDriftTime    = 65.0*Units.ns
-    LowGate         = 23.0*Units.ns
-    HighGate        = 43.0*Units.ns
+from InDetTrigRecExample.InDetTrigFlags import InDetTrigFlags
+
+if globalflags.DataSource == 'data':
+    MinTrailingEdge = 11.0*Units.ns
+    MaxDriftTime    = 60.0*Units.ns
+    LowGate         = 17.1875*Units.ns
+    HighGate        = 45.3125*Units.ns
+    LowGateArgon    = 18.75*Units.ns
+    HighGateArgon   = 43.75*Units.ns
+
 
   
 InDetTrigTRT_DriftCircleTool = InDet__TRT_DriftCircleTool( name = "InDetTrigTRT_DriftCircleTool",
@@ -98,32 +106,24 @@ InDetTrigTRT_DriftCircleTool = InDet__TRT_DriftCircleTool( name = "InDetTrigTRT_
                                                            ConditionsSummaryTool           = InDetTrigTRTStrawStatusSummaryTool,
                                                            UseConditionsStatus  = True,
                                                            UseConditionsHTStatus  = True,
-                                                           SimpleOutOfTimePileupSupression = True,
+                                                           SimpleOutOfTimePileupSupression = False,
                                                            RejectIfFirstBit                = False, # fixes 50 nsec issue 
                                                            MinTrailingEdge                 = MinTrailingEdge,
                                                            MaxDriftTime                    = MaxDriftTime,
-                                                           ValidityGateSuppression         = False,
+                                                           ValidityGateSuppression         = InDetTrigFlags.InDet25nsec(),
                                                            LowGate = LowGate,
                                                            HighGate = HighGate,
                                                            SimpleOutOfTimePileupSupressionArgon = False,# no OOT rejection for argon
                                                            RejectIfFirstBitArgon                = False, # no OOT rejection for argon
-                                                           MinTrailingEdgeArgon                 = 0, # no OOT rejection for argon
-                                                           MaxDriftTimeArgon                    = 99*Units.ns,# no OOT rejection for argon
-                                                           ValidityGateSuppressionArgon         = False,# no OOT rejection for argon
-                                                           LowGateArgon                         = 0,# no OOT rejection for argon
-                                                           HighGateArgon                        = 75*Units.ns,# no OOT rejection for argon
+                                                           MinTrailingEdgeArgon                 = MinTrailingEdge,
+                                                           MaxDriftTimeArgon                    = MaxDriftTime,
+                                                           ValidityGateSuppressionArgon         = InDetTrigFlags.InDet25nsec(),
+                                                           LowGateArgon                         = LowGateArgon,
+                                                           HighGateArgon                        = HighGateArgon,
                                                            useDriftTimeHTCorrection        = True,
-                                                           
                                                            useDriftTimeToTCorrection       = True, # reenable ToT
                                                            )
 
-from InDetTrigRecExample.InDetTrigFlags import InDetTrigFlags
-if InDetTrigFlags.InDet25nsec():
-    InDetTrigTRT_DriftCircleTool.ValidityGateSuppression=True  
-    InDetTrigTRT_DriftCircleTool.SimpleOutOfTimePileupSupression=False  
-#if jobproperties.Beam.beamType()=="cosmics": 
-#    InDetTRT_DriftCircleTool.SimpleOutOfTimePileupSupression=False 
-
 
 ToolSvc += InDetTrigTRT_DriftCircleTool
 log.debug(InDetTrigTRT_DriftCircleTool)
diff --git a/InnerDetector/InDetG4/BCM_G4_SD/python/BCM_G4_SDConfig.py b/InnerDetector/InDetG4/BCM_G4_SD/python/BCM_G4_SDConfig.py
index ca581ae91a121233df2eab41367f5bbd8e47472d..c4e84b014481f7aedeccd591dbdbe90500efa5cf 100644
--- a/InnerDetector/InDetG4/BCM_G4_SD/python/BCM_G4_SDConfig.py
+++ b/InnerDetector/InDetG4/BCM_G4_SD/python/BCM_G4_SDConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaCommon import CfgMgr
 from G4AtlasApps.SimFlags import simFlags
@@ -10,9 +10,11 @@ def getBCMSensorSD(name="BCMSensorSD", **kwargs):
     bare_collection_name = "BCMHits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "BCMHits"
+    region = "ID"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     kwargs.setdefault("LogicalVolumeNames", ["Pixel::bcmDiamondLog"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
     return CfgMgr.BCMSensorSDTool(name, **kwargs)
diff --git a/InnerDetector/InDetG4/BCM_G4_SD/python/BCM_G4_SDToolConfig.py b/InnerDetector/InDetG4/BCM_G4_SD/python/BCM_G4_SDToolConfig.py
index 5bcf6ddf9b1ff36d94bd59c5ee1a49050b0eb613..4da290d67b23d83d80c134239b2624ae61339fd4 100644
--- a/InnerDetector/InDetG4/BCM_G4_SD/python/BCM_G4_SDToolConfig.py
+++ b/InnerDetector/InDetG4/BCM_G4_SD/python/BCM_G4_SDToolConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
@@ -12,9 +12,12 @@ def BCMSensorSDCfg(ConfigFlags, name="BCMSensorSD", **kwargs):
     bare_collection_name = "BCMHits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "BCMHits"
-    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "ID"
+    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                    bare_collection_name,
+                                                    mergeable_collection_suffix,
+                                                    merger_input_property,
+                                                    region)
     kwargs.setdefault("LogicalVolumeNames", ["Pixel::bcmDiamondLog"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
 
diff --git a/InnerDetector/InDetG4/BLM_G4_SD/python/BLM_G4_SDConfig.py b/InnerDetector/InDetG4/BLM_G4_SD/python/BLM_G4_SDConfig.py
index f4f5488b2ab4da173e8a0f0b3955037d9e426e49..79b99735924da032f1ae26151555c343cda4b824 100644
--- a/InnerDetector/InDetG4/BLM_G4_SD/python/BLM_G4_SDConfig.py
+++ b/InnerDetector/InDetG4/BLM_G4_SD/python/BLM_G4_SDConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaCommon import CfgMgr
 from G4AtlasApps.SimFlags import simFlags
@@ -10,9 +10,11 @@ def getBLMSensorSD(name="BLMSensorSD", **kwargs):
     bare_collection_name = "BLMHits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "BLMHits"
+    region = "ID"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     kwargs.setdefault("LogicalVolumeNames", ["Pixel::blmDiamondLog"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
     return CfgMgr.BLMSensorSDTool(name, **kwargs)
diff --git a/InnerDetector/InDetG4/BLM_G4_SD/python/BLM_G4_SDToolConfig.py b/InnerDetector/InDetG4/BLM_G4_SD/python/BLM_G4_SDToolConfig.py
index f816bda346ce349c4496a5332adcba7a0914fc32..f9aa423cde5342a88f890d73ceddcd44a4cd6c36 100644
--- a/InnerDetector/InDetG4/BLM_G4_SD/python/BLM_G4_SDToolConfig.py
+++ b/InnerDetector/InDetG4/BLM_G4_SD/python/BLM_G4_SDToolConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
@@ -8,14 +8,17 @@ BLMSensorSDTool=CompFactory.BLMSensorSDTool
 
 
 def BLMSensorSDCfg(ConfigFlags, name="BLMSensorSD", **kwargs):
-    
+
     result = ComponentAccumulator()
     bare_collection_name = "BLMHits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "BLMHits"
-    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "ID"
+    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                    bare_collection_name,
+                                                    mergeable_collection_suffix,
+                                                    merger_input_property,
+                                                    region)
     kwargs.setdefault("LogicalVolumeNames", ["Pixel::blmDiamondLog"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
 
diff --git a/InnerDetector/InDetG4/PixelG4_SD/python/PixelG4_SDConfig.py b/InnerDetector/InDetG4/PixelG4_SD/python/PixelG4_SDConfig.py
index 2348cf5c91cba77749d92c44b581be9b0489f7f7..161d2683335e946429427c6dda5edc3b0fb1ea0f 100644
--- a/InnerDetector/InDetG4/PixelG4_SD/python/PixelG4_SDConfig.py
+++ b/InnerDetector/InDetG4/PixelG4_SD/python/PixelG4_SDConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaCommon import CfgMgr
 from G4AtlasApps.SimFlags import simFlags
@@ -10,9 +10,11 @@ def getPixelSensorSD(name="PixelSensorSD", **kwargs):
     bare_collection_name = "PixelHits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "PixelHits"
+    region = "ID"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     kwargs.setdefault("LogicalVolumeNames", ["Pixel::siBLayLog","Pixel::siLog","Pixel::dbmDiamondLog"])
     #kwargs.setdefault("LogicalVolumeNames", ["Pixel::siBLayLog","Pixel::siLog"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
diff --git a/InnerDetector/InDetG4/PixelG4_SD/python/PixelG4_SDToolConfig.py b/InnerDetector/InDetG4/PixelG4_SD/python/PixelG4_SDToolConfig.py
index bfe0d3c14a5f7f4d8081a9e00f578d2ced8eb05e..6f7b6b7896155dd96b9ae7f54def567970fc177e 100644
--- a/InnerDetector/InDetG4/PixelG4_SD/python/PixelG4_SDToolConfig.py
+++ b/InnerDetector/InDetG4/PixelG4_SD/python/PixelG4_SDToolConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
@@ -13,11 +13,13 @@ def PixelSensorSDCfg(ConfigFlags, name="PixelSensorSD", **kwargs):
     bare_collection_name = "PixelHits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "PixelHits"
-    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "ID"
+    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                    bare_collection_name,
+                                                    mergeable_collection_suffix,
+                                                    merger_input_property,
+                                                    region)
     kwargs.setdefault("LogicalVolumeNames", ["Pixel::siBLayLog","Pixel::siLog","Pixel::dbmDiamondLog"])
-    #kwargs.setdefault("LogicalVolumeNames", ["Pixel::siBLayLog","Pixel::siLog"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
 
     result.merge(acc)
diff --git a/InnerDetector/InDetG4/SCT_G4_SD/python/SCT_G4_SDConfig.py b/InnerDetector/InDetG4/SCT_G4_SD/python/SCT_G4_SDConfig.py
index 12e86c04d138a5e61e172bda4fc6591d6125f65b..1055b364626458fd88e2fc7bbc50c05841895b39 100644
--- a/InnerDetector/InDetG4/SCT_G4_SD/python/SCT_G4_SDConfig.py
+++ b/InnerDetector/InDetG4/SCT_G4_SD/python/SCT_G4_SDConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaCommon import CfgMgr
 from G4AtlasApps.SimFlags import simFlags
@@ -10,9 +10,11 @@ def getSctSensorSD(name="SctSensorSD", **kwargs):
     bare_collection_name = "SCT_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "SCTHits"
+    region = "ID"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     kwargs.setdefault("LogicalVolumeNames", ["SCT::BRLSensor","SCT::ECSensor0","SCT::ECSensor1",
                                              "SCT::ECSensor2","SCT::ECSensor3"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
diff --git a/InnerDetector/InDetG4/SCT_G4_SD/python/SCT_G4_SDToolConfig.py b/InnerDetector/InDetG4/SCT_G4_SD/python/SCT_G4_SDToolConfig.py
index d3af78ebff43ee7e34f083a19bcb6b1932e6b67e..e222d82afde4fd0924955e3cf47f126ccfafb624 100644
--- a/InnerDetector/InDetG4/SCT_G4_SD/python/SCT_G4_SDToolConfig.py
+++ b/InnerDetector/InDetG4/SCT_G4_SD/python/SCT_G4_SDToolConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
@@ -14,8 +14,12 @@ def SctSensorSDCfg(ConfigFlags, name="SctSensorSD", **kwargs):
     bare_collection_name = "SCT_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "SCTHits"
-
-    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name, mergeable_collection_suffix, merger_input_property)
+    region = "ID"
+    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                    bare_collection_name,
+                                                    mergeable_collection_suffix,
+                                                    merger_input_property,
+                                                    region)
     kwargs.setdefault("LogicalVolumeNames", ["SCT::BRLSensor","SCT::ECSensor0","SCT::ECSensor1",
                                               "SCT::ECSensor2","SCT::ECSensor3"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
@@ -41,4 +45,3 @@ def SctSensor_CTBCfg(name="SctSensor_CTB", **kwargs):
     kwargs.setdefault("LogicalVolumeNames", ["SCT::ECSensor0"])
     kwargs.setdefault("OutputCollectionNames", ["SCT_Hits"])
     return SctSensor_CTBTool(name, **kwargs)
-  
diff --git a/InnerDetector/InDetG4/TRT_G4_SD/python/TRT_G4_SDConfig.py b/InnerDetector/InDetG4/TRT_G4_SD/python/TRT_G4_SDConfig.py
index d8c4d674ba650585e29eef3982ac1217bae95255..d14cdc5417644177ca2a4002c59c2a0895ce4400 100644
--- a/InnerDetector/InDetG4/TRT_G4_SD/python/TRT_G4_SDConfig.py
+++ b/InnerDetector/InDetG4/TRT_G4_SD/python/TRT_G4_SDConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaCommon import CfgMgr
 from G4AtlasApps.SimFlags import simFlags
@@ -10,9 +10,11 @@ def getTRTSensitiveDetector(name="TRTSensitiveDetector", **kwargs):
     bare_collection_name = "TRTUncompressedHits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "TRTUncompressedHits"
+    region = "ID"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     logicalVolumeNames = ["TRT::Gas","TRT::GasMA"]
     from AtlasGeoModel.CommonGMJobProperties import CommonGeometryFlags as geoFlags
     if ( geoFlags.Run() in ["RUN2", "RUN3"] ) :
diff --git a/InnerDetector/InDetG4/TRT_G4_SD/python/TRT_G4_SDToolConfig.py b/InnerDetector/InDetG4/TRT_G4_SD/python/TRT_G4_SDToolConfig.py
index 365eada3388cd23f4ed1802ade79154cf7e03020..f641e92c5225e657dca183166af9591768c23551 100644
--- a/InnerDetector/InDetG4/TRT_G4_SD/python/TRT_G4_SDToolConfig.py
+++ b/InnerDetector/InDetG4/TRT_G4_SD/python/TRT_G4_SDToolConfig.py
@@ -1,11 +1,11 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 
 from ISF_Algorithms.collection_merger_helpersNew import CollectionMergerCfg
 
-TRTSensitiveDetectorTool =CompFactory.TRTSensitiveDetectorTool 
+TRTSensitiveDetectorTool =CompFactory.TRTSensitiveDetectorTool
 
 def TRTSensitiveDetectorCfg(ConfigFlags, name="TRTSensitiveDetector", **kwargs):
 
@@ -13,9 +13,12 @@ def TRTSensitiveDetectorCfg(ConfigFlags, name="TRTSensitiveDetector", **kwargs):
     bare_collection_name = "TRTUncompressedHits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "TRTUncompressedHits"
-    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "ID"
+    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                    bare_collection_name,
+                                                    mergeable_collection_suffix,
+                                                    merger_input_property,
+                                                    region)
     result.merge(acc)
 
     logicalVolumeNames = ["TRT::Gas","TRT::GasMA"]
diff --git a/InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/PixelClusterParts.h b/InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/PixelClusterParts.h
index 8230d67211aa47d3de4e4f73af0dedc7318323a2..4d0d7dcb9777933e5490a13f178a48c2b56a6376 100644
--- a/InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/PixelClusterParts.h
+++ b/InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/PixelClusterParts.h
@@ -73,6 +73,19 @@ namespace InDet {
         m_errorMatrix(pcp.m_errorMatrix ? new Amg::MatrixX(*pcp.m_errorMatrix) : 0)
         {}    
 
+        /** move constructor */
+    PixelClusterParts(PixelClusterParts&& pcp) noexcept :
+        m_idgroup(std::move(pcp.m_idgroup)),
+        m_totgroup(std::move(pcp.m_totgroup)),
+        m_lvl1group(std::move(pcp.m_lvl1group)),
+        m_localPosition( pcp.m_localPosition ),
+        m_errorMatrix(pcp.m_errorMatrix)
+        {
+            pcp.m_localPosition= nullptr;
+            pcp.m_errorMatrix  = nullptr;
+        }
+
+
         /** assignment operator*/
     PixelClusterParts& operator=(const PixelClusterParts& pcp){
         if (this != &pcp){
diff --git a/InnerDetector/InDetRecEvent/SiSpacePoint/SiSpacePoint/PixelSpacePoint.h b/InnerDetector/InDetRecEvent/SiSpacePoint/SiSpacePoint/PixelSpacePoint.h
index 733c0a9ddf206b6b96833891f525df79feadfd3a..c917ab40d945c6a6fb535fc03093cfaa26c5c31d 100755
--- a/InnerDetector/InDetRecEvent/SiSpacePoint/SiSpacePoint/PixelSpacePoint.h
+++ b/InnerDetector/InDetRecEvent/SiSpacePoint/SiSpacePoint/PixelSpacePoint.h
@@ -56,7 +56,7 @@ namespace InDet
     PixelSpacePoint( const PixelSpacePoint & PSP);
 
     /** Destructor */
-    ~PixelSpacePoint();
+    ~PixelSpacePoint() = default;
 
     /** Overloading assignment operator */
     PixelSpacePoint &operator=(const PixelSpacePoint &);
diff --git a/InnerDetector/InDetRecEvent/SiSpacePoint/SiSpacePoint/SCT_SpacePoint.h b/InnerDetector/InDetRecEvent/SiSpacePoint/SiSpacePoint/SCT_SpacePoint.h
index 3528e9716c35c3feb7c7bbd1f0dd0f3c03b44d95..1744a8bba3d22e12fb5e71cf5e7f7b4638977e15 100755
--- a/InnerDetector/InDetRecEvent/SiSpacePoint/SiSpacePoint/SCT_SpacePoint.h
+++ b/InnerDetector/InDetRecEvent/SiSpacePoint/SiSpacePoint/SCT_SpacePoint.h
@@ -52,11 +52,11 @@ namespace InDet
       //@{
       SCT_SpacePoint(const std::pair<IdentifierHash, IdentifierHash>& elementIdList, 
 		     const Amg::Vector3D& position, 
-		     const std::pair<const Trk::PrepRawData*, const Trk::PrepRawData*>* clusList) ;
+		     const std::pair<const Trk::PrepRawData*, const Trk::PrepRawData*>& clusList) ;
       //@}
 
       /** Copy Constructor */
-      SCT_SpacePoint(const SCT_SpacePoint &) ;
+      SCT_SpacePoint(const SCT_SpacePoint &);
 
       /** Destructor */
       virtual ~SCT_SpacePoint() = default;
@@ -81,7 +81,7 @@ namespace InDet
       /** common method used in constructors. */
       void setup(const std::pair<IdentifierHash, IdentifierHash>& elementIdList,  		    
 		 const Amg::Vector3D& position,
-		 const std::pair<const Trk::PrepRawData*, const Trk::PrepRawData*>* clusList);
+		 const std::pair<const Trk::PrepRawData*, const Trk::PrepRawData*>& clusList);
     };
   
   ///////////////////////////////////////////////////////////////////
diff --git a/InnerDetector/InDetRecEvent/SiSpacePoint/src/PixelSpacePoint.cxx b/InnerDetector/InDetRecEvent/SiSpacePoint/src/PixelSpacePoint.cxx
index 8b03b009acad859ef30d071098117d60fbbc4b3c..0c329904fce6e0362be5ef941b75469d0dff796a 100755
--- a/InnerDetector/InDetRecEvent/SiSpacePoint/src/PixelSpacePoint.cxx
+++ b/InnerDetector/InDetRecEvent/SiSpacePoint/src/PixelSpacePoint.cxx
@@ -36,7 +36,7 @@ namespace InDet
     assert (tmpPos) ;
     m_position = *tmpPos;
 
-    m_clusList = new std::pair<const Trk::PrepRawData*, const Trk::PrepRawData*>(clus,nullptr);
+    m_clusList = {clus,nullptr};
     m_elemIdList.first = elementId ;
     m_elemIdList.second = 0 ;
     setupGlobalFromLocalCovariance();
@@ -55,7 +55,7 @@ namespace InDet
     assert (clus!=nullptr);
     m_position         = globpos;
     m_globalCovariance = globcov;
-    m_clusList = new std::pair<const Trk::PrepRawData*, const Trk::PrepRawData*>(clus,nullptr);
+    m_clusList = {clus,nullptr};
     m_elemIdList.first = elementId ;
     m_elemIdList.second = 0 ;
   }
@@ -68,11 +68,6 @@ namespace InDet
     SpacePoint(PSP)
   {}
 
-  //-------------------------------------------------------------
-  
-  /** Destructor */
-  PixelSpacePoint::~PixelSpacePoint()
-  {}
  
   //-------------------------------------------------------------
   
diff --git a/InnerDetector/InDetRecEvent/SiSpacePoint/src/SCT_SpacePoint.cxx b/InnerDetector/InDetRecEvent/SiSpacePoint/src/SCT_SpacePoint.cxx
index cabc8efbafe9920690272edf2be56dd804d0a946..71ed2ed5873fe0b1baf8fccd1df92e986e452402 100755
--- a/InnerDetector/InDetRecEvent/SiSpacePoint/src/SCT_SpacePoint.cxx
+++ b/InnerDetector/InDetRecEvent/SiSpacePoint/src/SCT_SpacePoint.cxx
@@ -18,13 +18,14 @@ namespace InDet
   SCT_SpacePoint::SCT_SpacePoint()
     :
     Trk::SpacePoint()
-  {}
+  {
+  }
 
   //-------------------------------------------------------------
 
   SCT_SpacePoint::SCT_SpacePoint(const std::pair<IdentifierHash, IdentifierHash>& elementIdList,  		    
 				 const Amg::Vector3D& position,
-				 const std::pair<const Trk::PrepRawData*, const Trk::PrepRawData*>* clusList) 
+				 const std::pair<const Trk::PrepRawData*, const Trk::PrepRawData*> &clusList) 
     :
     Trk::SpacePoint()
   {
@@ -37,15 +38,15 @@ namespace InDet
   
   void SCT_SpacePoint::setup(const std::pair<IdentifierHash, IdentifierHash>& elementIdList,  		    
 			     const Amg::Vector3D& position,
-			     const std::pair<const Trk::PrepRawData*, const Trk::PrepRawData*>* clusList)
+			     const std::pair<const Trk::PrepRawData*, const Trk::PrepRawData*>& clusList)
   {
     m_clusList = clusList ;
     m_position = position ;
     m_elemIdList.first = elementIdList.first ;
     m_elemIdList.second = elementIdList.second ;
-    assert( (clusList->first!=0) && (clusList->second!=0) );
-    assert(clusList->first->detectorElement()) ;
-    std::unique_ptr<const Amg::Vector2D> locpos{clusList->first->detectorElement()->surface().globalToLocal(position)};
+    assert( (clusList.first!=0) && (clusList.second!=0) );
+    assert(clusList.first->detectorElement()) ;
+    std::unique_ptr<const Amg::Vector2D> locpos{clusList.first->detectorElement()->surface().globalToLocal(position)};
     assert(locpos);
     Trk::MeasurementBase::m_localParams = Trk::LocalParameters(*locpos ) ;
 
diff --git a/InnerDetector/InDetRecTools/InDetTestBLayer/InDetTestBLayer/TrackStateOnBLayerInfo.h b/InnerDetector/InDetRecTools/InDetTestBLayer/InDetTestBLayer/TrackStateOnBLayerInfo.h
index ae8234c33cfe9e9dc6f6537de17b31d9017e0fa6..85bec0b5034f5dcc131025c60921060c4b00e54d 100644
--- a/InnerDetector/InDetRecTools/InDetTestBLayer/InDetTestBLayer/TrackStateOnBLayerInfo.h
+++ b/InnerDetector/InDetRecTools/InDetTestBLayer/InDetTestBLayer/TrackStateOnBLayerInfo.h
@@ -24,7 +24,7 @@ namespace InDet {
 
   public:
     TrackStateOnBLayerInfo();
-    ~TrackStateOnBLayerInfo();
+    ~TrackStateOnBLayerInfo() = default;
 
     inline TrackStateOnBLayerType type() const { return m_type; }
     inline Identifier moduleId() const { return m_moduleId; }
diff --git a/InnerDetector/InDetRecTools/InDetTestBLayer/src/TrackStateOnBLayerInfo.cxx b/InnerDetector/InDetRecTools/InDetTestBLayer/src/TrackStateOnBLayerInfo.cxx
index 2946b90878a5a521c7232201a2a73b2b7d8513e4..85baefc7ad3930e750c13c8a2cacb1f7fb015af3 100644
--- a/InnerDetector/InDetRecTools/InDetTestBLayer/src/TrackStateOnBLayerInfo.cxx
+++ b/InnerDetector/InDetRecTools/InDetTestBLayer/src/TrackStateOnBLayerInfo.cxx
@@ -26,12 +26,6 @@ namespace InDet {
     m_goodFrac = -99999;
   }
 
-  InDet::TrackStateOnBLayerInfo::~TrackStateOnBLayerInfo(){
-    ////....
-  }
-
-
-
 
 } //end namespace
 
diff --git a/InnerDetector/InDetRecTools/SiSpacePointTool/src/SiSpacePointMakerTool.cxx b/InnerDetector/InDetRecTools/SiSpacePointTool/src/SiSpacePointMakerTool.cxx
index 36439c690ba128d542491d020b4c3ee34432db4a..e249385f36afb22ccdcc01be16cc4278ac83f86e 100644
--- a/InnerDetector/InDetRecTools/SiSpacePointTool/src/SiSpacePointMakerTool.cxx
+++ b/InnerDetector/InDetRecTools/SiSpacePointTool/src/SiSpacePointMakerTool.cxx
@@ -167,9 +167,7 @@ namespace InDet {
     if (ok) {
       ATH_MSG_VERBOSE( "SpacePoint generated at: ( " <<  point.x() << " , " << point.y() << " , " << point.z() << " )   " );       
       const std::pair<IdentifierHash,IdentifierHash> elementIdList( element1->identifyHash() , element2->identifyHash() ); 
-      const std::pair<const Trk::PrepRawData*, const Trk::PrepRawData*>*
-        clusList = new std::pair<const Trk::PrepRawData*, const Trk::PrepRawData*>(&cluster1, &cluster2);
-      return new InDet::SCT_SpacePoint(elementIdList, point, clusList);
+      return new InDet::SCT_SpacePoint(elementIdList, point, {&cluster1, &cluster2});
     }
 
     return nullptr;
@@ -287,7 +285,6 @@ namespace InDet {
     }
   }
 
-
   //--------------------------------------------------------------------------
   void SiSpacePointMakerTool::fillSCT_SpacePointEtaOverlapCollection(const InDet::SCT_ClusterCollection* clusters1, 
                                                                      const InDet::SCT_ClusterCollection* clusters2,
@@ -732,9 +729,7 @@ namespace InDet {
     Amg::Vector3D point(In0.position(m));
     
     const std::pair<IdentifierHash,IdentifierHash> elementIdList(ID0,ID1); 
-    const std::pair<const Trk::PrepRawData*,const Trk::PrepRawData*>* 
-      clusList = new std::pair<const Trk::PrepRawData*,const Trk::PrepRawData*>(In0.cluster(),In1.cluster());
-    return new InDet::SCT_SpacePoint(elementIdList, point, clusList);
+    return new InDet::SCT_SpacePoint(elementIdList, point, {In0.cluster(),In1.cluster()});
   }
  
 }
diff --git a/LArCalorimeter/LArG4/LArG4SD/python/LArG4SDConfig.py b/LArCalorimeter/LArG4/LArG4SD/python/LArG4SDConfig.py
index 3a8e8aa94076239b65a4241a3690c3c6ccc35eb4..428ad2f7398ee187a15209feb4d6c9b2c9fd2a33 100644
--- a/LArCalorimeter/LArG4/LArG4SD/python/LArG4SDConfig.py
+++ b/LArCalorimeter/LArG4/LArG4SD/python/LArG4SDConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaCommon import CfgMgr
 
@@ -127,9 +127,11 @@ def getLArEMBSensitiveDetector(name="LArEMBSensitiveDetector", **kwargs):
     bare_collection_name = "LArHitEMB"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "LArEMBHits"
+    region = "CALO"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     ## Main configuration
     kwargs.setdefault("StacVolumes",["LArMgr::LAr::EMB::STAC"])
     kwargs.setdefault("PresamplerVolumes",["LArMgr::LAr::Barrel::Presampler::Module"])
@@ -144,9 +146,11 @@ def getLArEMECSensitiveDetector(name="LArEMECSensitiveDetector", **kwargs):
     bare_collection_name = "LArHitEMEC"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "LArEMECHits"
+    region = "CALO"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     from G4AtlasApps.SimFlags import simFlags
     if simFlags.SimLayout.get_Value() not in ["tb_LArH6_2002","tb_LArH6EC_2002"]:
         kwargs.setdefault("NegIWVolumes",["LArMgr::LAr::EMEC::Neg::InnerWheel"])
@@ -167,9 +171,11 @@ def getLArFCALSensitiveDetector(name="LArFCALSensitiveDetector", **kwargs):
     bare_collection_name = "LArHitFCAL"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "LArFCALHits"
+    region = "CALO"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     kwargs.setdefault("FCAL1Volumes",["LArMgr::LAr::FCAL::Module1::Gap"])
     kwargs.setdefault("FCAL2Volumes",["LArMgr::LAr::FCAL::Module2::Gap"])
     kwargs.setdefault("FCAL3Volumes",["LArMgr::LAr::FCAL::Module3::Gap"])
@@ -184,9 +190,11 @@ def getLArHECSensitiveDetector(name="LArHECSensitiveDetector", **kwargs):
     bare_collection_name = "LArHitHEC"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "LArHECHits"
+    region = "CALO"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     #kwargs.setdefault("SliceVolumes",["LAr::HEC::Module::Depth::Slice"])
     #kwargs.setdefault("LocalVolumes",["LAr::HEC::Module::Depth::Slice::Local"])
     kwargs.setdefault("WheelVolumes",["LArMgr::LAr::HEC::Module::Depth::Slice"])
diff --git a/LArCalorimeter/LArG4/LArG4SD/python/LArG4SDToolConfig.py b/LArCalorimeter/LArG4/LArG4SD/python/LArG4SDToolConfig.py
index 9a32083059e755c63f25388a296284dbd84f1931..9aa1dbdd5fc0035fc1740d03d81906e14f27e6cd 100644
--- a/LArCalorimeter/LArG4/LArG4SD/python/LArG4SDToolConfig.py
+++ b/LArCalorimeter/LArG4/LArG4SD/python/LArG4SDToolConfig.py
@@ -176,9 +176,12 @@ def LArEMBSensitiveDetectorCfg(ConfigFlags,name="LArEMBSensitiveDetector", **kwa
     bare_collection_name = "LArHitEMB"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "LArEMBHits"
-    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "CALO"
+    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                    bare_collection_name,
+                                                    mergeable_collection_suffix,
+                                                    merger_input_property,
+                                                    region)
 
     result.merge(acc)
     ## Main configuration
@@ -195,7 +198,7 @@ def LArEMBSensitiveDetectorCfg(ConfigFlags,name="LArEMBSensitiveDetector", **kwa
 
     result.merge(EMBCalculatorCfg(ConfigFlags))
     kwargs.setdefault("EMBCalculator", result.getService("EMBCalculator"))
-    
+
     result.setPrivateTools( LArG4__EMBSDTool(name, **kwargs) )
     return result
 
@@ -204,9 +207,12 @@ def LArEMECSensitiveDetectorCfg(ConfigFlags, name="LArEMECSensitiveDetector", **
     bare_collection_name = "LArHitEMEC"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "LArEMECHits"
-    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "CALO"
+    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                    bare_collection_name,
+                                                    mergeable_collection_suffix,
+                                                    merger_input_property,
+                                                    region)
     result.merge(acc)
 
     if ConfigFlags.GeoModel.AtlasVersion not in ["tb_LArH6_2002","tb_LArH6EC_2002"]:
@@ -254,9 +260,12 @@ def LArFCALSensitiveDetectorCfg(ConfigFlags, name="LArFCALSensitiveDetector", **
     bare_collection_name = "LArHitFCAL"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "LArFCALHits"
-    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "CALO"
+    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                    bare_collection_name,
+                                                    mergeable_collection_suffix,
+                                                    merger_input_property,
+                                                    region)
     result.merge(acc)
 
     kwargs.setdefault("FCAL1Volumes",["LArMgr::LAr::FCAL::Module1::Gap"])
@@ -287,9 +296,12 @@ def LArHECSensitiveDetectorCfg(ConfigFlags, name="LArHECSensitiveDetector", **kw
     bare_collection_name = "LArHitHEC"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "LArHECHits"
-    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "CALO"
+    acc, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                    bare_collection_name,
+                                                    mergeable_collection_suffix,
+                                                    merger_input_property,
+                                                    region)
     result.merge(acc)
 
     kwargs.setdefault("WheelVolumes",["LArMgr::LAr::HEC::Module::Depth::Slice"])
diff --git a/MagneticField/MagFieldServices/MagFieldServices/AtlasFieldMapCondAlg.h b/MagneticField/MagFieldServices/MagFieldServices/AtlasFieldMapCondAlg.h
index ee3ffa2f76348c37f6baf3adb028a2ff17d5ee93..51004fa0c054561502570d993bd19b4c3dd7d99d 100644
--- a/MagneticField/MagFieldServices/MagFieldServices/AtlasFieldMapCondAlg.h
+++ b/MagneticField/MagFieldServices/MagFieldServices/AtlasFieldMapCondAlg.h
@@ -56,8 +56,15 @@ namespace MagField {
             EventIDRange m_mapCondObjOutputRange {EventIDRange()}; // default range covers everything (run/event and timestamp)
         }; 
 
+        // get the field map
         StatusCode updateFieldMap(const EventContext& ctx, Cache& cache) const;
 
+        // get DCS currents to decide which field map file to read
+        StatusCode checkCurrentFromConditions(const EventContext& ctx,
+                                              double& soleCurrent,
+                                              double& toroCurrent,
+                                              EventIDRange& rangeDCS) const;
+        
         /// map file names - if not read from cool
         Gaudi::Property<std::string> m_fullMapFilename {this,
                                                         "FullMapFile", "MagneticFieldMaps/bfieldmap_7730_20400_14m.root",
@@ -74,6 +81,12 @@ namespace MagField {
         Gaudi::Property<double>      m_mapToroCurrent  {this,
                                                         "MapToroCurrent", 20400., "Nominal toroid current (A)"};
 
+        // threshold below which currents are considered zero
+        Gaudi::Property<double> m_soleMinCurrent {this, 
+                                                  "SoleMinCurrent", 1.0, "Minimum solenoid current (A) for which solenoid is considered ON"};
+        Gaudi::Property<double> m_toroMinCurrent {this, 
+                                                  "ToroMinCurrent", 1.0, "Minimum toroid current (A) for which toroid is considered ON"};
+
 
         // flag to load map on start
         Gaudi::Property<bool> m_loadMapOnStart  {this,
@@ -94,6 +107,12 @@ namespace MagField {
         {this, 
          "AtlasFieldMapCondObj", "fieldMapCondObj", "Name of key for the Magnetic Field conditions object with the map file names"};
 
+        // COOL folder name containing current information
+        // current input key
+        SG::ReadCondHandleKey<CondAttrListCollection> m_currInputKey
+        {this, 
+         "COOLCurrentsFolderName", "/EXT/DCS/MAGNETS/SENSORDATA", "Name of the COOL folder containing magnet currents"};
+
         ServiceHandle<ICondSvc> m_condSvc { this, 
                                             "CondSvc", "CondSvc", "conditions service" };
 
diff --git a/MagneticField/MagFieldServices/share/test_magFieldCondAlg.py b/MagneticField/MagFieldServices/share/test_magFieldCondAlg.py
index 58bc3ca1d068c6c906187833bc3d43246ee0ccfd..4c82f0335aab36bac3e8845ec00722d817379d06 100644
--- a/MagneticField/MagFieldServices/share/test_magFieldCondAlg.py
+++ b/MagneticField/MagFieldServices/share/test_magFieldCondAlg.py
@@ -4,10 +4,23 @@
 #
 
 # Testing IOVs and currents: (since LB, solenoid, toroids)
+# Default test - should read both mag field files, and turn off fields for events 5 to 9, and back on for 10 to 14
 currents = [(0, 7730, 20400),
             (5, 0, 0),
             (10, 7730, 20400)]
 
+# Optional test: only toroid is on for whole run. Scale factor for solenoid will become 1 at event 5,
+# but solenoid field will still be off
+# currents = [(0, 0, 20400),
+#             (5, 7730, 20400),
+#             (10, 7730, 20400)]
+
+# Optional test: only solenoid is on for whole run. Scale factor for toroid will become 1 at event 5,
+# but toroid field will still be off
+# currents = [(0, 7730, 0),
+#             (5, 7730, 20400),
+#             (10, 7730, 20400)]
+
 # Folder name
 folder = '/EXT/DCS/MAGNETS/SENSORDATA'
 
diff --git a/MagneticField/MagFieldServices/src/AtlasFieldCacheCondAlg.cxx b/MagneticField/MagFieldServices/src/AtlasFieldCacheCondAlg.cxx
index 74cff53bab650ed8ad98a57d60a8dc53b518a68b..5c9facd9f16c9f47aeebc50cd5602e02f00a6ef6 100644
--- a/MagneticField/MagFieldServices/src/AtlasFieldCacheCondAlg.cxx
+++ b/MagneticField/MagFieldServices/src/AtlasFieldCacheCondAlg.cxx
@@ -86,14 +86,13 @@ MagField::AtlasFieldCacheCondAlg::execute(const EventContext& ctx) const {
     //This will need to be filled before we construct the condition object 
     Cache cache{};
 
-    // set current scale factor from either conditions or from jobOption parameters
     if (m_useDCS) {
         ATH_CHECK( updateCurrentFromConditions(ctx, cache) );
     }
     else {
         ATH_CHECK( updateCurrentFromParameters(ctx, cache) );
     }
-
+    
     // Must read map cond object to get previously created map
     SG::ReadCondHandle<AtlasFieldMapCondObj> mapReadHandle{m_mapCondObjInputKey, ctx};
     const AtlasFieldMapCondObj* mapCondObj{*mapReadHandle};
@@ -109,7 +108,6 @@ MagField::AtlasFieldCacheCondAlg::execute(const EventContext& ctx) const {
     if (!m_lockMapCurrents) {
         scaleField(cache, fieldMap);
     }
-    
 
     // save current scale factor in conditions object
     auto fieldCondObj = std::make_unique<AtlasFieldCacheCondObj>();
@@ -225,6 +223,7 @@ MagField::AtlasFieldCacheCondAlg::updateCurrentFromConditions(const EventContext
         torcur = 0.0;
         ATH_MSG_INFO( "UpdateCurrentFromConditions: Toroids are off" );
     }
+
     cache.m_solenoidCurrent = solcur;
     cache.m_toroidCurrent   = torcur;
 
@@ -275,13 +274,13 @@ MagField::AtlasFieldCacheCondAlg::scaleField(Cache& cache, const MagField::Atlas
              std::abs( cache.m_solenoidCurrent/fieldMap->solenoidCurrent() - 1.0 ) > 0.001 ){
             cache.m_solScaleFactor = cache.m_solenoidCurrent/fieldMap->solenoidCurrent(); 
         }
-        ATH_MSG_INFO( "scaleField: Solenoid field scale factor " << cache.m_solScaleFactor << ". Solenoid and map currents: "
+        ATH_MSG_INFO( "scaleField: Solenoid field scale factor " << cache.m_solScaleFactor << ". Desired current and map current: "
                       << cache.m_solenoidCurrent << "," << fieldMap->solenoidCurrent());
     }
     else {
         // No SF set, set it to 0 - current was set to zero either here or for the map, or the map was not read in
         cache.m_solScaleFactor = 0;
-        ATH_MSG_INFO( "scaleField: Solenoid field scale factor " << cache.m_solScaleFactor << ". Solenoid and map currents: "
+        ATH_MSG_INFO( "scaleField: Solenoid field scale factor " << cache.m_solScaleFactor << ". Desired current and map current: "
                       << cache.m_solenoidCurrent << "," << ((fieldMap) ? fieldMap->solenoidCurrent() : 0));
     }
     
@@ -292,12 +291,12 @@ MagField::AtlasFieldCacheCondAlg::scaleField(Cache& cache, const MagField::Atlas
             // scale the field in all zones except for the solenoid zone
             cache.m_torScaleFactor = cache.m_toroidCurrent/fieldMap->toroidCurrent();
         }
-        ATH_MSG_INFO( "scaleField: Toroid field scale factor " << cache.m_torScaleFactor << ". Toroid and map currents: "
+        ATH_MSG_INFO( "scaleField: Toroid field scale factor " << cache.m_torScaleFactor << ". Desired current and map current: "
                       << cache.m_toroidCurrent << "," << fieldMap->toroidCurrent());
     }
     else {
         cache.m_torScaleFactor = 0;
-        ATH_MSG_INFO( "scaleField: Toroid field scale factor " << cache.m_torScaleFactor << ". Toroid and map currents: "
+        ATH_MSG_INFO( "scaleField: Toroid field scale factor " << cache.m_torScaleFactor << ". Desired current and map current: "
                       << cache.m_toroidCurrent << "," << ((fieldMap) ? fieldMap->toroidCurrent() : 0));
     }
 }
diff --git a/MagneticField/MagFieldServices/src/AtlasFieldMapCondAlg.cxx b/MagneticField/MagFieldServices/src/AtlasFieldMapCondAlg.cxx
index 460fb0b2cdd52edc89a4680b4e0151e15f572e21..261c22ecf732cf30c83f1890b3ef72838a77afb2 100644
--- a/MagneticField/MagFieldServices/src/AtlasFieldMapCondAlg.cxx
+++ b/MagneticField/MagFieldServices/src/AtlasFieldMapCondAlg.cxx
@@ -42,7 +42,10 @@ MagField::AtlasFieldMapCondAlg::initialize() {
     ATH_CHECK( m_condSvc.retrieve() );
 
     // Read Handle for the map
-    ATH_CHECK( m_mapsInputKey.initialize() );
+    ATH_CHECK( m_mapsInputKey.initialize(m_useMapsFromCOOL) );
+
+    // Read Handle for the current
+    ATH_CHECK( m_currInputKey.initialize (!m_loadMapOnStart && m_useMapsFromCOOL) );
 
     // Read Handle for tagInfo
     ATH_CHECK( m_tagInfoKey.initialize() );
@@ -187,6 +190,69 @@ MagField::AtlasFieldMapCondAlg::updateFieldMap(const EventContext& ctx, Cache& c
             // (if it contains more than 3 maps, then this logic doesn't work perfectly)
             // nominal currents are read from the global map
         }
+
+        if (m_loadMapOnStart) {
+
+            // For loading map on start - online scenario - take the currents from job options
+            // And set IOV range to current run number to run number + 1
+
+            cache.m_mapSoleCurrent = m_mapSoleCurrent;
+            cache.m_mapToroCurrent = m_mapToroCurrent;
+
+            // Create a range for the current run
+            EventIDBase start, stop;
+            start.set_run_number(ctx.eventID().run_number());
+            start.set_lumi_block(0);
+            stop.set_run_number(ctx.eventID().run_number() + 1);
+            stop.set_lumi_block(0);
+            cache.m_mapCondObjOutputRange = EventIDRange(start,stop);
+
+            ATH_MSG_INFO("updateFieldMap: loadMapOnStart is set, overriding currents from job options - solCur "
+                         << cache.m_mapSoleCurrent << ", torCur " << cache.m_mapToroCurrent
+                         << " and setting IOV range: " << cache.m_mapCondObjOutputRange);
+        }
+        else {
+            // For normal athena jobs, check the currents in DCS to check if one of the two magnets
+            // is OFF so that the correct map can be used.
+            // If a field is off, set an IOV validity range to be the current run only.
+            // (Note DCS currents have a timestamp-based IOV, so this is not used.)
+
+            //  Note: for the nominal maps from COOL, three maps are available:
+            //    - Global with both solenoid and toroid
+            //    - Solenoid - just the currents for the solenoid
+            //    - Toroid   - just the currents for the toroid
+
+            double soleCurrent;
+            double toroCurrent;
+            EventIDRange rangeDCS;
+            ATH_CHECK( checkCurrentFromConditions(ctx, soleCurrent, toroCurrent, rangeDCS) );
+
+            bool mustCreateIOVRange = false;
+            if (soleCurrent < m_soleMinCurrent) {
+                cache.m_mapSoleCurrent = 0;
+                mustCreateIOVRange = true;
+                ATH_MSG_INFO("updateFieldMap: set solenoid current to 0 from DCS");
+            }
+            if (toroCurrent < m_toroMinCurrent) {
+                cache.m_mapToroCurrent = 0;
+                mustCreateIOVRange = true;
+                ATH_MSG_INFO("updateFieldMap: set toroid current to 0 from DCS");
+            }
+            if (mustCreateIOVRange) {
+                // The currents from DCS are zero for either solenoid or toroid, construct an IOV range for one run
+                EventIDBase start, stop;
+                // use ctx run number
+                start.set_run_number(ctx.eventID().run_number());
+                start.set_lumi_block(0);
+                stop.set_run_number(ctx.eventID().run_number() + 1);
+                stop.set_lumi_block(0);
+                cache.m_mapCondObjOutputRange = EventIDRange(start,stop);
+                ATH_MSG_INFO("updateFieldMap: map IOV  range " << cache.m_mapCondObjOutputRange);
+            }
+            else {
+                ATH_MSG_INFO("updateFieldMap: currents are OK, will use nominal maps");
+            }
+        }
     }
     
     else {
@@ -201,7 +267,7 @@ MagField::AtlasFieldMapCondAlg::updateFieldMap(const EventContext& ctx, Cache& c
         EventIDBase start, stop;
         start.set_run_number(ctx.eventID().run_number());
         start.set_lumi_block(0);
-        stop.set_run_number(ctx.eventID().run_number()+1);
+        stop.set_run_number(ctx.eventID().run_number() + 1);
         stop.set_lumi_block(0);
         cache.m_mapCondObjOutputRange = EventIDRange(start,stop);
 
@@ -225,13 +291,15 @@ MagField::AtlasFieldMapCondAlg::updateFieldMap(const EventContext& ctx, Cache& c
                 if (tag.first == "MapSoleCurrent") {
                     cache.m_mapSoleCurrent = std::stof(tag.second);
                     resetCurrentsFromTagInfo = true;
-                    ATH_MSG_INFO("updateFieldMap: found MapSoleCurrent in TagInfo, setting the solenoid current " << cache.m_mapSoleCurrent);
+                    ATH_MSG_INFO("updateFieldMap: found MapSoleCurrent in TagInfo, setting the solenoid current "
+                                 << cache.m_mapSoleCurrent);
                 }
                 else 
                     if (tag.first == "MapToroCurrent") {
                         cache.m_mapToroCurrent = std::stof(tag.second);
                         resetCurrentsFromTagInfo = true;
-                        ATH_MSG_INFO("updateFieldMap: found MapToroCurrent in TagInfo, setting the toroid current " << cache.m_mapToroCurrent);
+                        ATH_MSG_INFO("updateFieldMap: found MapToroCurrent in TagInfo, setting the toroid current "
+                                     << cache.m_mapToroCurrent);
                     }
             }
             if (resetCurrentsFromTagInfo) ATH_MSG_INFO("updateFieldMap: reset currents from TagInfo");
@@ -312,3 +380,98 @@ MagField::AtlasFieldMapCondAlg::updateFieldMap(const EventContext& ctx, Cache& c
 
     return StatusCode::SUCCESS;
 }
+
+
+StatusCode
+MagField::AtlasFieldMapCondAlg::checkCurrentFromConditions(const EventContext& ctx,
+                                                           double& soleCurrent,
+                                                           double& toroCurrent,
+                                                           EventIDRange& rangeDCS) const
+{
+
+    // readin current value
+    SG::ReadCondHandle<CondAttrListCollection> readHandle {m_currInputKey, ctx};
+    const CondAttrListCollection* attrListColl{*readHandle};
+    if (attrListColl == nullptr) {
+        ATH_MSG_ERROR("checkCurrentFromConditions: Failed to retrieve CondAttributeListCollection with key " << m_currInputKey.key());
+        return StatusCode::FAILURE;
+    }
+
+
+    // Get the validitiy range
+    if (!readHandle.range(rangeDCS)) {
+        ATH_MSG_FATAL("checkCurrentFromConditions: Failed to retrieve validity range for " << readHandle.key());
+        return StatusCode::FAILURE;
+    }
+    ATH_MSG_INFO("checkCurrentFromConditions: Range of input currents is " <<  rangeDCS);
+
+    // get magnet currents from DCS
+    double solcur{0.};
+    double torcur{0.};
+    bool gotsol{false};
+    bool gottor{false};
+
+    /*
+     * due to inconsistencies between CONDBR2 and OFLP200/COMP200 (the former includes channel names
+     * in the /EXT/DCS/MAGNETS/SENSORDATA folder, the latter don't), we try to read currents in
+     * both ways
+     */
+    bool hasChanNames{false};
+    ATH_MSG_INFO( "checkCurrentFromConditions: Attempt 1 at reading currents from DCS (using channel name)" );
+    for ( CondAttrListCollection::const_iterator itr = attrListColl->begin(); itr != attrListColl->end(); ++itr ) {
+        const std::string& name = attrListColl->chanName(itr->first);
+        ATH_MSG_INFO( "checkCurrentFromConditions: Trying to read from DCS: [channel name, index, value] "
+                      << name << " , " << itr->first << " , " << itr->second["value"].data<float>() );
+        if (name.compare("") != 0) {
+            hasChanNames = true;
+        }
+        if ( name.compare("CentralSol_Current") == 0 ) {
+            // channel 1 is solenoid current
+            solcur = itr->second["value"].data<float>();
+            gotsol = true;
+        } else if ( name.compare("Toroids_Current") == 0 ) {
+            // channel 3 is toroid current
+            torcur = itr->second["value"].data<float>();
+            gottor = true;
+        }
+    }
+    if ( !hasChanNames ) {
+        ATH_MSG_INFO( "checkCurrentFromConditions: Attempt 2 at reading currents from DCS (using channel index)" );
+        // in no channel is named, try again using channel index instead
+        for ( CondAttrListCollection::const_iterator itr = attrListColl->begin(); itr != attrListColl->end(); ++itr ) {
+
+            if ( itr->first == 1 ) {
+                // channel 1 is solenoid current
+                solcur = itr->second["value"].data<float>();
+                gotsol = true;
+            } else if ( itr->first == 3 ) {
+                // channel 3 is toroid current
+                torcur = itr->second["value"].data<float>();
+                gottor = true;
+            }
+        }
+    }
+    if ( !gotsol || !gottor ) {
+        if ( !gotsol ) ATH_MSG_ERROR( "checkCurrentFromConditions: Missing solenoid current in DCS information" );
+        if ( !gottor ) ATH_MSG_ERROR( "checkCurrentFromConditions: Missing toroid current in DCS information" );
+        return StatusCode::FAILURE;
+    }
+
+    ATH_MSG_INFO( "checkCurrentFromConditions: Currents read from DCS - solenoid " << solcur << " toroid " << torcur );
+
+    // round to zero if close to zero
+    if ( solcur < m_soleMinCurrent) {
+        solcur = 0.0;
+        ATH_MSG_INFO( "checkCurrentFromConditions: Solenoid is off" );
+    }
+    if ( torcur < m_toroMinCurrent) {
+        torcur = 0.0;
+        ATH_MSG_INFO( "checkCurrentFromConditions: Toroids are off" );
+    }
+
+    soleCurrent = solcur;
+    toroCurrent = torcur;
+
+    return StatusCode::SUCCESS;
+}
+    
diff --git a/MuonSpectrometer/MuonG4/MuonG4SD/python/MuonG4SDConfig.py b/MuonSpectrometer/MuonG4/MuonG4SD/python/MuonG4SDConfig.py
index 8951047a9e4644f24c55ef8df7570c4f9b34183e..5bbb723dc026b7770be259892cf9f47c05add321 100644
--- a/MuonSpectrometer/MuonG4/MuonG4SD/python/MuonG4SDConfig.py
+++ b/MuonSpectrometer/MuonG4/MuonG4SD/python/MuonG4SDConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaCommon import CfgMgr
 
@@ -9,9 +9,11 @@ def getCSCSensitiveDetectorCosmics(name="CSCSensitiveDetectorCosmics", **kwargs)
     bare_collection_name = "CSC_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "CSCHits"
+    region = "MUON"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::CscArCO2"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
     return CfgMgr.CSCSensitiveDetectorCosmicsTool(name, **kwargs)
@@ -21,9 +23,11 @@ def getCSCSensitiveDetector(name="CSCSensitiveDetector", **kwargs):
     bare_collection_name = "CSC_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "CSCHits"
+    region = "MUON"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::CscArCO2"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
     return CfgMgr.CSCSensitiveDetectorTool(name, **kwargs)
@@ -39,9 +43,11 @@ def getMDTSensitiveDetectorCosmics(name="MDTSensitiveDetectorCosmics", **kwargs)
     bare_collection_name = "MDT_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "MDTHits"
+    region = "MUON"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::SensitiveGas"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
     return CfgMgr.MDTSensitiveDetectorCosmicsTool(name, **kwargs)
@@ -51,9 +57,11 @@ def getMDTSensitiveDetector(name="MDTSensitiveDetector", **kwargs):
     bare_collection_name = "MDT_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "MDTHits"
+    region = "MUON"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::SensitiveGas"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
     return CfgMgr.MDTSensitiveDetectorTool(name, **kwargs)
@@ -69,9 +77,11 @@ def getRPCSensitiveDetectorCosmics(name="RPCSensitiveDetectorCosmics", **kwargs)
     bare_collection_name = "RPC_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "RPCHits"
+    region = "MUON"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::gazGap"])
     kwargs.setdefault("OutputCollectionNames", [bare_collection_name])
     return CfgMgr.RPCSensitiveDetectorCosmicsTool(name, **kwargs)
@@ -81,9 +91,11 @@ def getRPCSensitiveDetector(name="RPCSensitiveDetector", **kwargs):
     bare_collection_name = "RPC_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "RPCHits"
+    region = "MUON"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::gazGap"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
     return CfgMgr.RPCSensitiveDetectorTool(name, **kwargs)
@@ -93,9 +105,11 @@ def getTGCSensitiveDetectorCosmics(name="TGCSensitiveDetectorCosmics", **kwargs)
     bare_collection_name = "TGC_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "TGCHits"
+    region = "MUON"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::muo::TGCGas"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
     return CfgMgr.TGCSensitiveDetectorCosmicsTool(name, **kwargs)
@@ -105,9 +119,11 @@ def getTGCSensitiveDetector(name="TGCSensitiveDetector", **kwargs):
     bare_collection_name = "TGC_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "TGCHits"
+    region = "MUON"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::muo::TGCGas"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
     return CfgMgr.TGCSensitiveDetectorTool(name, **kwargs)
diff --git a/MuonSpectrometer/MuonG4/MuonG4SD/python/MuonG4SDToolConfig.py b/MuonSpectrometer/MuonG4/MuonG4SD/python/MuonG4SDToolConfig.py
index 2141f9f5f5c2293ee242798d1c49384991a21911..e89eaea0c28c6266829398100f6db6619608e5db 100644
--- a/MuonSpectrometer/MuonG4/MuonG4SD/python/MuonG4SDToolConfig.py
+++ b/MuonSpectrometer/MuonG4/MuonG4SD/python/MuonG4SDToolConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 from ISF_Algorithms.collection_merger_helpersNew import CollectionMergerCfg
 from AthenaConfiguration.ComponentFactory import CompFactory
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
@@ -9,9 +9,12 @@ def CSCSensitiveDetectorCosmicsCfg(ConfigFlags, name="CSCSensitiveDetectorCosmic
     bare_collection_name = "CSC_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "CSCHits"
-    result, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "MUON"
+    result, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                       bare_collection_name,
+                                                       mergeable_collection_suffix,
+                                                       merger_input_property,
+                                                       region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::CscArCO2"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
 
@@ -21,9 +24,12 @@ def CSCSensitiveDetectorCfg(ConfigFlags, name="CSCSensitiveDetector", **kwargs):
     bare_collection_name = "CSC_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "CSCHits"
-    result, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "MUON"
+    result, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                       bare_collection_name,
+                                                       mergeable_collection_suffix,
+                                                       merger_input_property,
+                                                       region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::CscArCO2"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
 
@@ -43,9 +49,12 @@ def MDTSensitiveDetectorCosmicsCfg(ConfigFlags, name="MDTSensitiveDetectorCosmic
     bare_collection_name = "MDT_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "MDTHits"
-    result, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "MUON"
+    result, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                       bare_collection_name,
+                                                       mergeable_collection_suffix,
+                                                       merger_input_property,
+                                                       region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::SensitiveGas"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
 
@@ -57,9 +66,12 @@ def MDTSensitiveDetectorCfg(ConfigFlags, name="MDTSensitiveDetector", **kwargs):
     bare_collection_name = "MDT_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "MDTHits"
-    result, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "MUON"
+    result, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                       bare_collection_name,
+                                                       mergeable_collection_suffix,
+                                                       merger_input_property,
+                                                       region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::SensitiveGas"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
 
@@ -69,7 +81,8 @@ def MDTSensitiveDetectorCfg(ConfigFlags, name="MDTSensitiveDetector", **kwargs):
 
 def MicromegasSensitiveDetectorCfg(ConfigFlags, name="MicromegasSensitiveDetector", **kwargs):
     kwargs.setdefault("LogicalVolumeNames", ["Muon::MM_Sensitive"])
-    kwargs.setdefault("OutputCollectionNames", ["MicromegasSensitiveDetector"]) # need ISF_Collection merger in acc?
+    kwargs.setdefault("OutputCollectionNames", ["MicromegasSensitiveDetector"])
+    # TODO add support for Micromegas to ISF_CollectionMerger
     result=ComponentAccumulator()
     result.setPrivateTools( MicromegasSensitiveDetectorTool(name, **kwargs) )
     return result
@@ -79,9 +92,12 @@ def RPCSensitiveDetectorCosmicsCfg(ConfigFlags, name="RPCSensitiveDetectorCosmic
     bare_collection_name = "RPC_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "RPCHits"
-    result, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "MUON"
+    result, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                       bare_collection_name,
+                                                       mergeable_collection_suffix,
+                                                       merger_input_property,
+                                                       region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::gazGap"])
     kwargs.setdefault("OutputCollectionNames", [bare_collection_name]) #is this correct?
 
@@ -93,9 +109,12 @@ def RPCSensitiveDetectorCfg(ConfigFlags, name="RPCSensitiveDetector", **kwargs):
     bare_collection_name = "RPC_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "RPCHits"
-    result, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "MUON"
+    result, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                       bare_collection_name,
+                                                       mergeable_collection_suffix,
+                                                       merger_input_property,
+                                                       region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::gazGap"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
 
@@ -107,9 +126,12 @@ def TGCSensitiveDetectorCosmicsCfg(ConfigFlags, name="TGCSensitiveDetectorCosmic
     bare_collection_name = "TGC_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "TGCHits"
-    result, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "MUON"
+    result, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                       bare_collection_name,
+                                                       mergeable_collection_suffix,
+                                                       merger_input_property,
+                                                       region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::muo::TGCGas"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
 
@@ -121,9 +143,12 @@ def TGCSensitiveDetectorCfg(ConfigFlags, name="TGCSensitiveDetector", **kwargs):
     bare_collection_name = "TGC_Hits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "TGCHits"
-    result, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    region = "MUON"
+    result, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                       bare_collection_name,
+                                                       mergeable_collection_suffix,
+                                                       merger_input_property,
+                                                       region)
     kwargs.setdefault("LogicalVolumeNames", ["Muon::muo::TGCGas"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
 
@@ -134,7 +159,7 @@ def TGCSensitiveDetectorCfg(ConfigFlags, name="TGCSensitiveDetector", **kwargs):
 def sTGCSensitiveDetectorCfg(ConfigFlags, name="sTGCSensitiveDetector", **kwargs):
     kwargs.setdefault("LogicalVolumeNames", ["Muon::sTGC_Sensitive"])
     kwargs.setdefault("OutputCollectionNames", ["sTGCSensitiveDetector"])
-
+    # TODO add support for Micromegas to ISF_CollectionMerger
     result=ComponentAccumulator()
     result.setPrivateTools( sTGCSensitiveDetectorTool(name, **kwargs) )
     return result
diff --git a/MuonSpectrometer/MuonG4/MuonPassiveMaterials/CMakeLists.txt b/MuonSpectrometer/MuonG4/MuonPassiveMaterials/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..be3a067dee5205f9bd9a4cfde8c0b9d12d929cd0
--- /dev/null
+++ b/MuonSpectrometer/MuonG4/MuonPassiveMaterials/CMakeLists.txt
@@ -0,0 +1,8 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+# Declare the package name:
+atlas_subdir( MuonPassiveMaterials )
+
+# Install files from the package:
+atlas_install_xmls( data/*.xml )
+
diff --git a/MuonSpectrometer/MuonG4/MuonPassiveMaterials/README.md b/MuonSpectrometer/MuonG4/MuonPassiveMaterials/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..e75acf7b2671e5e5319098eb116453af7b6599eb
--- /dev/null
+++ b/MuonSpectrometer/MuonG4/MuonPassiveMaterials/README.md
@@ -0,0 +1,12 @@
+MuonPassiveMaterials
+---
+
+This package hosts the AGDD primary number xml files for the description of the passive materials present in the muon spectrometer and its close surrounding. Those passive materials are important for the simulation of muon tracks but also for cavern background and radiation studies.
+
+Previously the AGDD primary numbers were contained in an xml block inside the [amdb files](https://twiki.cern.ch/twiki/bin/view/Atlas/AmdbSimrecFiles). However, there was no version control system. Now, they are contained in this package which also allows to study the passive materials in a standalone GeoModel environment outside of athena (such as the [agdd standalone package](https://gitlab.cern.ch/GeoModelATLAS/agdd)) without needing the full amdb files.
+
+Content
+---
+
+`passiveMat_r.08.02.xml`: Run 2 detector geometry, based on AGDD xml block of `amdb_simrec.r.08.01`, fixes of JFSH and JTSH, fixed floor position
+
diff --git a/MuonSpectrometer/MuonG4/MuonPassiveMaterials/data/passiveMat_r.08.02.xml b/MuonSpectrometer/MuonG4/MuonPassiveMaterials/data/passiveMat_r.08.02.xml
new file mode 100644
index 0000000000000000000000000000000000000000..aae41c7ce4c6f4353d2e444902b76adab2535e2f
--- /dev/null
+++ b/MuonSpectrometer/MuonG4/MuonPassiveMaterials/data/passiveMat_r.08.02.xml
@@ -0,0 +1,10188 @@
+<?xml version="1.0"?>
+
+<AGDD>
+
+<section name       = "General Variables"
+         version    = "7.0"
+         date       = "17 January 2005"
+         author     = "Serguei Baranov, Daniel Pomarede"
+         top_volume = "useless">
+
+<!--     name       =  Constants of general use      section name       = "Constante" -->
+
+<var name="GENV_Pi"     value="2. * asin(1)" />
+<var name="GENV_Eps"    value="0.1" />
+<var name="GENV_PiS180" value="GENV_Pi/180." />
+
+<var name="GENV_Si5"   value="sin( 5.0*GENV_PiS180)"/>
+<var name="GENV_Co5"   value="cos( 5.0*GENV_PiS180)"/>
+
+<var name="GENV_Ta15"  value="tan(15.0*GENV_PiS180)"/>
+
+<var name="GENV_Ta20"  value="tan(20.0*GENV_PiS180)"/>
+
+<var name="GENV_Si225" value="sin(22.5*GENV_PiS180)"/>
+<var name="GENV_Co225" value="cos(22.5*GENV_PiS180)"/>
+<var name="GENV_Ta225" value="tan(22.5*GENV_PiS180)"/>
+
+<var name="GENV_Ta375" value="tan(37.5*GENV_PiS180)"/>
+
+<var name="GENV_Si45"  value="sin(45.0*GENV_PiS180)"/>
+<var name="GENV_Co45"  value="cos(45.0*GENV_PiS180)"/>
+<var name="GENV_Ta45"  value="tan(45.0*GENV_PiS180)"/>
+
+<var name="GENV_Si525" value="sin(52.5*GENV_PiS180)"/>
+<var name="GENV_Co525" value="cos(52.5*GENV_PiS180)"/>
+
+<var name="GENV_Ta55"  value="tan(55.0*GENV_PiS180)"/>
+
+<var name="GENV_Si675" value="sin(67.5*GENV_PiS180)"/>
+<var name="GENV_Co675" value="cos(67.5*GENV_PiS180)"/>
+<var name="GENV_Ta675" value="tan(67.5*GENV_PiS180)"/>
+
+<var name="GENV_Ta77"  value="tan(77.0*GENV_PiS180)"/>
+<var name="Zero"             value="  0"/>
+
+<var name="PiOver2" value="90." />
+<var name="PiOver4" value="45." />
+
+</section>
+<section name       = "Atlas ECT Toroidal Magnets"
+         version    = "8.0"
+         date       = "01-01-10, 28 November 2002 -> Summer 2011"
+         author     = "Laurent Chevalier, Marc Virchaux, Daniel Pomarede -> review Jochen Meyer"
+         top_volume = "ECT_Toroids">
+
+<!--     name       =  Atlas ECT Toroidal Magnets    section name       = "Magnets"   -->
+
+<!--  **************************************************************
+      **************************************************************
+      ***                                                       ****
+      ***             Atlas End-Cap Toroids (ECT)               ****
+      ***                                                       ****
+      **************************************************************
+      **************************************************************  -->
+
+<var name="AECT_Toroid_ZPosition" value=" 10406. "/> <!-- confirmed atczte__0002-vAB -->
+
+
+<!-- cold mass parameters -->
+
+<!-- conductor surrounding mass from atltecc_0012-v0 and atltecc_0013-v0 -->
+
+<var name="AECT_CMZwid_ColdMassZwidth"       value="  4490.7 "/>  <!-- warm:  4510.  -->
+<var name="AECT_CMRwid_ColdMassRadwidth"     value="  3942.0 "/>  <!-- warm:  3959.  -->
+<var name="AECT_CMPwid_ColdMassPhiwidth"     value="   270.8 "/>  <!-- warm:   272.  -->
+<var name="AECT_CMHrad_ColdMassHolerad"      value="   250.  "/>  <!-- warm value kept, may be increased due to shrinking of surrounding material -->
+<var name="AECT_CMEOff_ColdMassEdgeOff"      value="   612.4 "/>  <!-- warm:   615.  cold: 612.4 -->
+<var name="AECT_CMHRp1_ColdMassHoleRpo1"     value="  1702.7 "/>  <!-- warm:  1710.  -->
+<var name="AECT_CMHRp2_ColdMassHoleRpo2"     value="   995.7 "/>  <!-- warm:  1000.  -->
+
+<var name="AECT_CMIWba_ColdMassInWebbase"    value="   402.3  "/>  <!-- from atltecc_0011-v0, warm: 202. for the half of it-->
+<var name="AECT_CMIWed_ColdMassInWebedge"    value="   199.1 "/>   <!-- from atltecc_0011-v0, warm: 200. -->
+<!-- following value does not agree to atltecc_0011-v0, it's from consistency calculation, seems smaller in blueprints -->
+<!-- if one wants to decrease the outer radius of the coil this value has to be reduced in the same way! -->
+<var name="AECT_CMIWhi_ColdMassInWebhigh"    value="    90.1  "/>   
+<var name="AECT_CMgodi_ColdMassgloboutdi"    value=" 10164.1 "/>  <!-- from 10014054-07, warm:  10238.  -->
+<var name="AECT_CMgira_ColdMassglobinrad"    value="  1045.  "/>  <!-- from atltec__0001-v0, warm 1050. -->
+
+<!-- keystone box from atltecc_0008-v0 -->
+
+<var name="AECT_KSthic_KeyStonethickness"    value="    39.8 "/>  <!-- warm:    40.  -->
+<var name="AECT_KSlthi_KeyStonelowthick"     value="    59.7 "/>  <!-- warm:    60.  -->
+<var name="AECT_KSHrad_KeyStoneHolerad"      value="   570.  "/>  <!-- warm value kept, may be increased due to shrinking of surrounding material -->
+<var name="AECT_KSHRpo_KeyStoneHoleRpos"     value="  2041.2 "/>  <!-- warm:  2050.  -->
+<var name="AECT_KSZwid_KeyStoneZwidth"       value="  3265.9 "/>  <!-- warm:  3280.  -->
+<var name="AECT_KStRwi_KeyStonetotRwidth"    value="  2837.8 "/>  <!-- warm:  2850.  -->
+<var name="AECT_KSmRwi_KeyStonemidRwidth"    value="   507.8 "/>  <!-- warm:   510.  -->
+<var name="AECT_KSlRwi_KeyStonelowRwidth"    value="   199.1 "/>  <!-- warm:   200.  -->
+<var name="AECT_KStPwi_KeyStonetopPhiwid"    value="  2816.4 "/>  <!-- warm:  2828.5 -->
+<var name="AECT_KSlPwi_KeyStonelowPhiwid"    value="   428.1 "/>  <!-- warm:   430.  -->
+<var name="AECT_KSlPof_KeyStonelowPhioff"    value="   214.1 "/>  <!-- warm:   215.  -->
+<var name="AECT_KSBRwi_KeyStoneBoxRwidth"    value="   492.9 "/>  <!-- warm:   495.  -->
+<var name="AECT_KSFPRo_KeyStoneFootPROff"    value="   291.7 "/>  <!-- warm:   293.  -->
+
+<box  name="ECT_CM_ConductorFrame_basic" material="Aluminium"  X_Y_Z="AECT_CMZwid_ColdMassZwidth ; AECT_CMRwid_ColdMassRadwidth; AECT_CMPwid_ColdMassPhiwidth" />
+<box  name="ECT_CM_ConductorFrame_edge"  material="Aluminium"  X_Y_Z="AECT_CMEOff_ColdMassEdgeOff; AECT_CMEOff_ColdMassEdgeOff; 2.*AECT_CMPwid_ColdMassPhiwidth" />
+<tubs name="ECT_CM_ConductorFrame_Hole"  material="Aluminium"  Rio_Z="0.; AECT_CMHrad_ColdMassHolerad; 2.*AECT_CMPwid_ColdMassPhiwidth"  nbPhi="20" />
+
+<subtraction name="ECT_CM_ConductorFrame" >
+  <posXYZ volume="ECT_CM_ConductorFrame_basic"  X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_CM_ConductorFrame_edge"   X_Y_Z="  AECT_CMZwid_ColdMassZwidth/2.;  AECT_CMRwid_ColdMassRadwidth/2.; 0." rot=" 0.; 0.; 45. "/>  
+  <posXYZ volume="ECT_CM_ConductorFrame_edge"   X_Y_Z=" -AECT_CMZwid_ColdMassZwidth/2.;  AECT_CMRwid_ColdMassRadwidth/2.; 0." rot=" 0.; 0.; 45. "/>  
+  <posXYZ volume="ECT_CM_ConductorFrame_edge"   X_Y_Z="  AECT_CMZwid_ColdMassZwidth/2.; -AECT_CMRwid_ColdMassRadwidth/2.; 0." rot=" 0.; 0.; 45. "/>  
+  <posXYZ volume="ECT_CM_ConductorFrame_edge"   X_Y_Z=" -AECT_CMZwid_ColdMassZwidth/2.; -AECT_CMRwid_ColdMassRadwidth/2.; 0." rot=" 0.; 0.; 45. "/>  
+  <posXYZ volume="ECT_CM_ConductorFrame_Hole"   X_Y_Z=" 0.; AECT_CMRwid_ColdMassRadwidth/2. - AECT_CMHRp1_ColdMassHoleRpo1 ; 0." />
+  <posXYZ volume="ECT_CM_ConductorFrame_Hole"   X_Y_Z=" 0.; AECT_CMRwid_ColdMassRadwidth/2. - AECT_CMHRp1_ColdMassHoleRpo1 - AECT_CMHRp2_ColdMassHoleRpo2 ; 0." />
+</subtraction>
+
+<gvxysx name="ECT_CM_ConductorInnerWeb" material="Aluminium" dZ="AECT_KSZwid_KeyStoneZwidth">
+  <gvxy_point X_Y="AECT_CMIWba_ColdMassInWebbase/2. - GENV_Eps; 0."/>
+  <gvxy_point X_Y="GENV_Si225*AECT_CMIWed_ColdMassInWebedge + AECT_CMIWba_ColdMassInWebbase/2.-GENV_Eps; GENV_Co225*AECT_CMIWed_ColdMassInWebedge"/>
+  <gvxy_point X_Y="AECT_CMPwid_ColdMassPhiwidth/2. + 2.*GENV_Eps; GENV_Co225*AECT_CMIWed_ColdMassInWebedge"/>
+  <gvxy_point X_Y="AECT_CMPwid_ColdMassPhiwidth/2. + 2.*GENV_Eps ; AECT_CMIWhi_ColdMassInWebhigh  - GENV_Eps"/>
+</gvxysx>
+
+<trd  name="ECT_CM_KeyStoneTop" material="Aluminium" Xmp_Ymp_Z=" AECT_KStPwi_KeyStonetopPhiwid; AECT_KStPwi_KeyStonetopPhiwid - 2.*GENV_Ta225*AECT_KSthic_KeyStonethickness; AECT_KSZwid_KeyStoneZwidth; AECT_KSZwid_KeyStoneZwidth; AECT_KSthic_KeyStonethickness" />
+
+<box  name="ECT_CM_KeyStoneMid_basic"  material="Aluminium"  X_Y_Z="AECT_KStPwi_KeyStonetopPhiwid -  GENV_Ta225 * AECT_KSthic_KeyStonethickness * 2. ; AECT_KStRwi_KeyStonetotRwidth - AECT_KSthic_KeyStonethickness - AECT_KSmRwi_KeyStonemidRwidth  ; AECT_KSthic_KeyStonethickness" />
+<box  name="ECT_CM_KeyStoneMid_CutBox" material="Aluminium"  X_Y_Z="AECT_KStPwi_KeyStonetopPhiwid; AECT_KSZwid_KeyStoneZwidth ; 2.*AECT_KSthic_KeyStonethickness" />
+<tubs name="ECT_CM_KeyStoneMid_Hole"   material="Aluminium"  Rio_Z="0.; AECT_KSHrad_KeyStoneHolerad; 2.*AECT_KSthic_KeyStonethickness"  nbPhi="20" />
+
+<subtraction name="ECT_CM_KeyStoneMid" >
+  <posXYZ volume="ECT_CM_KeyStoneMid_basic"   X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_CM_KeyStoneMid_Hole"    X_Y_Z=" 0.; AECT_KSHRpo_KeyStoneHoleRpos - AECT_KSmRwi_KeyStonemidRwidth/2. - AECT_KStRwi_KeyStonetotRwidth/2.; 0." />
+  <posXYZ volume="ECT_CM_KeyStoneMid_CutBox"  X_Y_Z=" (AECT_KStPwi_KeyStonetopPhiwid * (1.+GENV_Co225) - AECT_KSZwid_KeyStoneZwidth*GENV_Si225 -  GENV_Ta225 * AECT_KSthic_KeyStonethickness*2.)/2. + GENV_Eps; (-AECT_KSZwid_KeyStoneZwidth*GENV_Co225 - AECT_KStPwi_KeyStonetopPhiwid * GENV_Si225)/2. + (AECT_KStRwi_KeyStonetotRwidth - AECT_KSthic_KeyStonethickness - AECT_KSmRwi_KeyStonemidRwidth)/2. + GENV_Eps * GENV_Ta225 ; 0." rot=" 0.; 0.; -22.5 "/>
+  <posXYZ volume="ECT_CM_KeyStoneMid_CutBox"  X_Y_Z="-(AECT_KStPwi_KeyStonetopPhiwid * (1.+GENV_Co225) - AECT_KSZwid_KeyStoneZwidth*GENV_Si225 -  GENV_Ta225 * AECT_KSthic_KeyStonethickness*2.)/2. - GENV_Eps; (-AECT_KSZwid_KeyStoneZwidth*GENV_Co225 - AECT_KStPwi_KeyStonetopPhiwid * GENV_Si225)/2. + (AECT_KStRwi_KeyStonetotRwidth - AECT_KSthic_KeyStonethickness - AECT_KSmRwi_KeyStonemidRwidth)/2. + GENV_Eps * GENV_Ta225 ; 0." rot=" 0.; 0.;  22.5 "/>
+</subtraction>
+
+<gvxysx name="ECT_CM_KeyStoneLow" material="Aluminium" dZ="AECT_KSthic_KeyStonethickness">
+  <gvxy_point X_Y=" AECT_KStPwi_KeyStonetopPhiwid/2. - (AECT_KStRwi_KeyStonetotRwidth - AECT_KSmRwi_KeyStonemidRwidth) * GENV_Ta225 ; AECT_KSmRwi_KeyStonemidRwidth"/>
+  <gvxy_point X_Y=" AECT_KSlPof_KeyStonelowPhioff ; AECT_KSlRwi_KeyStonelowRwidth"/>
+  <gvxy_point X_Y=" AECT_KSlPof_KeyStonelowPhioff - AECT_KSlthi_KeyStonelowthick; AECT_KSlRwi_KeyStonelowRwidth"/>
+  <gvxy_point X_Y=" AECT_KSlPof_KeyStonelowPhioff - AECT_KSlthi_KeyStonelowthick; AECT_KSlthi_KeyStonelowthick"/>
+</gvxysx>
+
+<box  name="ECT_CM_KeyStoneInnerWeb_Box1" material="Aluminium"  X_Y_Z=" AECT_KSlthi_KeyStonelowthick - GENV_Eps/2.; AECT_KSlRwi_KeyStonelowRwidth - AECT_KSlthi_KeyStonelowthick;  AECT_KSZwid_KeyStoneZwidth" />
+<box  name="ECT_CM_KeyStoneInnerWeb_Box2" material="Aluminium"  X_Y_Z=" AECT_KSlPwi_KeyStonelowPhiwid - GENV_Eps/2.; AECT_KSlthi_KeyStonelowthick - GENV_Eps; AECT_KSZwid_KeyStoneZwidth" />
+<box  name="ECT_CM_KeyStoneFootPlate"     material="Aluminium"  X_Y_Z=" AECT_KSthic_KeyStonethickness; AECT_KSBRwi_KeyStoneBoxRwidth; AECT_KSZwid_KeyStoneZwidth" />
+
+<composition name="ECT_CM_KeyStone" >
+  <posXYZ volume="ECT_CM_KeyStoneTop"  X_Y_Z=" 0.; AECT_KStRwi_KeyStonetotRwidth - AECT_KSthic_KeyStonethickness/2. + 1.5*GENV_Eps*GENV_Co225; -1.5*GENV_Eps*GENV_Si225" rot=" 90.; 0.; 0. "/>
+  <posXYZ volume="ECT_CM_KeyStoneMid"  X_Y_Z=" 0.; AECT_KStRwi_KeyStonetotRwidth - (AECT_KStRwi_KeyStonetotRwidth + AECT_KSthic_KeyStonethickness - AECT_KSmRwi_KeyStonemidRwidth)/2. + GENV_Eps*GENV_Co225;  AECT_KSZwid_KeyStoneZwidth/2. - AECT_KSthic_KeyStonethickness/2.-GENV_Eps*GENV_Si225" />  
+  <posXYZ volume="ECT_CM_KeyStoneMid"  X_Y_Z=" 0.; AECT_KStRwi_KeyStonetotRwidth - (AECT_KStRwi_KeyStonetotRwidth + AECT_KSthic_KeyStonethickness - AECT_KSmRwi_KeyStonemidRwidth)/2. + GENV_Eps*GENV_Co225; -AECT_KSZwid_KeyStoneZwidth/2. + AECT_KSthic_KeyStonethickness/2.-GENV_Eps*GENV_Si225" />  
+  <posXYZ volume="ECT_CM_KeyStoneLow"  X_Y_Z=" 0.; 0.5*GENV_Eps*GENV_Co225;  AECT_KSZwid_KeyStoneZwidth/2. - AECT_KSthic_KeyStonethickness/2.-0.5*GENV_Eps*GENV_Si225" /> 
+  <posXYZ volume="ECT_CM_KeyStoneLow"  X_Y_Z=" 0.; 0.5*GENV_Eps*GENV_Co225; -AECT_KSZwid_KeyStoneZwidth/2. + AECT_KSthic_KeyStonethickness/2.-0.5*GENV_Eps*GENV_Si225" />   
+  <posXYZ volume="ECT_CM_KeyStoneInnerWeb_Box1"  X_Y_Z=" (AECT_KSlPwi_KeyStonelowPhiwid - AECT_KSlthi_KeyStonelowthick)/2.; (AECT_KSlthi_KeyStonelowthick + AECT_KSlRwi_KeyStonelowRwidth)/2.; 0." /> 
+  <posXYZ volume="ECT_CM_KeyStoneInnerWeb_Box1"  X_Y_Z="-(AECT_KSlPwi_KeyStonelowPhiwid - AECT_KSlthi_KeyStonelowthick)/2.; (AECT_KSlthi_KeyStonelowthick + AECT_KSlRwi_KeyStonelowRwidth)/2.; 0." />   
+  <posXYZ volume="ECT_CM_KeyStoneInnerWeb_Box2"  X_Y_Z=" 0.; AECT_KSlthi_KeyStonelowthick/2.; 0" /> 
+  <posXYZ volume="ECT_CM_KeyStoneFootPlate"      X_Y_Z=" (AECT_KSthic_KeyStonethickness*(GENV_Co225 - 2.*GENV_Si225)  + AECT_KSBRwi_KeyStoneBoxRwidth*GENV_Si225 + AECT_KStPwi_KeyStonetopPhiwid)/2. - GENV_Si225*AECT_KSFPRo_KeyStoneFootPROff; (AECT_KSthic_KeyStonethickness*(-GENV_Si225 - 2) + AECT_KSBRwi_KeyStoneBoxRwidth*GENV_Co225)/2. + AECT_KStRwi_KeyStonetotRwidth - GENV_Co225*AECT_KSFPRo_KeyStoneFootPROff; 0" rot=" 0.; 0.; -22.5 "/>   
+  <posXYZ volume="ECT_CM_KeyStoneFootPlate"      X_Y_Z="-(AECT_KSthic_KeyStonethickness*(GENV_Co225 - 2.*GENV_Si225)  + AECT_KSBRwi_KeyStoneBoxRwidth*GENV_Si225 + AECT_KStPwi_KeyStonetopPhiwid)/2. + GENV_Si225*AECT_KSFPRo_KeyStoneFootPROff; (AECT_KSthic_KeyStonethickness*(-GENV_Si225 - 2) + AECT_KSBRwi_KeyStoneBoxRwidth*GENV_Co225)/2. + AECT_KStRwi_KeyStonetotRwidth - GENV_Co225*AECT_KSFPRo_KeyStoneFootPROff; 0" rot=" 0.; 0.;  22.5 "/>   
+</composition>
+
+<var name="AECT_KSRahi_KeyStoneradihight" value="2.*GENV_Si225*(AECT_KSBRwi_KeyStoneBoxRwidth-AECT_KSFPRo_KeyStoneFootPROff-AECT_KSthic_KeyStonethickness)+2.*GENV_Co225*AECT_KSthic_KeyStonethickness+AECT_KStPwi_KeyStonetopPhiwid" />
+<var name="AECT_KSRpwi_KeyStonephiwidth"  value="AECT_KStRwi_KeyStonetotRwidth + GENV_Co225*(AECT_KSBRwi_KeyStoneBoxRwidth - AECT_KSFPRo_KeyStoneFootPROff) - AECT_KSthic_KeyStonethickness "/>
+
+<composition  name="ECT_ColdMass" >
+  <posXYZ volume="ECT_CM_ConductorFrame"     X_Y_Z=" 0.; AECT_CMgodi_ColdMassgloboutdi/2. - AECT_CMRwid_ColdMassRadwidth/2.; 0." rot=" 0.; 90.; 0."/>
+  <posXYZ volume="ECT_CM_ConductorInnerWeb"  X_Y_Z=" 0.; AECT_CMgira_ColdMassglobinrad; 0." rot=" 0.; 0.; 0."/>
+  <posXYZ volume="ECT_CM_KeyStone"           X_Y_Z=" -AECT_CMgira_ColdMassglobinrad*GENV_Si225; AECT_CMgira_ColdMassglobinrad*GENV_Co225; 0." rot=" 0.; 0.; 22.5"/>
+</composition>
+
+<!-- thermal radiation shielding  - Coil Cover - atlteyr_0288-v0 and atlteyr_0289-v0 -->
+<var name="AECT_CCZwid_CoilCoverZwidth"      value="   348.  "/>
+<var name="AECT_CCPwid_CoilCoverPhiwidth"    value="   700.  "/>
+<var name="AECT_CCfRwi_CoilCoverfullRwid"    value="  3601.  "/>
+<var name="AECT_CCthic_CoilCoverthicknes"    value="    10.  "/>
+<var name="AECT_CCRaof_CoilCoverRadoff"      value="    52.  "/>
+
+<trd name="ECT_CC_CoilCoverSide" material="Aluminium" Xmp_Ymp_Z="AECT_CCfRwi_CoilCoverfullRwid-AECT_CCRaof_CoilCoverRadoff+2.*(AECT_CCthic_CoilCoverthicknes/GENV_Si45 + AECT_CCthic_CoilCoverthicknes); AECT_CCfRwi_CoilCoverfullRwid-AECT_CCRaof_CoilCoverRadoff - 2.*(AECT_CCZwid_CoilCoverZwidth-AECT_CCthic_CoilCoverthicknes/GENV_Si45); AECT_CCthic_CoilCoverthicknes; AECT_CCthic_CoilCoverthicknes; AECT_CCZwid_CoilCoverZwidth + AECT_CCthic_CoilCoverthicknes"/>
+
+<gvxysx name="ECT_CC_CoilCoverTop" material="Aluminium" dZ="AECT_CCPwid_CoilCoverPhiwidth">
+  <gvxy_point X_Y=" (AECT_CCfRwi_CoilCoverfullRwid - AECT_CCRaof_CoilCoverRadoff)/2. - AECT_CCZwid_CoilCoverZwidth + AECT_CCthic_CoilCoverthicknes/GENV_Si45 ; AECT_CCZwid_CoilCoverZwidth + AECT_CCthic_CoilCoverthicknes "/>
+  <gvxy_point X_Y=" (AECT_CCfRwi_CoilCoverfullRwid - AECT_CCRaof_CoilCoverRadoff)/2. + AECT_CCthic_CoilCoverthicknes/GENV_Si45 + AECT_CCthic_CoilCoverthicknes; 0"/>
+  <gvxy_point X_Y=" (AECT_CCfRwi_CoilCoverfullRwid - AECT_CCRaof_CoilCoverRadoff)/2. + AECT_CCthic_CoilCoverthicknes ; 0"/>
+  <gvxy_point X_Y=" (AECT_CCfRwi_CoilCoverfullRwid - AECT_CCRaof_CoilCoverRadoff)/2. - AECT_CCZwid_CoilCoverZwidth - AECT_CCthic_CoilCoverthicknes*GENV_Ta225 + AECT_CCthic_CoilCoverthicknes/GENV_Si45; AECT_CCZwid_CoilCoverZwidth - AECT_CCthic_CoilCoverthicknes + AECT_CCthic_CoilCoverthicknes"/>
+</gvxysx>
+
+<!-- thermal radiation shielding  - EndPlate - atlteyr_0068-v0, atlteyr_0077-v0, atlteyr_0078-v0 and atlteyr_0110-v0 -->
+<var name="AECT_EPthic_EndPlatethickness"    value="    20.  "/>
+<var name="AECT_EPHoPo_EndPlateHolepos"      value="  1720.  "/>
+<var name="AECT_EPHoDi_EndPlateHolediame"    value="   830.  "/>
+<var name="AECT_EPfuhi_EndPlatefullhight"    value="  3467.  "/>
+<var name="AECT_EPmihi_EndPlateminihight"    value="  2740.  "/>
+<var name="AECT_EPfuwi_EndPlatefullwidth"    value="  1959.  "/>
+<var name="AECT_EPmiwi_EndPlatemidwidth"     value="  1200.5 "/>
+<var name="AECT_EPhiwi_EndPlatehighwidth"    value="   775.  "/>
+<var name="AECT_EPlowi_EndPlatelowwidth"     value="   182.  "/>
+<var name="AECT_EPEfuw_EndPlateExtfullwi"    value="   530.  "/>
+<var name="AECT_EPEmiw_EndPlateExtminiwi"    value="   275.  "/>
+<var name="AECT_EPEhig_EndPlateExthight"     value="   240.  "/>
+<var name="AECT_EPBBhi_EndPlateBackBoxwi"    value="  1230.  "/>
+<var name="AECT_EPBBwi_EndPlateBackBoxhi"    value="   145.  "/>
+<var name="AECT_EPFBhi_EndPlateFrontBoxw"    value="   410.  "/>
+<var name="AECT_EPFBwi_EndPlateFrontBoxh"    value="   125.  "/>
+
+<!-- derived variable to get second last point via cot(22.5)*(x-a)= -tan(22.5)*(x-b) + c -->
+<var name="AECT_EPAuVX_EndPlateAuxVarX"      value="GENV_Co225*GENV_Si225*(AECT_EPfuhi_EndPlatefullhight-GENV_Si225*AECT_EPEmiw_EndPlateExtminiwi-(AECT_EPEhig_EndPlateExthight)*GENV_Co225)+GENV_Co225*GENV_Co225* AECT_EPlowi_EndPlatelowwidth+GENV_Si225*GENV_Si225*(AECT_EPfuwi_EndPlatefullwidth-(AECT_EPEhig_EndPlateExthight)*GENV_Si225) "/>
+
+<gvxysx name="ECT_EP_EndPlate_basic" material="Aluminium" dZ="AECT_EPthic_EndPlatethickness">
+  <gvxy_point X_Y=" AECT_EPhiwi_EndPlatehighwidth; AECT_EPmihi_EndPlateminihight "/>
+  <gvxy_point X_Y=" AECT_EPmiwi_EndPlatemidwidth; AECT_EPmihi_EndPlateminihight + (AECT_EPmiwi_EndPlatemidwidth - AECT_EPhiwi_EndPlatehighwidth)*GENV_Ta225 "/>
+  <gvxy_point X_Y=" AECT_EPfuwi_EndPlatefullwidth - AECT_EPEfuw_EndPlateExtfullwi/GENV_Co225; AECT_EPmihi_EndPlateminihight + (AECT_EPmiwi_EndPlatemidwidth - AECT_EPhiwi_EndPlatehighwidth)*GENV_Ta225 + (AECT_EPfuwi_EndPlatefullwidth - AECT_EPmiwi_EndPlatemidwidth - AECT_EPEfuw_EndPlateExtfullwi/GENV_Co225)/GENV_Ta225 "/>
+  <gvxy_point X_Y=" AECT_EPfuwi_EndPlatefullwidth - AECT_EPEmiw_EndPlateExtminiwi*GENV_Co225; AECT_EPfuhi_EndPlatefullhight "/>
+  <gvxy_point X_Y=" AECT_EPfuwi_EndPlatefullwidth; AECT_EPfuhi_EndPlatefullhight  - AECT_EPEmiw_EndPlateExtminiwi*GENV_Si225"/>
+  <gvxy_point X_Y=" AECT_EPfuwi_EndPlatefullwidth - (AECT_EPEhig_EndPlateExthight   )*GENV_Si225; AECT_EPfuhi_EndPlatefullhight  - AECT_EPEmiw_EndPlateExtminiwi*GENV_Si225 - (AECT_EPEhig_EndPlateExthight  )*GENV_Co225"/>
+  <gvxy_point X_Y=" AECT_EPAuVX_EndPlateAuxVarX; (AECT_EPAuVX_EndPlateAuxVarX-AECT_EPlowi_EndPlatelowwidth)/GENV_Ta225 "/>
+  <gvxy_point X_Y=" AECT_EPlowi_EndPlatelowwidth; 0. "/>
+</gvxysx>
+
+<box  name="ECT_EP_EndPlate_BackBox"   material="Aluminium"  X_Y_Z="AECT_EPBBhi_EndPlateBackBoxwi; 2.*AECT_EPBBwi_EndPlateBackBoxhi; 2.*AECT_EPthic_EndPlatethickness" />
+<box  name="ECT_EP_EndPlate_FrontBox"  material="Aluminium"  X_Y_Z="AECT_EPFBhi_EndPlateFrontBoxw; 2.*AECT_EPFBwi_EndPlateFrontBoxh; 2.*AECT_EPthic_EndPlatethickness" />
+<tubs name="ECT_EP_EndPlate_Hole"      material="Aluminium"  Rio_Z="0.; AECT_EPHoDi_EndPlateHolediame/2.; 2.*AECT_EPthic_EndPlatethickness"  nbPhi="20" />
+
+<subtraction name="ECT_EP_EndPlate_front" >
+  <posXYZ volume="ECT_EP_EndPlate_basic"    X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EP_EndPlate_Hole"     X_Y_Z=" 0.; AECT_EPHoPo_EndPlateHolepos; 0." />
+</subtraction>
+
+<subtraction name="ECT_EP_EndPlate_back" >
+  <posXYZ volume="ECT_EP_EndPlate_basic"    X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EP_EndPlate_Hole"     X_Y_Z=" 0.; AECT_EPHoPo_EndPlateHolepos; 0." />
+  <posXYZ volume="ECT_EP_EndPlate_BackBox"  X_Y_Z=" 0.; AECT_EPmihi_EndPlateminihight; 0." />
+</subtraction>
+
+<subtraction name="ECT_EP_EndPlate_special" >
+  <posXYZ volume="ECT_EP_EndPlate_basic"    X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EP_EndPlate_Hole"     X_Y_Z=" 0.; AECT_EPHoPo_EndPlateHolepos; 0." />
+  <posXYZ volume="ECT_EP_EndPlate_FrontBox" X_Y_Z=" 0.; AECT_EPmihi_EndPlateminihight; 0." />
+</subtraction>
+
+<!-- thermal radiation shielding  - Shell - atlteyr_0280-v0 and  atlteyr_0070-v0 -->
+<var name="AECT_OSCCZd_ShellCCZdimension"    value="  3940.  "/>
+<var name="AECT_OSCCRw_ShellCCRadwidth"      value="   400.  "/>
+<var name="AECT_OSCCmw_ShellCCminiwidth"     value="   372.  "/>
+<var name="AECT_OSCCmw_ShellCCedgelength"    value="   451.  "/>
+<var name="AECT_OSCCth_ShellCCthickness"     value="    10.  "/>
+
+<var name="AECT_OSCCmw_ShellCClongwidth"     value="   423.  "/>
+<var name="AECT_OSCCmw_ShellCCshortwidth"    value="   107.  "/>
+<var name="AECT_OSCCtc_ShellCCthickconn"     value="    20.  "/>
+
+<var name="AECT_OSCCOv_ShellCCoverlap"       value="    60.  "/>
+
+<var name="AECT_OSJPiw_ShellJPinnerwidth"    value="  1912.  "/>
+<var name="AECT_OSJPew_ShellJPedgewidth"     value="   238.  "/>
+<var name="AECT_OSJPtc_ShellJPZlength"       value="  2815.  "/>
+<var name="AECT_OSAFBt_ShellAFBthickness"    value="    15.  "/>
+<var name="AECT_OSAFBh_ShellAFBhight"        value="   215.  "/>
+<var name="AECT_OSFSBh_ShellFSBhight"        value="   190.  "/>
+
+<var name="AECT_STaidi_StayTubeAlignindi"    value="   910.  "/>
+<var name="AECT_STaodi_StayTubeAlignoutd"    value="   930.  "/>
+<var name="AECT_STaflt_StayTubeAlignFlth"    value="    20.  "/>
+
+<gvxysx name="ECT_TS_ShellCoilCover" material="Aluminium" dZ="AECT_OSCCZd_ShellCCZdimension">
+  <gvxy_point X_Y=" - AECT_OSCCmw_ShellCCminiwidth/2. ; AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCtc_ShellCCthickconn*GENV_Si45 + AECT_OSCCmw_ShellCClongwidth + AECT_OSCCRw_ShellCCRadwidth - AECT_OSCCOv_ShellCCoverlap - AECT_OSCCth_ShellCCthickness"/>
+  <gvxy_point X_Y=" - (AECT_OSCCmw_ShellCCedgelength*GENV_Si45 + AECT_OSCCmw_ShellCCminiwidth/2.); AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCtc_ShellCCthickconn*GENV_Si45 + AECT_OSCCmw_ShellCClongwidth + AECT_OSCCRw_ShellCCRadwidth - AECT_OSCCOv_ShellCCoverlap - AECT_OSCCmw_ShellCCedgelength*GENV_Si45"/>
+  <gvxy_point X_Y=" - (AECT_OSCCmw_ShellCCedgelength*GENV_Si45 + AECT_OSCCmw_ShellCCminiwidth/2.); AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCtc_ShellCCthickconn*GENV_Si45 + AECT_OSCCmw_ShellCClongwidth - AECT_OSCCOv_ShellCCoverlap"/>
+  <gvxy_point X_Y=" - (AECT_OSCCth_ShellCCthickness + AECT_OSCCmw_ShellCCedgelength*GENV_Si45 + AECT_OSCCmw_ShellCCminiwidth/2.); AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCtc_ShellCCthickconn*GENV_Si45 + AECT_OSCCmw_ShellCClongwidth - AECT_OSCCOv_ShellCCoverlap"/>
+  <gvxy_point X_Y=" - (AECT_OSCCth_ShellCCthickness + AECT_OSCCmw_ShellCCedgelength*GENV_Si45 + AECT_OSCCmw_ShellCCminiwidth/2.); AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCtc_ShellCCthickconn*GENV_Si45 - AECT_OSCCtc_ShellCCthickconn*GENV_Ta225 "/>
+  <gvxy_point X_Y=" AECT_OSCCtc_ShellCCthickconn*(GENV_Si45-1.) - (AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCth_ShellCCthickness + AECT_OSCCmw_ShellCCedgelength*GENV_Si45 + AECT_OSCCmw_ShellCCminiwidth/2.) ; 0 "/>
+  <gvxy_point X_Y=" - (AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCtc_ShellCCthickconn + AECT_OSCCth_ShellCCthickness + AECT_OSCCmw_ShellCCedgelength*GENV_Si45 + AECT_OSCCmw_ShellCCminiwidth/2.) ; AECT_OSCCtc_ShellCCthickconn*GENV_Si45 "/>
+  <gvxy_point X_Y=" - (AECT_OSCCtc_ShellCCthickconn + AECT_OSCCth_ShellCCthickness + AECT_OSCCmw_ShellCCedgelength*GENV_Si45 + AECT_OSCCmw_ShellCCminiwidth/2.); AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCtc_ShellCCthickconn*GENV_Si45"/>
+  <gvxy_point X_Y=" - (AECT_OSCCtc_ShellCCthickconn + AECT_OSCCth_ShellCCthickness + AECT_OSCCmw_ShellCCedgelength*GENV_Si45 + AECT_OSCCmw_ShellCCminiwidth/2.); AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCtc_ShellCCthickconn*GENV_Si45 + AECT_OSCCmw_ShellCClongwidth"/>
+  <gvxy_point X_Y=" - (AECT_OSCCth_ShellCCthickness + AECT_OSCCmw_ShellCCedgelength*GENV_Si45 + AECT_OSCCmw_ShellCCminiwidth/2.); AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCtc_ShellCCthickconn*GENV_Si45 + AECT_OSCCmw_ShellCClongwidth"/>
+  <gvxy_point X_Y=" - (AECT_OSCCth_ShellCCthickness + AECT_OSCCmw_ShellCCedgelength*GENV_Si45 + AECT_OSCCmw_ShellCCminiwidth/2.); AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCtc_ShellCCthickconn*GENV_Si45 + AECT_OSCCmw_ShellCClongwidth + AECT_OSCCRw_ShellCCRadwidth - AECT_OSCCth_ShellCCthickness*(GENV_Ta225-1)- AECT_OSCCmw_ShellCCedgelength*GENV_Si45 - AECT_OSCCOv_ShellCCoverlap"/>
+  <gvxy_point X_Y=" - AECT_OSCCth_ShellCCthickness*GENV_Ta225 - AECT_OSCCmw_ShellCCminiwidth/2.; AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCtc_ShellCCthickconn*GENV_Si45 + AECT_OSCCmw_ShellCClongwidth + AECT_OSCCRw_ShellCCRadwidth - AECT_OSCCOv_ShellCCoverlap"/>
+</gvxysx>
+
+<gvxysx name="ECT_TS_JointPlate" material="Aluminium" dZ="AECT_OSJPtc_ShellJPZlength">
+  <gvxy_point X_Y=" AECT_OSJPiw_ShellJPinnerwidth/2.+AECT_OSCCtc_ShellCCthickconn*tan(11.25*GENV_PiS180) ;  -(AECT_OSCCtc_ShellCCthickconn+AECT_OSJPew_ShellJPedgewidth*GENV_Si225)/2."/>
+  <gvxy_point X_Y=" AECT_OSJPiw_ShellJPinnerwidth/2.+AECT_OSJPew_ShellJPedgewidth*GENV_Co225+AECT_OSCCtc_ShellCCthickconn*GENV_Si225 ; AECT_OSCCtc_ShellCCthickconn*(1-GENV_Co225)+AECT_OSJPew_ShellJPedgewidth*GENV_Si225-(AECT_OSCCtc_ShellCCthickconn+AECT_OSJPew_ShellJPedgewidth*GENV_Si225)/2. "/>
+  <gvxy_point X_Y=" AECT_OSJPiw_ShellJPinnerwidth/2.+AECT_OSJPew_ShellJPedgewidth*GENV_Co225 ; AECT_OSCCtc_ShellCCthickconn+AECT_OSJPew_ShellJPedgewidth*GENV_Si225-(AECT_OSCCtc_ShellCCthickconn+AECT_OSJPew_ShellJPedgewidth*GENV_Si225)/2. "/>
+  <gvxy_point X_Y=" AECT_OSJPiw_ShellJPinnerwidth/2.; AECT_OSCCtc_ShellCCthickconn-(AECT_OSCCtc_ShellCCthickconn+AECT_OSJPew_ShellJPedgewidth*GENV_Si225)/2."/>
+</gvxysx>
+
+<gvxysx name="ECT_TS_AxialForceBox" material="Aluminium" dZ="AECT_OSCCZd_ShellCCZdimension-AECT_OSJPtc_ShellJPZlength">
+  <gvxy_point X_Y=" AECT_EPBBhi_EndPlateBackBoxwi/2.+AECT_OSAFBt_ShellAFBthickness ; -(AECT_OSAFBh_ShellAFBhight+AECT_OSJPew_ShellJPedgewidth*GENV_Si225)/2. "/>
+  <gvxy_point X_Y=" AECT_EPBBhi_EndPlateBackBoxwi/2.+AECT_OSAFBt_ShellAFBthickness ; AECT_OSAFBh_ShellAFBhight/2.-AECT_OSAFBt_ShellAFBthickness-AECT_OSJPew_ShellJPedgewidth*GENV_Si225/2."/>
+  <gvxy_point X_Y=" AECT_OSJPiw_ShellJPinnerwidth/2.+AECT_OSAFBt_ShellAFBthickness*tan(11.25*GENV_PiS180) ; AECT_OSAFBh_ShellAFBhight/2.-AECT_OSAFBt_ShellAFBthickness-AECT_OSJPew_ShellJPedgewidth*GENV_Si225/2."/>  
+  <gvxy_point X_Y=" AECT_OSJPiw_ShellJPinnerwidth/2.+AECT_OSJPew_ShellJPedgewidth*GENV_Co225+AECT_OSAFBt_ShellAFBthickness*GENV_Si225 ; AECT_OSAFBh_ShellAFBhight/2.-AECT_OSAFBt_ShellAFBthickness*GENV_Co225+AECT_OSJPew_ShellJPedgewidth*GENV_Si225/2."/>  
+  <gvxy_point X_Y=" AECT_OSJPiw_ShellJPinnerwidth/2.+AECT_OSJPew_ShellJPedgewidth*GENV_Co225 ; (AECT_OSAFBh_ShellAFBhight+AECT_OSJPew_ShellJPedgewidth*GENV_Si225)/2."/>  
+  <gvxy_point X_Y=" AECT_OSJPiw_ShellJPinnerwidth/2.; AECT_OSAFBh_ShellAFBhight/2.-AECT_OSJPew_ShellJPedgewidth*GENV_Si225/2."/>
+  <gvxy_point X_Y=" AECT_EPBBhi_EndPlateBackBoxwi/2.; AECT_OSAFBh_ShellAFBhight/2.-AECT_OSJPew_ShellJPedgewidth*GENV_Si225/2."/>  
+  <gvxy_point X_Y=" AECT_EPBBhi_EndPlateBackBoxwi/2.; AECT_OSAFBt_ShellAFBthickness-(AECT_OSAFBh_ShellAFBhight+AECT_OSJPew_ShellJPedgewidth*GENV_Si225)/2."/>
+</gvxysx>
+
+<gvxysx name="ECT_TS_FrontSpecialBox" material="Aluminium" dZ="AECT_OSJPtc_ShellJPZlength">
+  <gvxy_point X_Y=" AECT_EPFBhi_EndPlateFrontBoxw/2.+AECT_OSCCtc_ShellCCthickconn ; -(AECT_OSFSBh_ShellFSBhight+AECT_OSJPew_ShellJPedgewidth*GENV_Si225)/2. "/>
+  <gvxy_point X_Y=" AECT_EPFBhi_EndPlateFrontBoxw/2.+AECT_OSCCtc_ShellCCthickconn ; AECT_OSFSBh_ShellFSBhight/2.-AECT_OSCCtc_ShellCCthickconn-AECT_OSJPew_ShellJPedgewidth*GENV_Si225/2."/>
+  <gvxy_point X_Y=" AECT_OSJPiw_ShellJPinnerwidth/2.+AECT_OSCCtc_ShellCCthickconn*tan(11.25*GENV_PiS180) ; AECT_OSFSBh_ShellFSBhight/2.-AECT_OSCCtc_ShellCCthickconn-AECT_OSJPew_ShellJPedgewidth*GENV_Si225/2."/>  
+  <gvxy_point X_Y=" AECT_OSJPiw_ShellJPinnerwidth/2.+AECT_OSJPew_ShellJPedgewidth*GENV_Co225+AECT_OSCCtc_ShellCCthickconn*GENV_Si225 ; AECT_OSFSBh_ShellFSBhight/2.-AECT_OSCCtc_ShellCCthickconn*GENV_Co225+AECT_OSJPew_ShellJPedgewidth*GENV_Si225/2."/>  
+  <gvxy_point X_Y=" AECT_OSJPiw_ShellJPinnerwidth/2.+AECT_OSJPew_ShellJPedgewidth*GENV_Co225 ; (AECT_OSFSBh_ShellFSBhight+AECT_OSJPew_ShellJPedgewidth*GENV_Si225)/2."/>  
+  <gvxy_point X_Y=" AECT_OSJPiw_ShellJPinnerwidth/2.; AECT_OSFSBh_ShellFSBhight/2.-AECT_OSJPew_ShellJPedgewidth*GENV_Si225/2."/>
+  <gvxy_point X_Y=" AECT_EPFBhi_EndPlateFrontBoxw/2.; AECT_OSFSBh_ShellFSBhight/2.-AECT_OSJPew_ShellJPedgewidth*GENV_Si225/2."/>  
+  <gvxy_point X_Y=" AECT_EPFBhi_EndPlateFrontBoxw/2.; AECT_OSCCtc_ShellCCthickconn-(AECT_OSFSBh_ShellFSBhight+AECT_OSJPew_ShellJPedgewidth*GENV_Si225)/2."/>
+</gvxysx>
+
+<tubs name="ECT_ST_StayTube_Tube"      material="Aluminium"  Rio_Z="AECT_STaidi_StayTubeAlignindi/2.; AECT_STaodi_StayTubeAlignoutd/2.; AECT_OSCCZd_ShellCCZdimension"  nbPhi="20" />
+<tubs name="ECT_ST_StayTube_Flange"    material="Aluminium"  Rio_Z="AECT_EPHoDi_EndPlateHolediame/2.; AECT_STaodi_StayTubeAlignoutd/2.; AECT_STaflt_StayTubeAlignFlth"  nbPhi="20" />
+
+<var name="AECT_SCCXwi_ShellCCfullXwidth"    value="(AECT_OSJPiw_ShellJPinnerwidth/2. + AECT_OSJPew_ShellJPedgewidth*GENV_Co225 + AECT_OSCCtc_ShellCCthickconn*GENV_Si225)" />
+<var name="AECT_SCCYwi_ShellCCfullYwidth"    value="(AECT_OSCCtc_ShellCCthickconn + AECT_OSJPew_ShellJPedgewidth*GENV_Si225)/2." />
+<var name="AECT_SAFBXw_ShellAFBfullXwidt"    value="(AECT_OSJPiw_ShellJPinnerwidth/2. + AECT_OSJPew_ShellJPedgewidth*GENV_Co225 + AECT_OSAFBt_ShellAFBthickness*GENV_Si225)" />
+<var name="AECT_SAFBYw_ShellAFBfullYwidt"    value="(AECT_OSAFBh_ShellAFBhight + AECT_OSJPew_ShellJPedgewidth*GENV_Si225)/2." />
+<var name="AECT_SFSBYw_ShellFSBfullYwidt"    value="(AECT_OSFSBh_ShellFSBhight + AECT_OSJPew_ShellJPedgewidth*GENV_Si225)/2." />
+
+<!-- Radius for ThermalRadiationShield Endplate (TRSEPr) and Shell (TRSShr), last term is responsible for the gap in between -> needed safety factor -> see also the photos  -->
+<var name="AECT_TRSEPr_EndplateRadPos"       value="AECT_EPfuwi_EndPlatefullwidth/GENV_Si225 - (AECT_EPfuhi_EndPlatefullhight -  AECT_EPEmiw_EndPlateExtminiwi*GENV_Si225)/GENV_Co225 - AECT_EPlowi_EndPlatelowwidth*GENV_Si225 - (AECT_EPfuwi_EndPlatefullwidth - AECT_EPAuVX_EndPlateAuxVarX - (AECT_EPEhig_EndPlateExthight)*GENV_Si225)*GENV_Ta225/GENV_Co225 + AECT_EPthic_EndPlatethickness*1.5" />
+<var name="AECT_CCSPYp_CoilCoverSideYpos"    value="AECT_EPfuwi_EndPlatefullwidth/GENV_Si225+AECT_EPthic_EndPlatethickness*1.5-AECT_EPEhig_EndPlateExthight-(AECT_CCfRwi_CoilCoverfullRwid-AECT_CCRaof_CoilCoverRadoff)/2.-AECT_CCthic_CoilCoverthicknes/GENV_Si45-AECT_CCthic_CoilCoverthicknes" />
+<var name="AECT_TRSShr_ShellRadPos"          value="(-(AECT_OSCCtc_ShellCCthickconn*(GENV_Si45-1.) - (AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCth_ShellCCthickness + AECT_OSCCmw_ShellCCedgelength*GENV_Si45 + AECT_OSCCmw_ShellCCminiwidth/2.)))/GENV_Ta225 + (AECT_OSJPiw_ShellJPinnerwidth/2.) * (GENV_Si225+GENV_Co225/GENV_Ta225) + ((AECT_OSJPew_ShellJPedgewidth-AECT_OSCCOv_ShellCCoverlap)*GENV_Co45 )*(1+1/GENV_Ta225)" />
+<var name="AECT_SCCXpo_ShellCCXpos"          value=" - AECT_SCCXwi_ShellCCfullXwidth*GENV_Co225  + AECT_SCCYwi_ShellCCfullYwidth*GENV_Si225 + AECT_OSCCtc_ShellCCthickconn*GENV_Si225*GENV_Co225 + (AECT_OSCCtc_ShellCCthickconn*(GENV_Si45-1.) - (AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCth_ShellCCthickness + AECT_OSCCmw_ShellCCedgelength*GENV_Si45 + AECT_OSCCmw_ShellCCminiwidth/2.))+AECT_OSCCOv_ShellCCoverlap*GENV_Si45" />
+<var name="AECT_SFSBXp_ShellFSBXpos"         value=" - AECT_SCCXwi_ShellCCfullXwidth*GENV_Co225 + AECT_SFSBYw_ShellFSBfullYwidt*GENV_Si225 + AECT_OSCCtc_ShellCCthickconn*GENV_Si225*GENV_Co225 + (AECT_OSCCtc_ShellCCthickconn*(GENV_Si45-1.) - (AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCth_ShellCCthickness + AECT_OSCCmw_ShellCCedgelength*GENV_Si45 + AECT_OSCCmw_ShellCCminiwidth/2.))+AECT_OSCCOv_ShellCCoverlap*GENV_Si45" />
+<var name="AECT_SAFBXp_ShellAFBXpos"         value=" - AECT_SAFBXw_ShellAFBfullXwidt*GENV_Co225 + AECT_SAFBYw_ShellAFBfullYwidt*GENV_Si225 + AECT_OSAFBt_ShellAFBthickness*GENV_Si225*GENV_Co225 + (AECT_OSCCtc_ShellCCthickconn*(GENV_Si45-1.) - (AECT_OSCCmw_ShellCCshortwidth*GENV_Si45 + AECT_OSCCth_ShellCCthickness + AECT_OSCCmw_ShellCCedgelength*GENV_Si45 + AECT_OSCCmw_ShellCCminiwidth/2.))+AECT_OSCCOv_ShellCCoverlap*GENV_Si45" />
+
+<composition name="ECT_TS_ThermalShield_default_tmp" >
+  <posXYZ volume="ECT_EP_EndPlate_front"    X_Y_Z=" -AECT_TRSEPr_EndplateRadPos*GENV_Ta225 ; AECT_TRSEPr_EndplateRadPos;  AECT_OSCCZd_ShellCCZdimension/2. + 1.75*AECT_EPthic_EndPlatethickness" rot=" 0.; 0.; 22.5" />
+  <posXYZ volume="ECT_EP_EndPlate_back"     X_Y_Z=" -AECT_TRSEPr_EndplateRadPos*GENV_Ta225 ; AECT_TRSEPr_EndplateRadPos; -AECT_OSCCZd_ShellCCZdimension/2. - 1.75*AECT_EPthic_EndPlatethickness" rot=" 0.; 0.; 22.5" />
+  <posXYZ volume="ECT_CC_CoilCoverTop"      X_Y_Z=" 0. ; AECT_EPfuwi_EndPlatefullwidth/GENV_Si225 + AECT_EPthic_EndPlatethickness*1.5 - AECT_EPEhig_EndPlateExthight - (AECT_CCfRwi_CoilCoverfullRwid - AECT_CCRaof_CoilCoverRadoff)/2. - AECT_CCthic_CoilCoverthicknes/GENV_Si45 - AECT_CCthic_CoilCoverthicknes ;   AECT_OSCCZd_ShellCCZdimension/2. + 2.25*AECT_EPthic_EndPlatethickness + GENV_Eps" rot="  90.; 0.; 90." />
+  <posXYZ volume="ECT_CC_CoilCoverTop"      X_Y_Z=" 0. ; AECT_EPfuwi_EndPlatefullwidth/GENV_Si225 + AECT_EPthic_EndPlatethickness*1.5 - AECT_EPEhig_EndPlateExthight - (AECT_CCfRwi_CoilCoverfullRwid - AECT_CCRaof_CoilCoverRadoff)/2. - AECT_CCthic_CoilCoverthicknes/GENV_Si45 - AECT_CCthic_CoilCoverthicknes ;  -AECT_OSCCZd_ShellCCZdimension/2. - 2.25*AECT_EPthic_EndPlatethickness - GENV_Eps" rot=" -90.; 0.; 90." />
+  <posXYZ volume="ECT_CC_CoilCoverSide"     X_Y_Z=" (AECT_CCPwid_CoilCoverPhiwidth + AECT_CCthic_CoilCoverthicknes)/2. + GENV_Eps; AECT_CCSPYp_CoilCoverSideYpos;  AECT_OSCCZd_ShellCCZdimension/2.+2.25*AECT_EPthic_EndPlatethickness + GENV_Eps + (AECT_CCZwid_CoilCoverZwidth + AECT_CCthic_CoilCoverthicknes)/2." rot="  0.; 0.; 90." />
+  <posXYZ volume="ECT_CC_CoilCoverSide"     X_Y_Z=" (AECT_CCPwid_CoilCoverPhiwidth + AECT_CCthic_CoilCoverthicknes)/2. + GENV_Eps; AECT_CCSPYp_CoilCoverSideYpos; -AECT_OSCCZd_ShellCCZdimension/2.-2.25*AECT_EPthic_EndPlatethickness - GENV_Eps - (AECT_CCZwid_CoilCoverZwidth + AECT_CCthic_CoilCoverthicknes)/2." rot="180.; 0.; 90." />
+  <posXYZ volume="ECT_CC_CoilCoverSide"     X_Y_Z="-(AECT_CCPwid_CoilCoverPhiwidth + AECT_CCthic_CoilCoverthicknes)/2. - GENV_Eps; AECT_CCSPYp_CoilCoverSideYpos;  AECT_OSCCZd_ShellCCZdimension/2.+2.25*AECT_EPthic_EndPlatethickness + GENV_Eps + (AECT_CCZwid_CoilCoverZwidth + AECT_CCthic_CoilCoverthicknes)/2." rot="  0.; 0.; 90." />
+  <posXYZ volume="ECT_CC_CoilCoverSide"     X_Y_Z="-(AECT_CCPwid_CoilCoverPhiwidth + AECT_CCthic_CoilCoverthicknes)/2. - GENV_Eps; AECT_CCSPYp_CoilCoverSideYpos; -AECT_OSCCZd_ShellCCZdimension/2.-2.25*AECT_EPthic_EndPlatethickness - GENV_Eps - (AECT_CCZwid_CoilCoverZwidth + AECT_CCthic_CoilCoverthicknes)/2." rot="180.; 0.; 90." />
+  <posXYZ volume="ECT_TS_ShellCoilCover"    X_Y_Z=" 0.;  AECT_TRSShr_ShellRadPos + GENV_Eps; 0." rot=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_TS_JointPlate"        X_Y_Z=" AECT_SCCXpo_ShellCCXpos; -AECT_SCCXwi_ShellCCfullXwidth*GENV_Si225 - AECT_SCCYwi_ShellCCfullYwidth*GENV_Co225 + AECT_OSCCtc_ShellCCthickconn*GENV_Si225*GENV_Si225+ AECT_TRSShr_ShellRadPos+AECT_OSCCOv_ShellCCoverlap*GENV_Si45  ; (AECT_OSCCZd_ShellCCZdimension-AECT_OSJPtc_ShellJPZlength)/2." rot=" 0.; 0.; 22.5" />
+  <posXYZ volume="ECT_TS_AxialForceBox"     X_Y_Z=" AECT_SAFBXp_ShellAFBXpos + GENV_Eps;  -AECT_SAFBXw_ShellAFBfullXwidt*GENV_Si225 - AECT_SAFBYw_ShellAFBfullYwidt*GENV_Co225 + AECT_OSAFBt_ShellAFBthickness*GENV_Si225*GENV_Si225+ AECT_TRSShr_ShellRadPos+AECT_OSCCOv_ShellCCoverlap*GENV_Si45  ; -(AECT_OSCCZd_ShellCCZdimension-(AECT_OSCCZd_ShellCCZdimension-AECT_OSJPtc_ShellJPZlength))/2." rot=" 0.; 0.; 22.5" />
+  <posXYZ volume="ECT_ST_StayTube_Tube"     X_Y_Z=" -AECT_TRSEPr_EndplateRadPos*GENV_Ta225 - AECT_EPHoPo_EndPlateHolepos*GENV_Si225;  AECT_TRSEPr_EndplateRadPos + AECT_EPHoPo_EndPlateHolepos*GENV_Co225; 0." rot=" 0.; 0.; 22.5" />
+  <posXYZ volume="ECT_ST_StayTube_Flange"   X_Y_Z=" -AECT_TRSEPr_EndplateRadPos*GENV_Ta225 - AECT_EPHoPo_EndPlateHolepos*GENV_Si225;  AECT_TRSEPr_EndplateRadPos + AECT_EPHoPo_EndPlateHolepos*GENV_Co225; AECT_OSCCZd_ShellCCZdimension/2.+AECT_STaflt_StayTubeAlignFlth/2. + GENV_Eps" rot=" 0.; 0.; 22.5" />
+  <posXYZ volume="ECT_ST_StayTube_Flange"   X_Y_Z=" -AECT_TRSEPr_EndplateRadPos*GENV_Ta225 - AECT_EPHoPo_EndPlateHolepos*GENV_Si225;  AECT_TRSEPr_EndplateRadPos + AECT_EPHoPo_EndPlateHolepos*GENV_Co225;-AECT_OSCCZd_ShellCCZdimension/2.-AECT_STaflt_StayTubeAlignFlth/2. - GENV_Eps" rot=" 0.; 0.; 22.5" />
+</composition>
+
+<composition name="ECT_TS_ThermalShield_default" >
+  <posXYZ volume="ECT_TS_ThermalShield_default_tmp"  rot=" 0.; 0.; -90." />
+</composition>
+
+<composition name="ECT_TS_ThermalShield_special" >
+  <posXYZ volume="ECT_EP_EndPlate_special"    X_Y_Z=" -AECT_TRSEPr_EndplateRadPos*GENV_Ta225 ; AECT_TRSEPr_EndplateRadPos;  AECT_OSCCZd_ShellCCZdimension/2. + 1.75*AECT_EPthic_EndPlatethickness" rot=" 0.; 0.; 22.5" />
+  <posXYZ volume="ECT_EP_EndPlate_back"     X_Y_Z=" -AECT_TRSEPr_EndplateRadPos*GENV_Ta225 ; AECT_TRSEPr_EndplateRadPos; -AECT_OSCCZd_ShellCCZdimension/2. - 1.75*AECT_EPthic_EndPlatethickness" rot=" 0.; 0.; 22.5" />
+  <posXYZ volume="ECT_CC_CoilCoverTop"      X_Y_Z=" 0. ; AECT_EPfuwi_EndPlatefullwidth/GENV_Si225 + AECT_EPthic_EndPlatethickness*1.5 - AECT_EPEhig_EndPlateExthight - (AECT_CCfRwi_CoilCoverfullRwid - AECT_CCRaof_CoilCoverRadoff)/2. - AECT_CCthic_CoilCoverthicknes/GENV_Si45 - AECT_CCthic_CoilCoverthicknes ;   AECT_OSCCZd_ShellCCZdimension/2. + 2.25*AECT_EPthic_EndPlatethickness + GENV_Eps" rot="  90.; 0.; 90." />
+  <posXYZ volume="ECT_CC_CoilCoverTop"      X_Y_Z=" 0. ; AECT_EPfuwi_EndPlatefullwidth/GENV_Si225 + AECT_EPthic_EndPlatethickness*1.5 - AECT_EPEhig_EndPlateExthight - (AECT_CCfRwi_CoilCoverfullRwid - AECT_CCRaof_CoilCoverRadoff)/2. - AECT_CCthic_CoilCoverthicknes/GENV_Si45 - AECT_CCthic_CoilCoverthicknes ;  -AECT_OSCCZd_ShellCCZdimension/2. - 2.25*AECT_EPthic_EndPlatethickness - GENV_Eps" rot=" -90.; 0.; 90." />
+  <posXYZ volume="ECT_CC_CoilCoverSide"     X_Y_Z=" (AECT_CCPwid_CoilCoverPhiwidth + AECT_CCthic_CoilCoverthicknes)/2. + GENV_Eps; AECT_CCSPYp_CoilCoverSideYpos;  AECT_OSCCZd_ShellCCZdimension/2.+2.25*AECT_EPthic_EndPlatethickness + GENV_Eps + (AECT_CCZwid_CoilCoverZwidth + AECT_CCthic_CoilCoverthicknes)/2." rot="  0.; 0.; 90." />
+  <posXYZ volume="ECT_CC_CoilCoverSide"     X_Y_Z=" (AECT_CCPwid_CoilCoverPhiwidth + AECT_CCthic_CoilCoverthicknes)/2. + GENV_Eps; AECT_CCSPYp_CoilCoverSideYpos; -AECT_OSCCZd_ShellCCZdimension/2.-2.25*AECT_EPthic_EndPlatethickness - GENV_Eps - (AECT_CCZwid_CoilCoverZwidth + AECT_CCthic_CoilCoverthicknes)/2." rot="180.; 0.; 90." />
+  <posXYZ volume="ECT_CC_CoilCoverSide"     X_Y_Z="-(AECT_CCPwid_CoilCoverPhiwidth + AECT_CCthic_CoilCoverthicknes)/2. - GENV_Eps; AECT_CCSPYp_CoilCoverSideYpos;  AECT_OSCCZd_ShellCCZdimension/2.+2.25*AECT_EPthic_EndPlatethickness + GENV_Eps + (AECT_CCZwid_CoilCoverZwidth + AECT_CCthic_CoilCoverthicknes)/2." rot="  0.; 0.; 90." />
+  <posXYZ volume="ECT_CC_CoilCoverSide"     X_Y_Z="-(AECT_CCPwid_CoilCoverPhiwidth + AECT_CCthic_CoilCoverthicknes)/2. - GENV_Eps; AECT_CCSPYp_CoilCoverSideYpos; -AECT_OSCCZd_ShellCCZdimension/2.-2.25*AECT_EPthic_EndPlatethickness - GENV_Eps - (AECT_CCZwid_CoilCoverZwidth + AECT_CCthic_CoilCoverthicknes)/2." rot="180.; 0.; 90." />
+  <posXYZ volume="ECT_TS_ShellCoilCover"    X_Y_Z=" 0.;  AECT_TRSShr_ShellRadPos + GENV_Eps; 0." rot=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_TS_FrontSpecialBox"   X_Y_Z=" AECT_SFSBXp_ShellFSBXpos; -AECT_SCCXwi_ShellCCfullXwidth*GENV_Si225 - AECT_SFSBYw_ShellFSBfullYwidt*GENV_Co225 + AECT_OSCCtc_ShellCCthickconn*GENV_Si225*GENV_Si225+ AECT_TRSShr_ShellRadPos+AECT_OSCCOv_ShellCCoverlap*GENV_Si45; (AECT_OSCCZd_ShellCCZdimension-AECT_OSJPtc_ShellJPZlength)/2." rot=" 0.; 0.; 22.5" />
+  <posXYZ volume="ECT_TS_AxialForceBox"     X_Y_Z=" AECT_SAFBXp_ShellAFBXpos + GENV_Eps;  -AECT_SAFBXw_ShellAFBfullXwidt*GENV_Si225 - AECT_SAFBYw_ShellAFBfullYwidt*GENV_Co225 + AECT_OSAFBt_ShellAFBthickness*GENV_Si225*GENV_Si225+ AECT_TRSShr_ShellRadPos+AECT_OSCCOv_ShellCCoverlap*GENV_Si45  ; -(AECT_OSCCZd_ShellCCZdimension-(AECT_OSCCZd_ShellCCZdimension-AECT_OSJPtc_ShellJPZlength))/2." rot=" 0.; 0.; 22.5" />
+  <posXYZ volume="ECT_ST_StayTube_Tube"     X_Y_Z=" -AECT_TRSEPr_EndplateRadPos*GENV_Ta225 - AECT_EPHoPo_EndPlateHolepos*GENV_Si225;  AECT_TRSEPr_EndplateRadPos + AECT_EPHoPo_EndPlateHolepos*GENV_Co225; 0." rot=" 0.; 0.; 22.5" />
+  <posXYZ volume="ECT_ST_StayTube_Flange"   X_Y_Z=" -AECT_TRSEPr_EndplateRadPos*GENV_Ta225 - AECT_EPHoPo_EndPlateHolepos*GENV_Si225;  AECT_TRSEPr_EndplateRadPos + AECT_EPHoPo_EndPlateHolepos*GENV_Co225; AECT_OSCCZd_ShellCCZdimension/2.+AECT_STaflt_StayTubeAlignFlth/2. + GENV_Eps" rot=" 0.; 0.; 22.5" />
+  <posXYZ volume="ECT_ST_StayTube_Flange"   X_Y_Z=" -AECT_TRSEPr_EndplateRadPos*GENV_Ta225 - AECT_EPHoPo_EndPlateHolepos*GENV_Si225;  AECT_TRSEPr_EndplateRadPos + AECT_EPHoPo_EndPlateHolepos*GENV_Co225;-AECT_OSCCZd_ShellCCZdimension/2.-AECT_STaflt_StayTubeAlignFlth/2. - GENV_Eps" rot=" 0.; 0.; 22.5" />
+</composition>
+
+<!-- main envelope surrounding coldmass and thermal shield - atlteyv_0012, atlteyv_0014, atlteyv_0015, atlteyv_0025, atlteyv_0027 and atlteyv_0076 -->
+<var name="AECT_EVEPRI_EVEndPlateRadiInne"    value="   670.  "/> 
+<var name="AECT_EVEPRT_EVEndPlateRadiTurr"    value="   930.  "/>
+<var name="AECT_EVEPth_EVEndPlatethicknes"    value="    75.  "/> 
+<var name="AECT_EVEPid_EVEndPlateindist"      value="  4320.  "/> 
+<var name="AECT_EVEPod_EVEndPlateoutdist"     value="  5345.  "/>
+<var name="AECT_EVEPli_EVEndPlatelowinter"    value="  1212.  "/>
+<var name="AECT_EVEPui_EVEndPlateupinter"     value="  1238.  "/>
+<var name="AECT_EVEPHd_EVEndPlateHolediam"    value="   160.  "/>
+<var name="AECT_EVEPHr_EVEndPlateHolerad"     value="  3100.  "/>
+<var name="AECT_EVEPHa_EVEndPlateHoleang"     value="     3.6 "/>
+<var name="AECT_EVEPSl_EVEndPlatespeclen"     value="   303.  "/>
+<var name="AECT_EVEPSa_EVEndPlatespecang"     value="   127.5 "/>
+<var name="AECT_EVEPSr_EVEndPlatespecrad"     value="  3985.  "/>
+
+<var name="AECT_EVAFod_EVAlignFlangeoutdi"    value="   450.  "/>
+<var name="AECT_EVAFzw_EVAlignFlangezwidt"    value="    70.  "/>
+<var name="AECT_EVATid_EVAlignTubeinndiam"    value="   262.  "/>
+<var name="AECT_EVATww_EVAlignTuberwallwi"    value="    20.  "/>
+
+<var name="AECT_EVOShZ_EVOutShellholeZwid"    value="  4800.  "/>
+
+<var name="AECT_EVOSio_EVOutShellinneroff"    value="    15.  "/>
+<var name="AECT_EVOSso_EVOutShellspecioff"    value="    50.  "/>
+<var name="AECT_EVOSit_EVOutShellinnthick"    value="    40.  "/>
+<var name="AECT_EVOSCZ_EVOutShellConnZwid"    value="   120.  "/>
+
+<var name="AECT_EVOSCR_EVOutShellConnlowR"    value="   140.  "/>
+<var name="AECT_EVOSCR_EVOutShellConnbigR"    value="   220.  "/>
+<var name="AECT_EVOSCR_EVOutShellConnspeR"    value="   360.  "/>
+
+<var name="AECT_EVSSAh_EVSideSupporthight"    value="   225.  "/>
+<var name="AECT_EVSSAw_EVSideSupportwidth"    value="   250.  "/>
+<var name="AECT_EVTSAh_EVTopSupporthight"     value="   150.  "/>
+<var name="AECT_EVTSRa_EVTopSupportRadius"    value="  1230.  "/>
+<var name="AECT_EVTSAl_EVTopSupportlength"    value="  2913.  "/>
+<var name="AECT_EVTSCo_EVTopSupportCutoff"    value="    95.  "/>
+<var name="AECT_EVTSCw_EVTopSupportCutwid"    value="   103.  "/>
+
+<var name="AECT_EVSSan_EVSideSupportangle"    value="atan((AECT_EVEPod_EVEndPlateoutdist*GENV_Co225 + AECT_EVEPui_EVEndPlateupinter/2. *GENV_Si225 - AECT_EVEPid_EVEndPlateindist)/(AECT_EVEPod_EVEndPlateoutdist*GENV_Si225 - AECT_EVEPli_EVEndPlatelowinter/2. - AECT_EVEPui_EVEndPlateupinter/2. *GENV_Co225 ))"/>
+<var name="AECT_EVEPSt_EVEndPlatespectana"    value="tan((AECT_EVEPSa_EVEndPlatespecang-90)*GENV_PiS180)"/>
+
+<tubs name="ECT_EV_InnerTube"    material="Aluminium"  Rio_Z="0.; AECT_EVEPRI_EVEndPlateRadiInne; 2.*AECT_EVEPth_EVEndPlatethicknes"  nbPhi="20" />
+<tubs name="ECT_EV_TurretTube"   material="Aluminium"  Rio_Z="0.; AECT_EVEPRT_EVEndPlateRadiTurr; 2.*AECT_EVEPth_EVEndPlatethicknes"  nbPhi="20" />
+<tubs name="ECT_EV_AlignHole"    material="Aluminium"  Rio_Z="0.; AECT_EVEPHd_EVEndPlateHolediam/2.; 2.*AECT_EVEPth_EVEndPlatethicknes"  nbPhi="20" />
+
+<gvxy name="ECT_EV_EndPlate_basic" material="Aluminium" dZ="AECT_EVEPth_EVEndPlatethicknes">
+  <gvxy_point X_Y=" 0. ; 0. "/>
+  <gvxy_point X_Y=" AECT_EVEPod_EVEndPlateoutdist*GENV_Si225 ; AECT_EVEPod_EVEndPlateoutdist*GENV_Co225 "/>
+  <gvxy_point X_Y=" AECT_EVEPod_EVEndPlateoutdist*GENV_Si225 -  AECT_EVEPui_EVEndPlateupinter/2. *GENV_Co225; AECT_EVEPod_EVEndPlateoutdist*GENV_Co225 + AECT_EVEPui_EVEndPlateupinter/2. *GENV_Si225"/>
+  <gvxy_point X_Y=" AECT_EVEPli_EVEndPlatelowinter/2.; AECT_EVEPid_EVEndPlateindist"/>
+  <gvxy_point X_Y="-AECT_EVEPli_EVEndPlatelowinter/2.; AECT_EVEPid_EVEndPlateindist"/>
+  <gvxy_point X_Y="-AECT_EVEPod_EVEndPlateoutdist*GENV_Si225 +  AECT_EVEPui_EVEndPlateupinter/2. *GENV_Co225; AECT_EVEPod_EVEndPlateoutdist*GENV_Co225 + AECT_EVEPui_EVEndPlateupinter/2. *GENV_Si225"/>
+  <gvxy_point X_Y="-AECT_EVEPod_EVEndPlateoutdist*GENV_Si225 ; AECT_EVEPod_EVEndPlateoutdist*GENV_Co225 "/>
+</gvxy>
+
+<var name="AECT_EVEPpx_EVEndPlateS_Point6_X"    value="(AECT_EVEPid_EVEndPlateindist+(1./AECT_EVEPSt_EVEndPlatespectana)*(-AECT_EVEPli_EVEndPlatelowinter/2.)-(AECT_EVEPod_EVEndPlateoutdist*GENV_Co225+AECT_EVEPSl_EVEndPlatespeclen*GENV_Si225)-GENV_Ta225*(-AECT_EVEPod_EVEndPlateoutdist*GENV_Si225+AECT_EVEPSl_EVEndPlatespeclen*GENV_Co225))/(1./AECT_EVEPSt_EVEndPlatespectana-GENV_Ta225)"/>
+<var name="AECT_EVEPpy_EVEndPlateS_Point6_Y"    value="(-AECT_EVEPpx_EVEndPlateS_Point6_X+(-AECT_EVEPli_EVEndPlatelowinter/2.))/AECT_EVEPSt_EVEndPlatespectana+AECT_EVEPid_EVEndPlateindist"/>
+
+<gvxy name="ECT_EV_EndPlate_special" material="Aluminium" dZ="AECT_EVEPth_EVEndPlatethicknes">
+  <gvxy_point X_Y=" 0. ; 0. "/>
+  <gvxy_point X_Y=" AECT_EVEPod_EVEndPlateoutdist*GENV_Si225 ; AECT_EVEPod_EVEndPlateoutdist*GENV_Co225 "/>
+  <gvxy_point X_Y=" AECT_EVEPod_EVEndPlateoutdist*GENV_Si225 -  AECT_EVEPui_EVEndPlateupinter/2. *GENV_Co225; AECT_EVEPod_EVEndPlateoutdist*GENV_Co225 + AECT_EVEPui_EVEndPlateupinter/2. *GENV_Si225"/>
+  <gvxy_point X_Y=" AECT_EVEPli_EVEndPlatelowinter/2.; AECT_EVEPid_EVEndPlateindist"/>
+  <gvxy_point X_Y="-AECT_EVEPli_EVEndPlatelowinter/2.; AECT_EVEPid_EVEndPlateindist"/>
+  <gvxy_point X_Y=" AECT_EVEPpx_EVEndPlateS_Point6_X; AECT_EVEPpy_EVEndPlateS_Point6_Y"/>
+  <gvxy_point X_Y="-AECT_EVEPod_EVEndPlateoutdist*GENV_Si225+AECT_EVEPSl_EVEndPlatespeclen*GENV_Co225 ; AECT_EVEPod_EVEndPlateoutdist*GENV_Co225+AECT_EVEPSl_EVEndPlatespeclen*GENV_Si225 "/>
+  <gvxy_point X_Y="-AECT_EVEPod_EVEndPlateoutdist*GENV_Si225 ; AECT_EVEPod_EVEndPlateoutdist*GENV_Co225 "/>
+</gvxy>
+
+<subtraction name="ECT_EV_EndPlate_Inner_default" >
+  <posXYZ volume="ECT_EV_EndPlate_basic"    X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EV_InnerTube"         X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EV_AlignHole"         X_Y_Z=" AECT_EVEPHr_EVEndPlateHolerad*sin(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); AECT_EVEPHr_EVEndPlateHolerad*cos(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); 0." />
+</subtraction>
+
+<subtraction name="ECT_EV_EndPlate_Turret_default" >
+  <posXYZ volume="ECT_EV_EndPlate_basic"    X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EV_TurretTube"        X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EV_AlignHole"         X_Y_Z=" AECT_EVEPHr_EVEndPlateHolerad*sin(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); AECT_EVEPHr_EVEndPlateHolerad*cos(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); 0." />
+</subtraction>
+
+<subtraction name="ECT_EV_EndPlate_Inner_special_Sector6" >
+  <posXYZ volume="ECT_EV_EndPlate_special"  X_Y_Z=" 0.; 0.; 0." rot=" 0.; 180.; 0."/>
+  <posXYZ volume="ECT_EV_InnerTube"         X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EV_AlignHole"         X_Y_Z=" AECT_EVEPHr_EVEndPlateHolerad*sin(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); AECT_EVEPHr_EVEndPlateHolerad*cos(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); 0." />
+</subtraction>
+
+<subtraction name="ECT_EV_EndPlate_Turret_special_Sector6" >
+  <posXYZ volume="ECT_EV_EndPlate_special"  X_Y_Z=" 0.; 0.; 0." rot=" 0.; 180.; 0."/>
+  <posXYZ volume="ECT_EV_TurretTube"        X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EV_AlignHole"         X_Y_Z=" AECT_EVEPHr_EVEndPlateHolerad*sin(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); AECT_EVEPHr_EVEndPlateHolerad*cos(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); 0." />
+</subtraction>
+
+<subtraction name="ECT_EV_EndPlate_Inner_special_Sector7" >
+  <posXYZ volume="ECT_EV_EndPlate_special"  X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EV_InnerTube"         X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EV_AlignHole"         X_Y_Z=" AECT_EVEPHr_EVEndPlateHolerad*sin(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); AECT_EVEPHr_EVEndPlateHolerad*cos(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); 0." />
+</subtraction>
+
+<subtraction name="ECT_EV_EndPlate_Turret_special_Sector7" >
+  <posXYZ volume="ECT_EV_EndPlate_special"  X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EV_TurretTube"        X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EV_AlignHole"         X_Y_Z=" AECT_EVEPHr_EVEndPlateHolerad*sin(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); AECT_EVEPHr_EVEndPlateHolerad*cos(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); 0." />
+</subtraction>
+
+<var name="AECT_EVOSfo_EVOutShellfulloff" value="AECT_EVOSio_EVOutShellinneroff + AECT_EVOSit_EVOutShellinnthick"/>
+<var name="AECT_EVOSpx_OutShell_Point2_X" value="((AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSfo_EVOutShellfulloff)/GENV_Co225 + tan(AECT_EVSSan_EVSideSupportangle)*(AECT_EVEPli_EVEndPlatelowinter/2. + AECT_EVOSfo_EVOutShellfulloff*tan(AECT_EVSSan_EVSideSupportangle/2.))- (AECT_EVEPid_EVEndPlateindist - AECT_EVOSfo_EVOutShellfulloff))/(tan(AECT_EVSSan_EVSideSupportangle) + GENV_Ta225)"/>
+<var name="AECT_EVOSpx_OutShell_Point5_X" value="((AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSio_EVOutShellinneroff)/GENV_Co225 + tan(AECT_EVSSan_EVSideSupportangle)*(AECT_EVEPli_EVEndPlatelowinter/2. + AECT_EVOSio_EVOutShellinneroff*tan(AECT_EVSSan_EVSideSupportangle/2.))- (AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff))/(tan(AECT_EVSSan_EVSideSupportangle) + GENV_Ta225)"/>
+
+<gvxysx name="ECT_EV_OutShell_default" material="Aluminium" dZ="AECT_EVOShZ_EVOutShellholeZwid - 2.*AECT_EVOSCZ_EVOutShellConnZwid">
+  <gvxy_point X_Y=" AECT_EVEPli_EVEndPlatelowinter/2. + AECT_EVOSfo_EVOutShellfulloff*tan(AECT_EVSSan_EVSideSupportangle/2.); AECT_EVEPid_EVEndPlateindist - AECT_EVOSfo_EVOutShellfulloff"/>
+  <gvxy_point X_Y=" AECT_EVOSpx_OutShell_Point2_X; (AECT_EVOSpx_OutShell_Point2_X - (AECT_EVEPli_EVEndPlatelowinter/2. + AECT_EVOSfo_EVOutShellfulloff*tan(AECT_EVSSan_EVSideSupportangle/2.)))*tan(AECT_EVSSan_EVSideSupportangle) + AECT_EVEPid_EVEndPlateindist - AECT_EVOSfo_EVOutShellfulloff"/>
+  <gvxy_point X_Y=" (AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSfo_EVOutShellfulloff)*GENV_Si225; (AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSfo_EVOutShellfulloff)*GENV_Co225"/>
+  <gvxy_point X_Y=" (AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSio_EVOutShellinneroff)*GENV_Si225; (AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSio_EVOutShellinneroff)*GENV_Co225"/>
+  <gvxy_point X_Y=" AECT_EVOSpx_OutShell_Point5_X; (AECT_EVOSpx_OutShell_Point5_X - (AECT_EVEPli_EVEndPlatelowinter/2. + AECT_EVOSio_EVOutShellinneroff*tan(AECT_EVSSan_EVSideSupportangle/2.)))*tan(AECT_EVSSan_EVSideSupportangle) + AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff"/>
+  <gvxy_point X_Y=" AECT_EVEPli_EVEndPlatelowinter/2. + AECT_EVOSio_EVOutShellinneroff*tan(AECT_EVSSan_EVSideSupportangle/2.); AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff"/>
+</gvxysx>
+
+<var name="AECT_EVOSpx_OutShellS_Point7_X" value="-AECT_EVEPli_EVEndPlatelowinter/2. - AECT_EVOSio_EVOutShellinneroff*(1./cos((AECT_EVEPSa_EVEndPlatespecang-90)*GENV_PiS180) - tan((AECT_EVEPSa_EVEndPlatespecang-90)*GENV_PiS180))"/>
+<var name="AECT_EVOSpy_OutShellS_Point7_Y" value="AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff"/>
+<var name="AECT_EVOSpx_OutShellS_Point9_X" value="-AECT_EVEPod_EVEndPlateoutdist*GENV_Si225+AECT_EVEPSl_EVEndPlatespeclen*GENV_Co225 - (AECT_EVOSso_EVOutShellspecioff-AECT_EVOSio_EVOutShellinneroff)/(2.*GENV_Si225)"/>
+<var name="AECT_EVOSpy_OutShellS_Point9_Y" value="AECT_EVEPod_EVEndPlateoutdist*GENV_Co225+AECT_EVEPSl_EVEndPlatespeclen*GENV_Si225 - (AECT_EVOSso_EVOutShellspecioff+AECT_EVOSio_EVOutShellinneroff)/(2.*GENV_Co225)"/>
+
+<var name="AECT_EVOSpx_OutShellS_Point8_X" value="(AECT_EVOSpy_OutShellS_Point7_Y + (1./tan((AECT_EVEPSa_EVEndPlatespecang-90)*GENV_PiS180))*AECT_EVOSpx_OutShellS_Point7_X - GENV_Ta225*AECT_EVOSpx_OutShellS_Point9_X - AECT_EVOSpy_OutShellS_Point9_Y  )/((1./tan((AECT_EVEPSa_EVEndPlatespecang-90)*GENV_PiS180)) - GENV_Ta225)"/>
+
+<var name="AECT_EVOSpx_OutShellS_Point12_X" value="-AECT_EVEPod_EVEndPlateoutdist*GENV_Si225+AECT_EVEPSl_EVEndPlatespeclen*GENV_Co225 - (AECT_EVOSso_EVOutShellspecioff-AECT_EVOSio_EVOutShellinneroff)/(2.*GENV_Si225)"/>
+<var name="AECT_EVOSpy_OutShellS_Point12_Y" value="AECT_EVEPod_EVEndPlateoutdist*GENV_Co225+AECT_EVEPSl_EVEndPlatespeclen*GENV_Si225 - (AECT_EVOSso_EVOutShellspecioff+AECT_EVOSio_EVOutShellinneroff)/(2.*GENV_Co225) - AECT_EVOSit_EVOutShellinnthick/GENV_Co225"/>
+<var name="AECT_EVOSpx_OutShellS_Point14_X" value="-AECT_EVEPli_EVEndPlatelowinter/2. - (AECT_EVOSio_EVOutShellinneroff + AECT_EVOSit_EVOutShellinnthick)*(1./cos((AECT_EVEPSa_EVEndPlatespecang-90)*GENV_PiS180) - tan((AECT_EVEPSa_EVEndPlatespecang-90)*GENV_PiS180))"/>
+<var name="AECT_EVOSpy_OutShellS_Point14_Y" value="AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff - AECT_EVOSit_EVOutShellinnthick"/>
+
+<var name="AECT_EVOSpx_OutShellS_Point13_X" value="(AECT_EVOSpy_OutShellS_Point14_Y + (1./tan((AECT_EVEPSa_EVEndPlatespecang-90)*GENV_PiS180))*AECT_EVOSpx_OutShellS_Point14_X - GENV_Ta225*AECT_EVOSpx_OutShellS_Point12_X - AECT_EVOSpy_OutShellS_Point12_Y  )/((1./tan((AECT_EVEPSa_EVEndPlatespecang-90)*GENV_PiS180)) - GENV_Ta225)"/>
+
+<gvxy name="ECT_EV_OutShell_special" material="Aluminium" dZ="AECT_EVOShZ_EVOutShellholeZwid - 2.*AECT_EVOSCZ_EVOutShellConnZwid">
+  <gvxy_point X_Y=" AECT_EVEPli_EVEndPlatelowinter/2. + AECT_EVOSfo_EVOutShellfulloff*tan(AECT_EVSSan_EVSideSupportangle/2.); AECT_EVEPid_EVEndPlateindist - AECT_EVOSfo_EVOutShellfulloff"/>
+  <gvxy_point X_Y=" AECT_EVOSpx_OutShell_Point2_X; (AECT_EVOSpx_OutShell_Point2_X - (AECT_EVEPli_EVEndPlatelowinter/2. + AECT_EVOSfo_EVOutShellfulloff*tan(AECT_EVSSan_EVSideSupportangle/2.)))*tan(AECT_EVSSan_EVSideSupportangle) + AECT_EVEPid_EVEndPlateindist - AECT_EVOSfo_EVOutShellfulloff"/>
+  <gvxy_point X_Y=" (AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSfo_EVOutShellfulloff)*GENV_Si225; (AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSfo_EVOutShellfulloff)*GENV_Co225"/>
+  <gvxy_point X_Y=" (AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSio_EVOutShellinneroff)*GENV_Si225; (AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSio_EVOutShellinneroff)*GENV_Co225"/>
+  <gvxy_point X_Y=" AECT_EVOSpx_OutShell_Point5_X; (AECT_EVOSpx_OutShell_Point5_X - (AECT_EVEPli_EVEndPlatelowinter/2. + AECT_EVOSio_EVOutShellinneroff*tan(AECT_EVSSan_EVSideSupportangle/2.)))*tan(AECT_EVSSan_EVSideSupportangle) + AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff"/>
+  <gvxy_point X_Y=" AECT_EVEPli_EVEndPlatelowinter/2. + AECT_EVOSio_EVOutShellinneroff*tan(AECT_EVSSan_EVSideSupportangle/2.); AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff"/>
+  <gvxy_point X_Y=" AECT_EVOSpx_OutShellS_Point7_X ; AECT_EVOSpy_OutShellS_Point7_Y"/>
+  <gvxy_point X_Y=" AECT_EVOSpx_OutShellS_Point8_X ; AECT_EVOSpy_OutShellS_Point7_Y - tan((180.-AECT_EVEPSa_EVEndPlatespecang)*GENV_PiS180)*(AECT_EVOSpx_OutShellS_Point8_X - AECT_EVOSpx_OutShellS_Point7_X)"/> 
+  <gvxy_point X_Y=" AECT_EVOSpx_OutShellS_Point9_X ; AECT_EVOSpy_OutShellS_Point9_Y"/>
+  <gvxy_point X_Y=" -(AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSio_EVOutShellinneroff)*GENV_Si225; (AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSio_EVOutShellinneroff)*GENV_Co225"/>
+  <gvxy_point X_Y=" -(AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSfo_EVOutShellfulloff)*GENV_Si225; (AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSfo_EVOutShellfulloff)*GENV_Co225"/>
+  <gvxy_point X_Y=" AECT_EVOSpx_OutShellS_Point12_X ; AECT_EVOSpy_OutShellS_Point12_Y"/>
+  <gvxy_point X_Y=" AECT_EVOSpx_OutShellS_Point13_X; AECT_EVOSpy_OutShellS_Point14_Y - tan((180-AECT_EVEPSa_EVEndPlatespecang)*GENV_PiS180)*(AECT_EVOSpx_OutShellS_Point13_X - AECT_EVOSpx_OutShellS_Point14_X)"/>
+  <gvxy_point X_Y=" AECT_EVOSpx_OutShellS_Point14_X ; AECT_EVOSpy_OutShellS_Point14_Y"/>
+</gvxy>
+
+<!-- introduced becaused used for calculation-->
+<var name="AECT_EVOSpx_OutConnector_Point6_X" value="AECT_EVEPli_EVEndPlatelowinter/2. + AECT_EVOSCR_EVOutShellConnbigR*sin(AECT_EVSSan_EVSideSupportangle) - (AECT_EVOSCR_EVOutShellConnlowR - AECT_EVOSCR_EVOutShellConnbigR*cos(AECT_EVSSan_EVSideSupportangle))/tan(AECT_EVSSan_EVSideSupportangle)"/>
+<!--  derived variable for fifth point via the formula tan(suppangle)*(x-point6_x)+point6_y = -tan(22.5)*(x-point4_x)+point4_y for x coordinate, y simple trigonometry -->
+<var name="AECT_EVOSpx_OutConnector_Point5_X" value="((AECT_EVEPod_EVEndPlateoutdist*GENV_Si225 - AECT_EVOSCR_EVOutShellConnlowR*GENV_Si225)*GENV_Ta225+tan(AECT_EVSSan_EVSideSupportangle)*AECT_EVOSpx_OutConnector_Point6_X+(AECT_EVEPod_EVEndPlateoutdist*GENV_Co225 - AECT_EVOSCR_EVOutShellConnlowR*GENV_Co225) - (AECT_EVEPid_EVEndPlateindist - AECT_EVOSCR_EVOutShellConnlowR))/(GENV_Ta225+tan(AECT_EVSSan_EVSideSupportangle))"/>
+
+<gvxysx name="ECT_EV_OutShellConnector_default" material="Aluminium" dZ="AECT_EVOSCZ_EVOutShellConnZwid">
+  <gvxy_point X_Y=" AECT_EVEPli_EVEndPlatelowinter/2.; AECT_EVEPid_EVEndPlateindist"/>
+  <gvxy_point X_Y=" AECT_EVEPod_EVEndPlateoutdist*GENV_Si225 -  AECT_EVEPui_EVEndPlateupinter/2. *GENV_Co225; AECT_EVEPod_EVEndPlateoutdist*GENV_Co225 + AECT_EVEPui_EVEndPlateupinter/2. *GENV_Si225"/>
+  <gvxy_point X_Y=" AECT_EVEPod_EVEndPlateoutdist*GENV_Si225 ; AECT_EVEPod_EVEndPlateoutdist*GENV_Co225"/>
+  <gvxy_point X_Y=" (AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSCR_EVOutShellConnlowR)*GENV_Si225 ; (AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSCR_EVOutShellConnlowR)*GENV_Co225"/>
+  <gvxy_point X_Y=" AECT_EVOSpx_OutConnector_Point5_X ; (AECT_EVOSpx_OutConnector_Point5_X-AECT_EVOSpx_OutConnector_Point6_X)*tan(AECT_EVSSan_EVSideSupportangle)+AECT_EVEPid_EVEndPlateindist - AECT_EVOSCR_EVOutShellConnlowR"/>
+  <gvxy_point X_Y=" AECT_EVEPli_EVEndPlatelowinter/2. + AECT_EVOSCR_EVOutShellConnbigR*sin(AECT_EVSSan_EVSideSupportangle) - (AECT_EVOSCR_EVOutShellConnlowR - AECT_EVOSCR_EVOutShellConnbigR*cos(AECT_EVSSan_EVSideSupportangle))/tan(AECT_EVSSan_EVSideSupportangle); AECT_EVEPid_EVEndPlateindist - AECT_EVOSCR_EVOutShellConnlowR"/>
+</gvxysx>
+
+<var name="AECT_EVOSpx_OutConnectorS_Point14_X" value="-AECT_EVEPli_EVEndPlatelowinter/2. - AECT_EVOSCR_EVOutShellConnspeR*(1./cos((AECT_EVEPSa_EVEndPlatespecang-90)*GENV_PiS180)) + AECT_EVOSCR_EVOutShellConnlowR*AECT_EVEPSt_EVEndPlatespectana"/>
+<var name="AECT_EVOSpx_OutConnectorS_Point13_X" value="(AECT_EVEPid_EVEndPlateindist-AECT_EVOSCR_EVOutShellConnlowR+(1./AECT_EVEPSt_EVEndPlatespectana)*AECT_EVOSpx_OutConnectorS_Point14_X+GENV_Ta225*(AECT_EVEPod_EVEndPlateoutdist*GENV_Si225-AECT_EVEPSl_EVEndPlatespeclen*GENV_Co225)-AECT_EVEPod_EVEndPlateoutdist*GENV_Co225-AECT_EVEPSl_EVEndPlatespeclen*GENV_Si225+AECT_EVOSCR_EVOutShellConnlowR/GENV_Co225)/(1./AECT_EVEPSt_EVEndPlatespectana-GENV_Ta225)"/>
+
+<gvxy name="ECT_EV_OutShellConnector_special" material="Aluminium" dZ="AECT_EVOSCZ_EVOutShellConnZwid">
+  <gvxy_point X_Y=" AECT_EVEPli_EVEndPlatelowinter/2. + AECT_EVOSCR_EVOutShellConnbigR*sin(AECT_EVSSan_EVSideSupportangle) - (AECT_EVOSCR_EVOutShellConnlowR - AECT_EVOSCR_EVOutShellConnbigR*cos(AECT_EVSSan_EVSideSupportangle))/tan(AECT_EVSSan_EVSideSupportangle); AECT_EVEPid_EVEndPlateindist - AECT_EVOSCR_EVOutShellConnlowR"/>
+  <gvxy_point X_Y=" AECT_EVOSpx_OutConnector_Point5_X ; (AECT_EVOSpx_OutConnector_Point5_X-AECT_EVOSpx_OutConnector_Point6_X)*tan(AECT_EVSSan_EVSideSupportangle)+AECT_EVEPid_EVEndPlateindist - AECT_EVOSCR_EVOutShellConnlowR"/>
+  <gvxy_point X_Y=" (AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSCR_EVOutShellConnlowR)*GENV_Si225 ; (AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSCR_EVOutShellConnlowR)*GENV_Co225"/>
+  <gvxy_point X_Y=" AECT_EVEPod_EVEndPlateoutdist*GENV_Si225 ; AECT_EVEPod_EVEndPlateoutdist*GENV_Co225"/>
+  <gvxy_point X_Y=" AECT_EVEPod_EVEndPlateoutdist*GENV_Si225 -  AECT_EVEPui_EVEndPlateupinter/2. *GENV_Co225; AECT_EVEPod_EVEndPlateoutdist*GENV_Co225 + AECT_EVEPui_EVEndPlateupinter/2. *GENV_Si225"/>
+  <gvxy_point X_Y=" AECT_EVEPli_EVEndPlatelowinter/2.; AECT_EVEPid_EVEndPlateindist"/>
+  <gvxy_point X_Y="-AECT_EVEPli_EVEndPlatelowinter/2.; AECT_EVEPid_EVEndPlateindist"/>
+  <gvxy_point X_Y=" AECT_EVEPpx_EVEndPlateS_Point6_X; AECT_EVEPpy_EVEndPlateS_Point6_Y"/>
+  <gvxy_point X_Y="-AECT_EVEPod_EVEndPlateoutdist*GENV_Si225+AECT_EVEPSl_EVEndPlatespeclen*GENV_Co225 ; AECT_EVEPod_EVEndPlateoutdist*GENV_Co225+AECT_EVEPSl_EVEndPlatespeclen*GENV_Si225 "/>
+  <gvxy_point X_Y="-AECT_EVEPod_EVEndPlateoutdist*GENV_Si225 ; AECT_EVEPod_EVEndPlateoutdist*GENV_Co225 "/>
+  <gvxy_point X_Y="(-AECT_EVEPod_EVEndPlateoutdist+AECT_EVOSCR_EVOutShellConnlowR)*GENV_Si225 ; (AECT_EVEPod_EVEndPlateoutdist-AECT_EVOSCR_EVOutShellConnlowR)*GENV_Co225 "/>
+  <gvxy_point X_Y="-AECT_EVEPod_EVEndPlateoutdist*GENV_Si225+AECT_EVEPSl_EVEndPlatespeclen*GENV_Co225 ; AECT_EVEPod_EVEndPlateoutdist*GENV_Co225+AECT_EVEPSl_EVEndPlatespeclen*GENV_Si225 - AECT_EVOSCR_EVOutShellConnlowR/GENV_Co225 "/>
+  <gvxy_point X_Y=" AECT_EVOSpx_OutConnectorS_Point13_X; AECT_EVEPid_EVEndPlateindist - AECT_EVOSCR_EVOutShellConnlowR - tan((180.-AECT_EVEPSa_EVEndPlatespecang)*GENV_PiS180)*(AECT_EVOSpx_OutConnectorS_Point13_X - AECT_EVOSpx_OutConnectorS_Point14_X)"/>
+  <gvxy_point X_Y=" AECT_EVOSpx_OutConnectorS_Point14_X; AECT_EVEPid_EVEndPlateindist - AECT_EVOSCR_EVOutShellConnlowR"/>
+</gvxy>
+
+<composition name="ECT_EV_Envelop_default" >
+  <posXYZ volume="ECT_EV_EndPlate_Inner_default"    X_Y_Z=" GENV_Eps*GENV_Si225; GENV_Eps*GENV_Co225;  AECT_EVOShZ_EVOutShellholeZwid/2. + AECT_EVEPth_EVEndPlatethicknes/2. + GENV_Eps" rot=" 0.; 0.; -67.5"/>
+  <posXYZ volume="ECT_EV_EndPlate_Turret_default"   X_Y_Z=" GENV_Eps*GENV_Si225; GENV_Eps*GENV_Co225; -AECT_EVOShZ_EVOutShellholeZwid/2. - AECT_EVEPth_EVEndPlatethicknes/2. - GENV_Eps" rot=" 0.; 0.; -67.5"/>
+  <posXYZ volume="ECT_EV_OutShell_default"          X_Y_Z=" GENV_Eps*GENV_Si225; GENV_Eps*GENV_Co225;  0." rot=" 0.; 0.; -67.5"/>
+  <posXYZ volume="ECT_EV_OutShellConnector_default" X_Y_Z=" GENV_Eps*GENV_Si225; GENV_Eps*GENV_Co225;  AECT_EVOShZ_EVOutShellholeZwid/2. - AECT_EVOSCZ_EVOutShellConnZwid/2. + GENV_Eps/2."    rot=" 0.; 0.; -67.5"/>
+  <posXYZ volume="ECT_EV_OutShellConnector_default" X_Y_Z=" GENV_Eps*GENV_Si225; GENV_Eps*GENV_Co225; -AECT_EVOShZ_EVOutShellholeZwid/2. + AECT_EVOSCZ_EVOutShellConnZwid/2. - GENV_Eps/2."    rot=" 0.; 0.; -67.5"/>
+</composition>
+
+<composition name="ECT_EV_Envelop_special_Sector6" >
+  <posXYZ volume="ECT_EV_EndPlate_Inner_special_Sector6"    X_Y_Z=" GENV_Eps*GENV_Si225; GENV_Eps*GENV_Co225;  AECT_EVOShZ_EVOutShellholeZwid/2. + AECT_EVEPth_EVEndPlatethicknes/2. + GENV_Eps" rot=" 0.; 0.; 22.5"/>
+  <posXYZ volume="ECT_EV_EndPlate_Turret_special_Sector6"   X_Y_Z=" GENV_Eps*GENV_Si225; GENV_Eps*GENV_Co225; -AECT_EVOShZ_EVOutShellholeZwid/2. - AECT_EVEPth_EVEndPlatethicknes/2. - GENV_Eps" rot=" 0.; 0.; 22.5"/>
+  <posXYZ volume="ECT_EV_OutShell_special"          X_Y_Z=" GENV_Eps*GENV_Si225; GENV_Eps*GENV_Co225;  0." rot=" 0.; 180.; 22.5"/>
+  <posXYZ volume="ECT_EV_OutShellConnector_special" X_Y_Z=" GENV_Eps*GENV_Si225; GENV_Eps*GENV_Co225;  AECT_EVOShZ_EVOutShellholeZwid/2. - AECT_EVOSCZ_EVOutShellConnZwid/2. + GENV_Eps/2."    rot=" 0.; 180.; 22.5"/>
+  <posXYZ volume="ECT_EV_OutShellConnector_special" X_Y_Z=" GENV_Eps*GENV_Si225; GENV_Eps*GENV_Co225; -AECT_EVOShZ_EVOutShellholeZwid/2. + AECT_EVOSCZ_EVOutShellConnZwid/2. - GENV_Eps/2."    rot=" 0.; 180.; 22.5"/>
+</composition>
+
+<composition name="ECT_EV_Envelop_special_Sector7" >
+  <posXYZ volume="ECT_EV_EndPlate_Inner_special_Sector7"    X_Y_Z=" GENV_Eps*GENV_Si225; GENV_Eps*GENV_Co225;  AECT_EVOShZ_EVOutShellholeZwid/2. + AECT_EVEPth_EVEndPlatethicknes/2. + GENV_Eps" rot=" 0.; 0.; 22.5"/>
+  <posXYZ volume="ECT_EV_EndPlate_Turret_special_Sector7"   X_Y_Z=" GENV_Eps*GENV_Si225; GENV_Eps*GENV_Co225; -AECT_EVOShZ_EVOutShellholeZwid/2. - AECT_EVEPth_EVEndPlatethicknes/2. - GENV_Eps" rot=" 0.; 0.; 22.5"/>
+  <posXYZ volume="ECT_EV_OutShell_special"          X_Y_Z=" GENV_Eps*GENV_Si225; GENV_Eps*GENV_Co225;  0." rot=" 0.; 0.; 22.5"/>
+  <posXYZ volume="ECT_EV_OutShellConnector_special" X_Y_Z=" GENV_Eps*GENV_Si225; GENV_Eps*GENV_Co225;  AECT_EVOShZ_EVOutShellholeZwid/2. - AECT_EVOSCZ_EVOutShellConnZwid/2. + GENV_Eps/2."    rot=" 0.; 0.; 22.5"/>
+  <posXYZ volume="ECT_EV_OutShellConnector_special" X_Y_Z=" GENV_Eps*GENV_Si225; GENV_Eps*GENV_Co225; -AECT_EVOShZ_EVOutShellholeZwid/2. + AECT_EVOSCZ_EVOutShellConnZwid/2. - GENV_Eps/2."    rot=" 0.; 0.; 22.5"/>
+</composition>
+
+<box  name="ECT_EV_SideAttachment"           material="Aluminium"  X_Y_Z="AECT_EVSSAh_EVSideSupporthight - AECT_EVOSit_EVOutShellinnthick - AECT_EVOSio_EVOutShellinneroff; AECT_EVSSAw_EVSideSupportwidth; AECT_EVOShZ_EVOutShellholeZwid - 2.*AECT_EVOSCZ_EVOutShellConnZwid" />
+<box  name="ECT_EV_Attachment_basic"    material="Aluminium"  X_Y_Z="AECT_EVTSAl_EVTopSupportlength; 2.*AECT_EVTSAh_EVTopSupporthight; AECT_EVTSAh_EVTopSupporthight" />
+<box  name="ECT_EV_Attachment_CutBox"   material="Aluminium"  X_Y_Z="2.*AECT_EVTSCw_EVTopSupportCutwid; 4.*AECT_EVTSAh_EVTopSupporthight; AECT_EVTSAh_EVTopSupporthight" />
+<tubs name="ECT_EV_Attachment_CutTube"  material="Aluminium"  Rio_Z="0.; AECT_EVEPHd_EVEndPlateHolediam/2.; 2.*AECT_EVTSAh_EVTopSupporthight"  nbPhi="20" />
+
+<tubs name="ECT_EV_AlignFlange_default_pre"  material="Aluminium"  Rio_Z="AECT_EVEPHd_EVEndPlateHolediam/2.; AECT_EVAFod_EVAlignFlangeoutdi/2.; AECT_EVAFzw_EVAlignFlangezwidt"  nbPhi="20" />
+<tubs name="ECT_EV_AlignFlange_special_base" material="Aluminium"  Rio_Z="0.; AECT_EVAFod_EVAlignFlangeoutdi/2.; AECT_EVTSAh_EVTopSupporthight"  nbPhi="20" />
+<box  name="ECT_EV_AlignFlange_special_cut"  material="Aluminium"  X_Y_Z="2.*AECT_EVAFod_EVAlignFlangeoutdi; 2.*AECT_EVTSAh_EVTopSupporthight; 2.*AECT_EVTSAh_EVTopSupporthight" />
+<tubs name="ECT_EV_AlignTube_default_pre"    material="Aluminium"  Rio_Z="AECT_EVATid_EVAlignTubeinndiam/2.; AECT_EVATid_EVAlignTubeinndiam/2.+AECT_EVATww_EVAlignTuberwallwi; AECT_EVOShZ_EVOutShellholeZwid-2.*AECT_EVAFzw_EVAlignFlangezwidt - GENV_Eps"  nbPhi="20" />
+<tubs name="ECT_EV_AlignTube_special_pre"    material="Aluminium"  Rio_Z="AECT_EVATid_EVAlignTubeinndiam/2.; AECT_EVATid_EVAlignTubeinndiam/2.+AECT_EVATww_EVAlignTuberwallwi; AECT_EVOShZ_EVOutShellholeZwid-2.*AECT_EVTSAh_EVTopSupporthight - GENV_Eps"  nbPhi="20" />
+
+<subtraction name="ECT_EV_FrontAttachment" >
+  <posXYZ volume="ECT_EV_Attachment_basic"    X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EV_Attachment_CutBox"   X_Y_Z=" AECT_EVTSAl_EVTopSupportlength/2.; 0.;  -AECT_EVTSCo_EVTopSupportCutoff" />
+  <posXYZ volume="ECT_EV_Attachment_CutTube"  X_Y_Z=" AECT_EVEPHr_EVEndPlateHolerad*cos(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180) - AECT_EVTSRa_EVTopSupportRadius - AECT_EVTSAl_EVTopSupportlength/2.; -AECT_EVEPHr_EVEndPlateHolerad*sin(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); 0." />
+</subtraction>
+
+<subtraction name="ECT_EV_BackAttachment" >
+  <posXYZ volume="ECT_EV_Attachment_basic"    X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EV_Attachment_CutBox"   X_Y_Z=" AECT_EVTSAl_EVTopSupportlength/2.; 0.;  AECT_EVTSCo_EVTopSupportCutoff" />
+  <posXYZ volume="ECT_EV_Attachment_CutTube"  X_Y_Z=" AECT_EVEPHr_EVEndPlateHolerad*cos(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180) - AECT_EVTSRa_EVTopSupportRadius - AECT_EVTSAl_EVTopSupportlength/2.; -AECT_EVEPHr_EVEndPlateHolerad*sin(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); 0." />
+</subtraction>
+
+<composition name="ECT_EV_AlignTube_default">
+  <posRPhiZ   volume="ECT_EV_AlignTube_default_pre"  R_Phi_Z=" AECT_EVEPHr_EVEndPlateHolerad ; 22.5 - AECT_EVEPHa_EVEndPlateHoleang; 0. " />
+  <posRPhiZ   volume="ECT_EV_AlignFlange_default_pre"  R_Phi_Z=" AECT_EVEPHr_EVEndPlateHolerad ; 22.5 - AECT_EVEPHa_EVEndPlateHoleang; AECT_EVOShZ_EVOutShellholeZwid/2.-AECT_EVAFzw_EVAlignFlangezwidt/2. " />
+  <posRPhiZ   volume="ECT_EV_AlignFlange_default_pre"  R_Phi_Z=" AECT_EVEPHr_EVEndPlateHolerad ; 22.5 - AECT_EVEPHa_EVEndPlateHoleang;-AECT_EVOShZ_EVOutShellholeZwid/2.+AECT_EVAFzw_EVAlignFlangezwidt/2. " />
+</composition>
+
+<subtraction name="ECT_EV_AlignFlange_special_pre" >
+  <posXYZ volume="ECT_EV_AlignFlange_special_base"  X_Y_Z=" AECT_EVEPHr_EVEndPlateHolerad*cos(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180);-AECT_EVEPHr_EVEndPlateHolerad*sin(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); 0." />
+  <posXYZ volume="ECT_EV_AlignFlange_special_cut"   X_Y_Z=" AECT_EVEPHr_EVEndPlateHolerad*cos(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180);-GENV_Eps; 0." rot=" 0.; 0.; 0." />
+  <posXYZ volume="ECT_EV_Attachment_CutTube"        X_Y_Z=" AECT_EVEPHr_EVEndPlateHolerad*cos(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180);-AECT_EVEPHr_EVEndPlateHolerad*sin(AECT_EVEPHa_EVEndPlateHoleang*GENV_PiS180); 0." />
+</subtraction>
+
+<composition name="ECT_EV_AlignTube_special">
+  <posRPhiZ   volume="ECT_EV_AlignTube_special_pre"    R_Phi_Z=" AECT_EVEPHr_EVEndPlateHolerad ; -AECT_EVEPHa_EVEndPlateHoleang; 0. " />
+  <posRPhiZ   volume="ECT_EV_AlignFlange_special_pre"  R_Phi_Z=" 0. ; 0.; AECT_EVOShZ_EVOutShellholeZwid/2.-AECT_EVTSAh_EVTopSupporthight/2. " />
+  <posRPhiZ   volume="ECT_EV_AlignFlange_special_pre"  R_Phi_Z=" 0. ; 0.;-AECT_EVOShZ_EVOutShellholeZwid/2.+AECT_EVTSAh_EVTopSupporthight/2. " />
+</composition>
+
+<!-- radiation shielding mounted inside main envelope towards IP - atljt___0023, atljt___0026, atljt___0029 and atljt___0031 -->
+<var name="AECT_JTVSth_JTVShieldthicknes"    value="    80.  "/>
+<var name="AECT_JTVSlw_JTVShieldlowwidth"    value="   321.  "/>
+<var name="AECT_JTVSuw_JTVShieldupwidth"     value="  1854.  "/>
+<var name="AECT_JTVSth_JTVShieldtothight"    value="  1975.  "/>
+<var name="AECT_JTVSmh_JTVShieldmidhight"    value="  1850.  "/>
+<var name="AECT_JTVShd_JTVShieldholediam"    value="   650.  "/>
+<var name="AECT_JTVSpx_JTVShieldholeposX"    value="   195.  "/>
+<var name="AECT_JTVSpy_JTVShieldholeposY"    value="  1569.  "/>
+<var name="AECT_JTVSpr_JTVShieldposR"        value="  1470.  "/>
+<var name="AECT_JTVSpp_JTVShieldpophioff"    value="   435.  "/>
+
+<var name="AECT_JTVSth_JTVSpecial2tothig"    value="  1713.  "/>
+<var name="AECT_JTVSth_JTVSpecial1tothig"    value="  1690.  "/>
+<var name="AECT_JTVSlh_JTVSpecial1lowhig"    value="   931.  "/>
+<var name="AECT_JTVSmh_JTVSpecial1midhig"    value="   691.  "/>
+<var name="AECT_JTVSlh_JTVSpecial1phioff"    value="   170.  "/>
+
+<var name="AECT_JTVSpr_JTVSpecial2posR"      value="  1522.  "/>
+<var name="AECT_JTVSpr_JTVSpecial1posR"      value="  1717.  "/>
+
+<gvxy name="ECT_JTV_Shielding_basic" material="PolyBoronB4C" dZ="AECT_JTVSth_JTVShieldthicknes">
+  <gvxy_point X_Y=" AECT_JTVSlw_JTVShieldlowwidth/2.; 0."/>
+  <gvxy_point X_Y=" AECT_JTVSuw_JTVShieldupwidth/2.; AECT_JTVSmh_JTVShieldmidhight"/>
+  <gvxy_point X_Y=" 0.; AECT_JTVSth_JTVShieldtothight"/>
+  <gvxy_point X_Y="-AECT_JTVSuw_JTVShieldupwidth/2.; AECT_JTVSmh_JTVShieldmidhight"/>
+  <gvxy_point X_Y="-AECT_JTVSlw_JTVShieldlowwidth/2.; 0."/>
+</gvxy>
+
+<tubs name="ECT_JTV_AlignHole"    material="PolyBoronB4C"  Rio_Z="0.; AECT_JTVShd_JTVShieldholediam/2.; 2.*AECT_JTVSth_JTVShieldthicknes"  nbPhi="20" />
+
+<subtraction name="ECT_JTV_Shielding_default_tmp" >
+  <posXYZ volume="ECT_JTV_Shielding_basic"  X_Y_Z=" AECT_JTVSlw_JTVShieldlowwidth/2.*GENV_Co225+AECT_JTVSpp_JTVShieldpophioff; AECT_JTVSpr_JTVShieldposR-AECT_JTVSlw_JTVShieldlowwidth/2.*GENV_Si225;  AECT_EVOShZ_EVOutShellholeZwid/2. - AECT_JTVSth_JTVShieldthicknes/2." rot=" 0.; 0.; -22.5"/>
+  <posXYZ volume="ECT_JTV_AlignHole"        X_Y_Z=" AECT_JTVSpp_JTVShieldpophioff+(AECT_JTVSlw_JTVShieldlowwidth/2.+AECT_JTVSpx_JTVShieldholeposX)*GENV_Co225+AECT_JTVSpy_JTVShieldholeposY*GENV_Si225; AECT_JTVSpr_JTVShieldposR-(AECT_JTVSlw_JTVShieldlowwidth/2.+AECT_JTVSpx_JTVShieldholeposX)*GENV_Si225+AECT_JTVSpy_JTVShieldholeposY*GENV_Co225; AECT_EVOShZ_EVOutShellholeZwid/2. - AECT_JTVSth_JTVShieldthicknes/2."/>
+</subtraction>
+
+<composition name="ECT_JTV_Shielding_default" >
+  <posXYZ volume="ECT_JTV_Shielding_default_tmp"  rot=" 0.; 0.; -45."/>
+</composition>
+
+<gvxy name="ECT_JTV_Shielding_special1" material="PolyBoronB4C" dZ="AECT_JTVSth_JTVShieldthicknes">
+  <gvxy_point X_Y=" 0.; 0."/>
+  <gvxy_point X_Y=" 0.; AECT_JTVSlh_JTVSpecial1lowhig"/>
+  <gvxy_point X_Y=" AECT_JTVSlh_JTVSpecial1phioff; AECT_JTVSlh_JTVSpecial1lowhig"/>
+  <gvxy_point X_Y=" AECT_JTVSlh_JTVSpecial1phioff; AECT_JTVSth_JTVSpecial1tothig"/>  
+  <gvxy_point X_Y=" (AECT_JTVSlh_JTVSpecial1lowhig+AECT_JTVSmh_JTVSpecial1midhig)*GENV_Ta225; AECT_JTVSlh_JTVSpecial1lowhig+AECT_JTVSmh_JTVSpecial1midhig"/> 
+</gvxy>
+
+<gvxy name="ECT_JTV_Shielding_special2" material="PolyBoronB4C" dZ="AECT_JTVSth_JTVShieldthicknes">
+  <gvxy_point X_Y=" 0.; 0."/>
+  <gvxy_point X_Y=" 0.; AECT_JTVSth_JTVSpecial1tothig"/>
+  <gvxy_point X_Y=" -AECT_JTVSth_JTVSpecial2tothig*GENV_Si225; AECT_JTVSth_JTVSpecial2tothig*GENV_Co225"/>
+</gvxy>
+
+<composition name="ECT_JTV_Shielding_special" >
+  <posXYZ volume="ECT_JTV_Shielding_special1"  X_Y_Z=" -AECT_JTVSpp_JTVShieldpophioff; AECT_JTVSpr_JTVSpecial1posR; AECT_EVOShZ_EVOutShellholeZwid/2. - AECT_JTVSth_JTVShieldthicknes/2." rot=" 0.; 0.; 22.5"/>
+  <posXYZ volume="ECT_JTV_Shielding_special2"  X_Y_Z=" -AECT_JTVSpp_JTVShieldpophioff - (AECT_JTVSpr_JTVSpecial1posR-AECT_JTVSpr_JTVSpecial2posR)/GENV_Ta225; AECT_JTVSpr_JTVSpecial2posR;  AECT_EVOShZ_EVOutShellholeZwid/2. - AECT_JTVSth_JTVShieldthicknes/2." rot=" 0.; 0.; 22.5" />
+</composition>
+
+<!-- central tube surrounding beampipe - atlteyv_0017 -->
+<var name="AECT_CTIcle_CentTubeIncomplen"    value="  4953. - 14. "/>
+<var name="AECT_CTIpo1_CentTubeInposoff1"    value="    70.  "/>
+<var name="AECT_CTIpo2_CentTubeInposoff2"    value="   565.  "/>
+<var name="AECT_CTIpo3_CentTubeInposoff3"    value="   500.  "/>
+<var name="AECT_CTIdi1_CentTubeInDiainn1"    value="  1220.  "/>
+<var name="AECT_CTIdi3_CentTubeInDiainn3"    value="  1650.  "/>
+<var name="AECT_CTIdi4_CentTubeInDiainn4"    value="  1730.  "/>
+<var name="AECT_CTIdo1_CentTubeInDiaout1"    value="  1339.  "/>
+<var name="AECT_CTIdo2_CentTubeInDiaout2"    value="  1859.  "/>
+<var name="AECT_CTIdo3_CentTubeInDiaout3"    value="  2400.  "/>
+<var name="AECT_CTIno2_CentTubeInnegoff2"    value="   185.  "/>
+<var name="AECT_CTIdit_CentTubeInDiaintu"    value="  1740.  "/>
+<var name="AECT_CTIdot_CentTubeInDiaoutu"    value="  1780.  "/>
+<var name="AECT_CTIpfo_CentTubeInpofuoff"    value="   750.  "/>
+
+<pcon name="ECT_EV_CentralTube" material="ShieldSteel" nbPhi="20" >
+  <polyplane Rio_Z=" AECT_CTIdi1_CentTubeInDiainn1/2.; AECT_CTIdo1_CentTubeInDiaout1/2.;  AECT_CTIcle_CentTubeIncomplen/2." />
+  <polyplane Rio_Z=" AECT_CTIdi1_CentTubeInDiainn1/2.; AECT_CTIdo1_CentTubeInDiaout1/2.;  AECT_CTIcle_CentTubeIncomplen/2. - AECT_CTIpo1_CentTubeInposoff1" />
+  <polyplane Rio_Z=" AECT_CTIdi1_CentTubeInDiainn1/2.; AECT_CTIdo2_CentTubeInDiaout2/2.;  AECT_CTIcle_CentTubeIncomplen/2. - AECT_CTIpo1_CentTubeInposoff1" />
+  <polyplane Rio_Z=" AECT_CTIdi1_CentTubeInDiainn1/2.; AECT_CTIdo2_CentTubeInDiaout2/2.;  AECT_CTIcle_CentTubeIncomplen/2. - AECT_CTIpfo_CentTubeInpofuoff + AECT_CTIpo2_CentTubeInposoff2" />
+  <polyplane Rio_Z=" AECT_CTIdi3_CentTubeInDiainn3/2.; AECT_CTIdo2_CentTubeInDiaout2/2.;  AECT_CTIcle_CentTubeIncomplen/2. - AECT_CTIpfo_CentTubeInpofuoff + AECT_CTIpo2_CentTubeInposoff2" />
+  <polyplane Rio_Z=" AECT_CTIdi3_CentTubeInDiainn3/2.; AECT_CTIdo2_CentTubeInDiaout2/2.;  AECT_CTIcle_CentTubeIncomplen/2. - AECT_CTIpfo_CentTubeInpofuoff + AECT_CTIpo3_CentTubeInposoff3" />
+  <polyplane Rio_Z=" AECT_CTIdi4_CentTubeInDiainn4/2.; AECT_CTIdo2_CentTubeInDiaout2/2.;  AECT_CTIcle_CentTubeIncomplen/2. - AECT_CTIpfo_CentTubeInpofuoff + AECT_CTIpo3_CentTubeInposoff3" />
+  <polyplane Rio_Z=" AECT_CTIdi4_CentTubeInDiainn4/2.; AECT_CTIdo2_CentTubeInDiaout2/2.;  AECT_CTIcle_CentTubeIncomplen/2.-AECT_CTIpfo_CentTubeInpofuoff + AECT_CTIpo3_CentTubeInposoff3" />
+  <polyplane Rio_Z=" AECT_CTIdi4_CentTubeInDiainn4/2.; AECT_CTIdo2_CentTubeInDiaout2/2.;  AECT_CTIcle_CentTubeIncomplen/2.-AECT_CTIpfo_CentTubeInpofuoff" />
+  <polyplane Rio_Z=" AECT_CTIdit_CentTubeInDiaintu/2.; AECT_CTIdot_CentTubeInDiaoutu/2.;  AECT_CTIcle_CentTubeIncomplen/2.-AECT_CTIpfo_CentTubeInpofuoff" />
+  <polyplane Rio_Z=" AECT_CTIdit_CentTubeInDiaintu/2.; AECT_CTIdot_CentTubeInDiaoutu/2.; -AECT_CTIcle_CentTubeIncomplen/2.+AECT_CTIpfo_CentTubeInpofuoff" />
+  <polyplane Rio_Z=" AECT_CTIdi4_CentTubeInDiainn4/2.; AECT_CTIdo2_CentTubeInDiaout2/2.; -AECT_CTIcle_CentTubeIncomplen/2.+AECT_CTIpfo_CentTubeInpofuoff" />
+  <polyplane Rio_Z=" AECT_CTIdi4_CentTubeInDiainn4/2.; AECT_CTIdo2_CentTubeInDiaout2/2.; -AECT_CTIcle_CentTubeIncomplen/2.+AECT_CTIno2_CentTubeInnegoff2" />
+  <polyplane Rio_Z=" AECT_CTIdi4_CentTubeInDiainn4/2.; AECT_CTIdo3_CentTubeInDiaout3/2.; -AECT_CTIcle_CentTubeIncomplen/2.+AECT_CTIno2_CentTubeInnegoff2" />
+  <polyplane Rio_Z=" AECT_CTIdi4_CentTubeInDiainn4/2.; AECT_CTIdo3_CentTubeInDiaout3/2.; -AECT_CTIcle_CentTubeIncomplen/2.+AECT_CTIpo1_CentTubeInposoff1" />
+  <polyplane Rio_Z=" AECT_CTIdi4_CentTubeInDiainn4/2.; AECT_CTIdo2_CentTubeInDiaout2/2.; -AECT_CTIcle_CentTubeIncomplen/2.+AECT_CTIpo1_CentTubeInposoff1" />
+  <polyplane Rio_Z=" AECT_CTIdi4_CentTubeInDiainn4/2.; AECT_CTIdo2_CentTubeInDiaout2/2.; -AECT_CTIcle_CentTubeIncomplen/2." />
+</pcon>
+
+<!-- JTV surrounding central tube IP - atljt___0037-vAD -->
+<var name="AECT_JTVFRi_FrontRingInnerRad"    value="  1305. "/>
+<var name="AECT_JTVFDo_FrontRingOuterDia"    value="  2840. "/>
+<var name="AECT_JTVFMr_FrontRingMostInRa"    value="   930. "/>
+<var name="AECT_JTVFZw_FrontRingZwidth"      value="   160. "/>
+<var name="AECT_JTVFZp_FrontRingZposition"   value="   220. "/> <!-- relative pos - from drilling hole position + combination with atlteyv_0076 -->
+<!-- JTV surrounding central tube non IP - atljt___0039-vAC -->
+<var name="AECT_JTVBRi_BackRingInnerRad"     value="  1245. "/>
+<var name="AECT_JTVBDm_BackRingMediumDia"    value="  2400. "/>
+<var name="AECT_JTVBDo_BackRingOuterDia"     value="  2690. "/>
+<var name="AECT_JTVBMr_BackRingMostInRa"     value="   965. "/>
+<var name="AECT_JTVBZw_BackRingZwidth"       value="   140. "/>
+<var name="AECT_JTVBZo_BackRingZoffset"      value="    80. "/>
+
+<pcon name="ECT_JTV_FrontRing" material="PolyBoronB4C" nbPhi="20" >
+  <polyplane Rio_Z=" AECT_JTVFMr_FrontRingMostInRa; AECT_JTVFRi_FrontRingInnerRad; AECT_CTIcle_CentTubeIncomplen/2. - AECT_CTIpo1_CentTubeInposoff1 - AECT_JTVFZp_FrontRingZposition" />
+  <polyplane Rio_Z=" AECT_JTVFMr_FrontRingMostInRa; AECT_JTVFDo_FrontRingOuterDia/2.; AECT_JTVFDo_FrontRingOuterDia/2. - AECT_JTVFRi_FrontRingInnerRad + AECT_CTIcle_CentTubeIncomplen/2. - AECT_CTIpo1_CentTubeInposoff1 - AECT_JTVFZp_FrontRingZposition" />
+  <polyplane Rio_Z=" AECT_JTVFMr_FrontRingMostInRa; AECT_JTVFDo_FrontRingOuterDia/2.; AECT_JTVFZw_FrontRingZwidth + AECT_CTIcle_CentTubeIncomplen/2. - AECT_CTIpo1_CentTubeInposoff1 - AECT_JTVFZp_FrontRingZposition" />
+</pcon>
+
+<pcon name="ECT_JTV_BackRing" material="PolyBoronB4C" nbPhi="20" >
+  <polyplane Rio_Z=" AECT_JTVBDm_BackRingMediumDia/2. + GENV_Eps; AECT_JTVBDo_BackRingOuterDia/2.; -AECT_CTIcle_CentTubeIncomplen/2.+AECT_CTIno2_CentTubeInnegoff2 - AECT_JTVBZw_BackRingZwidth + AECT_JTVBZo_BackRingZoffset" />
+  <polyplane Rio_Z=" AECT_JTVBDm_BackRingMediumDia/2. + GENV_Eps; AECT_JTVBDo_BackRingOuterDia/2.; - AECT_JTVBDo_BackRingOuterDia/2. + AECT_JTVBRi_BackRingInnerRad -AECT_CTIcle_CentTubeIncomplen/2.+AECT_CTIno2_CentTubeInnegoff2 + AECT_JTVBZo_BackRingZoffset" />
+  <polyplane Rio_Z=" AECT_JTVBDm_BackRingMediumDia/2. + GENV_Eps; AECT_JTVBRi_BackRingInnerRad + AECT_JTVBZo_BackRingZoffset; -AECT_CTIcle_CentTubeIncomplen/2.+AECT_CTIno2_CentTubeInnegoff2 " />
+  <polyplane Rio_Z=" AECT_JTVBMr_BackRingMostInRa; AECT_JTVBRi_BackRingInnerRad + AECT_JTVBZo_BackRingZoffset; -AECT_CTIcle_CentTubeIncomplen/2.+AECT_CTIno2_CentTubeInnegoff2 " />
+  <polyplane Rio_Z=" AECT_JTVBMr_BackRingMostInRa; AECT_JTVBRi_BackRingInnerRad; -AECT_CTIcle_CentTubeIncomplen/2.+AECT_CTIno2_CentTubeInnegoff2 + AECT_JTVBZo_BackRingZoffset " />
+</pcon>
+
+<!-- yoke positioned at the ends of central tube - atlteyv_0076, atlteys_0007 and atlteys_0013 -->
+<var name="AECT_CTYpoZ_CentTubeYokeposZ"     value="  1932 "/>
+<var name="AECT_CTYthi_CentTubeYokethick"    value="    60.  "/>
+<var name="AECT_CTYwid_CentTubeYokewidth"    value="   125.  "/>
+<var name="AECT_CTYlen_CentTubeYokelengt"    value="  1500.  "/>
+<var name="AECT_CTYidi_CentTubeYokeindia"    value="   130.  "/>
+<var name="AECT_CTYodi_CentTubeYokeoudia"    value="   300.  "/>
+<var name="AECT_CTYpdi_CentTubeYokeposdi"    value="  1860.  "/>
+<var name="AECT_CTYst1_CentTubeYokesupt1"    value="    30.  "/>
+<var name="AECT_CTYst2_CentTubeYokesupt2"    value="    40.  "/>
+<var name="AECT_CTYSan_CentTubeYokesupa"     value="atan(AECT_CTYodi_CentTubeYokeoudia/AECT_CTYpdi_CentTubeYokeposdi)/GENV_PiS180"/>
+
+<tubs name="ECT_EV_Yoke_Connector"   material="Iron"  Rio_Z="0.; AECT_CTYodi_CentTubeYokeoudia/2.; AECT_CTYthi_CentTubeYokethick + AECT_CTYst1_CentTubeYokesupt1 + AECT_CTYst2_CentTubeYokesupt2"  nbPhi="20" />
+<tubs name="ECT_EV_Yoke_End"         material="Iron"  Rio_Z="AECT_CTYidi_CentTubeYokeindia/2.; AECT_CTYodi_CentTubeYokeoudia/2.; AECT_CTYthi_CentTubeYokethick + GENV_Eps"  nbPhi="20" />
+<box  name="ECT_EV_Yoke_Box"         material="Iron"  X_Y_Z="AECT_CTYlen_CentTubeYokelengt+AECT_CTYodi_CentTubeYokeoudia/2.; AECT_CTYthi_CentTubeYokethick; AECT_CTYwid_CentTubeYokewidth" />
+
+<union name="ECT_EV_Yoke_basic">
+  <posXYZ volume="ECT_EV_Yoke_Box"          X_Y_Z=" AECT_CTYthi_CentTubeYokethick/2.+AECT_CTYst2_CentTubeYokesupt2; -(AECT_CTYlen_CentTubeYokelengt+AECT_CTYodi_CentTubeYokeoudia)/2.; 0." rot="  0.; 0.; 90. "/>
+  <posXYZ volume="ECT_EV_Yoke_Connector"    X_Y_Z=" (AECT_CTYthi_CentTubeYokethick + AECT_CTYst1_CentTubeYokesupt1 + AECT_CTYst2_CentTubeYokesupt2)/2.; 0.; 0." rot="  0.; 90.; 0. " />
+  <posXYZ volume="ECT_EV_Yoke_End"          X_Y_Z=" AECT_CTYthi_CentTubeYokethick/2.+AECT_CTYst2_CentTubeYokesupt2; -(AECT_CTYlen_CentTubeYokelengt+AECT_CTYodi_CentTubeYokeoudia);  0." rot="  0.; 90.; 0. "/>
+</union>
+
+<tubs  name="ECT_EV_Yoke_InnerSupport" material="Iron"  Rio_Z="AECT_CTYpdi_CentTubeYokeposdi/2.; AECT_CTYpdi_CentTubeYokeposdi/2.+AECT_CTYst2_CentTubeYokesupt2; AECT_CTYodi_CentTubeYokeoudia + AECT_CTYst2_CentTubeYokesupt2"  profile="22.5+AECT_CTYSan_CentTubeYokesupa;135.-2.*AECT_CTYSan_CentTubeYokesupa"  nbPhi="20" />
+<tubs  name="ECT_EV_Yoke_OuterSupport" material="Iron"  Rio_Z="AECT_CTYpdi_CentTubeYokeposdi/2. + AECT_CTYst2_CentTubeYokesupt2 + AECT_CTYthi_CentTubeYokethick ; AECT_CTYpdi_CentTubeYokeposdi/2. + AECT_CTYst2_CentTubeYokesupt2 + AECT_CTYthi_CentTubeYokethick + AECT_CTYst1_CentTubeYokesupt1; AECT_CTYodi_CentTubeYokeoudia/2."  profile="22.5+AECT_CTYSan_CentTubeYokesupa;135.-2.*AECT_CTYSan_CentTubeYokesupa"  nbPhi="20" />
+
+<composition name="ECT_EV_Yoke">
+  <posRPhiZ  volume="ECT_EV_Yoke_InnerSupport" R_Phi_Z=" GENV_Eps/2. ;  0.; 0. "/>   
+  <posRPhiZ  volume="ECT_EV_Yoke_OuterSupport" R_Phi_Z=" GENV_Eps/2 ;  0.; 0. "/>   
+  <posRPhiZ  volume="ECT_EV_Yoke_basic"        R_Phi_Z=" AECT_CTYpdi_CentTubeYokeposdi/2.+GENV_Eps/2 ;  22.5; 0. " />
+  <posRPhiZ  volume="ECT_EV_Yoke_basic"        R_Phi_Z="-AECT_CTYpdi_CentTubeYokeposdi/2.-GENV_Eps/2 ; -22.5; 0. " rot="  0.; 180.; 0. "/>
+</composition>
+
+<!-- thermal shielding surrounding central tube - atlteyr_0349 and atlteyr_0310 -->
+<var name="AECT_CTTSid_CentTubeTSInnDia"     value="  1965.  "/>
+<var name="AECT_CTTSil_CentTubeTSinnlen"     value="  3400.  "/>
+<var name="AECT_CTTSFi_CentTubeTSFIDia1"     value="  2100.  "/>
+<var name="AECT_CTTSFi_CentTubeTSFIDia2"     value="  2610.  "/>
+<var name="AECT_CTTSFl_CentTubeTSFlength"    value="   260.  "/>
+<var name="AECT_CTTSth_CentTubeTSthickne"    value="    10.  "/>
+
+<tubs name="ECT_TS_CentralTube_inner"    material="Aluminium" Rio_Z="AECT_CTTSid_CentTubeTSInnDia/2.; AECT_CTTSid_CentTubeTSInnDia/2. + AECT_CTTSth_CentTubeTSthickne;  AECT_CTTSil_CentTubeTSinnlen " nbPhi="20" />
+<tubs name="ECT_TS_CentralTube_middle"   material="Aluminium" Rio_Z="AECT_CTTSid_CentTubeTSInnDia/2.; AECT_CTTSFi_CentTubeTSFIDia1/2. + AECT_CTTSth_CentTubeTSthickne; 3.*AECT_CTTSth_CentTubeTSthickne" nbPhi="20" />
+<pcon name="ECT_TS_CentralTube_top" material="Aluminium" nbPhi="20" profile=" -7.; 194.">
+  <polyplane Rio_Z=" AECT_CTTSFi_CentTubeTSFIDia2/2.; AECT_CTTSFi_CentTubeTSFIDia2/2. + AECT_CTTSth_CentTubeTSthickne;  AECT_CTTSil_CentTubeTSinnlen/2. + 3.*AECT_CTTSth_CentTubeTSthickne + AECT_CTTSFl_CentTubeTSFlength" />
+  <polyplane Rio_Z=" AECT_CTTSFi_CentTubeTSFIDia1/2.; AECT_CTTSFi_CentTubeTSFIDia1/2. + AECT_CTTSth_CentTubeTSthickne;  AECT_CTTSil_CentTubeTSinnlen/2. + 3.*AECT_CTTSth_CentTubeTSthickne " />
+</pcon>
+<pcon name="ECT_TS_CentralTube_low" material="Aluminium" nbPhi="20" profile=" 200.; 140.">
+  <polyplane Rio_Z=" AECT_CTTSFi_CentTubeTSFIDia2/2.; AECT_CTTSFi_CentTubeTSFIDia2/2. + AECT_CTTSth_CentTubeTSthickne;  AECT_CTTSil_CentTubeTSinnlen/2. + 3.*AECT_CTTSth_CentTubeTSthickne + AECT_CTTSFl_CentTubeTSFlength" />
+  <polyplane Rio_Z=" AECT_CTTSFi_CentTubeTSFIDia1/2.; AECT_CTTSFi_CentTubeTSFIDia1/2. + AECT_CTTSth_CentTubeTSthickne;  AECT_CTTSil_CentTubeTSinnlen/2. + 3.*AECT_CTTSth_CentTubeTSthickne " />
+</pcon>
+
+<composition name="ECT_TS_CentralTube">
+  <posXYZ    volume="ECT_TS_CentralTube_inner"/>   
+  <posXYZ    volume="ECT_TS_CentralTube_middle" X_Y_Z="0. ; 0.;  AECT_CTTSil_CentTubeTSinnlen/2. + 3.*AECT_CTTSth_CentTubeTSthickne/2. + GENV_Eps/2."/>   
+  <posXYZ    volume="ECT_TS_CentralTube_middle" X_Y_Z="0. ; 0.;-(AECT_CTTSil_CentTubeTSinnlen/2. + 3.*AECT_CTTSth_CentTubeTSthickne/2. + GENV_Eps/2.)"/>   
+  <posXYZ    volume="ECT_TS_CentralTube_top"  X_Y_Z=" 0. ; 0.; GENV_Eps"/>
+  <posXYZ    volume="ECT_TS_CentralTube_top"  X_Y_Z=" 0. ; 0.;-GENV_Eps" rot="  0.; 180.; 0. "/>
+  <posXYZ    volume="ECT_TS_CentralTube_low"  X_Y_Z=" 0. ; 0.; GENV_Eps"/>
+  <posXYZ    volume="ECT_TS_CentralTube_low"  X_Y_Z=" 0. ; 0.;-GENV_Eps" rot="  0.; 180.; 0. "/>
+</composition>
+
+<!-- tie rod and corresponding mounting points attached to main envelope - atlteyv_0026, atlteyv_0027, atlte___0009, atlteys_0001 and derived calculations-->
+<var  name="AECT_CryStOL0_CryStoutLength0"   value="   545." />
+<var  name="AECT_CryStOL1_CryStoutLength1"   value="   400." />
+<var  name="AECT_CryStOW0_CryStoutpWidth0"   value="  1080." />
+<var  name="AECT_CryStOW1_CryStoutpWidth1"   value="   770." />
+<var  name="AECT_CryStOH1_CryStoutRadius"    value="  4530." />
+<var  name="AECT_CryStOPZ_CryStoutPosiZ"     value="    50." />
+<var  name="AECT_CryStIwi_CryStinnZwidth"    value="   400." />
+<var  name="AECT_CryStIhi_CryStinnhight"     value="   250." />
+<var  name="AECT_CryStIos_CryStinnoffset"    value="    50." />
+<var  name="AECT_CryoStTh_CryoStopThickness" value="    40." />
+<var  name="AECT_TieRodZl_TieRodZlength"     value="  3660." />
+<var  name="AECT_TieRodDi_TieRodDiameter"    value="    56." />
+<var  name="AECT_TieRodPo_TieRodPhioffset"   value="    71." />
+<var  name="AECT_TieRodZo_TieRodZoffset"     value="   135." />
+<var  name="AECT_TieRodRo_TieRodRoffset"     value="    75." />
+
+<box  name="ECT_CryoStop1"  material="Aluminium"  X_Y_Z=" AECT_CryStOW0_CryStoutpWidth0; AECT_CryStOH1_CryStoutRadius-(AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff); AECT_CryStOL0_CryStoutLength0" />
+<box  name="ECT_CryoStop2"  material="Aluminium"  X_Y_Z=" AECT_CryStOW0_CryStoutpWidth0-2.*AECT_CryoStTh_CryoStopThickness ; AECT_CryStOH1_CryStoutRadius-(AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff)     ; AECT_CryStOL0_CryStoutLength0+GENV_Eps " />
+<trd  name="ECT_CryoStop3"  material="Aluminium"  
+ Xmp_Ymp_Z=" AECT_CryStOW0_CryStoutpWidth0+GENV_Eps ; AECT_CryStOW0_CryStoutpWidth0+GENV_Eps ;
+             2.*AECT_CryoStTh_CryoStopThickness ; 2.*(AECT_CryStOH1_CryStoutRadius-(AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff)); AECT_CryStOH1_CryStoutRadius-(AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff) - AECT_CryoStTh_CryoStopThickness" />
+<box  name="ECT_CryoStop4"  material="Aluminium"  X_Y_Z=" AECT_CryStOW1_CryStoutpWidth1; AECT_CryStOH1_CryStoutRadius-(AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff)+GENV_Eps ; AECT_CryStOL0_CryStoutLength0+GENV_Eps " />
+<subtraction  name="ECT_EV_CryoStop_outside_basic" >
+  <posXYZ   volume="ECT_CryoStop1" />
+  <posXYZ   volume="ECT_CryoStop2"  X_Y_Z=" 0. ; -AECT_CryoStTh_CryoStopThickness   ;         0.       " />
+  <posXYZ   volume="ECT_CryoStop3"  X_Y_Z=" 0. ; (AECT_CryStOH1_CryStoutRadius-(AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff))/2. ; -AECT_CryStOL0_CryStoutLength0/2. + AECT_CryStOL1_CryStoutLength1 +(AECT_CryStOH1_CryStoutRadius-(AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff) - AECT_CryoStTh_CryoStopThickness)/2. " />
+  <posXYZ   volume="ECT_CryoStop4" />
+</subtraction>
+
+<composition  name="ECT_EV_CryoStop_outside_tmp" >
+  <posXYZ   volume="ECT_EV_CryoStop_outside_basic" rot="  0.; 0.; -90. "/>
+</composition>
+
+<var name="AFT_ECTBrkt_Thickness"           value="  20. " />
+<var name="AFT_ECTBrkt_LowPlateThickness"   value="  30. " />
+<var name="AFT_ECTBrkt_CtrSpacerGap"        value=" 360. " />
+<var name="AFT_ECTBrkt_MidSpacerGap"        value=" 720. " />
+<var name="AFT_ECTBrkt_SmallXWidth"         value="1080. " />
+<var name="AFT_ECTBrkt_TotalXWidth"         value="1120. " />
+<var name="AFT_ECTBrkt_TotalYWidth"         value=" 230. " />
+
+<var name="AFT_ECTBrkt_TopPlate_ZWidth"     value=" 115. " />
+<var name="AFT_ECTBrkt_DownPlate_ZWidth"    value=" 200. " />
+<var name="AFT_ECTBrkt_SidePlate_ZWidth"    value=" 510. " />
+<var name="AFT_ECTBrkt_ZOffset"             value=" 165. " />
+<var name="AFT_ECTBrkt_PlateZOffset"        value="  25. " />
+<var name="AFT_ECTBrkt_PlateSmallYOffset"   value="  55. " />
+<var name="AFT_ECTBrkt_PlateBigYOffset"     value=" 119.5" />
+<var name="AFT_ECTBrkt_SpacerYOffset"       value=" 110. " />
+
+<box  name="AFT_ECTBrkt_CtrSpacer"     material="Iron"    X_Y_Z=" AFT_ECTBrkt_CtrSpacerGap; AFT_ECTBrkt_Thickness; AFT_ECTBrkt_TopPlate_ZWidth" />
+<box  name="AFT_ECTBrkt_MidSpacer"     material="Iron"    X_Y_Z=" (AFT_ECTBrkt_MidSpacerGap-AFT_ECTBrkt_CtrSpacerGap)/2.-AFT_ECTBrkt_Thickness; AFT_ECTBrkt_Thickness; AFT_ECTBrkt_TopPlate_ZWidth" />
+<box  name="AFT_ECTBrkt_LowCtrPlate"   material="Iron"    X_Y_Z=" AFT_ECTBrkt_SmallXWidth; AFT_ECTBrkt_Thickness; AFT_ECTBrkt_DownPlate_ZWidth-AFT_ECTBrkt_Thickness" />
+<box  name="AFT_ECTBrkt_LowSidePlate"  material="Iron"    X_Y_Z=" (AFT_ECTBrkt_TotalXWidth-AFT_ECTBrkt_MidSpacerGap)/2.+AFT_ECTBrkt_Thickness; AFT_ECTBrkt_LowPlateThickness; AFT_ECTBrkt_SidePlate_ZWidth" />
+<box  name="AFT_ECTBrkt_CrossPlate"    material="Iron"    X_Y_Z=" AFT_ECTBrkt_SmallXWidth; AFT_ECTBrkt_TotalYWidth-AFT_ECTBrkt_LowPlateThickness; AFT_ECTBrkt_Thickness" />
+
+<gvxy name="AFT_ECTBrkt_FrontPlate" material="Iron" dZ="AFT_ECTBrkt_Thickness" >
+  <gvxy_point X_Y="                                           0.; 0. " />
+  <gvxy_point X_Y="                                           0.; AFT_ECTBrkt_TotalYWidth-AFT_ECTBrkt_LowPlateThickness-AFT_ECTBrkt_Thickness" />
+  <gvxy_point X_Y="                     AFT_ECTBrkt_PlateZOffset; AFT_ECTBrkt_TotalYWidth-AFT_ECTBrkt_LowPlateThickness-AFT_ECTBrkt_Thickness" />
+  <gvxy_point X_Y=" AFT_ECTBrkt_ZOffset-AFT_ECTBrkt_PlateZOffset; AFT_ECTBrkt_PlateZOffset" />
+  <gvxy_point X_Y=" AFT_ECTBrkt_ZOffset-AFT_ECTBrkt_PlateZOffset; 0. " />
+</gvxy>
+
+<gvxy name="AFT_ECTBrkt_SidePlate" material="Iron" dZ="AFT_ECTBrkt_Thickness" >
+  <gvxy_point X_Y=" 0.; AFT_ECTBrkt_Thickness " />
+  <gvxy_point X_Y=" AFT_ECTBrkt_DownPlate_ZWidth-AFT_ECTBrkt_Thickness; AFT_ECTBrkt_Thickness " />
+  <gvxy_point X_Y=" AFT_ECTBrkt_DownPlate_ZWidth-AFT_ECTBrkt_Thickness; 0. " />
+  <gvxy_point X_Y=" AFT_ECTBrkt_SidePlate_ZWidth-2.*AFT_ECTBrkt_Thickness-AFT_ECTBrkt_ZOffset; 0. " />
+  <gvxy_point X_Y=" AFT_ECTBrkt_SidePlate_ZWidth-2.*AFT_ECTBrkt_Thickness-AFT_ECTBrkt_ZOffset; AFT_ECTBrkt_PlateSmallYOffset " />
+  <gvxy_point X_Y=" AFT_ECTBrkt_PlateZOffset;  AFT_ECTBrkt_TotalYWidth-AFT_ECTBrkt_LowPlateThickness-AFT_ECTBrkt_Thickness" />
+  <gvxy_point X_Y=" 0.;  AFT_ECTBrkt_TotalYWidth-AFT_ECTBrkt_LowPlateThickness-AFT_ECTBrkt_Thickness" />
+</gvxy>
+
+<gvxy name="AFT_ECTBrkt_MiddlePlate" material="Iron" dZ="AFT_ECTBrkt_Thickness" >
+  <gvxy_point X_Y=" 0.; 0. " />
+  <gvxy_point X_Y=" AFT_ECTBrkt_DownPlate_ZWidth-2.*AFT_ECTBrkt_Thickness; 0. " />
+  <gvxy_point X_Y=" AFT_ECTBrkt_DownPlate_ZWidth-2.*AFT_ECTBrkt_Thickness; AFT_ECTBrkt_PlateBigYOffset-AFT_ECTBrkt_Thickness " />
+  <gvxy_point X_Y=" AFT_ECTBrkt_PlateZOffset; AFT_ECTBrkt_TotalYWidth-AFT_ECTBrkt_LowPlateThickness-2.*AFT_ECTBrkt_Thickness " />
+  <gvxy_point X_Y=" 0.; AFT_ECTBrkt_TotalYWidth-AFT_ECTBrkt_LowPlateThickness-2.*AFT_ECTBrkt_Thickness " />
+</gvxy>
+
+<box name="AFT_ECTBrkt_GapCloser"       material="Iron"     X_Y_Z="(AFT_ECTBrkt_MidSpacerGap-AFT_ECTBrkt_CtrSpacerGap-2.*AFT_ECTBrkt_Thickness)/2.; AFT_ECTBrkt_TotalYWidth-AFT_ECTBrkt_LowPlateThickness+(AFT_ECTBrkt_MidSpacerGap-AFT_ECTBrkt_CtrSpacerGap-2.*AFT_ECTBrkt_Thickness)/2.; 122." /> <!-- z dimension adjusted from construction -->
+<box name="AFT_ECTBrkt_GapCloserRub"    material="Carbon"   X_Y_Z="(AFT_ECTBrkt_MidSpacerGap-AFT_ECTBrkt_CtrSpacerGap-2.*AFT_ECTBrkt_Thickness)/1.5; (AFT_ECTBrkt_TotalYWidth-AFT_ECTBrkt_LowPlateThickness+(AFT_ECTBrkt_MidSpacerGap-AFT_ECTBrkt_CtrSpacerGap-2.*AFT_ECTBrkt_Thickness)/2.)/2.; 70." />
+
+<composition name="AFT_ECTBrkt_tmp" >
+  <posXYZ  volume="AFT_ECTBrkt_LowSidePlate"         X_Y_Z=" ((AFT_ECTBrkt_TotalXWidth-AFT_ECTBrkt_MidSpacerGap)/2.+AFT_ECTBrkt_Thickness)/2.+AFT_ECTBrkt_MidSpacerGap/2.-AFT_ECTBrkt_Thickness; AFT_ECTBrkt_LowPlateThickness/2.; AFT_ECTBrkt_SidePlate_ZWidth/2. " />
+  <posXYZ  volume="AFT_ECTBrkt_LowSidePlate"         X_Y_Z="-((AFT_ECTBrkt_TotalXWidth-AFT_ECTBrkt_MidSpacerGap)/2.+AFT_ECTBrkt_Thickness)/2.-AFT_ECTBrkt_MidSpacerGap/2.+AFT_ECTBrkt_Thickness; AFT_ECTBrkt_LowPlateThickness/2.; AFT_ECTBrkt_SidePlate_ZWidth/2. " />
+  <posXYZ  volume="AFT_ECTBrkt_LowCtrPlate"          X_Y_Z=" 0.; AFT_ECTBrkt_LowPlateThickness+AFT_ECTBrkt_Thickness/2.; AFT_ECTBrkt_SidePlate_ZWidth-AFT_ECTBrkt_ZOffset-(AFT_ECTBrkt_DownPlate_ZWidth+AFT_ECTBrkt_Thickness)/2." />
+  <posXYZ  volume="AFT_ECTBrkt_CrossPlate"           X_Y_Z=" 0.; AFT_ECTBrkt_LowPlateThickness+(AFT_ECTBrkt_TotalYWidth-AFT_ECTBrkt_LowPlateThickness)/2.; AFT_ECTBrkt_SidePlate_ZWidth-AFT_ECTBrkt_ZOffset-AFT_ECTBrkt_Thickness/2. " />
+  <posXYZ  volume="AFT_ECTBrkt_FrontPlate"           X_Y_Z=" AFT_ECTBrkt_TotalXWidth/2.-AFT_ECTBrkt_Thickness; AFT_ECTBrkt_LowPlateThickness; AFT_ECTBrkt_SidePlate_ZWidth-AFT_ECTBrkt_ZOffset " rot="0.; -90.; 0."/>
+  <posXYZ  volume="AFT_ECTBrkt_FrontPlate"           X_Y_Z="-AFT_ECTBrkt_TotalXWidth/2.+AFT_ECTBrkt_Thickness; AFT_ECTBrkt_LowPlateThickness; AFT_ECTBrkt_SidePlate_ZWidth-AFT_ECTBrkt_ZOffset " rot="0.; -90.; 0."/>
+  <posXYZ  volume="AFT_ECTBrkt_SidePlate"            X_Y_Z=" AFT_ECTBrkt_SmallXWidth/2.-AFT_ECTBrkt_Thickness/2.; AFT_ECTBrkt_LowPlateThickness; AFT_ECTBrkt_SidePlate_ZWidth-2.*AFT_ECTBrkt_Thickness-AFT_ECTBrkt_ZOffset+AFT_ECTBrkt_Thickness " rot="0.; 90.; 0." />
+  <posXYZ  volume="AFT_ECTBrkt_SidePlate"            X_Y_Z=" AFT_ECTBrkt_Thickness/2.+AFT_ECTBrkt_MidSpacerGap/2.; AFT_ECTBrkt_LowPlateThickness; AFT_ECTBrkt_SidePlate_ZWidth-2.*AFT_ECTBrkt_Thickness-AFT_ECTBrkt_ZOffset+AFT_ECTBrkt_Thickness " rot="0.; 90.; 0."/>
+  <posXYZ  volume="AFT_ECTBrkt_SidePlate"            X_Y_Z="-AFT_ECTBrkt_SmallXWidth/2.+AFT_ECTBrkt_Thickness/2.; AFT_ECTBrkt_LowPlateThickness; AFT_ECTBrkt_SidePlate_ZWidth-2.*AFT_ECTBrkt_Thickness-AFT_ECTBrkt_ZOffset+AFT_ECTBrkt_Thickness " rot="0.; 90.; 0."/>
+  <posXYZ  volume="AFT_ECTBrkt_SidePlate"            X_Y_Z="-AFT_ECTBrkt_Thickness/2.-AFT_ECTBrkt_MidSpacerGap/2.; AFT_ECTBrkt_LowPlateThickness; AFT_ECTBrkt_SidePlate_ZWidth-2.*AFT_ECTBrkt_Thickness-AFT_ECTBrkt_ZOffset+AFT_ECTBrkt_Thickness " rot="0.; 90.; 0."/>
+  <posXYZ  volume="AFT_ECTBrkt_MiddlePlate"          X_Y_Z=" AFT_ECTBrkt_CtrSpacerGap/2.+AFT_ECTBrkt_Thickness/2.; AFT_ECTBrkt_LowPlateThickness+AFT_ECTBrkt_Thickness; AFT_ECTBrkt_SidePlate_ZWidth-AFT_ECTBrkt_ZOffset-AFT_ECTBrkt_Thickness " rot="0.; 90.; 0."/>
+  <posXYZ  volume="AFT_ECTBrkt_MiddlePlate"          X_Y_Z="-AFT_ECTBrkt_CtrSpacerGap/2.-AFT_ECTBrkt_Thickness/2.; AFT_ECTBrkt_LowPlateThickness+AFT_ECTBrkt_Thickness; AFT_ECTBrkt_SidePlate_ZWidth-AFT_ECTBrkt_ZOffset-AFT_ECTBrkt_Thickness " rot="0.; 90.; 0."/>
+  <posXYZ  volume="AFT_ECTBrkt_CtrSpacer"            X_Y_Z=" 0.; AFT_ECTBrkt_LowPlateThickness+AFT_ECTBrkt_Thickness/2.+AFT_ECTBrkt_SpacerYOffset; -AFT_ECTBrkt_TopPlate_ZWidth/2.+AFT_ECTBrkt_SidePlate_ZWidth-AFT_ECTBrkt_ZOffset-AFT_ECTBrkt_Thickness" />
+  <posXYZ  volume="AFT_ECTBrkt_MidSpacer"            X_Y_Z=" (AFT_ECTBrkt_MidSpacerGap+AFT_ECTBrkt_CtrSpacerGap)/4.+AFT_ECTBrkt_Thickness/2.; AFT_ECTBrkt_LowPlateThickness+AFT_ECTBrkt_Thickness/2.+AFT_ECTBrkt_SpacerYOffset; -AFT_ECTBrkt_TopPlate_ZWidth/2.+AFT_ECTBrkt_SidePlate_ZWidth-AFT_ECTBrkt_ZOffset-AFT_ECTBrkt_Thickness" />
+  <posXYZ  volume="AFT_ECTBrkt_MidSpacer"            X_Y_Z="-(AFT_ECTBrkt_MidSpacerGap+AFT_ECTBrkt_CtrSpacerGap)/4.-AFT_ECTBrkt_Thickness/2.; AFT_ECTBrkt_LowPlateThickness+AFT_ECTBrkt_Thickness/2.+AFT_ECTBrkt_SpacerYOffset; -AFT_ECTBrkt_TopPlate_ZWidth/2.+AFT_ECTBrkt_SidePlate_ZWidth-AFT_ECTBrkt_ZOffset-AFT_ECTBrkt_Thickness" />
+  <posXYZ  volume="AFT_ECTBrkt_GapCloser"            X_Y_Z="(AFT_ECTBrkt_MidSpacerGap-AFT_ECTBrkt_CtrSpacerGap)/4.+AFT_ECTBrkt_CtrSpacerGap/2.+AFT_ECTBrkt_Thickness/2.; (AFT_ECTBrkt_TotalYWidth-AFT_ECTBrkt_LowPlateThickness+(AFT_ECTBrkt_MidSpacerGap-AFT_ECTBrkt_CtrSpacerGap-2.*AFT_ECTBrkt_Thickness)/2.)/2. + AFT_ECTBrkt_LowPlateThickness+GENV_Eps; AFT_ECTBrkt_SidePlate_ZWidth-AFT_ECTBrkt_ZOffset+123./2."/>
+  <posXYZ  volume="AFT_ECTBrkt_GapCloser"            X_Y_Z="-((AFT_ECTBrkt_MidSpacerGap-AFT_ECTBrkt_CtrSpacerGap)/4.+AFT_ECTBrkt_CtrSpacerGap/2.+AFT_ECTBrkt_Thickness/2.); (AFT_ECTBrkt_TotalYWidth-AFT_ECTBrkt_LowPlateThickness+(AFT_ECTBrkt_MidSpacerGap-AFT_ECTBrkt_CtrSpacerGap-2.*AFT_ECTBrkt_Thickness)/2.)/2. + AFT_ECTBrkt_LowPlateThickness+GENV_Eps; AFT_ECTBrkt_SidePlate_ZWidth-AFT_ECTBrkt_ZOffset+123./2."/>
+  <posXYZ  volume="AFT_ECTBrkt_GapCloserRub"         X_Y_Z="(AFT_ECTBrkt_MidSpacerGap-AFT_ECTBrkt_CtrSpacerGap)/4.+AFT_ECTBrkt_CtrSpacerGap/2.+AFT_ECTBrkt_Thickness/2.; (AFT_ECTBrkt_TotalYWidth-AFT_ECTBrkt_LowPlateThickness+(AFT_ECTBrkt_MidSpacerGap-AFT_ECTBrkt_CtrSpacerGap-2.*AFT_ECTBrkt_Thickness)/2.)/2. + AFT_ECTBrkt_LowPlateThickness+GENV_Eps; AFT_ECTBrkt_SidePlate_ZWidth-AFT_ECTBrkt_ZOffset+124.+70./2."/>
+  <posXYZ  volume="AFT_ECTBrkt_GapCloserRub"         X_Y_Z="-((AFT_ECTBrkt_MidSpacerGap-AFT_ECTBrkt_CtrSpacerGap)/4.+AFT_ECTBrkt_CtrSpacerGap/2.+AFT_ECTBrkt_Thickness/2.); (AFT_ECTBrkt_TotalYWidth-AFT_ECTBrkt_LowPlateThickness+(AFT_ECTBrkt_MidSpacerGap-AFT_ECTBrkt_CtrSpacerGap-2.*AFT_ECTBrkt_Thickness)/2.)/2. + AFT_ECTBrkt_LowPlateThickness+GENV_Eps; AFT_ECTBrkt_SidePlate_ZWidth-AFT_ECTBrkt_ZOffset+124.+70./2."/>
+</composition>
+
+<composition  name="AFT_ECTBrkt" >
+  <posXYZ   volume="AFT_ECTBrkt_tmp" X_Y_Z=" (AECT_CryStOH1_CryStoutRadius-(AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff))/2.; 0.; -AECT_CryStOL0_CryStoutLength0/2." rot="  0.; 0.; -90. "/>
+</composition>
+
+<composition  name="ECT_EV_CryoStop_outside" >
+  <posRPhiZ   volume="ECT_EV_CryoStop_outside_tmp" R_Phi_Z="  AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff + (AECT_CryStOH1_CryStoutRadius-(AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff))/2.; 22.5; -AECT_EVOShZ_EVOutShellholeZwid/2. + AECT_EVOSCZ_EVOutShellConnZwid +AECT_CryStOL0_CryStoutLength0/2.+AECT_CryStOPZ_CryStoutPosiZ "/>
+  <posRPhiZ   volume="AFT_ECTBrkt" R_Phi_Z="   AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff + (AECT_CryStOH1_CryStoutRadius-(AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff))/2.; 22.5; -AECT_EVOShZ_EVOutShellholeZwid/2. + AECT_EVOSCZ_EVOutShellConnZwid +AECT_CryStOL0_CryStoutLength0/2.+AECT_CryStOPZ_CryStoutPosiZ " />
+</composition>
+
+<gvxy name="ECT_CryoStop_inside_basic" material="Aluminium" dZ="AECT_CryoStTh_CryoStopThickness">
+  <gvxy_point X_Y=" -AECT_CryStIos_CryStinnoffset; 0."/>
+  <gvxy_point X_Y=" -AECT_CryStIwi_CryStinnZwidth; 0."/>
+  <gvxy_point X_Y=" -AECT_CryStIwi_CryStinnZwidth; -AECT_CryStIos_CryStinnoffset"/>
+  <gvxy_point X_Y=" -(AECT_CryStIhi_CryStinnhight-AECT_CryStIos_CryStinnoffset)*GENV_Si45; -AECT_CryStIhi_CryStinnhight"/>
+  <gvxy_point X_Y=" 0.; -AECT_CryStIhi_CryStinnhight"/>
+  <gvxy_point X_Y=" 0.; -AECT_CryStIos_CryStinnoffset"/>
+</gvxy>
+
+<tubs name="ECT_TieRod"    material="Iron"  Rio_Z="0.; AECT_TieRodDi_TieRodDiameter/2.; AECT_TieRodZl_TieRodZlength"  nbPhi="20" />
+
+<composition name="ECT_EV_CryoStop_inside_basic">
+  <posXYZ   volume="ECT_CryoStop_inside_basic"  X_Y_Z=" (AECT_CryStOW0_CryStoutpWidth0 - AECT_CryoStTh_CryoStopThickness)/2. ; 0.; 0." rot=" 0.; 90.; 0."/>
+  <posXYZ   volume="ECT_CryoStop_inside_basic"  X_Y_Z="-(AECT_CryStOW0_CryStoutpWidth0 - AECT_CryoStTh_CryoStopThickness)/2. ; 0.; 0." rot=" 0.; 90.; 0."/>
+  <posXYZ   volume="ECT_TieRod"                 X_Y_Z=" (AECT_CryStOW0_CryStoutpWidth0)/2. - AECT_CryoStTh_CryoStopThickness - AECT_TieRodPo_TieRodPhioffset; -AECT_CryStIhi_CryStinnhight + AECT_TieRodRo_TieRodRoffset; AECT_TieRodZo_TieRodZoffset + AECT_TieRodZl_TieRodZlength/2." rot=" 0.; 0.; 0."/>
+  <posXYZ   volume="ECT_TieRod"                 X_Y_Z="-(AECT_CryStOW0_CryStoutpWidth0)/2. + AECT_CryoStTh_CryoStopThickness + AECT_TieRodPo_TieRodPhioffset; -AECT_CryStIhi_CryStinnhight + AECT_TieRodRo_TieRodRoffset; AECT_TieRodZo_TieRodZoffset + AECT_TieRodZl_TieRodZlength/2." rot=" 0.; 0.; 0."/>
+</composition>
+
+<composition  name="ECT_EV_CryoStop_inside_tmp" >
+  <posXYZ   volume="ECT_EV_CryoStop_inside_basic" rot="  0.; 0.; -90. "/>
+</composition>
+
+<composition  name="ECT_EV_CryoStop_inside" >
+  <posRPhiZ   volume="ECT_EV_CryoStop_inside_tmp" R_Phi_Z=" AECT_EVEPid_EVEndPlateindist - AECT_EVOSio_EVOutShellinneroff - AECT_EVOSit_EVOutShellinnthick; 22.5; -AECT_EVOShZ_EVOutShellholeZwid/2. + AECT_EVOSCZ_EVOutShellConnZwid "/>
+</composition>
+
+<!-- Atlas End-Cap toroid Service Turret - whole construction approximated -->
+<var  name="AECT_SrvTu1Dz_ServTur1Dz"        value="   830." />
+<var  name="AECT_SrvTu1He_ServTur1Height"    value="  2350." />  <!-- original value 2000, modified due to overlap with new ECT-ServiceTower  -->
+<var  name="AECT_SrvTu1oW_ServTur1OutWidth"  value="  1100." />
+<var  name="AECT_SrvTu1iW_ServTur1InnWidth"  value="  1000." />
+<var  name="AECT_SrvTu1Ed_ServTur1Edge"      value="   120." />
+<var  name="AECT_SrvTu2Dz_ServTur2Dz"        value="   900." />
+<var  name="AECT_SrvTu2He_ServTur2Height"    value="  1000." />
+<var  name="AECT_SrvTu2oR_ServTur2OutRad"    value="   150." />
+<var  name="AECT_SrvTu2iR_ServTur2InnRad"    value="   140." />
+<var  name="AECT_SrvTu3Dz_ServTur3Dz"        value="   260." />
+<var  name="AECT_SrvTu3He_ServTur3Height"    value="  3650." />  <!-- original value 4000, modified due to overlap with new ECT-ServiceTower -->
+<var  name="AECT_ServTuZoff_ServTurZoffset"  value="   834." />
+
+
+<!-- Description of the Atlas End-cap Toroid Service Turret -->
+
+<gvxysxy  name="ECT_ServTur1"  material="Aluminium"  dZ="AECT_SrvTu1He_ServTur1Height" >
+  <gvxy_point  X_Y=" AECT_SrvTu1oW_ServTur1OutWidth/2. ; AECT_SrvTu1oW_ServTur1OutWidth/2.-AECT_SrvTu1Ed_ServTur1Edge " />
+  <gvxy_point  X_Y=" AECT_SrvTu1oW_ServTur1OutWidth/2.-AECT_SrvTu1Ed_ServTur1Edge ; AECT_SrvTu1oW_ServTur1OutWidth/2. " />
+</gvxysxy>
+<gvxysxy  name="ECT_ServTur0"  material="Aluminium"  dZ="AECT_SrvTu1He_ServTur1Height" >
+  <gvxy_point  X_Y=" AECT_SrvTu1iW_ServTur1InnWidth/2. ; AECT_SrvTu1iW_ServTur1InnWidth/2.-AECT_SrvTu1Ed_ServTur1Edge*AECT_SrvTu1iW_ServTur1InnWidth/AECT_SrvTu1oW_ServTur1OutWidth " />
+  <gvxy_point  X_Y=" AECT_SrvTu1iW_ServTur1InnWidth/2.-AECT_SrvTu1Ed_ServTur1Edge*AECT_SrvTu1iW_ServTur1InnWidth/AECT_SrvTu1oW_ServTur1OutWidth ; AECT_SrvTu1iW_ServTur1InnWidth/2. " />
+</gvxysxy>
+<subtraction  name="ECT_ServTurA" >
+  <posXYZ  volume="ECT_ServTur1" rot=" 90.; 0.; 0. "/>
+  <posXYZ  volume="ECT_ServTur0" X_Y_Z=" 0. ; -AECT_SrvTu1oW_ServTur1OutWidth+AECT_SrvTu1iW_ServTur1InnWidth ; 0. " rot=" 90.; 0.; 0. "/>
+</subtraction>
+<tubs name="ECT_ServTurB1_base" material="Aluminium"  Rio_Z="AECT_SrvTu2iR_ServTur2InnRad; AECT_SrvTu2oR_ServTur2OutRad; AECT_SrvTu2He_ServTur2Height + AECT_SrvTu2oR_ServTur2OutRad - GENV_Eps"  nbPhi="20" />
+<tubs name="ECT_ServTurB2_base" material="Aluminium"  Rio_Z="AECT_SrvTu2iR_ServTur2InnRad; AECT_SrvTu2oR_ServTur2OutRad; AECT_SrvTu2Dz_ServTur2Dz - AECT_SrvTu3Dz_ServTur3Dz + 2.*AECT_SrvTu2oR_ServTur2OutRad"  nbPhi="20" />
+<tubs name="ECT_ServTurB3_base" material="Aluminium"  Rio_Z="AECT_SrvTu2iR_ServTur2InnRad; AECT_SrvTu2oR_ServTur2OutRad; AECT_SrvTu3He_ServTur3Height + AECT_SrvTu2oR_ServTur2OutRad"  nbPhi="20" />
+<box name="ECT_ServTurB_CutBox"   material="Aluminium"  X_Y_Z="4.*AECT_SrvTu2oR_ServTur2OutRad/GENV_Co45; 4.*AECT_SrvTu2oR_ServTur2OutRad/GENV_Co45; 4.*AECT_SrvTu2oR_ServTur2OutRad/GENV_Co45" />
+<subtraction  name="ECT_ServTurB1" >
+  <posXYZ  volume="ECT_ServTurB1_base" X_Y_Z=" 0. ; (AECT_SrvTu2He_ServTur2Height + AECT_SrvTu2oR_ServTur2OutRad + GENV_Eps)/2. + AECT_SrvTu1He_ServTur1Height/2. ; AECT_SrvTu2Dz_ServTur2Dz-AECT_SrvTu1Dz_ServTur1Dz " rot=" 90.; 0.; 0. "/>
+  <posXYZ  volume="ECT_ServTurB_CutBox" X_Y_Z=" 0. ; AECT_SrvTu2He_ServTur2Height + 2.*AECT_SrvTu2oR_ServTur2OutRad + AECT_SrvTu1He_ServTur1Height/2.; AECT_SrvTu2Dz_ServTur2Dz-AECT_SrvTu1Dz_ServTur1Dz - 2.*AECT_SrvTu2oR_ServTur2OutRad " rot=" 45.; 0.; 0. "/>
+</subtraction>
+<subtraction  name="ECT_ServTurB2" >
+  <posXYZ  volume="ECT_ServTurB2_base" X_Y_Z=" 0. ; AECT_SrvTu2He_ServTur2Height+AECT_SrvTu1He_ServTur1Height/2. ; AECT_SrvTu2Dz_ServTur2Dz-AECT_SrvTu1Dz_ServTur1Dz- (AECT_SrvTu2Dz_ServTur2Dz - AECT_SrvTu3Dz_ServTur3Dz)/2." rot=" 0.; 0.; 0. "/>
+  <posXYZ  volume="ECT_ServTurB_CutBox" X_Y_Z=" 0. ; AECT_SrvTu2He_ServTur2Height+AECT_SrvTu1He_ServTur1Height/2. - 2.*AECT_SrvTu2oR_ServTur2OutRad ; AECT_SrvTu2Dz_ServTur2Dz-AECT_SrvTu1Dz_ServTur1Dz + 2.*AECT_SrvTu2oR_ServTur2OutRad - GENV_Eps/2." rot=" 45.; 0.; 0. "/>
+  <posXYZ  volume="ECT_ServTurB_CutBox" X_Y_Z=" 0. ; AECT_SrvTu2He_ServTur2Height+AECT_SrvTu1He_ServTur1Height/2. + 2.*AECT_SrvTu2oR_ServTur2OutRad ; AECT_SrvTu2Dz_ServTur2Dz-AECT_SrvTu1Dz_ServTur1Dz - (AECT_SrvTu2Dz_ServTur2Dz - AECT_SrvTu3Dz_ServTur3Dz + 2.*AECT_SrvTu2oR_ServTur2OutRad) + GENV_Eps/2." rot=" 45.; 0.; 0. "/>
+</subtraction>
+<subtraction  name="ECT_ServTurB3" >
+  <posXYZ  volume="ECT_ServTurB3_base" X_Y_Z=" 0. ; AECT_SrvTu2He_ServTur2Height+AECT_SrvTu1He_ServTur1Height/2. + (AECT_SrvTu3He_ServTur3Height - AECT_SrvTu2oR_ServTur2OutRad)/2. ; AECT_SrvTu3Dz_ServTur3Dz-AECT_SrvTu1Dz_ServTur1Dz " rot=" 90.; 0.; 0. "/>
+  <posXYZ  volume="ECT_ServTurB_CutBox" X_Y_Z=" 0. ; AECT_SrvTu2He_ServTur2Height+AECT_SrvTu1He_ServTur1Height/2. - 2.*AECT_SrvTu2oR_ServTur2OutRad ; AECT_SrvTu3Dz_ServTur3Dz-AECT_SrvTu1Dz_ServTur1Dz + 2.*AECT_SrvTu2oR_ServTur2OutRad " rot=" 45.; 0.; 0. "/>
+</subtraction>
+<composition  name="ECT_ServTur" >
+  <posXYZ  volume="ECT_ServTurA" />
+  <posXYZ  volume="ECT_ServTurB1" />
+  <posXYZ  volume="ECT_ServTurB2" />
+  <posXYZ  volume="ECT_ServTurB3" />
+</composition>
+
+<!-- new Description of the Atlas End-cap Toroid Service Tower -->
+<!-- Right and Left Leg variables -->
+<var  name="ECST_zwid"                value="    100.0" /> <!-- atltept_0009-v0.pdf --> <!-- atltept_0018-v0.pdf -->
+<var  name="ECST_ywid"                value="   6000.0" /> <!-- atltept_0009-v0.pdf --> <!-- atltept_0018-v0.pdf -->
+<var  name="ECST_RL_xwid"             value="    200. " /> <!-- atltept_0009-v0.pdf -->
+<var  name="ECST_LL_xwid"             value="    100. " /> <!-- atltept_0018-v0.pdf -->
+<var  name="ECST_RL_inner_distanceZ"  value="    270. " /> <!-- atltept_0009-v0.pdf -->
+<var  name="ECST_LL_inner_distanceX"  value="    240. " /> <!-- atltept_0018-v0.pdf -->
+<var  name="ECST_LL_inner_distanceZ"  value="    270. " /> <!-- atltept_0018-v0.pdf -->
+<var  name="ECST_RL_ywid"             value="ECST_ywid" />
+<var  name="ECST_RL_zwid"             value="ECST_zwid" />
+<var  name="ECST_LL_ywid"             value="ECST_ywid" />
+<var  name="ECST_LL_zwid"             value="ECST_zwid" />
+<var  name="ECST_RightLeftLeg_InnerDistanceX"  value="1665.+40." /> <!-- atltept_0014-vAA.pdf (added 40 to match) --> 
+
+<!-- Front Arm variables -->
+<var name="ECST_Front_Bracket23_topwidth" value=" 77.5" /> <!-- approximate 77.5=(440-130)/4 see altept_0014vAA.pdf -->
+<var name="ECST_Front_Hand_width"         value=" 10.0"/>
+<var name="ECST_Front_Hand_pointAX"       value="  0. "/> <!-- atltept_0033-v0.pdf lower right point-->
+<var name="ECST_Front_Hand_pointAY"       value="  0. "/> <!-- atltept_0033-v0.pdf lower right point-->
+<var name="ECST_Front_Hand_Gap"           value=" 10. "/> <!-- atltept_0033-v0.pdf lower right point-->
+<var name="ECST_Front_Bracket_Distance_From_Bottom_Leg" value="2342.5+155+20"/> <!-- atltept_0018-v0.pdf -->
+<var name="ECST_Front_Bracket_Distance_From_Leg"        value="100"/> <!-- approximate, not calculated -->
+<var name="ECST_Front_Bracket_width"                    value="10.0"/> 
+<var name="ECST_Front_Bracket_Connector_to_LLRod_ywid"  value="195"/> <!-- atlept_0018-v0.pdf-->
+<var name="ECST_Front_Hand_pointBX"                    value="ECST_Front_Hand_pointAX-120.0"/>
+<var name="ECST_Front_Hand_pointBY"                    value="ECST_Front_Hand_pointAY"/>
+<var name="ECST_Front_Hand_pointCX"                    value="ECST_Front_Hand_pointAX-195.0"/>
+<var name="ECST_Front_Hand_pointCY"                    value="ECST_Front_Hand_pointAY+287.0"/>
+<var name="ECST_Front_Hand_pointDX"                    value="ECST_Front_Hand_pointAX-76.1"/>
+<var name="ECST_Front_Hand_pointDY"                    value="ECST_Front_Hand_pointAY+394.1"/>
+<var name="ECST_Front_Hand_pointEX"                    value="ECST_Front_Hand_pointAX"/>
+<var name="ECST_Front_Hand_pointEY"                    value="ECST_Front_Hand_pointAY+220.0"/>
+
+<!-- Front bar variables -->
+<var  name="ECST_Front_Bar1_xwid"   value=" 200." />
+<var  name="ECST_Front_Bar2_xwid"   value="1840." />
+<var  name="ECST_Front_Bar3_xwid"   value=" 130." />
+<var  name="ECST_Front_Bar_ywid"    value=" 200." />
+<var  name="ECST_Front_Bar_zwid"    value=" 100." />
+<var  name="ECST_Front_Bar_starty"  value="1107.5" /><!-- atltept_0014-vAA.pdf 1107.5=6977.5-(5807.5+62.5) with respect to the bottom of the right (or) left leg bar-->
+<var  name="ECST_Front_Bar_startz"  value="1192.5" /><!-- atltept_0014-vAA.pdf 1192.5=12373.5-11181  with respect to the right (or)left leg bar (outer surface-->
+<var name="ECST_Front_Bar_xwid"     value="ECST_Front_Bar1_xwid+ECST_Front_Bar2_xwid+ECST_Front_Bar3_xwid+2*ECST_Front_Hand_width"/>
+
+<var name="ECST_vecx_CD" value="ECST_Front_Hand_pointDX-ECST_Front_Hand_pointCX"/>
+<var name="ECST_vecy_CD" value="ECST_Front_Hand_pointDY-ECST_Front_Hand_pointCY"/>
+<var name="ECST_unit_perp_CDx" value="(-ECST_vecy_CD/ECST_vecx_CD)/sqrt((-ECST_vecy_CD/ECST_vecx_CD)**2+1)"/>
+<var name="ECST_unit_perp_CDy" value="(1.)/sqrt((-ECST_vecy_CD/ECST_vecx_CD)**2+1)"/>
+
+<var name="ECST_Front_Bracket_pointCX" value="ECST_Front_Hand_pointCX+GENV_Eps*ECST_unit_perp_CDx"/>
+<var name="ECST_Front_Bracket_pointCY" value="ECST_Front_Hand_pointCY+GENV_Eps*ECST_unit_perp_CDy"/>
+<var name="ECST_Front_Bracket_pointDX" value="ECST_Front_Hand_pointDX+GENV_Eps*ECST_unit_perp_CDx"/>
+<var name="ECST_Front_Bracket_pointDY" value="ECST_Front_Hand_pointDY+GENV_Eps*ECST_unit_perp_CDy"/>
+
+<var name="ECST_Front_Bracket_pointFX" value="ECST_Front_Hand_pointAX-(ECST_Front_Bar_startz+ECST_Front_Hand_Gap)+ECST_Front_Bracket_Distance_From_Leg"/>
+<var name="ECST_Front_Bracket_pointFY" value="ECST_Front_Hand_pointAY+ECST_Front_Bracket_Distance_From_Bottom_Leg-(ECST_Front_Bar_starty-ECST_Front_Hand_Gap)"/> <!-- atltept_0018-v0.pdf -->
+<var name="ECST_Front_Bracket_pointGX" value="ECST_Front_Bracket_pointFX"/>
+<var name="ECST_Front_Bracket_pointGY" value="ECST_Front_Bracket_pointFY+ECST_Front_Bracket_Connector_to_LLRod_ywid"/> 
+
+<var name="ECST_Front_Bracket_pointD1X" value="ECST_Front_Bracket_pointDX+ECST_Front_Bracket_width*((ECST_Front_Bracket_pointCX-ECST_Front_Bracket_pointDX)/sqrt((ECST_Front_Bracket_pointDX-ECST_Front_Bracket_pointCX)**2+(ECST_Front_Bracket_pointDY-ECST_Front_Bracket_pointCY)**2))"/>
+<var name="ECST_Front_Bracket_pointD1Y" value="ECST_Front_Bracket_pointDY+ECST_Front_Bracket_width*((ECST_Front_Bracket_pointCY-ECST_Front_Bracket_pointDY)/sqrt((ECST_Front_Bracket_pointDX-ECST_Front_Bracket_pointCX)**2+(ECST_Front_Bracket_pointDY-ECST_Front_Bracket_pointCY)**2))"/>
+<var name="ECST_Front_Bracket_pointC1X" value="ECST_Front_Bracket_pointCX+ECST_Front_Bracket_width*((ECST_Front_Bracket_pointDX-ECST_Front_Bracket_pointCX)/sqrt((ECST_Front_Bracket_pointDX-ECST_Front_Bracket_pointCX)**2+(ECST_Front_Bracket_pointDY-ECST_Front_Bracket_pointCY)**2))"/>
+<var name="ECST_Front_Bracket_pointC1Y" value="ECST_Front_Bracket_pointCY+ECST_Front_Bracket_width*((ECST_Front_Bracket_pointDY-ECST_Front_Bracket_pointCY)/sqrt((ECST_Front_Bracket_pointDX-ECST_Front_Bracket_pointCX)**2+(ECST_Front_Bracket_pointDY-ECST_Front_Bracket_pointCY)**2))"/>
+
+<var name="ECST_Front_Bracket_pointF1X" value="ECST_Front_Bracket_pointFX"/>
+<var name="ECST_Front_Bracket_pointF1Y" value="ECST_Front_Bracket_pointFY+ECST_Front_Bracket_width"/>
+<var name="ECST_Front_Bracket_pointG1X" value="ECST_Front_Bracket_pointGX"/>
+<var name="ECST_Front_Bracket_pointG1Y" value="ECST_Front_Bracket_pointGY-ECST_Front_Bracket_width"/>
+<var name="ECST_vecx_GD" value="ECST_Front_Bracket_pointGX-ECST_Front_Bracket_pointDX"/>
+<var name="ECST_vecy_GD" value="ECST_Front_Bracket_pointGY-ECST_Front_Bracket_pointCY"/>
+<var name="ECST_unit_perp_GDx" value="(-ECST_vecy_GD/ECST_vecx_GD)/sqrt((-ECST_vecy_GD/ECST_vecx_GD)**2+1)"/>
+<var name="ECST_unit_perp_GDy" value="(1.)/sqrt((-ECST_vecy_GD/ECST_vecx_GD)**2+1)"/>
+
+<var name="ECST_Front_Arm1_widthx" value="ECST_Front_Hand_pointAX-ECST_Front_Bracket_pointGX"/>
+<var name="ECST_Front_Arm1_widthy" value="-ECST_Front_Hand_pointAY+ECST_Front_Bracket_pointGY"/>
+<var name="ECST_Front_Arm1_widthz" value="ECST_Front_Bracket23_topwidth"/>
+<var name="ECST_Front_Arm2_widthx" value="ECST_Front_Hand_pointAX-ECST_Front_Bracket_pointGX"/>
+<var name="ECST_Front_Arm2_widthy" value="-ECST_Front_Hand_pointAY+ECST_Front_Bracket_pointGY"/>
+<var name="ECST_Front_Arm2_widthz" value="ECST_Front_Bracket23_topwidth"/>
+
+<var name="ECST_Bar_Length" value="sqrt((ECST_Front_Bracket_pointG1X-ECST_Front_Bracket_pointD1X)**2+(ECST_Front_Bracket_pointG1Y-ECST_Front_Bracket_pointD1Y)**2)"/>
+
+<!-- Left Leg cover variables -->
+<var name="ECST_cover_thickness"           value="20."/>
+<var name="ECST_cover_dist_rod"            value="30."/>
+<var name="ECST_Left_Leg_HoleBracket_ypos" value="ECST_Front_Bracket_pointF1Y-ECST_ywid/2+ECST_Front_Bar_starty-ECST_Front_Hand_Gap+80"/>
+
+<!-- Left Leg Support Frames variables -->
+<var name="ECST_SupportFrame_dist_rod"  value="30."/>
+<var name="ECST_SupportFrame_Thickness" value="20."/>
+
+<!-- Right Leg Variables -->
+<var name="ECST_SupportFrameA_Height" value="370."/> <!-- altept_0009, altept_0012, altept_0018 -->
+<var name="ECST_SupportFrameB_Height" value="360."/>
+<var name="ECST_SupportFrameC_Height" value="360."/>
+<var name="ECST_SupportFrameD_Height" value="150."/>
+
+<var name="ECST_SupportFrameA_Ypos"     value="ECST_ywid/2-ECST_SupportFrameA_Height/2"/>
+<var name="ECST_SupportFrameA_Ypos_abs" value="ECST_ywid-ECST_SupportFrameA_Height"/> <!-- starting y -->
+<var name="ECST_SupportFrameB_Ypos_abs" value="4060."/> <!-- starting y -->
+<var name="ECST_SupportFrameB_Ypos"     value="ECST_SupportFrameB_Ypos_abs-ECST_ywid/2+ECST_SupportFrameB_Height/2"/>
+<var name="ECST_SupportFrameC_Ypos_abs" value="2343."/> <!-- starting y 2343-->
+<var name="ECST_SupportFrameC_Ypos"     value="ECST_SupportFrameC_Ypos_abs-ECST_ywid/2+ECST_SupportFrameC_Height/2"/>
+<var name="ECST_SupportFrameD_Ypos_abs" value="1108."/> <!-- starting y -->
+<var name="ECST_SupportFrameD_Ypos"     value="ECST_SupportFrameD_Ypos_abs-ECST_ywid/2+ECST_SupportFrameD_Height/2"/>
+
+<!-- Middle Pieces Variables -->
+<var name="ECST_MiddleBarA_ywid"       value=" 160."/> <!-- altept_0022, altept_0023, altept_0024 -->
+<var name="ECST_MiddleBarA_width"      value="  20."/>
+<var name="ECST_MiddleBarA1_ywid"      value="ECST_MiddleBarA_ywid-2*ECST_MiddleBarA_width"/>
+<var name="ECST_MiddleBarA1_zwid"      value="ECST_MiddleBarA_width"/>
+<var name="ECST_MiddleBarA2_xwid"      value="1400."/>
+<var name="ECST_MiddleBarA2_ywid"      value="ECST_MiddleBarA_width"/>
+<var name="ECST_MiddleBarA2_zwid"      value="  50."/>
+<var name="ECST_MiddleBarA1Back_xpos"  value="   0."/>
+<var name="ECST_MiddleBarA1Back_ypos"  value="   0."/>
+<var name="ECST_MiddleBarA1Back_zpos"  value="ECST_MiddleBarA1_zwid/2."/>
+<var name="ECST_MiddleBarA2Back_xpos"  value="   0."/>
+<var name="ECST_MiddleBarA2Back_ypos"  value="(ECST_MiddleBarA1_ywid+ECST_MiddleBarA2_ywid)/2.+GENV_Eps"/>
+<var name="ECST_MiddleBarA2Back_zpos"  value="(ECST_MiddleBarA2_zwid)/2."/>
+<var name="ECST_MiddleBarA1Front_xpos" value="   0."/>
+<var name="ECST_MiddleBarA1Front_ypos" value="   0."/>
+<var name="ECST_MiddleBarA1Front_zpos" value="ECST_RL_inner_distanceZ+2*ECST_RL_zwid+ECST_SupportFrame_dist_rod*2+ECST_SupportFrame_Thickness*2-ECST_MiddleBarA1_zwid/2."/>
+<var name="ECST_MiddleBarA2Front_xpos" value="   0."/>
+<var name="ECST_MiddleBarA2Front_ypos" value="(ECST_MiddleBarA1_ywid+ECST_MiddleBarA2_ywid)/2+GENV_Eps"/>
+<var name="ECST_MiddleBarA2Front_zpos" value="ECST_RL_inner_distanceZ+2*ECST_RL_zwid+ECST_SupportFrame_dist_rod*2+ECST_SupportFrame_Thickness*2-ECST_MiddleBarA2_zwid/2"/>
+<var name="ECST_MiddleBarAFront_ypos"  value="ECST_SupportFrameA_Ypos_abs+ECST_SupportFrameA_Height-ECST_MiddleBarA_ywid/2.-GENV_Eps"/>
+<var name="ECST_MiddleBarABack_ypos"   value="ECST_SupportFrameA_Ypos_abs+ECST_SupportFrameA_Height-ECST_MiddleBarA_ywid/2.-GENV_Eps"/>
+<var name="ECST_MiddleBarALow_ypos"    value="ECST_SupportFrameA_Ypos_abs+ECST_MiddleBarA_ywid/2.+GENV_Eps"/>
+<var name="ECST_MiddleBarB2_xwid"      value="1424."/>
+<var name="ECST_MiddleBarB_ypos"       value="ECST_SupportFrameB_Ypos_abs+ECST_SupportFrameB_Height-ECST_MiddleBarA_ywid/2.-GENV_Eps" />
+<var name="ECST_MiddleBarC2_xwid"      value="1420."/>
+<var name="ECST_MiddleBarC_ypos"       value="ECST_SupportFrameC_Ypos_abs+ECST_SupportFrameC_Height-ECST_MiddleBarA_ywid/2.-GENV_Eps" />
+<var name="ECST_MiddleBarD2_xwid"      value="1420."/>
+<var name="ECST_MiddleBarD_ypos"       value="ECST_SupportFrameD_Ypos_abs+ECST_SupportFrameD_Height-ECST_MiddleBarA_ywid/2.-GENV_Eps" />
+
+<var name="ECST_InclinedBar_width"  value="20."/>
+<var name="ECST_InclinedBar_zwid"   value="50."/>
+<var name="ECST_InclinedBar_ywid"   value="210."/>
+<var name="ECST_InclinedBar_ystart" value="ECST_SupportFrameC_Ypos_abs+ECST_SupportFrameC_Height"/>
+<var name="ECST_InclinedBar_xstart" value="-(ECST_RightLeftLeg_InnerDistanceX-ECST_SupportFrame_Thickness-ECST_SupportFrame_dist_rod-ECST_cover_dist_rod-ECST_cover_thickness)/2.+GENV_Eps"/>
+<var name="ECST_InclinedBar1_p1x"   value="ECST_InclinedBar_xstart"/>
+<var name="ECST_InclinedBar1_p1y"   value="ECST_InclinedBar_ystart+ECST_InclinedBar_width+GENV_Eps"/>
+<var name="ECST_InclinedBar1_p2x"   value="ECST_InclinedBar1_p1x"/>
+<var name="ECST_InclinedBar1_p2y"   value="ECST_InclinedBar_ystart+ECST_InclinedBar_ywid-ECST_InclinedBar_width-GENV_Eps"/>
+<var name="ECST_InclinedBar1_p3x"   value="ECST_InclinedBar_xstart+ECST_RightLeftLeg_InnerDistanceX-(ECST_SupportFrame_dist_rod+ECST_SupportFrame_Thickness)-ECST_cover_thickness-ECST_cover_dist_rod-2.*GENV_Eps"/>
+<var name="ECST_InclinedBar1_p3y"   value="ECST_SupportFrameB_Ypos_abs+ECST_InclinedBar_ywid-ECST_InclinedBar_width-GENV_Eps"/>
+<var name="ECST_InclinedBar1_p4x"   value="ECST_InclinedBar_xstart+ECST_RightLeftLeg_InnerDistanceX-(ECST_SupportFrame_dist_rod+ECST_SupportFrame_Thickness)-ECST_cover_thickness-ECST_cover_dist_rod-2.*GENV_Eps"/>
+<var name="ECST_InclinedBar1_p4y"   value="ECST_SupportFrameB_Ypos_abs+ECST_InclinedBar_width+GENV_Eps"/>
+
+<var name="ECST_InclinedBar2_p1x"   value="ECST_InclinedBar1_p1x"/>
+<var name="ECST_InclinedBar2_p1y"   value="ECST_InclinedBar_ystart+ECST_InclinedBar_ywid-ECST_InclinedBar_width"/>
+<var name="ECST_InclinedBar2_p2x"   value="ECST_InclinedBar1_p2x"/>
+<var name="ECST_InclinedBar2_p2y"   value="ECST_InclinedBar_ystart+ECST_InclinedBar_ywid"/>
+<var name="ECST_InclinedBar2_p3x"   value="ECST_InclinedBar1_p3x"/>
+<var name="ECST_InclinedBar2_p3y"   value="ECST_SupportFrameB_Ypos_abs+ECST_InclinedBar_ywid"/>
+<var name="ECST_InclinedBar2_p4x"   value="ECST_InclinedBar1_p4x"/>
+<var name="ECST_InclinedBar2_p4y"   value="ECST_SupportFrameB_Ypos_abs+ECST_InclinedBar_ywid-ECST_InclinedBar_width"/>
+
+<var name="ECST_InclinedBar3_p1x"   value="ECST_InclinedBar1_p1x"/>
+<var name="ECST_InclinedBar3_p1y"   value="ECST_InclinedBar_ystart"/>
+<var name="ECST_InclinedBar3_p2x"   value="ECST_InclinedBar1_p2x"/>
+<var name="ECST_InclinedBar3_p2y"   value="ECST_InclinedBar_ystart+ECST_InclinedBar_width"/>
+<var name="ECST_InclinedBar3_p3x"   value="ECST_InclinedBar1_p3x"/>
+<var name="ECST_InclinedBar3_p3y"   value="ECST_SupportFrameB_Ypos_abs+ECST_InclinedBar_width"/>
+<var name="ECST_InclinedBar3_p4x"   value="ECST_InclinedBar1_p4x"/>
+<var name="ECST_InclinedBar3_p4y"   value="ECST_SupportFrameB_Ypos_abs"/>
+
+<!-- Front Structure Variables --> <!-- values approximated from photos -->
+<var name="ECST_Front_Frame_ywid"   value="ECST_Bar_Length*0.92"/>
+<var name="ECST_Front_Frame_zwid"   value="ECST_Bar_Length*0.624"/>
+<var name="ECST_Front_Frame_width"  value="26."/>
+<var name="ECST_Front_Frame_xwid"   value="0.5*ECST_LL_inner_distanceX+ECST_LL_xwid+ECST_RightLeftLeg_InnerDistanceX+ECST_RL_xwid*0.5+2*ECST_Front_Frame_width"/>
+<var name="ECST_Front_Frame_xpos"   value="0.5*(-0.5*ECST_LL_inner_distanceX-ECST_LL_xwid+ECST_RL_xwid*0.5)"/>
+<var name="ECST_Front_Frame_ypos"   value="ECST_Front_Bar_starty+ECST_Front_Bar_ywid/2+0.504*ECST_Bar_Length+ECST_Front_Frame_zwid*0.5"/>
+<var name="ECST_Front_Frame_zpos"   value="ECST_LL_inner_distanceZ+2*ECST_LL_zwid+2*ECST_cover_dist_rod+2*ECST_cover_thickness+ECST_Front_Frame_zwid*0.5+GENV_Eps"/>
+<var name="ECST_Front_Glass_xwid"   value="ECST_Front_Frame_xwid-200."/>
+<var name="ECST_Front_Glass_ywid"   value="ECST_Front_Frame_ywid-200."/>
+<var name="ECST_Front_Glass_zwid"   value="20."/>
+<var name="ECST_Front_Frame_UpperPart_ywid" value="5."/>
+
+<var name="ECST_movez" value="ECST_RL_inner_distanceZ/2+ECST_zwid+ECST_cover_thickness+ECST_cover_dist_rod"/>
+<var name="ECST_movey" value="ECST_ywid/2"/>
+
+
+<!-- Right Leg Construction -->
+<box  name="ECST_Right_Leg_SupportFrameAOuter"  material="Aluminium" X_Y_Z="ECST_RL_xwid+ECST_SupportFrame_dist_rod*2+ECST_SupportFrame_Thickness*2; ECST_SupportFrameA_Height;  ECST_RL_inner_distanceZ+2*ECST_RL_zwid+ECST_SupportFrame_dist_rod*2+ECST_SupportFrame_Thickness*2" />
+<box  name="ECST_Right_Leg_SupportFrameAInner"  material="Aluminium" X_Y_Z="ECST_RL_xwid+ECST_SupportFrame_dist_rod*2; ECST_SupportFrameA_Height+20.0 ; ECST_RL_inner_distanceZ+2*ECST_RL_zwid+ECST_SupportFrame_dist_rod*2 " />
+<box  name="ECST_Right_Leg_SupportFrameBOuter"  material="Aluminium" X_Y_Z="ECST_RL_xwid+ECST_SupportFrame_dist_rod*2+ECST_SupportFrame_Thickness*2; ECST_SupportFrameB_Height ;  ECST_RL_inner_distanceZ+2*ECST_RL_zwid+ECST_SupportFrame_dist_rod*2+ECST_SupportFrame_Thickness*2" />
+<box  name="ECST_Right_Leg_SupportFrameBInner"  material="Aluminium" X_Y_Z="ECST_RL_xwid+ECST_SupportFrame_dist_rod*2; ECST_SupportFrameB_Height+20.0 ; ECST_RL_inner_distanceZ+2*ECST_RL_zwid+ECST_SupportFrame_dist_rod*2 " />
+<box  name="ECST_Right_Leg_HoleBracket"  material="Aluminium"  X_Y_Z="ECST_RL_xwid+ECST_SupportFrame_dist_rod*2; 300.;  200." />
+<box  name="ECST_Right_Leg_SupportFrameCOuter"  material="Aluminium" X_Y_Z="ECST_RL_xwid+ECST_SupportFrame_dist_rod*2+ECST_SupportFrame_Thickness*2; ECST_SupportFrameC_Height ;  ECST_RL_inner_distanceZ+2*ECST_RL_zwid+ECST_SupportFrame_dist_rod*2+ECST_SupportFrame_Thickness*2" />
+<box  name="ECST_Right_Leg_SupportFrameCInner"  material="Aluminium" X_Y_Z="ECST_RL_xwid+ECST_SupportFrame_dist_rod*2; ECST_SupportFrameC_Height+20. ; ECST_RL_inner_distanceZ+2*ECST_RL_zwid+ECST_SupportFrame_dist_rod*2 " />
+<box  name="ECST_Right_Leg_SupportFrameDOuter"  material="Aluminium" X_Y_Z="ECST_RL_xwid+ECST_SupportFrame_dist_rod*2+ECST_SupportFrame_Thickness*2; ECST_SupportFrameD_Height;  ECST_RL_inner_distanceZ+2*ECST_RL_zwid+ECST_SupportFrame_dist_rod*2+ECST_SupportFrame_Thickness*2" />
+<box  name="ECST_Right_Leg_SupportFrameDInner"  material="Aluminium" X_Y_Z="ECST_RL_xwid+ECST_SupportFrame_dist_rod*2; ECST_SupportFrameD_Height+20.0 ; ECST_RL_inner_distanceZ+2*ECST_RL_zwid+ECST_SupportFrame_dist_rod*2 " />
+
+<subtraction  name="ECST_Right_Leg_SupportFrameA" >
+  <posXYZ  volume="ECST_Right_Leg_SupportFrameAOuter" />
+  <posXYZ  volume="ECST_Right_Leg_SupportFrameAInner" />
+</subtraction>
+<subtraction  name="ECST_Right_Leg_SupportFrameB" >
+  <posXYZ  volume="ECST_Right_Leg_SupportFrameBOuter" />
+  <posXYZ  volume="ECST_Right_Leg_SupportFrameBInner" />
+</subtraction>
+<subtraction  name="ECST_Right_Leg_SupportFrameC" >
+  <posXYZ  volume="ECST_Right_Leg_SupportFrameCOuter" />
+  <posXYZ  volume="ECST_Right_Leg_SupportFrameCInner" />
+  <posXYZ  volume="ECST_Right_Leg_HoleBracket"   X_Y_Z=" 0.; 50.;(ECST_LL_inner_distanceZ/2+ECST_LL_zwid+ECST_cover_dist_rod+ECST_cover_thickness/2) " />
+</subtraction>
+<subtraction  name="ECST_Right_Leg_SupportFrameD" >
+  <posXYZ  volume="ECST_Right_Leg_SupportFrameDOuter" />
+  <posXYZ  volume="ECST_Right_Leg_SupportFrameDInner" />
+</subtraction>
+
+<box  name="ECST_Right_Leg_Rod"  material="Aluminium"  X_Y_Z="ECST_RL_xwid; ECST_RL_ywid ;  ECST_RL_zwid" />
+<composition  name="ECST_Right_Leg" >
+  <posXYZ  volume="ECST_Right_Leg_Rod"                 X_Y_Z="0. ; 0. ;  ECST_RL_zwid/2+ECST_RL_inner_distanceZ/2" />
+  <posXYZ  volume="ECST_Right_Leg_Rod"                  X_Y_Z="0. ; 0. ; -ECST_RL_zwid/2-ECST_RL_inner_distanceZ/2" />
+  <posXYZ  volume="ECST_Right_Leg_SupportFrameA"       X_Y_Z="0.;ECST_SupportFrameA_Ypos; 0."  />
+  <posXYZ  volume="ECST_Right_Leg_SupportFrameB"       X_Y_Z="0.;ECST_SupportFrameB_Ypos; 0."  />
+  <posXYZ  volume="ECST_Right_Leg_SupportFrameC"       X_Y_Z="0.;ECST_SupportFrameC_Ypos; 0."  />
+  <posXYZ  volume="ECST_Right_Leg_SupportFrameD"       X_Y_Z="0.;ECST_SupportFrameD_Ypos; 0."  />
+</composition>
+
+<!-- Left Leg Construction -->
+<box  name="ECST_Left_Leg_Rod"          material="Aluminium"  X_Y_Z="ECST_LL_xwid; ECST_LL_ywid ;  ECST_LL_zwid" />
+<box  name="ECST_Left_Leg_coverouter"   material="Aluminium"  X_Y_Z="ECST_LL_inner_distanceX+2*ECST_LL_xwid+ECST_cover_dist_rod*2+ECST_cover_thickness*2; ECST_ywid ;  ECST_LL_inner_distanceZ+2*ECST_LL_zwid+ECST_cover_dist_rod*2+ECST_cover_thickness*2" />
+<box  name="ECST_Left_Leg_coverinner"   material="Aluminium"  X_Y_Z="ECST_LL_inner_distanceX+2*ECST_LL_xwid+ECST_cover_dist_rod*2; ECST_ywid + 2.*GENV_Eps;  ECST_LL_inner_distanceZ+2*ECST_LL_zwid+ECST_cover_dist_rod*2" />
+<box  name="ECST_Left_Leg_HoleBracket"  material="Aluminium"  X_Y_Z="300.; 300.;  200." />
+
+<subtraction  name="ECST_Left_Leg_cover" >
+  <posXYZ  volume="ECST_Left_Leg_coverouter"  />
+  <posXYZ  volume="ECST_Left_Leg_coverinner"  />
+  <posXYZ  volume="ECST_Left_Leg_HoleBracket"   X_Y_Z=" 0.; ECST_Left_Leg_HoleBracket_ypos;(ECST_LL_inner_distanceZ/2+ECST_LL_zwid+ECST_cover_dist_rod+ECST_cover_thickness/2) " />
+</subtraction>
+<composition  name="ECST_Left_Leg" >
+  <posXYZ  volume="ECST_Left_Leg_cover"  />
+  <posXYZ  volume="ECST_Left_Leg_Rod"   X_Y_Z="-ECST_LL_xwid/2.-ECST_LL_inner_distanceX/2.; 0.; ECST_LL_zwid/2.+ECST_LL_inner_distanceZ/2." />
+  <posXYZ  volume="ECST_Left_Leg_Rod"   X_Y_Z="-ECST_LL_xwid/2.-ECST_LL_inner_distanceX/2.; 0.; -ECST_LL_zwid/2.-ECST_LL_inner_distanceZ/2."  />
+  <posXYZ  volume="ECST_Left_Leg_Rod"   X_Y_Z="ECST_LL_xwid/2.+ECST_LL_inner_distanceX/2.; 0.; -ECST_LL_zwid/2.-ECST_LL_inner_distanceZ/2."  />
+  <posXYZ  volume="ECST_Left_Leg_Rod"   X_Y_Z="ECST_LL_xwid/2.+ECST_LL_inner_distanceX/2.; 0.; ECST_LL_zwid/2.+ECST_LL_inner_distanceZ/2." />
+</composition>
+
+<!-- Middle Pieces Construction -->
+<box name="ECST_MiddleBarA1"  material="Aluminium"  X_Y_Z="ECST_RightLeftLeg_InnerDistanceX-(ECST_SupportFrame_dist_rod+ECST_SupportFrame_Thickness)-ECST_cover_thickness-ECST_cover_dist_rod-2*GENV_Eps;ECST_MiddleBarA1_ywid-2.*GENV_Eps ;  ECST_MiddleBarA1_zwid" />
+<box name="ECST_MiddleBarA2"  material="Aluminium"  X_Y_Z="ECST_MiddleBarA2_xwid;ECST_MiddleBarA2_ywid;ECST_MiddleBarA2_zwid" />
+<box name="ECST_MiddleBarB2"  material="Aluminium"  X_Y_Z="ECST_MiddleBarB2_xwid;ECST_MiddleBarA2_ywid;ECST_MiddleBarA2_zwid" />
+<box name="ECST_MiddleBarC2"  material="Aluminium"  X_Y_Z="ECST_MiddleBarC2_xwid;ECST_MiddleBarA2_ywid;ECST_MiddleBarA2_zwid" />
+<box name="ECST_MiddleBarD2"  material="Aluminium"  X_Y_Z="ECST_MiddleBarD2_xwid;ECST_MiddleBarA2_ywid;ECST_MiddleBarA2_zwid" />
+
+<composition  name="ECST_MiddleBars" >
+  <posXYZ  volume="ECST_MiddleBarA1"        X_Y_Z="ECST_MiddleBarA1Front_xpos;ECST_MiddleBarAFront_ypos+ECST_MiddleBarA1Front_ypos;ECST_MiddleBarA1Front_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarA2"        X_Y_Z="ECST_MiddleBarA2Front_xpos;ECST_MiddleBarAFront_ypos+ECST_MiddleBarA2Front_ypos; ECST_MiddleBarA2Front_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarA2"        X_Y_Z="ECST_MiddleBarA2Front_xpos;ECST_MiddleBarAFront_ypos-ECST_MiddleBarA2Front_ypos; ECST_MiddleBarA2Front_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarA1"        X_Y_Z="ECST_MiddleBarA1Back_xpos;ECST_MiddleBarAFront_ypos+ECST_MiddleBarA1Back_ypos;ECST_MiddleBarA1Back_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarA2"        X_Y_Z="ECST_MiddleBarA2Back_xpos;ECST_MiddleBarAFront_ypos+ECST_MiddleBarA2Back_ypos; ECST_MiddleBarA2Back_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarA2"        X_Y_Z="ECST_MiddleBarA2Back_xpos;ECST_MiddleBarAFront_ypos-1.*ECST_MiddleBarA2Back_ypos; ECST_MiddleBarA2Back_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarA1"        X_Y_Z="ECST_MiddleBarA1Front_xpos;ECST_MiddleBarB_ypos+ECST_MiddleBarA1Front_ypos;ECST_MiddleBarA1Front_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarB2"        X_Y_Z="ECST_MiddleBarA2Front_xpos;ECST_MiddleBarB_ypos+ECST_MiddleBarA2Front_ypos; ECST_MiddleBarA2Front_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarB2"        X_Y_Z="ECST_MiddleBarA2Front_xpos;ECST_MiddleBarB_ypos-ECST_MiddleBarA2Front_ypos; ECST_MiddleBarA2Front_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarA1"        X_Y_Z="ECST_MiddleBarA1Back_xpos;ECST_MiddleBarB_ypos+ECST_MiddleBarA1Back_ypos;ECST_MiddleBarA1Back_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarB2"        X_Y_Z="ECST_MiddleBarA2Back_xpos;ECST_MiddleBarB_ypos+ECST_MiddleBarA2Back_ypos; ECST_MiddleBarA2Back_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarB2"        X_Y_Z="ECST_MiddleBarA2Back_xpos;ECST_MiddleBarB_ypos-1.*ECST_MiddleBarA2Back_ypos; ECST_MiddleBarA2Back_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarA1"        X_Y_Z="ECST_MiddleBarA1Front_xpos;ECST_MiddleBarC_ypos+ECST_MiddleBarA1Front_ypos;ECST_MiddleBarA1Front_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarC2"        X_Y_Z="ECST_MiddleBarA2Front_xpos;ECST_MiddleBarC_ypos+ECST_MiddleBarA2Front_ypos; ECST_MiddleBarA2Front_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarC2"        X_Y_Z="ECST_MiddleBarA2Front_xpos;ECST_MiddleBarC_ypos-ECST_MiddleBarA2Front_ypos; ECST_MiddleBarA2Front_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarA1"        X_Y_Z="ECST_MiddleBarA1Back_xpos;ECST_MiddleBarC_ypos+ECST_MiddleBarA1Back_ypos;ECST_MiddleBarA1Back_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarC2"        X_Y_Z="ECST_MiddleBarA2Back_xpos;ECST_MiddleBarC_ypos+ECST_MiddleBarA2Back_ypos; ECST_MiddleBarA2Back_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarC2"        X_Y_Z="ECST_MiddleBarA2Back_xpos;ECST_MiddleBarC_ypos-1.*ECST_MiddleBarA2Back_ypos; ECST_MiddleBarA2Back_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarA1"        X_Y_Z="ECST_MiddleBarA1Back_xpos;ECST_MiddleBarD_ypos+ECST_MiddleBarA1Back_ypos;ECST_MiddleBarA1Back_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarD2"        X_Y_Z="ECST_MiddleBarA2Back_xpos;ECST_MiddleBarD_ypos+ECST_MiddleBarA2Back_ypos; ECST_MiddleBarA2Back_zpos"  />
+  <posXYZ  volume="ECST_MiddleBarD2"        X_Y_Z="ECST_MiddleBarA2Back_xpos;ECST_MiddleBarD_ypos-1.*ECST_MiddleBarA2Back_ypos; ECST_MiddleBarA2Back_zpos"  />
+</composition>
+
+<gvxy  name="ECST_InclinedBar1"  material="Aluminium"  dZ="ECST_InclinedBar_width" >
+  <gvxy_point  X_Y="ECST_InclinedBar1_p1x;ECST_InclinedBar1_p1y" />
+  <gvxy_point  X_Y="ECST_InclinedBar1_p2x;ECST_InclinedBar1_p2y" />
+  <gvxy_point  X_Y="ECST_InclinedBar1_p3x;ECST_InclinedBar1_p3y" />
+  <gvxy_point  X_Y="ECST_InclinedBar1_p4x;ECST_InclinedBar1_p4y" />
+</gvxy>
+<gvxy  name="ECST_InclinedBar2"  material="Aluminium"  dZ="ECST_InclinedBar_zwid" >
+  <gvxy_point  X_Y="ECST_InclinedBar2_p1x;ECST_InclinedBar2_p1y" />
+  <gvxy_point  X_Y="ECST_InclinedBar2_p2x;ECST_InclinedBar2_p2y" />
+  <gvxy_point  X_Y="ECST_InclinedBar2_p3x;ECST_InclinedBar2_p3y" />
+  <gvxy_point  X_Y="ECST_InclinedBar2_p4x;ECST_InclinedBar2_p4y" />
+</gvxy>
+<gvxy  name="ECST_InclinedBar3"  material="Aluminium"  dZ="ECST_InclinedBar_zwid" >
+  <gvxy_point  X_Y="ECST_InclinedBar3_p1x;ECST_InclinedBar3_p1y" />
+  <gvxy_point  X_Y="ECST_InclinedBar3_p2x;ECST_InclinedBar3_p2y" />
+  <gvxy_point  X_Y="ECST_InclinedBar3_p3x;ECST_InclinedBar3_p3y" />
+  <gvxy_point  X_Y="ECST_InclinedBar3_p4x;ECST_InclinedBar3_p4y" />
+</gvxy>
+<composition  name="ECST_InclinedBar" >
+  <posXYZ  volume="ECST_InclinedBar1"        X_Y_Z="0. ; 0. ; ECST_InclinedBar_width/2."  />
+  <posXYZ  volume="ECST_InclinedBar2"        X_Y_Z="0. ; 0. ; ECST_InclinedBar_zwid/2."  />
+  <posXYZ  volume="ECST_InclinedBar3"        X_Y_Z="0. ; 0. ; ECST_InclinedBar_zwid/2."  />
+  <posXYZ  volume="ECST_InclinedBar1"        X_Y_Z="0. ; 0. ; 2*ECST_movez-ECST_InclinedBar_width/2."  />
+  <posXYZ  volume="ECST_InclinedBar2"        X_Y_Z="0. ; 0. ; 2*ECST_movez-ECST_InclinedBar_zwid/2."  />
+  <posXYZ  volume="ECST_InclinedBar3"        X_Y_Z="0. ; 0. ; 2*ECST_movez-ECST_InclinedBar_zwid/2."  />
+</composition>
+
+<!-- Front frame Construction (from photos) -->
+<box  name="ECST_Front_Frame_Outer"  material="Aluminium"  X_Y_Z="ECST_Front_Frame_xwid; ECST_Front_Frame_ywid ;  ECST_Front_Frame_zwid" />
+<box  name="ECST_Front_Frame_Inner4"  material="Aluminium"  X_Y_Z="ECST_Front_Frame_xwid-2*ECST_Front_Frame_width; ECST_Front_Frame_ywid/2. ;  ECST_Front_Frame_zwid/2." />
+<box  name="ECST_Front_Frame_Inner1"  material="Aluminium"  X_Y_Z="ECST_Front_Frame_xwid-2*ECST_Front_Frame_width; ECST_Front_Frame_ywid-2*ECST_Front_Frame_width ;  ECST_Front_Frame_zwid+200" />
+<box  name="ECST_Front_Frame_Inner2"  material="Aluminium"  X_Y_Z="ECST_Front_Frame_xwid+200; ECST_Front_Frame_ywid-2*ECST_Front_Frame_width ;  ECST_Front_Frame_zwid-2*ECST_Front_Frame_width" />
+<box  name="ECST_Front_Frame_Inner3"  material="Aluminium"  X_Y_Z="ECST_Front_Frame_xwid-2*ECST_Front_Frame_width; ECST_Front_Frame_ywid;  ECST_Front_Frame_zwid-2*ECST_Front_Frame_width" />
+<subtraction  name="ECST_Front_Structure" >
+  <posXYZ  volume="ECST_Front_Frame_Outer"   />
+  <posXYZ  volume="ECST_Front_Frame_Inner1"  />
+  <posXYZ  volume="ECST_Front_Frame_Inner2"  />
+  <posXYZ  volume="ECST_Front_Frame_Inner3"  X_Y_Z="0.;-ECST_Front_Frame_UpperPart_ywid;0."  />
+  <posXYZ  volume="ECST_Front_Frame_Inner4"  X_Y_Z="0.;- ECST_Front_Frame_ywid/2.;- ECST_Front_Frame_zwid/2."  />
+</subtraction>
+
+<box  name="ECST_Front_Glass_Outer"  material="std::Polyethylene"  X_Y_Z="ECST_Front_Glass_xwid; ECST_Front_Glass_ywid ;  ECST_Front_Glass_zwid" />
+<composition  name="ECST_Front_Glass" >
+  <posXYZ  volume="ECST_Front_Structure"   X_Y_Z="0.; 0.; -2.*GENV_Eps " />
+  <posXYZ  volume="ECST_Front_Glass_Outer" X_Y_Z="0.;0.;0.5*ECST_Front_Frame_zwid+20."  />
+</composition>
+
+
+<!-- Front Bar Construction from  atltept_0033-v0.pdf -->
+<box  name="ECST_Front_Bar1"  material="Aluminium"  X_Y_Z="ECST_Front_Bar1_xwid-GENV_Eps; ECST_Front_Bar_ywid ;  ECST_Front_Bar_zwid" />
+<box  name="ECST_Front_Bar2"  material="Aluminium"  X_Y_Z="ECST_Front_Bar2_xwid-GENV_Eps; ECST_Front_Bar_ywid ;  ECST_Front_Bar_zwid" />
+<box  name="ECST_Front_Bar3"  material="Aluminium"  X_Y_Z="ECST_Front_Bar3_xwid-GENV_Eps; ECST_Front_Bar_ywid ;  ECST_Front_Bar_zwid" />
+<composition  name="ECST_Front_Bar" >
+  <posXYZ  volume="ECST_Front_Bar1"        X_Y_Z="ECST_Front_Bar_xwid/2-ECST_Front_Bar1_xwid/2;0.;0."  />
+  <posXYZ  volume="ECST_Front_Bar2"        X_Y_Z="ECST_Front_Bar_xwid/2-ECST_Front_Bar1_xwid-ECST_Front_Hand_width-ECST_Front_Bar2_xwid/2;0.;0." />
+  <posXYZ  volume="ECST_Front_Bar3"        X_Y_Z="ECST_Front_Bar_xwid/2-ECST_Front_Bar1_xwid-2*ECST_Front_Hand_width-ECST_Front_Bar2_xwid-ECST_Front_Bar3_xwid/2;0.;0."  />
+</composition>
+<!-- Arm Construction -->
+<!--                    ECST_Front_Hand -->
+<gvxy  name="ECST_Front_Hand"  material="Aluminium"  dZ="ECST_Front_Hand_width" >
+  <gvxy_point  X_Y="ECST_Front_Hand_pointAX ; ECST_Front_Hand_pointAY " />
+  <gvxy_point  X_Y="ECST_Front_Hand_pointBX ; ECST_Front_Hand_pointBY " />
+  <gvxy_point  X_Y="ECST_Front_Hand_pointCX ; ECST_Front_Hand_pointCY " />
+  <gvxy_point  X_Y="ECST_Front_Hand_pointDX ; ECST_Front_Hand_pointDY " />
+  <gvxy_point  X_Y="ECST_Front_Hand_pointEX ; ECST_Front_Hand_pointEY " />
+</gvxy>
+<!--                    ECST_Front_Bracket -->
+<gvxy  name="ECST_Front_Bracket1"  material="Aluminium"  dZ="ECST_Front_Bracket_width" >
+  <gvxy_point  X_Y="ECST_Front_Bracket_pointD1X ; ECST_Front_Bracket_pointD1Y " /> 
+  <gvxy_point  X_Y="ECST_Front_Bracket_pointC1X ; ECST_Front_Bracket_pointC1Y " /> 
+  <gvxy_point  X_Y="ECST_Front_Bracket_pointF1X ; ECST_Front_Bracket_pointF1Y " />
+  <gvxy_point  X_Y="ECST_Front_Bracket_pointF1X-ECST_Front_Bracket_Distance_From_Leg+GENV_Eps ; ECST_Front_Bracket_pointF1Y " /> 
+  <gvxy_point  X_Y="ECST_Front_Bracket_pointG1X-ECST_Front_Bracket_Distance_From_Leg+GENV_Eps ; ECST_Front_Bracket_pointG1Y " /> 
+  <gvxy_point  X_Y="ECST_Front_Bracket_pointG1X ; ECST_Front_Bracket_pointG1Y " />
+</gvxy>
+<gvxy  name="ECST_Front_Bracket2"  material="Aluminium"  dZ="ECST_Front_Bracket23_topwidth" > 
+  <gvxy_point  X_Y="ECST_Front_Bracket_pointDX+GENV_Eps*ECST_unit_perp_GDx ; ECST_Front_Bracket_pointDY+GENV_Eps*ECST_unit_perp_GDy " />
+  <gvxy_point  X_Y="ECST_Front_Bracket_pointD1X+GENV_Eps*ECST_unit_perp_GDx ; ECST_Front_Bracket_pointD1Y+GENV_Eps*ECST_unit_perp_GDy " />
+  <gvxy_point  X_Y="ECST_Front_Bracket_pointG1X+GENV_Eps*ECST_unit_perp_GDx ; ECST_Front_Bracket_pointG1Y+GENV_Eps*ECST_unit_perp_GDy " />
+  <gvxy_point  X_Y="ECST_Front_Bracket_pointGX+GENV_Eps*ECST_unit_perp_GDx ; ECST_Front_Bracket_pointGY+GENV_Eps*ECST_unit_perp_GDy " />
+</gvxy>
+<gvxy  name="ECST_Front_Bracket3"  material="Aluminium"  dZ="ECST_Front_Bracket23_topwidth" >
+  <gvxy_point  X_Y="ECST_Front_Bracket_pointC1X-GENV_Eps*ECST_unit_perp_GDx ; ECST_Front_Bracket_pointC1Y-GENV_Eps*ECST_unit_perp_GDy " />
+  <gvxy_point  X_Y="ECST_Front_Bracket_pointCX-GENV_Eps*ECST_unit_perp_GDx ; ECST_Front_Bracket_pointCY-GENV_Eps*ECST_unit_perp_GDy " />
+  <gvxy_point  X_Y="ECST_Front_Bracket_pointFX-GENV_Eps*ECST_unit_perp_GDx ; ECST_Front_Bracket_pointFY-GENV_Eps*ECST_unit_perp_GDy " />
+  <gvxy_point  X_Y="ECST_Front_Bracket_pointF1X-GENV_Eps*ECST_unit_perp_GDx ; ECST_Front_Bracket_pointF1Y-GENV_Eps*ECST_unit_perp_GDy " />
+</gvxy>
+<!--                    ECST_Front_Arm -->
+<composition name="ECST_Front_Arm1">
+  <posXYZ volume="ECST_Front_Hand"  />
+  <posXYZ volume="ECST_Front_Bracket1"  />
+  <posXYZ volume="ECST_Front_Bracket2" X_Y_Z="0.;0.;ECST_Front_Bracket23_topwidth/2"  />
+  <posXYZ volume="ECST_Front_Bracket3" X_Y_Z="0.;0.;ECST_Front_Bracket23_topwidth/2"  />
+</composition>
+<composition name="ECST_Front_Arm2">
+  <posXYZ volume="ECST_Front_Hand"  />
+  <posXYZ volume="ECST_Front_Bracket1"  />
+  <posXYZ volume="ECST_Front_Bracket2" X_Y_Z="0.;0.;-ECST_Front_Bracket23_topwidth/2"  />
+  <posXYZ volume="ECST_Front_Bracket3" X_Y_Z="0.;0.;-ECST_Front_Bracket23_topwidth/2"  />
+</composition>
+<!--                    ECST_Front -->
+<composition name="ECST_Front">
+  <posXYZ volume="ECST_Front_Bar"  />
+  <posXYZ volume="ECST_Front_Arm1" X_Y_Z="ECST_Front_Bar_xwid/2-ECST_Front_Bar1_xwid-ECST_Front_Hand_width/2;-ECST_Front_Bar_ywid/2-ECST_Front_Hand_Gap;ECST_Front_Bar_zwid/2+ECST_Front_Hand_Gap"  rot="0.;-90.;0." /> 
+  <posXYZ volume="ECST_Front_Arm1" X_Y_Z="-ECST_Front_Bar_xwid/2-ECST_Front_Hand_width/2;-ECST_Front_Bar_ywid/2-ECST_Front_Hand_Gap;ECST_Front_Bar_zwid/2+ECST_Front_Hand_Gap"  rot="0.;-90.;0." /> 
+  <posXYZ volume="ECST_Front_Arm2" X_Y_Z="ECST_Front_Bar_xwid/2+ECST_Front_Hand_width/2;-ECST_Front_Bar_ywid/2-ECST_Front_Hand_Gap;ECST_Front_Bar_zwid/2+ECST_Front_Hand_Gap"  rot="0.;-90.;0." /> 
+  <posXYZ volume="ECST_Front_Arm2" X_Y_Z="-ECST_Front_Bar_xwid/2+ECST_Front_Bar3_xwid+ECST_Front_Hand_width/2;-ECST_Front_Bar_ywid/2-ECST_Front_Hand_Gap;ECST_Front_Bar_zwid/2+ECST_Front_Hand_Gap"  rot="0.;-90.;0." /> 
+</composition>
+
+<composition  name="ECT_ServiceTower" >
+  <posXYZ  volume="ECST_Right_Leg"        X_Y_Z="ECST_RL_xwid/2.+ECST_RightLeftLeg_InnerDistanceX/2.; ECST_movey; ECST_movez"  />
+  <posXYZ  volume="ECST_Left_Leg"         X_Y_Z="-ECST_LL_inner_distanceX/2-ECST_LL_xwid-ECST_RightLeftLeg_InnerDistanceX/2.; ECST_movey; ECST_movez"  />
+  <posXYZ  volume="ECST_MiddleBars"   />
+  <posXYZ  volume="ECST_InclinedBar"  />
+  <posXYZ  volume="ECST_Front"     X_Y_Z="ECST_RightLeftLeg_InnerDistanceX/2+ECST_RL_xwid-ECST_Front_Bar_xwid/2; ECST_Front_Bar_starty-ECST_ywid/2+ECST_Front_Bar_ywid/2+ECST_movey; ECST_Front_Bar_startz+ECST_zwid+ECST_RL_inner_distanceZ/2-ECST_Front_Bar_zwid/2+ECST_movez"  />
+  <posXYZ  volume="ECST_Front_Glass"     X_Y_Z="ECST_Front_Frame_xpos;ECST_Front_Frame_ypos;ECST_Front_Frame_zpos"  />
+</composition>
+
+<var  name="ECST_SToDzBot"  value="1650." /> <!-- atczte__0002-vAB 14-JUL-2006 -->
+<var  name="ECST_SToThic2"  value="  50."/>
+<var  name="ECST_SToYpos"   value="5800." /> <!-- atczte__0002-vAB 14-JUL-2006 -->
+
+<var  name="AECT_SupInnWheel_Thickness"     value="   20. "/>
+<var  name="AECT_SupInnWheel_Distance"      value="  390. "/>
+<var  name="AECT_SupInnWheel_SideDY"        value="  160. "/>
+<var  name="AECT_SupInnWheel_SideDZ"        value=" 3010. "/>
+<var  name="AECT_SupInnWheel_PlateDZ"       value="  160. "/>
+<var  name="AECT_SupInnWheel_Yoff"          value="   88. "/>
+
+<var  name="AECT_SupOutWheel_Thickness"     value="   71. "/>
+<var  name="AECT_SupOutWheel_DY"            value="  446. "/>
+<var  name="AECT_SupOutWheel_XPosInn"       value=" 2575. "/>
+<var  name="AECT_SupOutWheel_XPosOut"       value=" 3434. "/>
+
+<var  name="AECT_SupWheel_AirPadSup_addDY"  value="  150. "/>
+<var  name="AECT_SupWheel_AirPadSup_relZ"   value=" 1330. "/>
+
+<var  name="AECT_SupWheel_AirPad_Rad"       value="  350. "/>
+<var  name="AECT_SupWheel_AirPad_Hight"     value="  125. "/>
+
+<var  name="AECT_SupWheel_dxJackBox_DX"     value="  555. "/>
+<var  name="AECT_SupWheel_dyJackBox_DY"     value="  110. "/>
+<var  name="AECT_SupWheel_dzJackBox_DZ"     value="  275. "/>
+<var  name="AECT_SupWheel_Jack_AbsXPos"     value=" 3045. "/>
+<var  name="AECT_SupWheel_Jack_DiffXPos"    value="  230. "/>
+<var  name="AECT_SupWheel_Jack_Radius"      value="   80. "/>
+<var  name="AECT_SupWheel_Jack_Hight"       value="  280. "/>
+<var  name="AECT_SupWheel_SpecBox_DZ"       value=" 2500. "/>
+
+<var  name="AECT_SupWheel_YPos"             value="-3945. "/>
+
+<array  name="AECT_SupInnWheel_PlatePos"    values=" 350. ; 852. ; 1425. ; 1998. " />
+
+<box  name="ECT_SupInnWheel_Side"   material="Aluminium"  X_Y_Z=" AECT_SupInnWheel_Thickness ; AECT_SupInnWheel_SideDY ; AECT_SupInnWheel_SideDZ " />
+<box  name="ECT_SupInnWheel_Plate"  material="Aluminium"  X_Y_Z=" AECT_SupInnWheel_Distance - 2.*AECT_SupInnWheel_Thickness ; AECT_SupInnWheel_Thickness ; AECT_SupInnWheel_PlateDZ " />
+<box  name="ECT_SupOutWheel"        material="Aluminium"  X_Y_Z=" AECT_SupOutWheel_Thickness ; AECT_SupOutWheel_DY ; AECT_EVOShZ_EVOutShellholeZwid - 2.*AECT_EVOSCZ_EVOutShellConnZwid " />
+<box  name="ECT_SupWheel_AirPadSup" material="Iron"       X_Y_Z=" AECT_SupInnWheel_Distance - 2.*AECT_SupInnWheel_Thickness; AECT_SupInnWheel_SideDY+AECT_SupWheel_AirPadSup_addDY; 2.*(AECT_SupWheel_AirPadSup_relZ-AECT_SupInnWheel_SideDZ/2+AECT_SupInnWheel_PlatePos[0])"/>
+<tubs name="ECT_SupWheel_AirPad"    material="Iron"       Rio_Z=" 0. ; AECT_SupWheel_AirPad_Rad ; AECT_SupWheel_AirPad_Hight"/>
+<box  name="ECT_SupWheel_JackBox"   material="Iron"       X_Y_Z="AECT_SupWheel_dxJackBox_DX; AECT_SupWheel_dyJackBox_DY; AECT_SupWheel_dzJackBox_DZ"/> 
+<tubs name="ECT_SupWheel_Jack"      material="Iron"       Rio_Z=" 0. ; AECT_SupWheel_Jack_Radius ; AECT_SupWheel_Jack_Hight"/>
+<box  name="ECT_SupWheel_SpecBox"   material="Aluminium"  X_Y_Z="AECT_SupInnWheel_SideDY; AECT_SupInnWheel_SideDY; AECT_SupWheel_SpecBox_DZ"/>
+
+<composition  name="ECT_SupWheel_basic">
+  <posXYZ  volume="ECT_SupOutWheel"        X_Y_Z=" (AECT_SupOutWheel_XPosOut-AECT_SupOutWheel_XPosInn+AECT_SupOutWheel_Thickness)/2.; -AECT_SupOutWheel_DY/2. ; 0. "  />
+  <posXYZ  volume="ECT_SupOutWheel"        X_Y_Z="-(AECT_SupOutWheel_XPosOut-AECT_SupOutWheel_XPosInn+AECT_SupOutWheel_Thickness)/2.; -AECT_SupOutWheel_DY/2. ; 0. "  />
+  <posXYZ  volume="ECT_SupInnWheel_Side"   X_Y_Z=" (AECT_SupInnWheel_Distance-AECT_SupInnWheel_Thickness)/2.; -AECT_SupInnWheel_SideDY/2.-AECT_SupInnWheel_Yoff ; 0. "  />
+  <posXYZ  volume="ECT_SupInnWheel_Side"   X_Y_Z="-(AECT_SupInnWheel_Distance-AECT_SupInnWheel_Thickness)/2.; -AECT_SupInnWheel_SideDY/2.-AECT_SupInnWheel_Yoff ; 0. "  />
+  <foreach  index="Irib"  begin="1"  loops="3" >
+    <posXYZ  volume="ECT_SupInnWheel_Plate"      X_Y_Z=" 0.; -AECT_SupInnWheel_SideDY/2.-AECT_SupInnWheel_Yoff; -(AECT_SupInnWheel_SideDZ-AECT_SupInnWheel_PlateDZ)/2.+AECT_SupInnWheel_PlatePos[Irib]" />
+  </foreach>
+  <posXYZ  volume="ECT_SupInnWheel_Plate"  X_Y_Z="0.; (AECT_SupInnWheel_SideDY-AECT_SupInnWheel_Thickness)/2.-AECT_SupInnWheel_SideDY/2.-AECT_SupInnWheel_Yoff; -(AECT_SupInnWheel_SideDZ-AECT_SupInnWheel_PlateDZ)/2.+AECT_SupInnWheel_PlatePos[0] " />
+  <posXYZ  volume="ECT_SupInnWheel_Plate"  X_Y_Z="0.; (AECT_SupInnWheel_SideDY-AECT_SupInnWheel_Thickness)/2.-AECT_SupInnWheel_SideDY/2.-AECT_SupInnWheel_Yoff;  (AECT_SupInnWheel_SideDZ-AECT_SupInnWheel_PlateDZ)/2.-AECT_SupInnWheel_PlatePos[0] " />
+  <posXYZ  volume="ECT_SupWheel_AirPadSup" X_Y_Z="0.; -(AECT_SupInnWheel_SideDY+AECT_SupWheel_AirPadSup_addDY)/2.;  AECT_SupWheel_AirPadSup_relZ" />
+  <posXYZ  volume="ECT_SupWheel_AirPadSup" X_Y_Z="0.; -(AECT_SupInnWheel_SideDY+AECT_SupWheel_AirPadSup_addDY)/2.; -AECT_SupWheel_AirPadSup_relZ" />
+  <posXYZ  volume="ECT_SupWheel_AirPad"    X_Y_Z="0.; -AECT_SupInnWheel_SideDY-AECT_SupWheel_AirPadSup_addDY-AECT_SupWheel_AirPad_Hight/2.; AECT_SupWheel_AirPadSup_relZ "  rot="90.; 0.; 0."/> 
+  <posXYZ  volume="ECT_SupWheel_AirPad"    X_Y_Z="0.; -AECT_SupInnWheel_SideDY-AECT_SupWheel_AirPadSup_addDY-AECT_SupWheel_AirPad_Hight/2.; -AECT_SupWheel_AirPadSup_relZ "  rot="90.; 0.; 0."/> 
+  <posXYZ  volume="ECT_SupWheel_Jack"      X_Y_Z="(-AECT_SupOutWheel_XPosOut-AECT_SupOutWheel_XPosInn)/2.+AECT_SupWheel_Jack_AbsXPos; -AECT_EVOSso_EVOutShellspecioff-AECT_SupWheel_dyJackBox_DY-AECT_SupWheel_Jack_Hight/2.;  AECT_EVOShZ_EVOutShellholeZwid/2.-AECT_EVOSCZ_EVOutShellConnZwid"  rot="90.; 0.; 0."/>
+  <posXYZ  volume="ECT_SupWheel_Jack"      X_Y_Z="(-AECT_SupOutWheel_XPosOut-AECT_SupOutWheel_XPosInn)/2.+AECT_SupWheel_Jack_AbsXPos-AECT_SupWheel_Jack_DiffXPos; -AECT_EVOSso_EVOutShellspecioff-AECT_SupWheel_dyJackBox_DY-AECT_SupWheel_Jack_Hight/2.;  AECT_EVOShZ_EVOutShellholeZwid/2.-AECT_EVOSCZ_EVOutShellConnZwid"  rot="90.; 0.; 0."/>
+  <posXYZ  volume="ECT_SupWheel_Jack"      X_Y_Z="(-AECT_SupOutWheel_XPosOut-AECT_SupOutWheel_XPosInn)/2.+AECT_SupWheel_Jack_AbsXPos; -AECT_EVOSso_EVOutShellspecioff-AECT_SupWheel_dyJackBox_DY-AECT_SupWheel_Jack_Hight/2.;  -AECT_EVOShZ_EVOutShellholeZwid/2.+AECT_EVOSCZ_EVOutShellConnZwid"  rot="90.; 0.; 0."/>
+  <posXYZ  volume="ECT_SupWheel_Jack"      X_Y_Z="(-AECT_SupOutWheel_XPosOut-AECT_SupOutWheel_XPosInn)/2.+AECT_SupWheel_Jack_AbsXPos-AECT_SupWheel_Jack_DiffXPos; -AECT_EVOSso_EVOutShellspecioff-AECT_SupWheel_dyJackBox_DY-AECT_SupWheel_Jack_Hight/2.;  -AECT_EVOShZ_EVOutShellholeZwid/2.+AECT_EVOSCZ_EVOutShellConnZwid"  rot="90.; 0.; 0."/>
+  <posXYZ  volume="ECT_SupWheel_JackBox"   X_Y_Z="(-AECT_SupOutWheel_XPosOut-AECT_SupOutWheel_XPosInn)/2.+AECT_SupWheel_Jack_AbsXPos-AECT_SupWheel_Jack_DiffXPos/2.; -AECT_EVOSso_EVOutShellspecioff-AECT_SupWheel_dyJackBox_DY/2.;  -AECT_EVOShZ_EVOutShellholeZwid/2.+AECT_EVOSCZ_EVOutShellConnZwid" />
+  <posXYZ  volume="ECT_SupWheel_JackBox"   X_Y_Z="(-AECT_SupOutWheel_XPosOut-AECT_SupOutWheel_XPosInn)/2.+AECT_SupWheel_Jack_AbsXPos-AECT_SupWheel_Jack_DiffXPos/2.; -AECT_EVOSso_EVOutShellspecioff-AECT_SupWheel_dyJackBox_DY/2.;   AECT_EVOShZ_EVOutShellholeZwid/2.-AECT_EVOSCZ_EVOutShellConnZwid" />
+</composition>
+
+<composition  name="ECT_SupWheel_Right">
+  <posXYZ  volume="ECT_SupWheel_basic"     X_Y_Z="  (AECT_SupOutWheel_XPosOut+AECT_SupOutWheel_XPosInn)/2.; 0.; 0."  />
+  <posXYZ  volume="ECT_SupWheel_SpecBox"   X_Y_Z="  AECT_SupOutWheel_XPosOut-AECT_SupInnWheel_SideDY/2.; -AECT_SupInnWheel_SideDY/2.-AECT_SupInnWheel_Yoff; AECT_SupWheel_SpecBox_DZ/2." />
+</composition>
+
+<composition  name="ECT_SupWheel_Left">
+  <posXYZ  volume="ECT_SupWheel_basic"     X_Y_Z=" -(AECT_SupOutWheel_XPosOut+AECT_SupOutWheel_XPosInn)/2.; 0.; 0."    rot="0.; 180.; 0."/>
+  <posXYZ  volume="ECT_SupWheel_SpecBox"   X_Y_Z=" -AECT_SupOutWheel_XPosOut+AECT_SupInnWheel_SideDY/2.; -AECT_SupInnWheel_SideDY/2.-AECT_SupInnWheel_Yoff; AECT_SupWheel_SpecBox_DZ/2." />
+</composition>
+
+<composition  name="ECT_SuppoWheels" >
+  <posXYZ  volume="ECT_SupWheel_Right"     X_Y_Z="  0. ; AECT_SupWheel_YPos ; 0. " />
+  <posXYZ  volume="ECT_SupWheel_Left"      X_Y_Z="  0. ; AECT_SupWheel_YPos ; 0. " />
+</composition>
+
+<composition  name="ECT_Toroid_single" >
+  <mposPhi  volume="ECT_ColdMass"  ncopy="8" />
+  <mposWedge  volume="ECT_TS_ThermalShield_default" wedge_number="8"  sectors=" 0; 1; 1; 1; 0; 1; 1; 1"  >
+    <sector  value="1"  step="1"  />
+  </mposWedge>
+  <posRPhiZ   volume="ECT_TS_ThermalShield_special"  R_Phi_Z=" 0. ; -90. ; 0. " >
+    <sector  value="1"  />
+  </posRPhiZ>
+  <posRPhiZ   volume="ECT_TS_ThermalShield_special"  R_Phi_Z=" 0. ;-270. ; 0. " >
+    <sector  value="5"  />
+  </posRPhiZ>
+  <posXYZ  volume="ECT_TS_CentralTube"/>
+  <mposWedge  volume="ECT_JTV_Shielding_default" wedge_number="8"  sectors=" 0; 1; 1; 1; 0; 1; 1; 1"  >
+    <sector  value="1"  step="1"  />
+  </mposWedge>
+  <posRPhiZ   volume="ECT_JTV_Shielding_special"  R_Phi_Z=" 0. ; -90. ; 0. " >
+    <sector  value="1"  />
+  </posRPhiZ>
+  <posRPhiZ   volume="ECT_JTV_Shielding_special"  R_Phi_Z=" 0. ;-270. ; 0. " >
+    <sector  value="5"  />
+  </posRPhiZ>
+  <mposWedge  volume="ECT_EV_Envelop_default"  wedge_number="8"  sectors=" 1; 1; 1; 1; 1; 0; 0; 1"  >
+    <sector  value="1"  step="1"  />
+  </mposWedge>
+  <posRPhiZ   volume="ECT_EV_Envelop_special_Sector6"  R_Phi_Z=" 0. ; 135. ; 0. " >
+    <sector  value="6"  />
+  </posRPhiZ>
+  <posRPhiZ   volume="ECT_EV_Envelop_special_Sector7"  R_Phi_Z=" 0. ; 180. ; 0. " >
+    <sector  value="7"  />
+  </posRPhiZ>
+  <mposWedge  volume="ECT_EV_AlignTube_default" wedge_number="8"  sectors=" 0; 1; 1; 1; 0; 1; 1; 1"  >
+    <sector  value="1"  step="1"  />
+  </mposWedge>
+  <posRPhiZ   volume="ECT_EV_AlignTube_special"  R_Phi_Z=" 0. ; 22.5 ; 0. " >
+    <sector  value="1"  />
+  </posRPhiZ>
+  <posRPhiZ   volume="ECT_EV_AlignTube_special"  R_Phi_Z=" 0. ;202.5 ; 0. " >
+    <sector  value="5"  />
+  </posRPhiZ>
+  <posXYZ  volume="ECT_EV_CentralTube"/>
+  <posXYZ  volume="ECT_JTV_FrontRing" />
+  <posXYZ  volume="ECT_JTV_BackRing" X_Y_Z=" 0.; 0.; GENV_Eps"/>
+  <posXYZ  volume="ECT_EV_Yoke" X_Y_Z=" 0.; 0.;  AECT_CTYpoZ_CentTubeYokeposZ"/>
+  <posXYZ  volume="ECT_EV_Yoke" X_Y_Z=" 0.; 0.; -AECT_CTYpoZ_CentTubeYokeposZ"/>
+  <posRPhiZ    volume="ECT_EV_SideAttachment"  R_Phi_Z=" AECT_EVEPid_EVEndPlateindist - (AECT_EVSSAh_EVSideSupporthight + AECT_EVOSit_EVOutShellinnthick + AECT_EVOSio_EVOutShellinneroff)/2. ;  22.5 ; 0. " />
+  <posRPhiZ    volume="ECT_EV_SideAttachment"  R_Phi_Z=" AECT_EVEPid_EVEndPlateindist - (AECT_EVSSAh_EVSideSupporthight + AECT_EVOSit_EVOutShellinnthick + AECT_EVOSio_EVOutShellinneroff)/2. ; 202.5 ; 0. " />
+  <posRPhiZ    volume="ECT_EV_FrontAttachment" R_Phi_Z=" AECT_EVTSRa_EVTopSupportRadius + (AECT_EVTSAl_EVTopSupportlength)/2. ;  22.5 ;  (AECT_EVOShZ_EVOutShellholeZwid - AECT_EVTSAh_EVTopSupporthight)/2." />
+  <posRPhiZ    volume="ECT_EV_FrontAttachment" R_Phi_Z=" AECT_EVTSRa_EVTopSupportRadius + (AECT_EVTSAl_EVTopSupportlength)/2. ; 202.5 ;  (AECT_EVOShZ_EVOutShellholeZwid - AECT_EVTSAh_EVTopSupporthight)/2." />
+  <posRPhiZ    volume="ECT_EV_BackAttachment"  R_Phi_Z=" AECT_EVTSRa_EVTopSupportRadius + (AECT_EVTSAl_EVTopSupportlength)/2. ;  22.5 ; -(AECT_EVOShZ_EVOutShellholeZwid - AECT_EVTSAh_EVTopSupporthight)/2." />
+  <posRPhiZ    volume="ECT_EV_BackAttachment"  R_Phi_Z=" AECT_EVTSRa_EVTopSupportRadius + (AECT_EVTSAl_EVTopSupportlength)/2. ; 202.5 ; -(AECT_EVOShZ_EVOutShellholeZwid - AECT_EVTSAh_EVTopSupporthight)/2." />
+  <mposPhi  volume="ECT_EV_CryoStop_outside"  ncopy="8" />
+  <mposPhi  volume="ECT_EV_CryoStop_inside"   ncopy="8" />
+  <posXYZ  volume="ECT_ServTur"  X_Y_Z=" 0. ; AECT_SrvTu1He_ServTur1Height/2.  + AECT_EVEPod_EVEndPlateoutdist - AECT_EVOSio_EVOutShellinneroff; -AECT_EVOShZ_EVOutShellholeZwid/2.+AECT_ServTuZoff_ServTurZoffset" />
+  <posXYZ  volume="ECT_ServiceTower"  X_Y_Z=" 0. ; ECST_SToYpos ; -ECST_SToThic2 - AECT_EVOShZ_EVOutShellholeZwid/2. + AECT_ServTuZoff_ServTurZoffset - ECST_SToDzBot/2. "  rot="0. ; 0. ; 0. " /> 
+ <posXYZ  volume="ECT_SuppoWheels" />
+</composition>
+
+<composition  name="ECT_ToroidN" >
+  <posXYZ  volume="ECT_Toroid_single"    X_Y_Z=" 0. ; 0. ;  -AECT_Toroid_ZPosition" >
+    <ring  value="-1" />
+  </posXYZ>
+</composition>
+
+<composition  name="ECT_ToroidP" >
+  <posXYZ  volume="ECT_Toroid_single"    X_Y_Z=" 0. ; 0. ;   AECT_Toroid_ZPosition"  rot="0. ; 180. ; 0. ">
+    <ring  value=" 1" />
+  </posXYZ>
+</composition>
+
+<composition  name="ECT_Toroids" >
+  <posXYZ  volume="ECT_ToroidN"    X_Y_Z=" 0. ; 0. ; 0." />
+  <posXYZ  volume="ECT_ToroidP"    X_Y_Z=" 0. ; 0. ; 0." />
+</composition>
+
+<!-- gvxy status 10/25 are converted to subtractions -->
+
+</section>
+
+
+<section name       = "Atlas Barrel Toroidal Magnets"
+         version    = "7.0"
+         date       = "01-01-10, 28 November 2002"
+         author     = "Jochen Meyer, Laurent Chevalier, Marc Virchaux, Daniel Pomarede"
+         top_volume = "BAR_Toroid">
+
+<!--     name       =  Atlas Barrel Toroidal Magnets section name       = "Magnets"   -->
+
+<!--  reviewed/corrected in March 2010 by Jochen Meyer 
+      comment: * blueprint references are available on the twiki Pages
+               * still some details are missing                       -->
+
+<!--  **************************************************************
+      **************************************************************
+      ***                                                       ****
+      ***             Atlas Barrel Toroid (BAR)                 ****
+      ***                                                       ****
+      **************************************************************
+      **************************************************************  -->
+
+
+<!-- Atlas Barrel toroid Cryostat -->
+
+<var    name="ABRT_CryoRmin"      value="  4720." />       <!-- atltbw__0002-vAD 4745. -->
+<var    name="ABRT_CryoRmax"      value=" 10030." />       <!-- atltbw__0002-vAD 10065. -->
+<var    name="ABRT_CryoZmax"      value=" 12630." />       <!-- atltbyv_0003-vAE -->
+<var    name="ABRT_CryoRcur"      value="   821." />       <!-- atltbyv_0003-vAE -->
+<var    name="ABRT_CryoRadi_Radius"    value="   550." />  <!-- atltbyv_0003-vAE -->
+<var    name="ABRT_CryoRadT_RadThick"  value="    15." />  <!-- not confirmed -->
+
+<!-- Cryostat Attachment -->
+
+<!-- BEGIN confirmation with atltbyv_0010-vAB (if no other comment) -->
+<var    name="ABRT_CryAttD0_CryoAttDiam0"  value="  550." />
+<var    name="ABRT_CryAttD1_CryoAttDiam1"  value="  439." />
+<var    name="ABRT_CryAttAl_CryoAttAlfa"   value="    8." />     <!-- atltbwv_0029-vAB -->
+<var    name="ABRT_CryAttXh_CryoAttXhigh"  value=" 1490." />
+<var    name="ABRT_CryAttTh_CryoAttThick"  value="   10." />
+<var    name="ABRT_CryAttRx_CryoAttRmax"   value=" ABRT_CryoRmin + ABRT_CryoRadi_Radius" />
+<var    name="ABRT_CryAttSe_CryoAttSlimend"   value="  557." />
+<!-- END confirmation with atltbyv_0010-vAB -->
+
+<!-- BEGIN confirmation with atltbyv_0007-vAC (if no other comment) -->
+<var    name="ABRT_CryAtWiY_CryoAttWingY"     value="  600." />
+<var    name="ABRT_CryAtWXp_CryoAttWingXp"    value="  590." />
+<var    name="ABRT_CryAtWXn_CryoAttWingXn"    value="  -41." />
+<var    name="ABRT_CryAtWBo_CryoAttWingBoss"  value="   40." />
+<var    name="ABRT_CryAtWTh_CryoAttWingThick" value="   20." />  <!-- atltbyv_0004-vAC -->
+<var    name="ABRT_CryAtWZe_CryoAttWingZesp"  value="  590." />  <!-- atltbyv_0003-vAE --> <!-- atltbyv_0004-vAC -->
+<var    name="ABRT_CryAtWRa_CryoAttWingRad"   value="  570." />
+<var    name="ABRT_CryAtWYc_CryoAttWingYcut"  value="  150." />
+<!-- END confirmation with atltbyv_0007-vAC -->
+
+<!-- Cryostat Ribs -->
+
+<!-- BEGIN confirmation with atltbyv_0004-vAC (if no other comment) -->
+<var    name="ABRT_CryRibYw_CryoRibYwid"      value="  500." />
+<var    name="ABRT_CryRibZl_CryoRibZlen"      value="  290." />  <!-- approx. since length is varying for each rib -->
+<var    name="ABRT_CryRibTh_CryoRibThick"     value="   10." />
+<var    name="ABRT_CryRiWYp_CryoRibWingYp"    value="  436." />
+<var    name="ABRT_CryRiWYn_CryoRibWingYn"    value=" 1100." />
+<var    name="ABRT_CryRiWXp_CryoRibWingXp"    value="  430." />
+<var    name="ABRT_CryRiWTh_CryoRibWingThick" value="   10." />
+<var    name="ABRT_CryRiWXc_CryoRibWingXncut" value="   75." />
+<var    name="ABRT_CryRiWAn_CryoRibWingAngle" value="   62." />
+<var    name="ABRT_CryRiWXn_CryoRibWingXn"    value=" -tan(ABRT_CryRiWAn_CryoRibWingAngle*GENV_PiS180)*(ABRT_CryRiWYn_CryoRibWingYn - ABRT_CryRiWYp_CryoRibWingYp)/2. + ABRT_CryRiWXp_CryoRibWingXp " />
+<!-- END confirmation with atltbyv_0004-vAC -->
+ 
+<!-- Cryostat Ring -->
+
+<var    name="ABRT_CryRngRm_CryoRingRmed"   value="  8790." />  <!-- atltbw__0002-vAD-->
+<var    name="ABRT_CryRngZm_CryoRingZmed"   value=" -1030." />  <!-- atltbyv_0003-vAE -->
+<var    name="ABRT_CryRngRa_CryoRingRadius" value="   340." />  <!-- atltbyv_0004-vAC -->
+
+
+<!-- Struts -->
+<!-- BEGIN confirmation with atltbws_0023-vAA (if no other comment) -->
+<var    name="ABRT_StrtYlen"       value="  5690." />
+<var    name="ABRT_StrtZwid_StrutZwidth"     value="   500." />
+<var    name="ABRT_StrtRthi_StrutRthick"     value="    50." />
+<var    name="ABRT_StrtPoff_StrutPlateoff"   value="    50." />
+<var    name="ABRT_StrtPthi_StrutPlatethick" value="    50." />
+<var    name="ABRT_StrtZthi_StrutZthick"     value="    40." />
+<!-- END confirmation with atltbws_0023-vAA -->
+
+<var    name="ABRT_StrWRmax_StrutWingRmax"   value="ABRT_CryoRmax" /> <!-- has to be true, otherwise everything will break down-->
+
+<!-- BEGIN confirmation with atltbyv_0006-vAB (if no other comment) -->
+<var    name="ABRT_StrWYmax_StrutWingYmax"   value="   390." />
+<var    name="ABRT_StrWYmed_StrutWingYmedi"  value="   791." />
+<var    name="ABRT_StrWYRli_StrutWingYRlink" value="   732." />
+<var    name="ABRT_StrWRwid_StrutWingRwidth" value="  1250." />
+<var    name="ABRT_StrWYmin_StrutWingYmin"   value="   245." />
+<var    name="ABRT_StrWZthi_StrutWingZthick" value="    20." />
+<var    name="ABRT_StrWYthi_StrutWingYthick" value="    50." />
+<var    name="ABRT_StrWZlen_StrutWingZlen"   value="   430." />
+<var    name="ABRT_StrWYucu_StrutWingYupcut" value="   150." />
+<var    name="ABRT_StrWSPth_StrutWingSmallPlatethick" value="   500." />
+<var    name="ABRT_StrWBPth_StrutWingBigPlatethick"   value="   520." />
+<var    name="ABRT_StrWBPhi_StrutWingBigPlateheight"  value="   700." />
+<!-- END confirmation with atltbyv_0006-vAB -->
+
+<array  name="ABRT_Zvouss"  values=" -10845. ; -8245. ; -5137.5 ; -1712.5 ; 1712.5 ; 5137.5 ; 8245. ; 10845. " />  <!-- atltbyv_0003-vAE -->
+<array  name="ABRT_Zrib"    values=" -9540. ; -6760. ; -3490. ; 0. ; 3490. ; 6760. ; 9540. " />                    <!-- atltbyv_0003-vAE -->
+
+
+
+<!--  Derived variables  -->
+
+<var  name="ABRT_CryRiXhi_CryoRibXhigh"    value="(ABRT_CryoRmax+ABRT_CryoRmin)/2. - ABRT_CryoRmin - ABRT_CryoRadi_Radius" />
+<var  name="ABRT_CryAttXs_CryoAttXsec"     value="(ABRT_CryAttD0_CryoAttDiam0 - 2.*ABRT_CryAttTh_CryoAttThick - ABRT_CryAttD1_CryoAttDiam1)/2./tan(ABRT_CryAttAl_CryoAttAlfa*GENV_PiS180)" />
+<var  name="ABRT_StrWRmed_StrutWingRmedi"  value="(ABRT_StrtYlen + 2.* ( ABRT_StrWYRli_StrutWingYRlink + ABRT_StrWYthi_StrutWingYthick)) / 2. / GENV_Si225" />
+<var  name="ABRT_StrWRmin_StrutWingRmin"   value="ABRT_StrWRmax_StrutWingRmax - ABRT_StrWRwid_StrutWingRwidth" />
+<var  name="ABRT_StrWYlow_StrutWingYlower" value="(ABRT_StrWRmin_StrutWingRmin - ABRT_StrWYmin_StrutWingYmin * GENV_Ta20 - ABRT_StrWRmed_StrutWingRmedi + ABRT_StrWYmed_StrutWingYmedi / GENV_Ta225 ) / (GENV_Ta675 - GENV_Ta20)" />
+<var  name="ABRT_StrWRlow_StrutWingRlower" value="GENV_Ta675 * ABRT_StrWYlow_StrutWingYlower + ABRT_StrWRmed_StrutWingRmedi - ABRT_StrWYmed_StrutWingYmedi / GENV_Ta225 " /> 
+<var  name="ABRT_StrWAlow_StrutWingAlower" value="atan((ABRT_StrWRlow_StrutWingRlower-ABRT_StrWRmax_StrutWingRmax + ABRT_StrWRwid_StrutWingRwidth)/(ABRT_StrWYlow_StrutWingYlower-ABRT_StrWYmin_StrutWingYmin))" />
+<var  name="ABRT_StrWAupp_StrutWingAupper" value="atan((ABRT_StrWRmax_StrutWingRmax-ABRT_StrWRmed_StrutWingRmedi)/(ABRT_StrWYmed_StrutWingYmedi-ABRT_StrWYmax_StrutWingYmax))" />
+
+<!--  Description of an Atlas Barrel Cold Mass  -->
+
+<!-- BEGIN confirmation with atltbcc_0002-v0 (if no other comment) -->
+<var  name="ABRT_CoMaRmin_ColdMassRmin"    value=" 4851.1" />  <!-- not confirmed, old GUESS 4857.5 -->
+<var  name="ABRT_CoMaRmax_ColdMassRmax"    value=" 9924.3" />  <!-- not confirmed, old GUESS 9952.5 --> 
+<var  name="ABRT_CoMaZmax_ColdMassZmax"    value="12478.8" />  <!-- warm: 12532.5  --> 
+<var  name="ABRT_CoMaRcuI_ColdMassRcurv"   value=" 1449.8" />  <!-- warm:  1456.   -->
+<var  name="ABRT_CoMaRThi_ColdMassRThick"  value="  791.6" />  <!-- warm:   795.   -->
+<var  name="ABRT_CoMaYThi_ColdMassYThick"  value="  288. " />  <!-- warm:   288.   (here warm value used because of ABRT_BielAtTh_BiellAttThick=288. too) -->
+<var  name="ABRT_CoMaRibZ_ColdMassRibZ"    value="   99.6" />  <!-- warm:   100.   -->
+<var  name="ABRT_CoMaRanL_ColdMassRanglen" value="  385.6" />  <!-- warm:   387.2  -->
+<!-- END confirmation with atltbcc_0002-v0 -->
+
+<box  name="BAR_ColdMassAlongZ"  material="Aluminium8"  X_Y_Z="ABRT_CoMaRThi_ColdMassRThick; ABRT_CoMaYThi_ColdMassYThick; 2.*(ABRT_CoMaZmax_ColdMassZmax - ABRT_CoMaRcuI_ColdMassRcurv) - GENV_Eps" />
+<box  name="BAR_ColdMassAlongR"  material="Aluminium8"  X_Y_Z="ABRT_CoMaRmax_ColdMassRmax - ABRT_CoMaRmin_ColdMassRmin - 2.*ABRT_CoMaRcuI_ColdMassRcurv - GENV_Eps; ABRT_CoMaYThi_ColdMassYThick; ABRT_CoMaRThi_ColdMassRThick " />
+
+<gvxy  name="BAR_CornerAngled_Cut"  material="Aluminium8"  dZ="ABRT_CoMaYThi_ColdMassYThick + GENV_Eps" >
+  <gvxy_point  X_Y=" ABRT_CoMaRThi_ColdMassRThick; -GENV_Eps " />
+  <gvxy_point  X_Y=" ABRT_CoMaRThi_ColdMassRThick; ABRT_CoMaRcuI_ColdMassRcurv - ABRT_CoMaRThi_ColdMassRThick - ABRT_CoMaRanL_ColdMassRanglen" />
+  <gvxy_point  X_Y=" ABRT_CoMaRThi_ColdMassRThick + ABRT_CoMaRanL_ColdMassRanglen; ABRT_CoMaRcuI_ColdMassRcurv - ABRT_CoMaRThi_ColdMassRThick" />
+  <gvxy_point  X_Y=" ABRT_CoMaRcuI_ColdMassRcurv + GENV_Eps; ABRT_CoMaRcuI_ColdMassRcurv - ABRT_CoMaRThi_ColdMassRThick" />
+  <gvxy_point  X_Y=" ABRT_CoMaRcuI_ColdMassRcurv + GENV_Eps; -GENV_Eps " />
+</gvxy>
+<tubs   name="BAR_CornerRound"  material="Aluminium8"  Rio_Z=" 0. ; ABRT_CoMaRcuI_ColdMassRcurv ; ABRT_CoMaYThi_ColdMassYThick"  profile="90.; 90." nbPhi="8" />
+<subtraction name="BAR_Corner" >
+   <posXYZ  volume="BAR_CornerRound"   X_Y_Z=" ABRT_CoMaRcuI_ColdMassRcurv; 0. ; 0.  "  rot=" 90. ; 0. ; 0. "/> 
+   <posXYZ  volume="BAR_CornerAngled_Cut"  X_Y_Z=" 0. ; 0. ; 0. "  rot=" 90. ; 0. ; 0. "/> 
+</subtraction>
+
+<box   name="BAR_ColdMassRib"     material="Aluminium8"  X_Y_Z=" ABRT_CoMaRmax_ColdMassRmax - ABRT_CoMaRmin_ColdMassRmin - 2.*ABRT_CoMaRThi_ColdMassRThick - GENV_Eps; ABRT_CoMaYThi_ColdMassYThick; ABRT_CoMaRibZ_ColdMassRibZ" />
+
+<composition        name="BAR_ColdMassCoil" >
+  <posXYZ    volume="BAR_ColdMassAlongZ"   X_Y_Z="ABRT_CoMaRmin_ColdMassRmin + ABRT_CoMaRThi_ColdMassRThick/2. ; 0; 0."  />
+  <posXYZ    volume="BAR_ColdMassAlongZ"   X_Y_Z="ABRT_CoMaRmax_ColdMassRmax - ABRT_CoMaRThi_ColdMassRThick/2. ; 0; 0."  />
+  <posXYZ    volume="BAR_ColdMassAlongR"   X_Y_Z="(ABRT_CoMaRmax_ColdMassRmax+ABRT_CoMaRmin_ColdMassRmin)/2.; 0;  ABRT_CoMaZmax_ColdMassZmax - ABRT_CoMaRThi_ColdMassRThick/2."  />
+  <posXYZ    volume="BAR_ColdMassAlongR"   X_Y_Z="(ABRT_CoMaRmax_ColdMassRmax+ABRT_CoMaRmin_ColdMassRmin)/2.; 0; -ABRT_CoMaZmax_ColdMassZmax + ABRT_CoMaRThi_ColdMassRThick/2."  />
+  <posXYZ    volume="BAR_Corner"           X_Y_Z="ABRT_CoMaRmin_ColdMassRmin ; 0.;  ABRT_CoMaZmax_ColdMassZmax - ABRT_CoMaRcuI_ColdMassRcurv"  rot=" 0. ;  0. ; 0. " />
+  <posXYZ    volume="BAR_Corner"           X_Y_Z="ABRT_CoMaRmin_ColdMassRmin + ABRT_CoMaRcuI_ColdMassRcurv ; 0.; -ABRT_CoMaZmax_ColdMassZmax"  rot=" 0. ; 270. ; 0. " />
+  <posXYZ    volume="BAR_Corner"           X_Y_Z="ABRT_CoMaRmax_ColdMassRmax ; 0.; -ABRT_CoMaZmax_ColdMassZmax + ABRT_CoMaRcuI_ColdMassRcurv"  rot=" 0. ; 180. ; 0. " />
+  <posXYZ    volume="BAR_Corner"           X_Y_Z="ABRT_CoMaRmax_ColdMassRmax - ABRT_CoMaRcuI_ColdMassRcurv; 0.;  ABRT_CoMaZmax_ColdMassZmax"  rot=" 0. ;  90. ; 0. " />
+  <foreach  index="Irib"  begin="0"  loops="7" >
+    <posXYZ  volume="BAR_ColdMassRib"      X_Y_Z=" (ABRT_CoMaRmax_ColdMassRmax+ABRT_CoMaRmin_ColdMassRmin)/2.; 0. ; ABRT_Zrib[Irib] " />
+  </foreach>
+</composition>
+
+
+<!--  Description of an Atlas Barrel toroid Biellette  -->
+
+<!-- BEGIN confirmation with atltbys_0002-v0 (if no other comment) -->
+<var  name="ABRT_BielYhei_BiellYheight"  value= "1099." />  <!-- approx., explanation see twikipage -->
+<var  name="ABRT_BielYso1_BiellYsole1"   value= "  27." />  <!-- approx., explanation see twikipage -->
+<var  name="ABRT_BielXsol_BiellXsole"    value= " 130." />
+<var  name="ABRT_BielXth1_BiellXthick1"  value= "  20." />
+<var  name="ABRT_BielXth2_BiellXthick2"  value= "  30." />
+<var  name="ABRT_BielZth1_BiellZthick1"  value= " 240." />
+<var  name="ABRT_BielRHol_BiellRadHole"  value= "  62." />
+<var  name="ABRT_BielYcHo_BiellYcenHole" value= " 120." />
+<var  name="ABRT_BielElen_BiellEdgeLen"  value= " 120." />
+<var  name="ABRT_BielYki1_BiellYKink1"   value= " 484." />
+<var  name="ABRT_BielAki1_BiellAngKink1" value= "  10." />
+<var  name="ABRT_BielAppr_BiellApprox"   value= "  21." />  <!-- approx., explanation see twikipage -->
+<!-- END confirmation with atltbys_0002-v0 -->
+
+<var  name="ABRT_BielYso2_BiellYsole2"   value= " GENV_Ta15 * (ABRT_BielXsol_BiellXsole - ABRT_BielXth1_BiellXthick1)/2. + ABRT_BielYso1_BiellYsole1" />
+<var  name="ABRT_BielYXHo_BiellXYHole"   value= " ABRT_BielElen_BiellEdgeLen * ( -1 + 2.*GENV_Si45 )" />
+
+<!--  Aluminium7 to be replaced by Titanium7 !!!!  -->
+<gvxysx   name="BAR_Biellette_1"   material="Aluminium7"  dZ="ABRT_BielZth1_BiellZthick1" >
+  <gvxy_point  X_Y=" ABRT_BielYXHo_BiellXYHole     ; 0. " />
+  <gvxy_point  X_Y=" ABRT_BielElen_BiellEdgeLen    ; ABRT_BielElen_BiellEdgeLen - ABRT_BielYXHo_BiellXYHole " />
+  <gvxy_point  X_Y=" ABRT_BielElen_BiellEdgeLen    ; ABRT_BielElen_BiellEdgeLen + 49.7 " />
+  <gvxy_point  X_Y=" ABRT_BielXth2_BiellXthick2/2. ; ABRT_BielElen_BiellEdgeLen + 49.7 + (ABRT_BielZth1_BiellZthick1 - ABRT_BielXth2_BiellXthick2)/(2. * tan(40.0*GENV_PiS180)) " />
+  <gvxy_point  X_Y=" ABRT_BielXth2_BiellXthick2/2. ; ABRT_BielYhei_BiellYheight - ABRT_BielYki1_BiellYKink1 + ABRT_BielAppr_BiellApprox - (ABRT_BielXth2_BiellXthick2 - ABRT_BielXth1_BiellXthick1)/tan(ABRT_BielAki1_BiellAngKink1*GENV_PiS180) " />
+  <gvxy_point  X_Y=" ABRT_BielXth1_BiellXthick1/2. ; ABRT_BielYhei_BiellYheight - ABRT_BielYki1_BiellYKink1 + ABRT_BielAppr_BiellApprox" />
+  <gvxy_point  X_Y=" ABRT_BielXth1_BiellXthick1/2. ; ABRT_BielYhei_BiellYheight - ABRT_BielYso2_BiellYsole2 " />
+  <gvxy_point  X_Y=" ABRT_BielXsol_BiellXsole/2.   ; ABRT_BielYhei_BiellYheight - ABRT_BielYso1_BiellYsole1 " />
+  <gvxy_point  X_Y=" ABRT_BielXsol_BiellXsole/2.   ; ABRT_BielYhei_BiellYheight " />
+</gvxysx>
+<tubs     name="BAR_Biellette_2"  material="Aluminium7"  Rio_Z="0.; ABRT_BielRHol_BiellRadHole; 300."  nbPhi="16" />
+<gvxy   name="BAR_Biellette_3"  material="Aluminium7"  dZ="500." >
+  <gvxy_point  X_Y="  70.            ;  -GENV_Eps " />
+  <gvxy_point  X_Y="  70.            ;       246. " />
+  <gvxy_point  X_Y=" ABRT_BielZth1_BiellZthick1/2. + GENV_Eps ;       358. " />
+  <gvxy_point  X_Y=" ABRT_BielZth1_BiellZthick1/2. + GENV_Eps ;  -GENV_Eps " />
+</gvxy>
+<subtraction  name="BAR_Biellette"  >
+   <posXYZ  volume="BAR_Biellette_1"  />
+   <posXYZ  volume="BAR_Biellette_2"  X_Y_Z=" 0. ; ABRT_BielYcHo_BiellYcenHole ; 0. "  />
+   <posXYZ  volume="BAR_Biellette_3"  rot=" 0. ;  90. ; 0. "  />
+   <posXYZ  volume="BAR_Biellette_3"  rot=" 0. ; -90. ; 0. "  />
+</subtraction>
+
+
+<!-- BEGIN confirmation with atltbcc_0006-v0 (if no other comment) -->
+<var  name="ABRT_BielAtL1_BiellAttLeng1"  value= " 575. " />
+<var  name="ABRT_BielAtL2_BiellAttLeng2"  value= " 280. " />
+<var  name="ABRT_BielAtTh_BiellAttThick"  value= " 288. " />
+<var  name="ABRT_BielAtHe_BiellAttHeight" value= " 147.5" />
+<!-- END confirmation with atltbcc_0006-v0 -->
+
+<trd    name="BAR_BiellAttFull"    material="Aluminium8"  Xmp_Ymp_Z=" ABRT_BielAtL1_BiellAttLeng1 ; ABRT_BielAtL2_BiellAttLeng2 ; ABRT_BielAtTh_BiellAttThick ; ABRT_BielAtTh_BiellAttThick ; ABRT_BielAtHe_BiellAttHeight " />
+<gvxysx name="BAR_BiellAttHol"  material="Aluminium8"  dZ="2.*ABRT_BielAtTh_BiellAttThick" >
+  <gvxy_point  X_Y=" ABRT_BielXsol_BiellXsole*0.6       ;       -GENV_Eps       " />
+  <gvxy_point  X_Y=" ABRT_BielXsol_BiellXsole*0.6      ; ABRT_BielYso1_BiellYsole1        " />
+  <gvxy_point  X_Y=" ABRT_BielXth1_BiellXthick1*0.7    ; ABRT_BielYso2_BiellYsole2+GENV_Eps    " />
+  <gvxy_point  X_Y=" ABRT_BielXth1_BiellXthick1*0.7    ; ABRT_BielAtHe_BiellAttHeight+GENV_Eps " />
+</gvxysx>
+<subtraction  name="BAR_BiellAtt" >
+  <posXYZ  volume="BAR_BiellAttFull"  X_Y_Z=" ABRT_BielAtHe_BiellAttHeight/2. ; 0. ; 0. "  rot=" 0. ; 90. ; 0. " />
+  <posXYZ  volume="BAR_BiellAttHol"   rot=" 90. ; 90. ; 0. " />
+</subtraction>
+
+<composition  name="BAR_ColdMass_Sector" >
+  <posXYZ  volume="BAR_ColdMassCoil" X_Y_Z=" 0. ; 0. ; 0. "  rot="   0. ; 0. ;   0. " />
+  <foreach  index="Ivouss"  begin="0"  loops="8" >
+    <posXYZ  volume="BAR_Biellette"    X_Y_Z=" ABRT_CoMaRmin_ColdMassRmin+ABRT_CoMaRThi_ColdMassRThick+ABRT_BielYhei_BiellYheight+GENV_Eps ; 0. ; ABRT_Zvouss[Ivouss] "  rot=" 0. ; 90. ;  90. " />
+    <posXYZ  volume="BAR_BiellAtt"     X_Y_Z=" ABRT_CoMaRmin_ColdMassRmin+ABRT_CoMaRThi_ColdMassRThick+GENV_Eps ; 0. ; ABRT_Zvouss[Ivouss] " />
+  </foreach>
+</composition>
+
+
+
+
+<!--  Description of the Atlas Barrel toroid Cryostat  -->
+
+<!-- basic CryoTube volumes, uncut -->
+<tubs name="BAR_CryoTubAlongZBase" material="Iron1" Rio_Z="ABRT_CryoRadi_Radius - ABRT_CryoRadT_RadThick; ABRT_CryoRadi_Radius; 2.*ABRT_CryoZmax - 2.*ABRT_CryoRadi_Radius - ABRT_CryoRcur*sqrt(2.) + 2.*GENV_Ta225*ABRT_CryoRadi_Radius"   nbPhi="25" />
+<tubs name="BAR_CryoTubAlongRBase" material="Iron1" Rio_Z="ABRT_CryoRadi_Radius - ABRT_CryoRadT_RadThick; ABRT_CryoRadi_Radius; ABRT_CryoRmax - ABRT_CryoRmin - 2.*ABRT_CryoRadi_Radius - ABRT_CryoRcur*sqrt(2.) + 2.*GENV_Ta225*ABRT_CryoRadi_Radius"   nbPhi="32" />
+<tubs name="BAR_CryoTubCornerBase" material="Iron1" Rio_Z="ABRT_CryoRadi_Radius - ABRT_CryoRadT_RadThick; ABRT_CryoRadi_Radius; ABRT_CryoRcur + 2.*GENV_Ta225*ABRT_CryoRadi_Radius"   nbPhi="32" />
+
+<!-- basic CryoRib volumes, uncut -->
+<box  name="BAR_CryoRibOut"  material="Iron1"  X_Y_Z=" ABRT_CryoRmax - ABRT_CryoRmin - 2.* ABRT_CryoRadi_Radius               ; ABRT_CryRibYw_CryoRibYwid                               ; ABRT_CryRibZl_CryoRibZlen                     " />
+<box  name="BAR_CryoRibIn"   material="Iron6"  X_Y_Z=" ABRT_CryoRmax - ABRT_CryoRmin - 2.* ABRT_CryoRadi_Radius + 2.*GENV_Eps ; ABRT_CryRibYw_CryoRibYwid-2.*ABRT_CryRibTh_CryoRibThick ; ABRT_CryRibZl_CryoRibZlen-2.*ABRT_CryRibTh_CryoRibThick " />
+
+<!-- basic CryoAtt volumes, uncut -->
+<pcon  name="BAR_CryoAttOut"  material="Iron1"  nbPhi="20" >
+  <polyplane  Rio_Z="0. ; ABRT_CryAttD0_CryoAttDiam0/2. ; 0. " />
+  <polyplane  Rio_Z="0. ; ABRT_CryAttD0_CryoAttDiam0/2. ; ABRT_CryAttXh_CryoAttXhigh - ABRT_CryAttXs_CryoAttXsec - ABRT_CryAttSe_CryoAttSlimend" />
+  <polyplane  Rio_Z="0. ; ABRT_CryAttD1_CryoAttDiam1/2.+ABRT_CryAttTh_CryoAttThick ; ABRT_CryAttXh_CryoAttXhigh - ABRT_CryAttSe_CryoAttSlimend" />
+  <polyplane  Rio_Z="0. ; ABRT_CryAttD1_CryoAttDiam1/2.+ABRT_CryAttTh_CryoAttThick ; ABRT_CryAttXh_CryoAttXhigh " />
+</pcon>
+<pcon  name="BAR_CryoAttIn"   material="Iron6"  nbPhi="20" >
+  <polyplane  Rio_Z="0. ; ABRT_CryAttD0_CryoAttDiam0/2.-ABRT_CryAttTh_CryoAttThick   ;  -GENV_Eps " />
+  <polyplane  Rio_Z="0. ; ABRT_CryAttD0_CryoAttDiam0/2.-ABRT_CryAttTh_CryoAttThick   ;  ABRT_CryAttXh_CryoAttXhigh - ABRT_CryAttXs_CryoAttXsec - ABRT_CryAttSe_CryoAttSlimend - ABRT_CryAttTh_CryoAttThick*tan(ABRT_CryAttAl_CryoAttAlfa*GENV_PiS180/2.) " />
+  <polyplane  Rio_Z="0. ; ABRT_CryAttD1_CryoAttDiam1/2.   ;  ABRT_CryAttXh_CryoAttXhigh - ABRT_CryAttSe_CryoAttSlimend-ABRT_CryAttTh_CryoAttThick*tan(ABRT_CryAttAl_CryoAttAlfa*GENV_PiS180/2.) " />
+  <polyplane  Rio_Z="0. ; ABRT_CryAttD1_CryoAttDiam1/2.   ;  ABRT_CryAttXh_CryoAttXhigh + GENV_Eps " />
+</pcon>
+
+<!-- CryoTube cut volumes -->
+<box  name="BAR_CryoTubCutBox" material="Iron1" X_Y_Z="2.*ABRT_CryoRadi_Radius/GENV_Co225; 2.*ABRT_CryoRadi_Radius/GENV_Co225; 2.*ABRT_CryoRadi_Radius/GENV_Co225 " />
+<tubs name="BAR_CryoTubCut"    material="Iron1" Rio_Z=" 0. ; ABRT_CryoRadi_Radius+10.*GENV_Eps ; 2.*ABRT_CryRngRa_CryoRingRadius+2.*ABRT_CryRibZl_CryoRibZlen+ABRT_StrWZlen_StrutWingZlen "  nbPhi="32" />
+
+<!-- Begin of CryoRibWing -->
+<gvxysx  name="BAR_CryoRibWingA"  material="Iron4"  dZ=" ABRT_CryRibZl_CryoRibZlen+2.*ABRT_CryRiWTh_CryoRibWingThick+2.*GENV_Eps" >
+  <gvxy_point  X_Y=" ABRT_CryRiWYp_CryoRibWingYp/2. ; ABRT_CryRiWXp_CryoRibWingXp " />
+  <gvxy_point  X_Y=" ABRT_CryRiWYn_CryoRibWingYn/2. ; ABRT_CryRiWXn_CryoRibWingXn " />
+  <gvxy_point  X_Y=" ABRT_CryRiWYn_CryoRibWingYn/2. ; -ABRT_CryoRadi_Radius+ABRT_CryRiWXc_CryoRibWingXncut " />
+</gvxysx>
+<box     name="BAR_CryoRibWingB"  material="Iron1"  X_Y_Z=" 4.*ABRT_CryoRadi_Radius ; 4.*ABRT_CryoRadi_Radius ; ABRT_CryRibZl_CryoRibZlen+2.*GENV_Eps " />
+<subtraction  name="BAR_CryoRibWing" >
+  <posXYZ  volume="BAR_CryoRibWingA" />
+  <posXYZ  volume="BAR_CryoRibWingB" />
+  <posXYZ  volume="BAR_CryoTubCut"  X_Y_Z=" 0. ; -ABRT_CryoRadi_Radius - 5.*GENV_Eps ; 0. " />
+</subtraction>
+<!-- End of CryoRibWing -->
+
+<!-- Begin of CryoAttWing -->
+<gvxysx  name="BAR_CryoAttWingA"  material="Iron4"  dZ=" ABRT_CryAtWZe_CryoAttWingZesp+2.*ABRT_CryAtWTh_CryoAttWingThick" >
+  <gvxy_point X_Y=" ABRT_CryAtWiY_CryoAttWingY-ABRT_CryAtWBo_CryoAttWingBoss ; ABRT_CryAtWXp_CryoAttWingXp " />
+  <gvxy_point X_Y=" ABRT_CryAtWiY_CryoAttWingY ; ABRT_CryAtWXp_CryoAttWingXp-ABRT_CryAtWBo_CryoAttWingBoss " />
+  <gvxy_point X_Y=" ABRT_CryAtWiY_CryoAttWingY ; ABRT_CryAtWXn_CryoAttWingXn " />
+  <gvxy_point X_Y=" ABRT_CryAtWiY_CryoAttWingY-(2*ABRT_CryoRadi_Radius+ABRT_CryAtWXn_CryoAttWingXn)*GENV_Ta225 ;-2.*ABRT_CryoRadi_Radius " />
+</gvxysx>
+<box     name="BAR_CryoAttWingB"  material="Iron1"  X_Y_Z=" 4.*ABRT_CryoRadi_Radius      ; 6.*ABRT_CryoRadi_Radius     ;    ABRT_CryAtWZe_CryoAttWingZesp " />
+<tubs    name="BAR_CryoAttWingC"  material="Iron4"  Rio_Z=" ABRT_CryAtWRa_CryoAttWingRad     ; 2.*ABRT_CryAtWRa_CryoAttWingRad ; 2.*ABRT_CryAtWZe_CryoAttWingZesp "  profile=" 202.5 ; 135. "  nbPhi="16" />
+<box     name="BAR_CryoAttWingD"  material="Iron1"  X_Y_Z=" 2.*ABRT_CryAtWYc_CryoAttWingYcut ; 2.*ABRT_CryoRadi_Radius     ; 3.*ABRT_CryAtWZe_CryoAttWingZesp " />
+<subtraction  name="BAR_CryoAttWing" >
+  <posXYZ volume="BAR_CryoAttWingA" />
+  <posXYZ volume="BAR_CryoAttWingB" />
+  <posXYZ volume="BAR_CryoAttWingC" />
+  <posXYZ volume="BAR_CryoTubCut"   />
+  <posXYZ volume="BAR_CryoAttWingD"  X_Y_Z=" 0. ; -ABRT_CryoRadi_Radius ; 0. " />
+</subtraction>
+<!-- End of CryoAttWing -->
+<!-- laurent -->
+<!-- Begin of CryoTube volumes including cuts -->
+<subtraction  name="BAR_CryoTubAlongZ_Down" >
+  <posXYZ  volume="BAR_CryoTubAlongZBase"  X_Y_Z=" ABRT_CryoRmin + ABRT_CryoRadi_Radius ;                                   0. ;                                        0. "/>
+  <posXYZ  volume="BAR_CryoTubCutBox"      X_Y_Z=" ABRT_CryoRmin + ABRT_CryoRadi_Radius + ABRT_CryoRadi_Radius*GENV_Ta225 ; 0. ;    ABRT_CryoZmax - ABRT_CryoRcur/sqrt(2.) - GENV_Eps " rot=" 0. ;  22.5 ; 0. "/>
+  <posXYZ  volume="BAR_CryoTubCutBox"      X_Y_Z=" ABRT_CryoRmin + ABRT_CryoRadi_Radius + ABRT_CryoRadi_Radius*GENV_Ta225 ; 0. ;  -(ABRT_CryoZmax - ABRT_CryoRcur/sqrt(2.) - GENV_Eps)" rot=" 0. ; -22.5 ; 0. "/>
+  <foreach  index="Irib"  begin="0"  loops="7" >
+    <posXYZ  volume="BAR_CryoRibIn" X_Y_Z=" (ABRT_CryoRmax+ABRT_CryoRmin)/2. ; 0. ; ABRT_Zrib[Irib] " />
+  </foreach>
+  <foreach  index="Ivouss"  begin="0"  loops="8" >
+    <posXYZ  volume="BAR_CryoAttIn" X_Y_Z=" ABRT_CryAttRx_CryoAttRmax ; 0. ; ABRT_Zvouss[Ivouss] "  rot=" 0. ; 90. ; 0. " />
+  </foreach>
+</subtraction>
+
+<subtraction  name="BAR_CryoTubAlongZ_Up" >
+  <posXYZ  volume="BAR_CryoTubAlongZBase"  X_Y_Z=" ABRT_CryoRmax - ABRT_CryoRadi_Radius; 0. ; 0. "/>
+  <posXYZ  volume="BAR_CryoTubCutBox"      X_Y_Z=" ABRT_CryoRmax - ABRT_CryoRadi_Radius - ABRT_CryoRadi_Radius*GENV_Ta225 ; 0. ;    ABRT_CryoZmax - ABRT_CryoRcur/sqrt(2.) - GENV_Eps " rot=" 0. ; -22.5 ; 0. "/>
+  <posXYZ  volume="BAR_CryoTubCutBox"      X_Y_Z=" ABRT_CryoRmax - ABRT_CryoRadi_Radius - ABRT_CryoRadi_Radius*GENV_Ta225 ; 0. ;  -(ABRT_CryoZmax - ABRT_CryoRcur/sqrt(2.) - GENV_Eps)" rot=" 0. ;  22.5 ; 0. "/>
+  <foreach  index="Irib"  begin="0"  loops="7" >
+    <posXYZ  volume="BAR_CryoRibIn" X_Y_Z=" (ABRT_CryoRmax+ABRT_CryoRmin)/2. ; 0. ; ABRT_Zrib[Irib] " />
+  </foreach>
+</subtraction>
+
+<subtraction  name="BAR_CryoTubAlongR_Plus" >
+  <posXYZ  volume="BAR_CryoTubAlongRBase"   X_Y_Z=" (ABRT_CryoRmin + ABRT_CryoRmax)/2.; 0. ; ABRT_CryoZmax - ABRT_CryoRadi_Radius" rot=" 0. ; 90. ; 0. "/>
+  <posXYZ  volume="BAR_CryoTubCutBox"       X_Y_Z=" ABRT_CryoRmin + ABRT_CryoRcur/sqrt(2.) + GENV_Eps; 0. ; ABRT_CryoZmax - ABRT_CryoRadi_Radius - ABRT_CryoRadi_Radius*GENV_Ta225 " rot=" 0. ; -22.5 ; 0. "/>
+  <posXYZ  volume="BAR_CryoTubCutBox"       X_Y_Z=" ABRT_CryoRmax - ABRT_CryoRcur/sqrt(2.) - GENV_Eps; 0. ; ABRT_CryoZmax - ABRT_CryoRadi_Radius - ABRT_CryoRadi_Radius*GENV_Ta225 " rot=" 0. ;  22.5 ; 0. "/>
+</subtraction>
+
+<subtraction  name="BAR_CryoTubCorner" >
+  <posXYZ  volume="BAR_CryoTubCornerBase"  X_Y_Z=" (ABRT_CryoRcur + 2.*GENV_Ta225*ABRT_CryoRadi_Radius)/(2.*sqrt(2.)) + ABRT_CryoRadi_Radius/sqrt(2.) + ABRT_CryoRmin; 0. ; (ABRT_CryoRcur + 2.*GENV_Ta225*ABRT_CryoRadi_Radius)/(2.*sqrt(2.)) - ABRT_CryoRadi_Radius/sqrt(2.) + ABRT_CryoZmax - ABRT_CryoRadi_Radius - ABRT_CryoRcur/sqrt(2.) + GENV_Ta225*ABRT_CryoRadi_Radius" rot=" 0. ; 45. ; 0. "/>
+  <posXYZ  volume="BAR_CryoTubCutBox"      X_Y_Z=" ABRT_CryoRmin + ABRT_CryoRadi_Radius - GENV_Ta225*ABRT_CryoRadi_Radius; 0. ; ABRT_CryoZmax - ABRT_CryoRcur/sqrt(2.) - 2.*ABRT_CryoRadi_Radius" rot=" 0. ; 22.5 ; 0. "/>
+  <posXYZ  volume="BAR_CryoTubCutBox"      X_Y_Z=" ABRT_CryoRmin + 2.*ABRT_CryoRadi_Radius + ABRT_CryoRcur/sqrt(2.) ; 0. ; ABRT_CryoZmax - ABRT_CryoRadi_Radius + ABRT_CryoRadi_Radius*GENV_Ta225" rot=" 0. ; -22.5 ; 0. "/>
+</subtraction>
+<!-- End of CryoTube with cuts -->
+
+<!-- Begin of barrel toroid thermal shielding between CryoTub and Coldmass -->
+<var  name="BAR_ThermShield_OuterAngle"     value="    35.  " />
+<var  name="BAR_ThermShield_InnerAngle"     value="    30.  " />
+
+<var  name="BAR_ThermShield_Thickness"      value="     5.  " />
+<var  name="BAR_ThermShield_YHight"         value="   656.  " />
+<var  name="BAR_ThermShield_OuterXLenght"   value="   152.  " />
+<var  name="BAR_ThermShield_InnerXLenght"   value="   121.  " />
+<var  name="BAR_ThermShield_TopXLenght"     value="   657.  " />
+<var  name="BAR_ThermShield_XOverlap"       value="    35.  " />
+
+<!-- <var  name="BAR_ThermShield_TotalZLength"   value=" 25105.  " /> replaced by Zmax of coldmass to be consistent, arbitrary value added to resolve overlap, difference after adding arbitrary value of 80 is 67.4 mm -->
+<var  name="BAR_ThermShield_TotalZLength"   value=" 2.*ABRT_CoMaZmax_ColdMassZmax + 80. " />
+<!-- <var  name="BAR_ThermShield_TotalXLength"   value="  5135.  " /> replaced by radius diff of coldmass to be consistent, difference 61.8 mm, adding arbitrary value to resolve overlap, afterwards only 11.8mm diff -->
+<var  name="BAR_ThermShield_RadiusMin"      value="ABRT_CoMaRmin_ColdMassRmin - 25. " />
+<var  name="BAR_ThermShield_RadiusMax"      value="ABRT_CoMaRmax_ColdMassRmax + 25. " />
+<var  name="BAR_ThermShield_TotalXLength"   value="BAR_ThermShield_RadiusMax - BAR_ThermShield_RadiusMin" />
+<var  name="BAR_ThermShield_OuterEdgeLen"   value="  1217.4 " />
+
+<var  name="BAR_ThermShield_XLenght"        value="BAR_ThermShield_TopXLenght+BAR_ThermShield_InnerXLenght+BAR_ThermShield_OuterXLenght-2.*BAR_ThermShield_XOverlap" />
+
+<gvxysx name="BAR_ThermShield_AlongZOuter"  material="Aluminium1"  dZ="(BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5.-GENV_Eps">
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - (BAR_ThermShield_InnerXLenght - BAR_ThermShield_XOverlap)/tan( BAR_ThermShield_InnerAngle*GENV_PiS180) ; BAR_ThermShield_XLenght/2." />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. ; BAR_ThermShield_XLenght/2. - BAR_ThermShield_InnerXLenght + BAR_ThermShield_XOverlap" />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. + BAR_ThermShield_Thickness ;  BAR_ThermShield_XLenght/2. - BAR_ThermShield_InnerXLenght + BAR_ThermShield_XOverlap " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. + BAR_ThermShield_Thickness ; -BAR_ThermShield_XLenght/2. + BAR_ThermShield_OuterXLenght - BAR_ThermShield_XOverlap " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. ; -BAR_ThermShield_XLenght/2.+ BAR_ThermShield_OuterXLenght - BAR_ThermShield_XOverlap" />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - (BAR_ThermShield_OuterXLenght - BAR_ThermShield_XOverlap)/tan( BAR_ThermShield_OuterAngle*GENV_PiS180) ; -BAR_ThermShield_XLenght/2." />
+</gvxysx>
+
+<gvxysx name="BAR_ThermShield_AlongZInner"  material="Aluminium1"  dZ="(BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5.-GENV_Eps">
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - (BAR_ThermShield_InnerXLenght - BAR_ThermShield_XOverlap)/tan( BAR_ThermShield_InnerAngle*GENV_PiS180) - BAR_ThermShield_Thickness*tan( BAR_ThermShield_InnerAngle/2.*GENV_PiS180); BAR_ThermShield_XLenght/2. - BAR_ThermShield_Thickness" /> 
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - BAR_ThermShield_Thickness ; BAR_ThermShield_XLenght/2. - BAR_ThermShield_InnerXLenght + BAR_ThermShield_XOverlap - BAR_ThermShield_Thickness * tan( (90.-BAR_ThermShield_InnerAngle)/2.*GENV_PiS180) " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - BAR_ThermShield_Thickness ; BAR_ThermShield_XLenght/2. - BAR_ThermShield_InnerXLenght " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. ; BAR_ThermShield_XLenght/2. - BAR_ThermShield_InnerXLenght " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. ; -BAR_ThermShield_XLenght/2. + BAR_ThermShield_OuterXLenght " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - BAR_ThermShield_Thickness ; -BAR_ThermShield_XLenght/2. + BAR_ThermShield_OuterXLenght " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - BAR_ThermShield_Thickness ; -BAR_ThermShield_XLenght/2. + BAR_ThermShield_OuterXLenght - BAR_ThermShield_XOverlap + BAR_ThermShield_Thickness * tan( (90.-BAR_ThermShield_OuterAngle)/2.*GENV_PiS180) " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - (BAR_ThermShield_OuterXLenght - BAR_ThermShield_XOverlap)/tan( BAR_ThermShield_OuterAngle*GENV_PiS180) - BAR_ThermShield_Thickness*tan( BAR_ThermShield_OuterAngle/2.*GENV_PiS180); -BAR_ThermShield_XLenght/2. + BAR_ThermShield_Thickness" /> 
+</gvxysx>
+
+<gvxysx name="BAR_ThermShield_AlongROuter"  material="Aluminium1"  dZ="BAR_ThermShield_TotalXLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45 - GENV_Eps">
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - (BAR_ThermShield_InnerXLenght - BAR_ThermShield_XOverlap)/tan( BAR_ThermShield_InnerAngle*GENV_PiS180) ; BAR_ThermShield_XLenght/2." />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. ; BAR_ThermShield_XLenght/2. - BAR_ThermShield_InnerXLenght + BAR_ThermShield_XOverlap" />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. + BAR_ThermShield_Thickness ;  BAR_ThermShield_XLenght/2. - BAR_ThermShield_InnerXLenght + BAR_ThermShield_XOverlap " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. + BAR_ThermShield_Thickness ; -BAR_ThermShield_XLenght/2. + BAR_ThermShield_OuterXLenght - BAR_ThermShield_XOverlap " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. ; -BAR_ThermShield_XLenght/2.+ BAR_ThermShield_OuterXLenght - BAR_ThermShield_XOverlap" />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - (BAR_ThermShield_OuterXLenght - BAR_ThermShield_XOverlap)/tan( BAR_ThermShield_OuterAngle*GENV_PiS180) ; -BAR_ThermShield_XLenght/2." />
+</gvxysx>
+
+<gvxysx name="BAR_ThermShield_AlongRInner"  material="Aluminium1"  dZ="BAR_ThermShield_TotalXLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45 - GENV_Eps">
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - (BAR_ThermShield_InnerXLenght - BAR_ThermShield_XOverlap)/tan( BAR_ThermShield_InnerAngle*GENV_PiS180) - BAR_ThermShield_Thickness*tan( BAR_ThermShield_InnerAngle/2.*GENV_PiS180); BAR_ThermShield_XLenght/2. - BAR_ThermShield_Thickness" /> 
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - BAR_ThermShield_Thickness ; BAR_ThermShield_XLenght/2. - BAR_ThermShield_InnerXLenght + BAR_ThermShield_XOverlap - BAR_ThermShield_Thickness * tan( (90.-BAR_ThermShield_InnerAngle)/2.*GENV_PiS180) " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - BAR_ThermShield_Thickness ; BAR_ThermShield_XLenght/2. - BAR_ThermShield_InnerXLenght " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. ; BAR_ThermShield_XLenght/2. - BAR_ThermShield_InnerXLenght " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. ; -BAR_ThermShield_XLenght/2. + BAR_ThermShield_OuterXLenght " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - BAR_ThermShield_Thickness ; -BAR_ThermShield_XLenght/2. + BAR_ThermShield_OuterXLenght " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - BAR_ThermShield_Thickness ; -BAR_ThermShield_XLenght/2. + BAR_ThermShield_OuterXLenght - BAR_ThermShield_XOverlap + BAR_ThermShield_Thickness * tan( (90.-BAR_ThermShield_OuterAngle)/2.*GENV_PiS180) " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - (BAR_ThermShield_OuterXLenght - BAR_ThermShield_XOverlap)/tan( BAR_ThermShield_OuterAngle*GENV_PiS180) - BAR_ThermShield_Thickness*tan( BAR_ThermShield_OuterAngle/2.*GENV_PiS180); -BAR_ThermShield_XLenght/2. + BAR_ThermShield_Thickness" /> 
+</gvxysx>
+
+<gvxysx name="BAR_ThermShield_CornerOuter"  material="Aluminium1"  dZ="BAR_ThermShield_OuterEdgeLen">
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - (BAR_ThermShield_InnerXLenght - BAR_ThermShield_XOverlap)/tan( BAR_ThermShield_InnerAngle*GENV_PiS180) ; BAR_ThermShield_XLenght/2." />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. ; BAR_ThermShield_XLenght/2. - BAR_ThermShield_InnerXLenght + BAR_ThermShield_XOverlap" />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. + BAR_ThermShield_Thickness ;  BAR_ThermShield_XLenght/2. - BAR_ThermShield_InnerXLenght + BAR_ThermShield_XOverlap " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. + BAR_ThermShield_Thickness ; -BAR_ThermShield_XLenght/2. + BAR_ThermShield_OuterXLenght - BAR_ThermShield_XOverlap " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. ; -BAR_ThermShield_XLenght/2.+ BAR_ThermShield_OuterXLenght - BAR_ThermShield_XOverlap" />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - (BAR_ThermShield_OuterXLenght - BAR_ThermShield_XOverlap)/tan( BAR_ThermShield_OuterAngle*GENV_PiS180) ; -BAR_ThermShield_XLenght/2." />
+</gvxysx>
+
+<gvxysx name="BAR_ThermShield_CornerInner"  material="Aluminium1"  dZ="BAR_ThermShield_OuterEdgeLen">
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - (BAR_ThermShield_InnerXLenght - BAR_ThermShield_XOverlap)/tan( BAR_ThermShield_InnerAngle*GENV_PiS180) - BAR_ThermShield_Thickness*tan( BAR_ThermShield_InnerAngle/2.*GENV_PiS180); BAR_ThermShield_XLenght/2. - BAR_ThermShield_Thickness" /> 
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - BAR_ThermShield_Thickness ; BAR_ThermShield_XLenght/2. - BAR_ThermShield_InnerXLenght + BAR_ThermShield_XOverlap - BAR_ThermShield_Thickness * tan( (90.-BAR_ThermShield_InnerAngle)/2.*GENV_PiS180) " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - BAR_ThermShield_Thickness ; BAR_ThermShield_XLenght/2. - BAR_ThermShield_InnerXLenght " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. ; BAR_ThermShield_XLenght/2. - BAR_ThermShield_InnerXLenght " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. ; -BAR_ThermShield_XLenght/2. + BAR_ThermShield_OuterXLenght " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - BAR_ThermShield_Thickness ; -BAR_ThermShield_XLenght/2. + BAR_ThermShield_OuterXLenght " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - BAR_ThermShield_Thickness ; -BAR_ThermShield_XLenght/2. + BAR_ThermShield_OuterXLenght - BAR_ThermShield_XOverlap + BAR_ThermShield_Thickness * tan( (90.-BAR_ThermShield_OuterAngle)/2.*GENV_PiS180) " />
+  <gvxy_point  X_Y=" BAR_ThermShield_YHight/2. - (BAR_ThermShield_OuterXLenght - BAR_ThermShield_XOverlap)/tan( BAR_ThermShield_OuterAngle*GENV_PiS180) - BAR_ThermShield_Thickness*tan( BAR_ThermShield_OuterAngle/2.*GENV_PiS180); -BAR_ThermShield_XLenght/2. + BAR_ThermShield_Thickness" /> 
+</gvxysx>
+
+<box name="BAR_ThermShield_CutBox" material="Aluminium1"  X_Y_Z="BAR_ThermShield_XLenght/GENV_Co225; BAR_ThermShield_XLenght/GENV_Co225; BAR_ThermShield_XLenght/GENV_Co225" />
+
+<pcon  name="BAR_ThermShield_AttIn"   material="Aluminium1"  nbPhi="20" >
+  <polyplane  Rio_Z="0. ; ABRT_CryAttD0_CryoAttDiam0/2. + 20.  ;  -GENV_Eps " />
+  <polyplane  Rio_Z="0. ; ABRT_CryAttD0_CryoAttDiam0/2. + 20.  ;  ABRT_CryAttXh_CryoAttXhigh + GENV_Eps " />
+</pcon>
+
+<subtraction  name="BAR_ThermShield_AlongZ_Down_Part1" >
+  <posXYZ  volume="BAR_ThermShield_AlongZOuter"  X_Y_Z=" BAR_ThermShield_RadiusMin + BAR_ThermShield_XLenght/2. ; 0. ; 2.*(BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  -90. "/>
+  <posXYZ  volume="BAR_ThermShield_AlongZInner"  X_Y_Z=" BAR_ThermShield_RadiusMin + BAR_ThermShield_XLenght/2. ; 0. ; 2.*(BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  -90. "/>
+  <posXYZ  volume="BAR_ThermShield_CutBox"  X_Y_Z=" BAR_ThermShield_RadiusMin + BAR_ThermShield_XLenght/2. + BAR_ThermShield_XLenght/2.*GENV_Ta225 ; 0. ;    BAR_ThermShield_TotalZLength/2. - (BAR_ThermShield_OuterEdgeLen-BAR_ThermShield_XLenght*GENV_Ta225)/sqrt(2.) - GENV_Eps " rot=" 0. ;  22.5 ; 0. "/>
+  <foreach  index="Irib"  begin="6"  loops="1" >
+    <posXYZ  volume="BAR_CryoRibIn" X_Y_Z=" (ABRT_CryoRmax+ABRT_CryoRmin)/2. ; 0. ; ABRT_Zrib[Irib] " />
+  </foreach>
+  <foreach  index="Ivouss"  begin="6"  loops="2" >
+    <posXYZ  volume="BAR_ThermShield_AttIn" X_Y_Z=" ABRT_CryAttRx_CryoAttRmax ; 0. ; ABRT_Zvouss[Ivouss] "  rot=" 0. ; 90. ; 0. " />
+  </foreach>
+</subtraction>
+
+<subtraction  name="BAR_ThermShield_AlongZ_Down_Part2" >
+  <posXYZ  volume="BAR_ThermShield_AlongZOuter"  X_Y_Z=" BAR_ThermShield_RadiusMin + BAR_ThermShield_XLenght/2. ; 0. ; (BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  -90. "/>
+  <posXYZ  volume="BAR_ThermShield_AlongZInner"  X_Y_Z=" BAR_ThermShield_RadiusMin + BAR_ThermShield_XLenght/2. ; 0. ; (BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  -90. "/>
+  <foreach  index="Irib"  begin="4"  loops="2" >
+    <posXYZ  volume="BAR_CryoRibIn" X_Y_Z=" (ABRT_CryoRmax+ABRT_CryoRmin)/2. ; 0. ; ABRT_Zrib[Irib] " />
+  </foreach>
+  <foreach  index="Ivouss"  begin="5"  loops="1" >
+    <posXYZ  volume="BAR_ThermShield_AttIn" X_Y_Z=" ABRT_CryAttRx_CryoAttRmax ; 0. ; ABRT_Zvouss[Ivouss] "  rot=" 0. ; 90. ; 0. " />
+  </foreach>
+</subtraction>
+
+<subtraction  name="BAR_ThermShield_AlongZ_Down_Part3" >
+  <posXYZ  volume="BAR_ThermShield_AlongZOuter"  X_Y_Z=" BAR_ThermShield_RadiusMin + BAR_ThermShield_XLenght/2. ; 0. ; 0. " rot=" 0. ; 0. ;  -90. "/>
+  <posXYZ  volume="BAR_ThermShield_AlongZInner"  X_Y_Z=" BAR_ThermShield_RadiusMin + BAR_ThermShield_XLenght/2. ; 0. ; 0. " rot=" 0. ; 0. ;  -90. "/>
+  <foreach  index="Irib"  begin="3"  loops="1" >
+    <posXYZ  volume="BAR_CryoRibIn" X_Y_Z=" (ABRT_CryoRmax+ABRT_CryoRmin)/2. ; 0. ; ABRT_Zrib[Irib] " />
+  </foreach>
+  <foreach  index="Ivouss"  begin="3"  loops="2" >
+    <posXYZ  volume="BAR_ThermShield_AttIn" X_Y_Z=" ABRT_CryAttRx_CryoAttRmax ; 0. ; ABRT_Zvouss[Ivouss] "  rot=" 0. ; 90. ; 0. " />
+  </foreach>
+</subtraction>
+
+<subtraction  name="BAR_ThermShield_AlongZ_Down_Part4" >
+  <posXYZ  volume="BAR_ThermShield_AlongZOuter"  X_Y_Z=" BAR_ThermShield_RadiusMin + BAR_ThermShield_XLenght/2. ; 0. ; -(BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  -90. "/>
+  <posXYZ  volume="BAR_ThermShield_AlongZInner"  X_Y_Z=" BAR_ThermShield_RadiusMin + BAR_ThermShield_XLenght/2. ; 0. ; -(BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  -90. "/>
+  <foreach  index="Irib"  begin="1"  loops="2" >
+    <posXYZ  volume="BAR_CryoRibIn" X_Y_Z=" (ABRT_CryoRmax+ABRT_CryoRmin)/2. ; 0. ; ABRT_Zrib[Irib] " />
+  </foreach>
+  <foreach  index="Ivouss"  begin="2"  loops="1" >
+    <posXYZ  volume="BAR_ThermShield_AttIn" X_Y_Z=" ABRT_CryAttRx_CryoAttRmax ; 0. ; ABRT_Zvouss[Ivouss] "  rot=" 0. ; 90. ; 0. " />
+  </foreach>
+</subtraction>
+
+<subtraction  name="BAR_ThermShield_AlongZ_Down_Part5" >
+  <posXYZ  volume="BAR_ThermShield_AlongZOuter"  X_Y_Z=" BAR_ThermShield_RadiusMin + BAR_ThermShield_XLenght/2. ; 0. ; -2.*(BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  -90. "/>
+  <posXYZ  volume="BAR_ThermShield_AlongZInner"  X_Y_Z=" BAR_ThermShield_RadiusMin + BAR_ThermShield_XLenght/2. ; 0. ; -2.*(BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  -90. "/>
+  <posXYZ  volume="BAR_ThermShield_CutBox"  X_Y_Z=" BAR_ThermShield_RadiusMin + BAR_ThermShield_XLenght/2. + BAR_ThermShield_XLenght/2.*GENV_Ta225 ; 0. ;  -(BAR_ThermShield_TotalZLength/2. - (BAR_ThermShield_OuterEdgeLen-BAR_ThermShield_XLenght*GENV_Ta225)/sqrt(2.) - GENV_Eps)" rot=" 0. ; -22.5 ; 0. "/>
+  <foreach  index="Irib"  begin="0"  loops="1" >
+    <posXYZ  volume="BAR_CryoRibIn" X_Y_Z=" (ABRT_CryoRmax+ABRT_CryoRmin)/2. ; 0. ; ABRT_Zrib[Irib] " />
+  </foreach>
+  <foreach  index="Ivouss"  begin="0"  loops="2" >
+    <posXYZ  volume="BAR_ThermShield_AttIn" X_Y_Z=" ABRT_CryAttRx_CryoAttRmax ; 0. ; ABRT_Zvouss[Ivouss] "  rot=" 0. ; 90. ; 0. " />
+  </foreach>
+</subtraction>
+
+<subtraction  name="BAR_ThermShield_AlongZ_Up_Part1" >
+  <posXYZ  volume="BAR_ThermShield_AlongZOuter"  X_Y_Z=" BAR_ThermShield_RadiusMax - BAR_ThermShield_XLenght/2. ; 0. ; 2.*(BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  90. "/>
+  <posXYZ  volume="BAR_ThermShield_AlongZInner"  X_Y_Z=" BAR_ThermShield_RadiusMax - BAR_ThermShield_XLenght/2. ; 0. ; 2.*(BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  90. "/>
+  <posXYZ  volume="BAR_ThermShield_CutBox"  X_Y_Z=" BAR_ThermShield_RadiusMax - BAR_ThermShield_XLenght/2. - BAR_ThermShield_XLenght/2.*GENV_Ta225 ; 0. ;    BAR_ThermShield_TotalZLength/2. - (BAR_ThermShield_OuterEdgeLen-BAR_ThermShield_XLenght*GENV_Ta225)/sqrt(2.) - GENV_Eps " rot=" 0. ; -22.5 ; 0. "/>
+  <foreach  index="Irib"  begin="6"  loops="1" >
+    <posXYZ  volume="BAR_CryoRibIn" X_Y_Z=" (ABRT_CryoRmax+ABRT_CryoRmin)/2. ; 0. ; ABRT_Zrib[Irib] " />
+  </foreach>
+</subtraction>
+
+<subtraction  name="BAR_ThermShield_AlongZ_Up_Part2" >
+  <posXYZ  volume="BAR_ThermShield_AlongZOuter"  X_Y_Z=" BAR_ThermShield_RadiusMax - BAR_ThermShield_XLenght/2. ; 0. ; (BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  90. "/>
+  <posXYZ  volume="BAR_ThermShield_AlongZInner"  X_Y_Z=" BAR_ThermShield_RadiusMax - BAR_ThermShield_XLenght/2. ; 0. ; (BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  90. "/>
+  <foreach  index="Irib"  begin="4"  loops="2" >
+    <posXYZ  volume="BAR_CryoRibIn" X_Y_Z=" (ABRT_CryoRmax+ABRT_CryoRmin)/2. ; 0. ; ABRT_Zrib[Irib] " />
+  </foreach>
+</subtraction>
+
+<subtraction  name="BAR_ThermShield_AlongZ_Up_Part3" >
+  <posXYZ  volume="BAR_ThermShield_AlongZOuter"  X_Y_Z=" BAR_ThermShield_RadiusMax - BAR_ThermShield_XLenght/2. ; 0. ; 0. " rot=" 0. ; 0. ;  90. "/>
+  <posXYZ  volume="BAR_ThermShield_AlongZInner"  X_Y_Z=" BAR_ThermShield_RadiusMax - BAR_ThermShield_XLenght/2. ; 0. ; 0. " rot=" 0. ; 0. ;  90. "/>
+  <foreach  index="Irib"  begin="3"  loops="1" >
+    <posXYZ  volume="BAR_CryoRibIn" X_Y_Z=" (ABRT_CryoRmax+ABRT_CryoRmin)/2. ; 0. ; ABRT_Zrib[Irib] " />
+  </foreach>
+</subtraction>
+
+<subtraction  name="BAR_ThermShield_AlongZ_Up_Part4" >
+  <posXYZ  volume="BAR_ThermShield_AlongZOuter"  X_Y_Z=" BAR_ThermShield_RadiusMax - BAR_ThermShield_XLenght/2. ; 0. ; -(BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  90. "/>
+  <posXYZ  volume="BAR_ThermShield_AlongZInner"  X_Y_Z=" BAR_ThermShield_RadiusMax - BAR_ThermShield_XLenght/2. ; 0. ; -(BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  90. "/>
+  <foreach  index="Irib"  begin="1"  loops="2" >
+    <posXYZ  volume="BAR_CryoRibIn" X_Y_Z=" (ABRT_CryoRmax+ABRT_CryoRmin)/2. ; 0. ; ABRT_Zrib[Irib] " />
+  </foreach>
+</subtraction>
+
+<subtraction  name="BAR_ThermShield_AlongZ_Up_Part5" >
+  <posXYZ  volume="BAR_ThermShield_AlongZOuter"  X_Y_Z=" BAR_ThermShield_RadiusMax - BAR_ThermShield_XLenght/2. ; 0. ; -2.*(BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  90. "/>
+  <posXYZ  volume="BAR_ThermShield_AlongZInner"  X_Y_Z=" BAR_ThermShield_RadiusMax - BAR_ThermShield_XLenght/2. ; 0. ; -2.*(BAR_ThermShield_TotalZLength - 2.*BAR_ThermShield_OuterEdgeLen*GENV_Si45)/5. " rot=" 0. ; 0. ;  90. "/>
+  <posXYZ  volume="BAR_ThermShield_CutBox"  X_Y_Z=" BAR_ThermShield_RadiusMax - BAR_ThermShield_XLenght/2. - BAR_ThermShield_XLenght/2.*GENV_Ta225 ; 0. ;  -(BAR_ThermShield_TotalZLength/2. - (BAR_ThermShield_OuterEdgeLen-BAR_ThermShield_XLenght*GENV_Ta225)/sqrt(2.) - GENV_Eps)" rot=" 0. ;  22.5 ; 0. "/>
+  <foreach  index="Irib"  begin="0"  loops="1" >
+    <posXYZ  volume="BAR_CryoRibIn" X_Y_Z=" (ABRT_CryoRmax+ABRT_CryoRmin)/2. ; 0. ; ABRT_Zrib[Irib] " />
+  </foreach>
+</subtraction>
+
+<subtraction  name="BAR_ThermShield_AlongR" >
+  <posXYZ  volume="BAR_ThermShield_AlongROuter"   X_Y_Z=" (BAR_ThermShield_RadiusMin + BAR_ThermShield_RadiusMax)/2.; 0. ; (BAR_ThermShield_TotalZLength - BAR_ThermShield_XLenght)/2. " rot=" -90. ; 0. ;  -90. " />
+  <posXYZ  volume="BAR_ThermShield_AlongRInner"   X_Y_Z=" (BAR_ThermShield_RadiusMin + BAR_ThermShield_RadiusMax)/2.; 0. ; (BAR_ThermShield_TotalZLength - BAR_ThermShield_XLenght)/2. " rot=" -90. ; 0. ;  -90. " />
+  <posXYZ  volume="BAR_ThermShield_CutBox"   X_Y_Z=" BAR_ThermShield_RadiusMin + (BAR_ThermShield_OuterEdgeLen-BAR_ThermShield_XLenght*GENV_Ta225)/sqrt(2.) + GENV_Eps; 0. ; BAR_ThermShield_TotalZLength/2. - BAR_ThermShield_XLenght/2. - BAR_ThermShield_XLenght/2.*GENV_Ta225 " rot=" 0. ; -22.5 ; 0. "/>
+  <posXYZ  volume="BAR_ThermShield_CutBox"   X_Y_Z=" BAR_ThermShield_RadiusMax - (BAR_ThermShield_OuterEdgeLen-BAR_ThermShield_XLenght*GENV_Ta225)/sqrt(2.) - GENV_Eps; 0. ; BAR_ThermShield_TotalZLength/2. - BAR_ThermShield_XLenght/2. - BAR_ThermShield_XLenght/2.*GENV_Ta225 " rot=" 0. ;  22.5 ; 0. "/>
+</subtraction>
+
+<subtraction  name="BAR_ThermShield_Corner" >
+  <posXYZ  volume="BAR_ThermShield_CornerOuter"  X_Y_Z=" (BAR_ThermShield_OuterEdgeLen)/(2.*sqrt(2.)) + BAR_ThermShield_XLenght/2./sqrt(2.) + BAR_ThermShield_RadiusMin; 0. ;  - (BAR_ThermShield_OuterEdgeLen)/(2.*sqrt(2.)) + (2.+sqrt(2.))*BAR_ThermShield_XLenght*GENV_Ta225/(2.*sqrt(2.)) - (1.+sqrt(2.))*BAR_ThermShield_XLenght/(2.*sqrt(2.)) + BAR_ThermShield_TotalZLength/2." rot=" -45. ; 0. ; -90. "/>
+  <posXYZ  volume="BAR_ThermShield_CornerInner"  X_Y_Z=" (BAR_ThermShield_OuterEdgeLen)/(2.*sqrt(2.)) + BAR_ThermShield_XLenght/2./sqrt(2.) + BAR_ThermShield_RadiusMin; 0. ;  - (BAR_ThermShield_OuterEdgeLen)/(2.*sqrt(2.)) + (2.+sqrt(2.))*BAR_ThermShield_XLenght*GENV_Ta225/(2.*sqrt(2.)) - (1.+sqrt(2.))*BAR_ThermShield_XLenght/(2.*sqrt(2.)) + BAR_ThermShield_TotalZLength/2." rot=" -45. ; 0. ; -90. "/>
+  <posXYZ  volume="BAR_ThermShield_CutBox"      X_Y_Z=" BAR_ThermShield_RadiusMin + (1. - GENV_Ta225)*BAR_ThermShield_XLenght/2.; 0. ; BAR_ThermShield_TotalZLength/2. - (BAR_ThermShield_OuterEdgeLen-BAR_ThermShield_XLenght*GENV_Ta225)/sqrt(2.) - BAR_ThermShield_XLenght" rot=" 0. ; 22.5 ; 0. "/>
+  <posXYZ  volume="BAR_ThermShield_CutBox"      X_Y_Z=" BAR_ThermShield_RadiusMin + BAR_ThermShield_XLenght + (BAR_ThermShield_OuterEdgeLen-BAR_ThermShield_XLenght*GENV_Ta225)/sqrt(2.) ; 0. ; BAR_ThermShield_TotalZLength/2. - BAR_ThermShield_XLenght/2.*(1. -GENV_Ta225)" rot=" 0. ; -22.5 ; 0. "/>
+</subtraction>
+
+<composition  name="BAR_ThermShield_Sector" >
+  <posXYZ  volume="BAR_ThermShield_AlongZ_Down_Part1" />
+  <posXYZ  volume="BAR_ThermShield_AlongZ_Down_Part2" />
+  <posXYZ  volume="BAR_ThermShield_AlongZ_Down_Part3" />
+  <posXYZ  volume="BAR_ThermShield_AlongZ_Down_Part4" />
+  <posXYZ  volume="BAR_ThermShield_AlongZ_Down_Part5" />
+  <posXYZ  volume="BAR_ThermShield_AlongZ_Up_Part1" />
+  <posXYZ  volume="BAR_ThermShield_AlongZ_Up_Part2" />
+  <posXYZ  volume="BAR_ThermShield_AlongZ_Up_Part3" />
+  <posXYZ  volume="BAR_ThermShield_AlongZ_Up_Part4" />
+  <posXYZ  volume="BAR_ThermShield_AlongZ_Up_Part5" />
+  <posXYZ  volume="BAR_ThermShield_AlongR" X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ  volume="BAR_ThermShield_AlongR" X_Y_Z=" 0.; 0.; 0." rot=" 0. ; 180. ; 180. "/>
+  <posXYZ  volume="BAR_ThermShield_Corner" X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ  volume="BAR_ThermShield_Corner" X_Y_Z=" 0.; 0.; 0." rot=" 0. ; 180. ; 180. "/>
+  <posXYZ  volume="BAR_ThermShield_Corner" X_Y_Z=" BAR_ThermShield_RadiusMin + BAR_ThermShield_RadiusMax; 0.; 0." rot=" 0. ; 180. ;   0. "/>
+  <posXYZ  volume="BAR_ThermShield_Corner" X_Y_Z=" BAR_ThermShield_RadiusMin + BAR_ThermShield_RadiusMax; 0.; 0." rot=" 0. ;   0. ; 180. "/>
+</composition>
+
+<!-- End of barrel toroid thermal shielding -->
+
+<var name="AFT_BTBrktInf_BackPlate_XLong"         value="1080. " />
+<var name="AFT_BTBrktInf_BackPlate_XOff"          value=" 140. " />
+<var name="AFT_BTBrktInf_BackPlate_XGap"          value=" 190. " />
+
+<var name="AFT_BTBrktInf_BackPlate_YLong"         value=" 305. " />
+<var name="AFT_BTBrktInf_BackPlate_YAngle"        value="  22. " />
+<var name="AFT_BTBrktInf_BackPlate_YOff"          value=" 150. " />
+<var name="AFT_BTBrktInf_BackPlate_YGap"          value="  40. " />
+
+<var name="AFT_BTBrktInf_BackPlate_Thickness"     value="  20. " />
+
+<gvxysx name="AFT_BTBrktInf_BackPlate"   material="Iron" dZ="AFT_BTBrktInf_BackPlate_Thickness" >
+  <gvxy_point X_Y="AFT_BTBrktInf_BackPlate_XLong/2.-AFT_BTBrktInf_BackPlate_XOff-AFT_BTBrktInf_BackPlate_XGap; 0."/>
+  <gvxy_point X_Y="AFT_BTBrktInf_BackPlate_XLong/2.-AFT_BTBrktInf_BackPlate_XOff-AFT_BTBrktInf_BackPlate_XGap; AFT_BTBrktInf_BackPlate_YGap"/>
+  <gvxy_point X_Y="AFT_BTBrktInf_BackPlate_XLong/2.-AFT_BTBrktInf_BackPlate_XOff; AFT_BTBrktInf_BackPlate_YGap"/>
+  <gvxy_point X_Y="AFT_BTBrktInf_BackPlate_XLong/2.-AFT_BTBrktInf_BackPlate_XOff; 0."/>
+  <gvxy_point X_Y="AFT_BTBrktInf_BackPlate_XLong/2.; 0."/>
+  <gvxy_point X_Y="AFT_BTBrktInf_BackPlate_XLong/2.; AFT_BTBrktInf_BackPlate_YOff"/>
+  <gvxy_point X_Y="(AFT_BTBrktInf_BackPlate_XLong/2.)-((AFT_BTBrktInf_BackPlate_YLong-AFT_BTBrktInf_BackPlate_YOff)*tan(AFT_BTBrktInf_BackPlate_YAngle*GENV_PiS180)); AFT_BTBrktInf_BackPlate_YLong"/>
+</gvxysx>
+
+<var name="AFT_BTBrktInf_ZLength"                 value=" 280. " />
+<var name="AFT_BTBrktInf_TopCentralXLong"         value=" 590. " />
+<var name="AFT_BTBrktInf_CentralSpacerYLong"      value="  80. " />
+<var name="AFT_BTBrktInf_YSpacerTotal"            value=" 168. " />
+
+<var name="AFT_BTBrktInf_CentralSpacerOffsetX"    value=" 407. " />
+<var name="AFT_BTBrktInf_SideSpacerOffsetX"       value="  42.5" />
+
+<box name="AFT_BTBrktInf_LowCenterLongX"  material="Iron"    X_Y_Z="AFT_BTBrktInf_BackPlate_XLong-2.*(AFT_BTBrktInf_BackPlate_XOff+AFT_BTBrktInf_BackPlate_XGap); AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrktInf_ZLength" />
+<box name="AFT_BTBrktInf_LowSideLongX"    material="Iron"    X_Y_Z="AFT_BTBrktInf_BackPlate_XOff; AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrktInf_ZLength" />
+<box name="AFT_BTBrktInf_TopCenterLongX"  material="Iron"    X_Y_Z="AFT_BTBrktInf_TopCentralXLong; 2.+AFT_BTBrktInf_BackPlate_Thickness*2.; AFT_BTBrktInf_ZLength" />
+
+<box name="AFT_BTBrktInf_CtrSpacerPlate"  material="Iron"    X_Y_Z="AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrktInf_CentralSpacerYLong; AFT_BTBrktInf_ZLength" />
+<box name="AFT_BTBrktInf_MidSpacerPlate"  material="Iron"    X_Y_Z="2.*AFT_BTBrktInf_BackPlate_Thickness+2.; AFT_BTBrktInf_YSpacerTotal-2.-2.*AFT_BTBrktInf_BackPlate_Thickness-AFT_BTBrktInf_CentralSpacerYLong; AFT_BTBrktInf_ZLength" />
+<box name="AFT_BTBrktInf_SideSpacerPlate" material="Iron"    X_Y_Z="AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrktInf_YSpacerTotal; AFT_BTBrktInf_ZLength" />
+
+<composition name="AFT_BTBrktInf">
+  <posXYZ  volume="AFT_BTBrktInf_BackPlate"         X_Y_Z=" 0.; 0.; AFT_BTBrktInf_BackPlate_Thickness/2.+AFT_BTBrktInf_ZLength" />
+  <posXYZ  volume="AFT_BTBrktInf_LowCenterLongX"    X_Y_Z=" 0.; AFT_BTBrktInf_BackPlate_Thickness/2.; AFT_BTBrktInf_ZLength/2." />
+  <posXYZ  volume="AFT_BTBrktInf_LowSideLongX"      X_Y_Z=" (AFT_BTBrktInf_BackPlate_XLong-AFT_BTBrktInf_BackPlate_XOff)/2.; AFT_BTBrktInf_BackPlate_Thickness/2.; AFT_BTBrktInf_ZLength/2." />
+  <posXYZ  volume="AFT_BTBrktInf_LowSideLongX"      X_Y_Z=" -(AFT_BTBrktInf_BackPlate_XLong-AFT_BTBrktInf_BackPlate_XOff)/2.; AFT_BTBrktInf_BackPlate_Thickness/2.; AFT_BTBrktInf_ZLength/2." />
+  <posXYZ  volume="AFT_BTBrktInf_TopCenterLongX"    X_Y_Z=" 0.; AFT_BTBrktInf_CentralSpacerYLong+2.*AFT_BTBrktInf_BackPlate_Thickness+1.; AFT_BTBrktInf_ZLength/2." />
+  <posXYZ  volume="AFT_BTBrktInf_CtrSpacerPlate"    X_Y_Z="-AFT_BTBrktInf_BackPlate_XLong/2.+AFT_BTBrktInf_CentralSpacerOffsetX+AFT_BTBrktInf_BackPlate_Thickness/2.; AFT_BTBrktInf_CentralSpacerYLong/2.+AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrktInf_ZLength/2." />
+  <posXYZ  volume="AFT_BTBrktInf_CtrSpacerPlate"    X_Y_Z=" AFT_BTBrktInf_BackPlate_XLong/2.-AFT_BTBrktInf_CentralSpacerOffsetX-AFT_BTBrktInf_BackPlate_Thickness/2.; AFT_BTBrktInf_CentralSpacerYLong/2.+AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrktInf_ZLength/2." />
+  <posXYZ  volume="AFT_BTBrktInf_MidSpacerPlate"    X_Y_Z="-AFT_BTBrktInf_TopCentralXLong/2.+AFT_BTBrktInf_BackPlate_Thickness+1.; (AFT_BTBrktInf_YSpacerTotal+AFT_BTBrktInf_CentralSpacerYLong)/2.+2.*AFT_BTBrktInf_BackPlate_Thickness+1.; AFT_BTBrktInf_ZLength/2." />
+  <posXYZ  volume="AFT_BTBrktInf_MidSpacerPlate"    X_Y_Z=" AFT_BTBrktInf_TopCentralXLong/2.-AFT_BTBrktInf_BackPlate_Thickness-1.; (AFT_BTBrktInf_YSpacerTotal+AFT_BTBrktInf_CentralSpacerYLong)/2.+2.*AFT_BTBrktInf_BackPlate_Thickness+1.; AFT_BTBrktInf_ZLength/2." />
+  <posXYZ  volume="AFT_BTBrktInf_SideSpacerPlate"   X_Y_Z="-AFT_BTBrktInf_BackPlate_XLong/2.+AFT_BTBrktInf_BackPlate_XOff-AFT_BTBrktInf_BackPlate_Thickness/2.; AFT_BTBrktInf_YSpacerTotal/2.+AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrktInf_ZLength/2." />
+  <posXYZ  volume="AFT_BTBrktInf_SideSpacerPlate"   X_Y_Z="-AFT_BTBrktInf_BackPlate_XLong/2.+AFT_BTBrktInf_SideSpacerOffsetX; AFT_BTBrktInf_YSpacerTotal/2.+AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrktInf_ZLength/2." />
+  <posXYZ  volume="AFT_BTBrktInf_SideSpacerPlate"   X_Y_Z=" AFT_BTBrktInf_BackPlate_XLong/2.-AFT_BTBrktInf_BackPlate_XOff+AFT_BTBrktInf_BackPlate_Thickness/2.; AFT_BTBrktInf_YSpacerTotal/2.+AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrktInf_ZLength/2." />
+  <posXYZ  volume="AFT_BTBrktInf_SideSpacerPlate"   X_Y_Z=" AFT_BTBrktInf_BackPlate_XLong/2.-AFT_BTBrktInf_SideSpacerOffsetX; AFT_BTBrktInf_YSpacerTotal/2.+AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrktInf_ZLength/2." />
+</composition>
+
+<var name="AFT_BTBrkt_BackPlate_XLong"            value=" 955. " />
+<var name="AFT_BTBrkt_BackPlate_XShort"           value=" 545. " />
+<var name="AFT_BTBrkt_BackPlate_YLong"            value=" 183. " />
+<var name="AFT_BTBrkt_BackPlate_YShort"           value="  86. " />
+
+<gvxysx name="AFT_BTBrkt_BackPlate"   material="Iron" dZ="AFT_BTBrktInf_BackPlate_Thickness" >
+  <gvxy_point X_Y="AFT_BTBrkt_BackPlate_XShort/2.; 0."/>
+  <gvxy_point X_Y="AFT_BTBrkt_BackPlate_XShort/2.; AFT_BTBrkt_BackPlate_YShort-AFT_BTBrktInf_BackPlate_Thickness"/>
+  <gvxy_point X_Y="AFT_BTBrkt_BackPlate_XLong/2.+(AFT_BTBrkt_BackPlate_YLong-AFT_BTBrkt_BackPlate_YShort+AFT_BTBrktInf_BackPlate_Thickness)*tan(AFT_BTBrktInf_BackPlate_YAngle*GENV_PiS180); AFT_BTBrkt_BackPlate_YShort-AFT_BTBrktInf_BackPlate_Thickness"/>
+  <gvxy_point X_Y="AFT_BTBrkt_BackPlate_XLong/2.; AFT_BTBrkt_BackPlate_YLong"/>
+</gvxysx>
+
+<var name="AFT_BTBrkt_SidePlateXLength"           value=" 235. " />
+<var name="AFT_BTBrkt_CentralPlateXLength"        value=" 546. " />
+<var name="AFT_BTBrkt_ZLength"                    value=" 260. " />
+
+<box name="AFT_BTBrkt_SideLongX"     material="Iron"    X_Y_Z="AFT_BTBrkt_SidePlateXLength+AFT_BTBrktInf_BackPlate_Thickness; 2.*AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrkt_ZLength"/>
+
+<var name="AFT_BTBrkt_CtrSpacerPlate_XShort"      value="  10. " />
+<var name="AFT_BTBrkt_CtrSpacerPlate_YLong"       value=" 308. " />
+
+<var name="AFT_BTBrkt_MidSpacerPlate_XShort"      value="   9. " />
+<var name="AFT_BTBrkt_MidSpacerPlate_YLong"       value=" 378. " />
+
+<var name="AFT_BTBrkt_SideSpacerPlate_XShort"     value="  15.5" />
+<var name="AFT_BTBrkt_SideSpacerPlate_XLong"      value=" 820. " />
+<var name="AFT_BTBrkt_SideSpacerPlate_YShort"     value=" 125. " />
+<var name="AFT_BTBrkt_SideSpacerPlate_YLong"      value=" 530. " />
+<var name="AFT_BTBrkt_SideSpacerPlate_XDist"      value=" 457. " />
+
+<gvxy name="AFT_BTBrkt_CtrSpacerPlate"   material="Iron" dZ="AFT_BTBrktInf_BackPlate_Thickness" >
+  <gvxy_point X_Y="                                0.; 0."/>
+  <gvxy_point X_Y="               AFT_BTBrkt_ZLength; 0."/>
+  <gvxy_point X_Y="               AFT_BTBrkt_ZLength; AFT_BTBrkt_CtrSpacerPlate_YLong-AFT_BTBrkt_ZLength+AFT_BTBrkt_CtrSpacerPlate_XShort"/>
+  <gvxy_point X_Y=" AFT_BTBrkt_CtrSpacerPlate_XShort; AFT_BTBrkt_CtrSpacerPlate_YLong"/>
+  <gvxy_point X_Y="                                0.; AFT_BTBrkt_CtrSpacerPlate_YLong"/>
+</gvxy>
+
+<gvxy name="AFT_BTBrkt_MidSpacerPlate"   material="Iron" dZ="AFT_BTBrktInf_BackPlate_Thickness" >
+  <gvxy_point X_Y="                                0.; AFT_BTBrktInf_YSpacerTotal-2.-AFT_BTBrktInf_CentralSpacerYLong"/>
+  <gvxy_point X_Y="               AFT_BTBrkt_ZLength; AFT_BTBrktInf_YSpacerTotal-2.-AFT_BTBrktInf_CentralSpacerYLong"/>
+  <gvxy_point X_Y="               AFT_BTBrkt_ZLength; AFT_BTBrkt_MidSpacerPlate_YLong-AFT_BTBrkt_ZLength+AFT_BTBrkt_MidSpacerPlate_XShort"/>
+  <gvxy_point X_Y=" AFT_BTBrkt_MidSpacerPlate_XShort; AFT_BTBrkt_MidSpacerPlate_YLong"/>
+  <gvxy_point X_Y="                                0.; AFT_BTBrkt_MidSpacerPlate_YLong"/>
+</gvxy>
+
+<gvxy name="AFT_BTBrkt_SideSpacerPlate"   material="Iron" dZ="AFT_BTBrktInf_BackPlate_Thickness" >
+  <gvxy_point X_Y="                                                                                                      0.; 0."/>
+  <gvxy_point X_Y="                                                                       AFT_BTBrkt_SideSpacerPlate_XLong; 0."/>
+  <gvxy_point X_Y="                                                                       AFT_BTBrkt_SideSpacerPlate_XLong; AFT_BTBrkt_SideSpacerPlate_YShort"/>
+  <gvxy_point X_Y=" AFT_BTBrkt_SideSpacerPlate_XShort+AFT_BTBrkt_SideSpacerPlate_YLong-AFT_BTBrkt_SideSpacerPlate_YShort; AFT_BTBrkt_SideSpacerPlate_YShort"/>
+  <gvxy_point X_Y="                                                                      AFT_BTBrkt_SideSpacerPlate_XShort; AFT_BTBrkt_SideSpacerPlate_YLong"/>
+  <gvxy_point X_Y="                                                                                                      0.; AFT_BTBrkt_SideSpacerPlate_YLong"/>
+</gvxy>
+
+<var name="AFT_BTBrkt_FrontTube_StartAngle"      value=" 195. " />
+<var name="AFT_BTBrkt_FrontTube_Angle"           value="  70. " />
+<var name="AFT_BTBrkt_FrontTube_Radius"          value=" 550. " />
+<var name="AFT_BTBrkt_FrontTube_ZLength"         value=" 250. " />
+<var name="AFT_BTBrkt_FrontTube_YOffset"         value=" 558. " />
+<var name="AFT_BTBrkt_BackTube_ZLength"          value=" 700. " />
+<var name="AFT_BTBrkt_BackTube_StartAngle"       value=" 190. " />
+<var name="AFT_BTBrkt_BackTube_YOffset"          value=" 226. " />
+
+<tubs name="AFT_BTBrkt_FrontTube" material="Iron"  Rio_Z="AFT_BTBrkt_FrontTube_Radius; AFT_BTBrkt_FrontTube_Radius+AFT_BTBrktInf_BackPlate_Thickness/2. ; AFT_BTBrkt_FrontTube_ZLength"  profile="AFT_BTBrkt_FrontTube_StartAngle; AFT_BTBrkt_FrontTube_Angle"  nbPhi="20"   />
+<tubs name="AFT_BTBrkt_BackTube"  material="Iron"  Rio_Z="AFT_BTBrkt_FrontTube_Radius; AFT_BTBrkt_FrontTube_Radius+AFT_BTBrktInf_BackPlate_Thickness/2. ; AFT_BTBrkt_BackTube_ZLength"   profile="AFT_BTBrkt_BackTube_StartAngle; AFT_BTBrkt_FrontTube_Angle"   nbPhi="20"   />
+
+<var name="AFT_BTBrkt_BackTube_PosOff" value=" (AFT_BTBrkt_FrontTube_Radius+AFT_BTBrktInf_BackPlate_Thickness/2.)*cos(asin((AFT_BTBrktInf_BackPlate_XLong/2.-AFT_BTBrktInf_CentralSpacerOffsetX-AFT_BTBrktInf_BackPlate_Thickness)/(AFT_BTBrkt_FrontTube_Radius+AFT_BTBrktInf_BackPlate_Thickness/2.)))*GENV_Si45"/>
+
+<var name="AFT_BTBrkt_FrontPlate_ZOffset"        value="  10. " />
+<var name="AFT_BTBrkt_FrontPlate_ZGap"           value=" 190. " />
+<var name="AFT_BTBrkt_FrontPlate_XWidth"         value=" 115. " />
+<var name="AFT_BTBrkt_FrontPlate_YHight"         value=" 120. " />
+
+<tubs name="AFT_BTBrkt_FrontPlate_SubTube"  material="Iron"  Rio_Z="0.; AFT_BTBrkt_FrontTube_Radius+AFT_BTBrktInf_BackPlate_Thickness/2.+GENV_Eps ; AFT_BTBrkt_BackTube_ZLength" profile=" 300.; 70." nbPhi="50"   />
+<box name="AFT_BTBrkt_FrontPlate_Full"      material="Iron"  X_Y_Z="AFT_BTBrkt_FrontPlate_XWidth; AFT_BTBrkt_FrontPlate_YHight; AFT_BTBrktInf_BackPlate_Thickness" />
+
+<subtraction name="AFT_BTBrkt_FrontPlate"> 
+ <posXYZ  volume="AFT_BTBrkt_FrontPlate_Full"      X_Y_Z=" AFT_BTBrkt_SideSpacerPlate_XDist-AFT_BTBrkt_FrontPlate_XWidth/2.; AFT_BTBrkt_BackPlate_YShort+AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrkt_FrontPlate_YHight/2.; 0."/>
+ <posXYZ  volume="AFT_BTBrkt_FrontPlate_SubTube"   X_Y_Z=" 0.; AFT_BTBrkt_FrontTube_YOffset; 0." />
+</subtraction>
+
+<composition name="AFT_BTBrkt">
+  <posXYZ  volume="AFT_BTBrkt_BackPlate"            X_Y_Z=" 0.; 2.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal-AFT_BTBrkt_BackPlate_YShort; AFT_BTBrkt_ZLength+AFT_BTBrktInf_BackPlate_Thickness/2."/>
+  <posXYZ  volume="AFT_BTBrkt_SideLongX"            X_Y_Z="-(AFT_BTBrkt_CentralPlateXLength+AFT_BTBrkt_SidePlateXLength-AFT_BTBrktInf_BackPlate_Thickness)/2.; 1.5*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal+AFT_BTBrktInf_BackPlate_Thickness/2.; AFT_BTBrkt_ZLength/2."/>
+  <posXYZ  volume="AFT_BTBrkt_SideLongX"            X_Y_Z=" (AFT_BTBrkt_CentralPlateXLength+AFT_BTBrkt_SidePlateXLength-AFT_BTBrktInf_BackPlate_Thickness)/2.; 1.5*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal+AFT_BTBrktInf_BackPlate_Thickness/2.; AFT_BTBrkt_ZLength/2."/>
+  <posXYZ  volume="AFT_BTBrkt_CtrSpacerPlate"       X_Y_Z="-AFT_BTBrktInf_BackPlate_XLong/2.+AFT_BTBrktInf_CentralSpacerOffsetX+AFT_BTBrktInf_BackPlate_Thickness/2.; 2.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal-AFT_BTBrkt_BackPlate_YShort+AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrkt_ZLength" rot=" 0.; 90.; 0."/>
+  <posXYZ  volume="AFT_BTBrkt_CtrSpacerPlate"       X_Y_Z=" AFT_BTBrktInf_BackPlate_XLong/2.-AFT_BTBrktInf_CentralSpacerOffsetX-AFT_BTBrktInf_BackPlate_Thickness/2.; 2.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal-AFT_BTBrkt_BackPlate_YShort+AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrkt_ZLength" rot=" 0.; 90.; 0."/>
+  <posXYZ  volume="AFT_BTBrkt_MidSpacerPlate"       X_Y_Z="-(AFT_BTBrkt_CentralPlateXLength-AFT_BTBrktInf_BackPlate_Thickness)/2.; 2.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal-AFT_BTBrkt_BackPlate_YShort+AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrkt_ZLength" rot=" 0.; 90.; 0."/>
+  <posXYZ  volume="AFT_BTBrkt_MidSpacerPlate"       X_Y_Z=" (AFT_BTBrkt_CentralPlateXLength-AFT_BTBrktInf_BackPlate_Thickness)/2.; 2.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal-AFT_BTBrkt_BackPlate_YShort+AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrkt_ZLength" rot=" 0.; 90.; 0."/>
+  <posXYZ  volume="AFT_BTBrkt_SideSpacerPlate"      X_Y_Z="-AFT_BTBrkt_SideSpacerPlate_XDist-AFT_BTBrktInf_BackPlate_Thickness/2.; 2.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal+AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrkt_ZLength" rot=" 0.; 90.; 0."/>
+  <posXYZ  volume="AFT_BTBrkt_SideSpacerPlate"      X_Y_Z=" AFT_BTBrkt_SideSpacerPlate_XDist+AFT_BTBrktInf_BackPlate_Thickness/2.; 2.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal+AFT_BTBrktInf_BackPlate_Thickness; AFT_BTBrkt_ZLength" rot=" 0.; 90.; 0."/>
+  <posXYZ  volume="AFT_BTBrkt_FrontTube"            X_Y_Z=" 0.; 2.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal-AFT_BTBrkt_BackPlate_YShort+AFT_BTBrkt_FrontTube_YOffset; AFT_BTBrkt_ZLength-AFT_BTBrkt_SideSpacerPlate_XLong+AFT_BTBrkt_FrontTube_ZLength/2." />
+  <posXYZ  volume="AFT_BTBrkt_FrontTube"            X_Y_Z=" 0.; 2.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal-AFT_BTBrkt_BackPlate_YShort+AFT_BTBrkt_FrontTube_YOffset; AFT_BTBrkt_ZLength-AFT_BTBrkt_SideSpacerPlate_XLong+AFT_BTBrkt_FrontTube_ZLength/2." rot=" 0.; 0.; 80."/>
+  <posXYZ  volume="AFT_BTBrkt_BackTube"             X_Y_Z=" 0.; 3.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal-AFT_BTBrkt_BackPlate_YShort+AFT_BTBrkt_CtrSpacerPlate_YLong+AFT_BTBrkt_BackTube_PosOff+(AFT_BTBrkt_BackTube_ZLength/2.-AFT_BTBrkt_BackTube_YOffset)*GENV_Si45; AFT_BTBrkt_ZLength-AFT_BTBrkt_CtrSpacerPlate_XShort-AFT_BTBrkt_BackTube_PosOff+(AFT_BTBrkt_BackTube_ZLength/2.-AFT_BTBrkt_BackTube_YOffset)*GENV_Si45" rot=" -45.;  0.;  0."/>
+  <posXYZ  volume="AFT_BTBrkt_BackTube"             X_Y_Z=" 0.; 3.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal-AFT_BTBrkt_BackPlate_YShort+AFT_BTBrkt_CtrSpacerPlate_YLong+AFT_BTBrkt_BackTube_PosOff+(AFT_BTBrkt_BackTube_ZLength/2.-AFT_BTBrkt_BackTube_YOffset)*GENV_Si45; AFT_BTBrkt_ZLength-AFT_BTBrkt_CtrSpacerPlate_XShort-AFT_BTBrkt_BackTube_PosOff+(AFT_BTBrkt_BackTube_ZLength/2.-AFT_BTBrkt_BackTube_YOffset)*GENV_Si45" rot="   0.; 45.; 90."/>
+  <posXYZ  volume="AFT_BTBrkt_FrontPlate"           X_Y_Z=" 0.; 2.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal-AFT_BTBrkt_BackPlate_YShort; AFT_BTBrkt_ZLength-AFT_BTBrkt_SideSpacerPlate_XLong+AFT_BTBrktInf_BackPlate_Thickness/2.+AFT_BTBrkt_FrontPlate_ZOffset" />
+  <posXYZ  volume="AFT_BTBrkt_FrontPlate"           X_Y_Z=" 0.; 2.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal-AFT_BTBrkt_BackPlate_YShort; AFT_BTBrkt_ZLength-AFT_BTBrkt_SideSpacerPlate_XLong+AFT_BTBrktInf_BackPlate_Thickness/2.+AFT_BTBrkt_FrontPlate_ZOffset+AFT_BTBrkt_FrontPlate_ZGap+AFT_BTBrktInf_BackPlate_Thickness" />
+  <posXYZ  volume="AFT_BTBrkt_FrontPlate"           X_Y_Z=" 0.; 2.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal-AFT_BTBrkt_BackPlate_YShort; AFT_BTBrkt_ZLength-AFT_BTBrkt_SideSpacerPlate_XLong+AFT_BTBrktInf_BackPlate_Thickness/2.+AFT_BTBrkt_FrontPlate_ZOffset" rot=" 0.; 180.; 0." />
+  <posXYZ  volume="AFT_BTBrkt_FrontPlate"           X_Y_Z=" 0.; 2.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrktInf_YSpacerTotal-AFT_BTBrkt_BackPlate_YShort; AFT_BTBrkt_ZLength-AFT_BTBrkt_SideSpacerPlate_XLong+AFT_BTBrktInf_BackPlate_Thickness/2.+AFT_BTBrkt_FrontPlate_ZOffset+AFT_BTBrkt_FrontPlate_ZGap+AFT_BTBrktInf_BackPlate_Thickness" rot=" 0.; 180.; 0." />
+</composition>
+
+<var name="AFT_BTBrkt_Cryotubethickness"    value="AFT_BTBrkt_FrontTube_YOffset+2.-AFT_BTBrkt_FrontTube_Radius" />
+<var name="AFT_BTBrkt_CryotubeouterRadius"  value="AFT_BTBrkt_FrontTube_YOffset+2." />
+<var name="AFT_BTBrkt_CtrSpacerXOffset"     value="AFT_BTBrktInf_BackPlate_XLong/2.-AFT_BTBrktInf_CentralSpacerOffsetX-AFT_BTBrktInf_BackPlate_Thickness" />
+
+<var name="AFT_BTBrkt_PositioningParameter" value="(AFT_BTBrktInf_BackPlate_Thickness-AFT_BTBrkt_Cryotubethickness+2.-AFT_BTBrkt_ZLength+AFT_BTBrkt_CtrSpacerPlate_YLong+AFT_BTBrkt_Cryotubethickness)*GENV_Si45-(AFT_BTBrkt_CryotubeouterRadius-sqrt(AFT_BTBrkt_CryotubeouterRadius*AFT_BTBrkt_CryotubeouterRadius-AFT_BTBrkt_CtrSpacerXOffset*AFT_BTBrkt_CtrSpacerXOffset))+AFT_BTBrkt_Cryotubethickness" />
+
+<composition name="AFT_BTBrkt_final" >
+  <posXYZ  volume="AFT_BTBrkt"       X_Y_Z=" 0.; -(AFT_BTBrktInf_CentralSpacerYLong+2.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrkt_Cryotubethickness); 2.*GENV_Si45*AFT_BTBrkt_PositioningParameter" />
+  <posXYZ  volume="AFT_BTBrktInf"    X_Y_Z=" 0.; -(AFT_BTBrktInf_CentralSpacerYLong+2.*AFT_BTBrktInf_BackPlate_Thickness+AFT_BTBrkt_Cryotubethickness); 2.*GENV_Si45*AFT_BTBrkt_PositioningParameter" />
+</composition>
+
+<composition  name="BAR_CryoTubCorner_AFT" >
+  <posXYZ  volume="BAR_CryoTubCorner" X_Y_Z=" 0.; 0. ; 0." />
+  <posXYZ  volume="AFT_BTBrkt_final"    X_Y_Z=" ABRT_CryoRmin - 10.*GENV_Eps; 0.; ABRT_CryoZmax - ABRT_CryoRadi_Radius - ABRT_CryoRcur/sqrt(2.) + GENV_Ta225*ABRT_CryoRadi_Radius + 10.*GENV_Eps" rot=" 0. ; 0. ; -90. "/>
+</composition>
+
+<!-- CryoRib with cuts -->
+<subtraction  name="BAR_CryoRib" >
+  <posXYZ  volume="BAR_CryoRibOut"  X_Y_Z=" (ABRT_CryoRmax + ABRT_CryoRmin)/2. ; 0. ; 0. " />
+  <posXYZ  volume="BAR_CryoRibIn"   X_Y_Z=" (ABRT_CryoRmax + ABRT_CryoRmin)/2. ; 0. ; 0. " />
+  <posXYZ  volume="BAR_CryoTubCut"  X_Y_Z=" ABRT_CryoRmax - ABRT_CryoRadi_Radius - 10.*GENV_Eps; 0. ; 0. " />
+  <posXYZ  volume="BAR_CryoTubCut"  X_Y_Z=" ABRT_CryoRmin + ABRT_CryoRadi_Radius + 10.*GENV_Eps; 0. ; 0. " />
+</subtraction>
+
+<!-- CryoAtt with cuts -->
+<subtraction  name="BAR_CryoAtt" >
+  <posXYZ  volume="BAR_CryoAttOut"   X_Y_Z=" ABRT_CryAttRx_CryoAttRmax ; 0. ; 0. " rot=" 0. ;  90. ; 0. "/>
+  <posXYZ  volume="BAR_CryoAttIn"    X_Y_Z=" ABRT_CryAttRx_CryoAttRmax ; 0. ; 0. " rot=" 0. ;  90. ; 0. "/>
+  <posXYZ  volume="BAR_CryoTubCut"   X_Y_Z=" ABRT_CryoRmin + ABRT_CryoRadi_Radius + 10.*GENV_Eps; 0. ; 0. " />
+</subtraction>
+
+<!-- CryoRing with cuts -->
+<tubs  name="BAR_CryoRingA"   material="Iron1"  Rio_Z=" ABRT_CryRngRa_CryoRingRadius-ABRT_CryoRadT_RadThick ; ABRT_CryRngRa_CryoRingRadius ; 2.*ABRT_CryRngRm_CryoRingRmed*GENV_Ta225 "    nbPhi="20" />
+<subtraction  name="BAR_CryoRing" >
+  <posXYZ  volume="BAR_CryoRingA" />
+  <posXYZ  volume="BAR_CryoTubCut"  X_Y_Z=" (ABRT_CryoRmax-ABRT_CryoRadi_Radius)*GENV_Co225-ABRT_CryRngRm_CryoRingRmed ; 0. ;  (ABRT_CryoRmax-ABRT_CryoRadi_Radius)*GENV_Si225 "  rot=" 90. ; 0. ; 0. " />
+  <posXYZ  volume="BAR_CryoTubCut"  X_Y_Z=" (ABRT_CryoRmax-ABRT_CryoRadi_Radius)*GENV_Co225-ABRT_CryRngRm_CryoRingRmed ; 0. ; -(ABRT_CryoRmax-ABRT_CryoRadi_Radius)*GENV_Si225 "  rot=" 90. ; 0. ; 0. " />
+</subtraction>
+
+<composition  name="BAR_CryoTub_Sector" >
+  <posXYZ  volume="BAR_CryoTubAlongZ_Down" />
+  <posXYZ  volume="BAR_CryoTubAlongZ_Up" />
+  <posXYZ  volume="BAR_CryoTubAlongR_Plus" X_Y_Z=" 0.; 0.; 0."                             />
+  <posXYZ  volume="BAR_CryoTubAlongR_Plus" X_Y_Z=" ABRT_CryoRmin + ABRT_CryoRmax; 0.; 0." rot=" 0. ; 180. ; 0. "/>
+  <posXYZ  volume="BAR_CryoTubCorner_AFT"      X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ  volume="BAR_CryoTubCorner_AFT"      X_Y_Z=" 0.; 0.; 0." rot=" 0. ; 180. ; 180. "/>
+  <posXYZ  volume="BAR_CryoTubCorner"      X_Y_Z=" ABRT_CryoRmin + ABRT_CryoRmax; 0.; 0." rot=" 0. ; 180. ; 0. "/>
+  <posXYZ  volume="BAR_CryoTubCorner"      X_Y_Z="-GENV_Ta225*ABRT_CryoRadi_Radius*(1.+sqrt(2.)) + ABRT_CryoRmax - ABRT_CryoZmax + ABRT_CryoRadi_Radius; 0.;  GENV_Ta225*ABRT_CryoRadi_Radius*(1.+sqrt(2.)) + ABRT_CryoRmin + ABRT_CryoZmax - ABRT_CryoRadi_Radius" rot=" 0. ;  90. ; 0. "/>
+  <posXYZ  volume="BAR_CryoRing"           X_Y_Z=" ABRT_CryRngRm_CryoRingRmed*GENV_Co225 ; -ABRT_CryRngRm_CryoRingRmed*GENV_Si225 ; ABRT_CryRngZm_CryoRingZmed "  rot=" 90. ; 0. ; -22.5 " />
+  <foreach  index="Irib"  begin="0"  loops="7" >
+    <posXYZ  volume="BAR_CryoRibWing" X_Y_Z=" ABRT_CryoRmin+2.*ABRT_CryoRadi_Radius ; 0. ; ABRT_Zrib[Irib] "  rot=" 0. ; 0. ; -90. " />
+    <posXYZ  volume="BAR_CryoRibWing" X_Y_Z=" ABRT_CryoRmax-2.*ABRT_CryoRadi_Radius ; 0. ; ABRT_Zrib[Irib] "  rot=" 0. ; 0. ;  90. " />
+    <posXYZ  volume="BAR_CryoRib"     X_Y_Z=" 0.; 0.; ABRT_Zrib[Irib]"  rot=" 0. ; 0. ; 0. " />
+  </foreach>
+  <foreach  index="Ivouss"  begin="0"  loops="8" >
+    <posXYZ  volume="BAR_CryoAttWing" X_Y_Z=" ABRT_CryoRmin+ABRT_CryoRadi_Radius ; 0. ; ABRT_Zvouss[Ivouss] "  rot=" 0. ; 0. ; -90. " />
+    <posXYZ  volume="BAR_CryoAtt"     X_Y_Z=" 0.; 0.; ABRT_Zvouss[Ivouss]"  rot=" 0. ; 0. ; 0. " />
+  </foreach>
+</composition>
+
+
+<!--  Description of an Atlas Barrel toroid Strut  -->
+
+<gvxysx  name="BAR_StrutWingFull"  material="Iron4"  dZ="ABRT_StrWZthi_StrutWingZthick"  >
+  <gvxy_point  X_Y=" ABRT_StrWYmax_StrutWingYmax ; ABRT_StrWRmax_StrutWingRmax " />
+  <gvxy_point  X_Y=" ABRT_StrWYmed_StrutWingYmedi; ABRT_StrWRmed_StrutWingRmedi " />
+  <gvxy_point  X_Y=" ABRT_StrWYlow_StrutWingYlower; ABRT_StrWRlow_StrutWingRlower " />
+  <gvxy_point  X_Y=" ABRT_StrWYmin_StrutWingYmin ; ABRT_StrWRmin_StrutWingRmin " />
+</gvxysx>
+<box  name="BAR_StrutWingUpCut" material="Aluminium1"  X_Y_Z=" 2*ABRT_StrWYucu_StrutWingYupcut; ABRT_StrWYucu_StrutWingYupcut; ABRT_StrWYucu_StrutWingYupcut" />
+<subtraction  name="BAR_StrutWing" >
+  <posXYZ  volume="BAR_StrutWingFull" />
+  <posXYZ  volume="BAR_CryoTubCut"  X_Y_Z=" 0. ; ABRT_CryoRmax - ABRT_CryoRadi_Radius - 5.*GENV_Eps ; 0. " />
+  <posXYZ  volume="BAR_StrutWingUpCut" X_Y_Z=" 0. ; ABRT_CryoRmax ; 0. "/>
+</subtraction>
+<box  name="BAR_StrutWingBigSidePlate"   material="Iron1"       X_Y_Z=" ABRT_StrWYthi_StrutWingYthick ; ABRT_StrWBPhi_StrutWingBigPlateheight ; ABRT_StrWBPth_StrutWingBigPlatethick " />
+<box  name="BAR_StrutWingTopPlate"       material="Iron1"       X_Y_Z=" 2. * ABRT_StrWYmax_StrutWingYmax; ABRT_StrWZthi_StrutWingZthick ; ABRT_StrWSPth_StrutWingSmallPlatethick " />
+<box  name="BAR_StrutWingBottomPlate"    material="Iron1"       X_Y_Z=" 2. * ABRT_StrWYmin_StrutWingYmin; ABRT_StrWZthi_StrutWingZthick ; ABRT_StrWSPth_StrutWingSmallPlatethick " />
+<box  name="BAR_StrutWingUpperSidePlate" material="Iron1"       X_Y_Z=" (ABRT_StrWYmed_StrutWingYmedi-ABRT_StrWYmax_StrutWingYmax)/(cos(ABRT_StrWAupp_StrutWingAupper ))- ABRT_StrWZthi_StrutWingZthick; ABRT_StrWZthi_StrutWingZthick ; ABRT_StrWSPth_StrutWingSmallPlatethick " />
+<box  name="BAR_StrutWingLowerSidePlate" material="Iron1"       X_Y_Z=" (ABRT_StrWYlow_StrutWingYlower-ABRT_StrWYmin_StrutWingYmin)/(cos(ABRT_StrWAlow_StrutWingAlower )) - ABRT_StrWZthi_StrutWingZthick; ABRT_StrWZthi_StrutWingZthick ; ABRT_StrWSPth_StrutWingSmallPlatethick " />
+<union  name="BAR_StrutWingBox" >
+  <posXYZ  volume="BAR_StrutWing"       X_Y_Z=" 0. ; 0. ; -ABRT_StrWZlen_StrutWingZlen/2. " />
+  <posXYZ  volume="BAR_StrutWing"       X_Y_Z=" 0. ; 0. ; +ABRT_StrWZlen_StrutWingZlen/2. " />
+  <posXYZ  volume="BAR_StrutWingBigSidePlate"  X_Y_Z="   (ABRT_StrWYRli_StrutWingYRlink + ABRT_StrWYthi_StrutWingYthick/2. )*GENV_Co225; ABRT_StrWRmax_StrutWingRmax-ABRT_CryoRadi_Radius-(ABRT_StrWYRli_StrutWingYRlink + ABRT_StrWYthi_StrutWingYthick/2.)*GENV_Si225; 0. "  rot=" 0. ; 0. ; -22.5" />
+  <posXYZ  volume="BAR_StrutWingBigSidePlate"  X_Y_Z=" (- ABRT_StrWYRli_StrutWingYRlink - ABRT_StrWYthi_StrutWingYthick/2. )*GENV_Co225; ABRT_StrWRmax_StrutWingRmax-ABRT_CryoRadi_Radius-(ABRT_StrWYRli_StrutWingYRlink + ABRT_StrWYthi_StrutWingYthick/2.)*GENV_Si225; 0. "  rot=" 0. ; 0. ;  22.5" />
+  <posXYZ  volume="BAR_StrutWingTopPlate"        X_Y_Z=" 0. ; ABRT_StrWRmax_StrutWingRmax+ABRT_StrWZthi_StrutWingZthick/2.+GENV_Eps ; 0. " />
+  <posXYZ  volume="BAR_StrutWingBottomPlate"     X_Y_Z=" 0. ;ABRT_StrWRmin_StrutWingRmin-ABRT_StrWZthi_StrutWingZthick/2. ; 0. " />
+  <posXYZ  volume="BAR_StrutWingUpperSidePlate"  X_Y_Z=" (-ABRT_StrWYmed_StrutWingYmedi - ABRT_StrWYmax_StrutWingYmax - ABRT_StrWZthi_StrutWingZthick*(sin(ABRT_StrWAupp_StrutWingAupper) - cos(ABRT_StrWAupp_StrutWingAupper)))/2.; (ABRT_StrWRmax_StrutWingRmax + ABRT_StrWRmed_StrutWingRmedi + ABRT_StrWZthi_StrutWingZthick*(sin(ABRT_StrWAupp_StrutWingAupper) + cos(ABRT_StrWAupp_StrutWingAupper)))/2.; 0. "  rot=" 0. ; 0. ;  ABRT_StrWAupp_StrutWingAupper/GENV_PiS180" />
+  <posXYZ  volume="BAR_StrutWingUpperSidePlate"  X_Y_Z=" ( ABRT_StrWYmed_StrutWingYmedi + ABRT_StrWYmax_StrutWingYmax + ABRT_StrWZthi_StrutWingZthick*(sin(ABRT_StrWAupp_StrutWingAupper) - cos(ABRT_StrWAupp_StrutWingAupper)))/2.; (ABRT_StrWRmax_StrutWingRmax + ABRT_StrWRmed_StrutWingRmedi + ABRT_StrWZthi_StrutWingZthick*(sin(ABRT_StrWAupp_StrutWingAupper) + cos(ABRT_StrWAupp_StrutWingAupper)))/2.; 0. "  rot=" 0. ; 0. ; -ABRT_StrWAupp_StrutWingAupper/GENV_PiS180" />
+  <posXYZ  volume="BAR_StrutWingLowerSidePlate"  X_Y_Z=" ( ABRT_StrWYlow_StrutWingYlower + ABRT_StrWYmin_StrutWingYmin + ABRT_StrWZthi_StrutWingZthick*(sin(ABRT_StrWAlow_StrutWingAlower) - cos(ABRT_StrWAlow_StrutWingAlower)))/2.; (ABRT_StrWRlow_StrutWingRlower+ABRT_StrWRmin_StrutWingRmin - ABRT_StrWZthi_StrutWingZthick*(sin(ABRT_StrWAlow_StrutWingAlower) + cos(ABRT_StrWAlow_StrutWingAlower)))/2. ; 0. "  rot=" 0. ; 0. ;  ABRT_StrWAlow_StrutWingAlower/GENV_PiS180" />
+  <posXYZ  volume="BAR_StrutWingLowerSidePlate"  X_Y_Z=" (-ABRT_StrWYlow_StrutWingYlower - ABRT_StrWYmin_StrutWingYmin - ABRT_StrWZthi_StrutWingZthick*(sin(ABRT_StrWAlow_StrutWingAlower) - cos(ABRT_StrWAlow_StrutWingAlower)))/2.; (ABRT_StrWRlow_StrutWingRlower+ABRT_StrWRmin_StrutWingRmin - ABRT_StrWZthi_StrutWingZthick*(sin(ABRT_StrWAlow_StrutWingAlower) + cos(ABRT_StrWAlow_StrutWingAlower)))/2. ; 0. "  rot=" 0. ; 0. ; -ABRT_StrWAlow_StrutWingAlower/GENV_PiS180" />
+</union>
+
+<box  name="BAR_StrutFull"      material="Aluminium4"  X_Y_Z=" ABRT_StrtYlen- 2.* ABRT_StrtPthi_StrutPlatethick ; ABRT_StrWBPhi_StrutWingBigPlateheight - 2.*ABRT_StrtPoff_StrutPlateoff ; ABRT_StrtZwid_StrutZwidth - 2.*ABRT_StrtPoff_StrutPlateoff " />
+<box  name="BAR_StrutHole"      material="Aluminium1"  X_Y_Z=" ABRT_StrtYlen- 2.* ABRT_StrtPthi_StrutPlatethick + 10.*GENV_Eps; ABRT_StrWBPhi_StrutWingBigPlateheight - 2.*ABRT_StrtPoff_StrutPlateoff-2.*ABRT_StrtRthi_StrutRthick ; ABRT_StrtZwid_StrutZwidth - 2.*ABRT_StrtPoff_StrutPlateoff " />
+<box  name="BAR_StrutPlate"     material="Aluminium4"  X_Y_Z=" ABRT_StrtPthi_StrutPlatethick; ABRT_StrWBPhi_StrutWingBigPlateheight ; ABRT_StrtZwid_StrutZwidth " />
+<subtraction  name="BAR_StrutBarr" >
+  <posXYZ  volume="BAR_StrutFull" />
+  <posXYZ  volume="BAR_StrutHole"  X_Y_Z=" 0. ; 0. ; -(ABRT_StrtZwid_StrutZwidth - 2.* ABRT_StrtPoff_StrutPlateoff)/2. -ABRT_StrtZthi_StrutZthick/2. " />
+  <posXYZ  volume="BAR_StrutHole"  X_Y_Z=" 0. ; 0. ;  (ABRT_StrtZwid_StrutZwidth - 2.* ABRT_StrtPoff_StrutPlateoff)/2. +ABRT_StrtZthi_StrutZthick/2. " />
+</subtraction>
+<!-- ABRT_StrtXpos_Strut_Xposition is done by calculation => should be taken from blueprint atltbw__0002-vAD BUT ONLY in combination with update of ABRT_CryoRmin and ABRT_CryoRmax -->
+<var   name="ABRT_StrtXpos_Strut_Xposition"            value="ABRT_StrWRmax_StrutWingRmax-ABRT_CryoRadi_Radius-ABRT_StrtYlen/2.*GENV_Si225-(ABRT_StrWBPhi_StrutWingBigPlateheight/2. - ABRT_StrtPoff_StrutPlateoff)" />
+<composition  name="BAR_Strut_Sector" >
+  <posXYZ  volume="BAR_StrutWingBox" X_Y_Z="          0.         ;           0.         ; 0. "  rot=" 0. ; 0. ;  -90. " />
+  <posXYZ  volume="BAR_StrutBarr"    X_Y_Z="  ABRT_StrtXpos_Strut_Xposition; -ABRT_StrtXpos_Strut_Xposition*GENV_Ta225; 0. "  rot=" 0. ; 0. ; -112.5" />
+  <posXYZ  volume="BAR_StrutPlate"   X_Y_Z="  ABRT_StrtXpos_Strut_Xposition-ABRT_StrtYlen/2.*GENV_Si225+ABRT_StrtPthi_StrutPlatethick/2.*GENV_Si225 ; -ABRT_StrtXpos_Strut_Xposition*GENV_Ta225-ABRT_StrtYlen/2.*GENV_Co225+ABRT_StrtPthi_StrutPlatethick/2.*GENV_Co225; 0."  rot=" 0. ; 0. ; -112.5" />
+  <posXYZ  volume="BAR_StrutPlate"   X_Y_Z="  ABRT_StrtXpos_Strut_Xposition+ABRT_StrtYlen/2.*GENV_Si225-ABRT_StrtPthi_StrutPlatethick/2.*GENV_Si225 ; -ABRT_StrtXpos_Strut_Xposition*GENV_Ta225+ABRT_StrtYlen/2.*GENV_Co225-ABRT_StrtPthi_StrutPlatethick/2.*GENV_Co225; 0."  rot=" 0. ; 0. ; -112.5" />
+</composition>
+
+
+
+
+<!--  Description of an Atlas Barrel toroid voussoir and voussoir head  -->
+
+<!-- BEGIN confirmation with atltbwv_0028-vAA (if no other comment) -->
+<var  name="ABRT_VousBlXh_VoussBlockXheight"            value= "850." />
+<var  name="ABRT_VousPliX_VoussPlateInnerXwid"          value= "120." />
+<var  name="ABRT_VousPloX_VoussPlateOuterXwid"          value=  "80." />
+<var  name="ABRT_VousBlYw_VoussBlockYwid"               value="2850." />
+<var  name="ABRT_VouBlYwS_VoussBlockYwidSub"            value= "120." />
+<var  name="ABRT_VouRCYwi_VoussRectCutYwid"             value= "815." />
+<var  name="ABRT_VouRPYwi_VoussReinforcePlatYwid"       value=  "50." />
+<var  name="ABRT_VouBlZle_VoussBlockZlen"               value= "500." />
+<var  name="ABRT_VouBlZlS_VoussBlockZlenSub"            value=  "50." />
+<var  name="ABRT_VouBZWTh_VoussBlockZWallTh"            value=  "50." />
+<var  name="ABRT_VouCutZe_VoussCutZExt"                 value=" 500." />  <!-- no confirmation since arbitrary cut parameter -->
+<var  name="ABRT_VouRCutR_VoussRoundCutRad"             value= "300." />
+<var  name="ABRT_VouReCsl_VoussRectCutXYslant"          value=  "30." />  <!-- no confirmation since approx. for rounded corners -->
+<!-- END confirmation with atltbwv_0028-vAA -->
+
+<!-- BEGIN confirmation with atltbwv_0029-vAB (if no other comment) -->
+<var  name="ABRT_CnbCoYex_ConboxCoreYextension"         value= " 880." />
+<var  name="ABRT_CnbCoXex_ConboxCoreXextension"         value= "2367." />
+<var  name="ABRT_CnbCoXsu_ConboxCoreXsup"               value= " 834." />
+<var  name="ABRT_CnbCoXin_ConboxCoreXinf"               value= " 640.7"/>
+<var  name="ABRT_CnbEaHei_ConboxEarHeight"              value= " 850." />
+<var  name="ABRT_CnbEaCxi_ConboxEarCutXin"              value= " 350." />
+<var  name="ABRT_CnbEaCtl_ConboxEarCutPlateThickLowOut" value= " 120." />
+<var  name="ABRT_CnbEaCtu_ConboxEarCutPlateThickUp"     value= "  80." />
+<var  name="ABRT_CnbEaCzw_ConboxEarCutZwall"            value= "  50." />
+<var  name="ABRT_CnbEaCze_ConboxEarCutZextr"            value= " 135." />
+<var  name="ABRT_CnbEaCPl_ConboxInnerEarCutPlate"       value= "  60." />  <!-- atltbwv_0052-vAA -->
+<var  name="ABRT_CnbCaDma_ConboxCavityDmax"             value= " 528." />  <!-- atltbwv_0059-v0  -->
+<var  name="ABRT_CnbCaDme_ConboxCavityDmedium"          value= " 478." />  <!-- atltbwv_0059-v0  -->
+<var  name="ABRT_CnbCaDmi_ConboxCavityDmin"             value= " 468." />  <!-- atltbwv_0059-v0  -->
+<var  name="ABRT_CnbCaZin_ConboxCavityZinter2"          value= "  50." />  <!-- atltbwv_0059-v0  -->
+<var  name="ABRT_CnbCaZex_ConboxCavityZext"             value= " 790." />  <!-- atltbwv_0059-v0  -->
+<var  name="ABRT_CnboxZex_ConboxZextension"             value= " 550." />
+
+<var  name="ABRT_VousMBRa_VoussoirMainBlockRadius"      value= "5723." />  <!-- atltbw__0002-vAD -->
+<var  name="ABRT_CnbxMBRa_ConboxMainBlockRadius"        value= "6942." />  <!-- atltbw__0002-vAD -->
+<!-- END confirmation with atltbwv_0029-vAB -->
+
+
+<!--  Constants and derived variables  -->
+
+<var  name="ABRT_VouCRCYr_VoussCentrRectCutYreach" value=" ABRT_VousBlYw_VoussBlockYwid/2.-ABRT_VouBlYwS_VoussBlockYwidSub-ABRT_VouRCYwi_VoussRectCutYwid-ABRT_VouRPYwi_VoussReinforcePlatYwid" />
+<var  name="ABRT_VousRCXw_VoussRectCutXwid"        value=" ABRT_VousBlXh_VoussBlockXheight-ABRT_VousPliX_VoussPlateInnerXwid-ABRT_VousPloX_VoussPlateOuterXwid" />
+<var  name="ABRT_VousCXof_VoussCutXoffset"         value="(ABRT_VousPliX_VoussPlateInnerXwid-ABRT_VousPloX_VoussPlateOuterXwid)/2." />
+<var  name="ABRT_VousCYpo_VoussoirCutYpos"         value=" ABRT_VousBlYw_VoussBlockYwid/2.-ABRT_VouBlYwS_VoussBlockYwidSub-ABRT_VouRCYwi_VoussRectCutYwid/2." />
+<var  name="ABRT_VousCZpo_VoussoirCutZpos"         value=" ABRT_VouCutZe_VoussCutZExt/2.+ABRT_VouBZWTh_VoussBlockZWallTh/2." />
+<var  name="ABRT_CnbEaXtp_ConboxEarXtop"           value=" ABRT_CnbCoXex_ConboxCoreXextension/2. " />
+<var  name="ABRT_CnbEaYtp_ConboxEarYtop"           value=" ABRT_CnbCoYex_ConboxCoreYextension -  GENV_Ta225 *(ABRT_CnbCoXex_ConboxCoreXextension-ABRT_CnbCoXsu_ConboxCoreXsup)/2." />
+<var  name="ABRT_CnbEaXbt_ConboxEarXbot"           value=" ABRT_CnbEaXtp_ConboxEarXtop - ABRT_CnbEaHei_ConboxEarHeight*GENV_Si225 " />
+<var  name="ABRT_CnbEaYbt_ConboxEarYbot"           value=" ABRT_CnbEaYtp_ConboxEarYtop - ABRT_CnbEaHei_ConboxEarHeight*GENV_Co225 " />
+<var  name="ABRT_CnbECXol_ConboxEarCutXoutlow"     value=" ABRT_CnbEaXbt_ConboxEarXbot - ABRT_CnbEaCtl_ConboxEarCutPlateThickLowOut*sqrt(2.)*GENV_Si225" />
+<var  name="ABRT_CnbECYol_ConboxEarCutYoutlow"     value=" ABRT_CnbEaYbt_ConboxEarYbot + ABRT_CnbEaCtl_ConboxEarCutPlateThickLowOut*sqrt(2.)*GENV_Co225" />
+<var  name="ABRT_CnbECYil_ConboxEarCutYinlow"      value=" ABRT_CnbECYol_ConboxEarCutYoutlow + (ABRT_CnbECXol_ConboxEarCutXoutlow-ABRT_CnbEaCxi_ConboxEarCutXin)*GENV_Ta225 " />
+<var  name="ABRT_CnbECoHe_ConboxEarCutOutHeight"   value=" ABRT_CnbEaHei_ConboxEarHeight- ABRT_CnbEaCtl_ConboxEarCutPlateThickLowOut-ABRT_CnbEaCtu_ConboxEarCutPlateThickUp" />
+<var  name="ABRT_CnbECXou_ConboxEarCutXoutup"      value=" ABRT_CnbECXol_ConboxEarCutXoutlow + ABRT_CnbECoHe_ConboxEarCutOutHeight*GENV_Si225" />
+<var  name="ABRT_CnbECYou_ConboxEarCutYoutup"      value=" ABRT_CnbECYol_ConboxEarCutYoutlow + ABRT_CnbECoHe_ConboxEarCutOutHeight*GENV_Co225" />
+<var  name="ABRT_CnbECYiu_ConboxEarCutYinup"       value=" ABRT_CnbECYou_ConboxEarCutYoutup + (ABRT_CnbECXou_ConboxEarCutXoutup-ABRT_CnbEaCxi_ConboxEarCutXin)*GENV_Ta225" />
+<var  name="ABRT_CnbECZpo_ConboxEarCutZpos"        value=" ABRT_CnboxZex_ConboxZextension/2. + ABRT_CnbEaCze_ConboxEarCutZextr " />
+<var  name="ABRT_CnbIECZp_ConboxInnerEarCutZpos"   value=" ABRT_CnboxZex_ConboxZextension/2. + ABRT_CnbEaCzw_ConboxEarCutZwall/2. " />
+<var  name="ABRT_CnbCaZin_ConboxCavityZinter"      value="(ABRT_CnbCaDma_ConboxCavityDmax - ABRT_CnbCaDme_ConboxCavityDmedium)/2. / tan(ABRT_CryAttAl_CryoAttAlfa*GENV_PiS180)" />
+<var  name="ABRT_VoussRad_VoussoirRadius"          value=" ABRT_VousMBRa_VoussoirMainBlockRadius + ABRT_VousBlXh_VoussBlockXheight/2." />
+<var  name="ABRT_CnboxRad_ConboxRadius"            value=" ABRT_CnbxMBRa_ConboxMainBlockRadius - ABRT_CnbCoYex_ConboxCoreYextension" />
+
+
+
+<!--  Description of the voussoir head (connexion box)  -->
+
+<gvxysx  name="BAR_ConboxMainBlock"  material="Aluminium4"   dZ="ABRT_CnboxZex_ConboxZextension"  >
+  <gvxy_point  X_Y=" ABRT_CnbCoXin_ConboxCoreXinf/2. ; 0.                 " />
+  <gvxy_point  X_Y=" ABRT_CnbEaXbt_ConboxEarXbot     ; ABRT_CnbEaYbt_ConboxEarYbot  " />
+  <gvxy_point  X_Y=" ABRT_CnbEaXtp_ConboxEarXtop     ; ABRT_CnbEaYtp_ConboxEarYtop  " />
+  <gvxy_point  X_Y=" ABRT_CnbCoXsu_ConboxCoreXsup/2. ; ABRT_CnbCoYex_ConboxCoreYextension " />
+</gvxysx>
+<gvxy  name="BAR_ConboxEarCut"       material="Aluminium1"   dZ="ABRT_CnboxZex_ConboxZextension"  >
+  <gvxy_point  X_Y=" ABRT_CnbEaCxi_ConboxEarCutXin     ; ABRT_CnbECYil_ConboxEarCutYinlow  " />
+  <gvxy_point  X_Y=" ABRT_CnbECXol_ConboxEarCutXoutlow ; ABRT_CnbECYol_ConboxEarCutYoutlow " />
+  <gvxy_point  X_Y=" ABRT_CnbECXou_ConboxEarCutXoutup  ; ABRT_CnbECYou_ConboxEarCutYoutup  " />
+  <gvxy_point  X_Y=" ABRT_CnbEaCxi_ConboxEarCutXin     ; ABRT_CnbECYiu_ConboxEarCutYinup   " />
+</gvxy>
+<gvxy  name="BAR_ConboxInnerEarCut"  material="Aluminium1"   dZ="ABRT_CnboxZex_ConboxZextension"  >
+  <gvxy_point  X_Y=" ABRT_CnbEaCxi_ConboxEarCutXin + ABRT_CnbEaCPl_ConboxInnerEarCutPlate ; ABRT_CnbECYil_ConboxEarCutYinlow -  ABRT_CnbEaCPl_ConboxInnerEarCutPlate * GENV_Ta225 " />
+  <gvxy_point  X_Y=" ABRT_CnbECXol_ConboxEarCutXoutlow ; ABRT_CnbECYol_ConboxEarCutYoutlow " />
+  <gvxy_point  X_Y=" ABRT_CnbECXou_ConboxEarCutXoutup  ; ABRT_CnbECYou_ConboxEarCutYoutup  " />
+  <gvxy_point  X_Y=" ABRT_CnbEaCxi_ConboxEarCutXin + ABRT_CnbEaCPl_ConboxInnerEarCutPlate ; ABRT_CnbECYiu_ConboxEarCutYinup -  ABRT_CnbEaCPl_ConboxInnerEarCutPlate * GENV_Ta225 " />
+</gvxy>
+<pcon   name="BAR_ConboxCavity"      material="Aluminium1"  nbPhi="20" >
+  <polyplane  Rio_Z="0. ; ABRT_CnbCaDma_ConboxCavityDmax/2. ;           0.          " />
+  <polyplane  Rio_Z="0. ; ABRT_CnbCaDme_ConboxCavityDmedium/2. ; ABRT_CnbCaZin_ConboxCavityZinter" />
+  <polyplane  Rio_Z="0. ; ABRT_CnbCaDme_ConboxCavityDmedium/2. ; ABRT_CnbCaZex_ConboxCavityZext - ABRT_CnbCaZin_ConboxCavityZinter2  " />
+  <polyplane  Rio_Z="0. ; ABRT_CnbCaDmi_ConboxCavityDmin/2. ; ABRT_CnbCaZex_ConboxCavityZext - ABRT_CnbCaZin_ConboxCavityZinter2  " />
+  <polyplane  Rio_Z="0. ; ABRT_CnbCaDmi_ConboxCavityDmin/2. ; ABRT_CnbCaZex_ConboxCavityZext  " />
+</pcon>
+<tubs   name="BAR_ConboxShaft"  material="Aluminium4"  Rio_Z=" 0. ; ABRT_BielRHol_BiellRadHole-3.*GENV_Eps         ; 0.95*ABRT_CryAttD1_CryoAttDiam1 "  nbPhi="16" />
+<!--<tubs   name="BAR_ConboxShaftB"  material="Aluminium1"  Rio_Z=" 0. ; ABRT_CryAttD1_CryoAttDiam1/2.-3.*GENV_Eps ; 4.*ABRT_BielRHol_BiellRadHole "         nbPhi="20" />
+<intersection  name="BAR_ConboxShaft" >  
+  <posXYZ  volume="BAR_ConboxShaftA" /> 
+  <posXYZ  volume="BAR_ConboxShaftB"   rot=" 0. ; 90. ; 0. "/>
+</intersection>-->
+
+
+<!--  Description of the voussoir  -->
+
+<gvxysxy  name="BAR_VoussoirMainBlock"       material="Aluminium4"   dZ="ABRT_VousBlXh_VoussBlockXheight"  >
+  <gvxy_point  X_Y=" ABRT_VouBlZle_VoussBlockZlen/2. - ABRT_VouBlZlS_VoussBlockZlenSub ; ABRT_VousBlYw_VoussBlockYwid/2. - ABRT_VouBlYwS_VoussBlockYwidSub -ABRT_VouBlZlS_VoussBlockZlenSub/GENV_Ta15 " />
+  <gvxy_point  X_Y=" ABRT_VouBlZle_VoussBlockZlen/2.                         ; ABRT_VousBlYw_VoussBlockYwid/2. - ABRT_VouBlYwS_VoussBlockYwidSub                             " />
+  <gvxy_point  X_Y=" ABRT_VouBlZle_VoussBlockZlen/2.                         ; ABRT_VousBlYw_VoussBlockYwid/2.                                                     " />
+</gvxysxy>
+<gvxysxy  name="BAR_VoussoirRectCut"         material="Aluminium1"  dZ="ABRT_VouCutZe_VoussCutZExt"  >
+  <gvxy_point  X_Y=" ABRT_VousRCXw_VoussRectCutXwid/2. ; ABRT_VouRCYwi_VoussRectCutYwid/2.-ABRT_VouReCsl_VoussRectCutXYslant" />
+  <gvxy_point  X_Y=" ABRT_VousRCXw_VoussRectCutXwid/2.-ABRT_VouReCsl_VoussRectCutXYslant ; ABRT_VouRCYwi_VoussRectCutYwid/2." />
+</gvxysxy>
+<gvxysxy  name="BAR_VoussoirCentralRectCut"  material="Aluminium1"  dZ="ABRT_VouCutZe_VoussCutZExt"  >
+  <gvxy_point  X_Y=" ABRT_VousRCXw_VoussRectCutXwid/2. ; ABRT_VouCRCYr_VoussCentrRectCutYreach-ABRT_VouReCsl_VoussRectCutXYslant" />
+  <gvxy_point  X_Y=" ABRT_VousRCXw_VoussRectCutXwid/2.-ABRT_VouReCsl_VoussRectCutXYslant ; ABRT_VouCRCYr_VoussCentrRectCutYreach" />
+</gvxysxy>
+<tubs     name="BAR_VoussoirRoundCut"        material="Aluminium1"  Rio_Z=" 0 ; ABRT_VouRCutR_VoussRoundCutRad ; ABRT_VouCutZe_VoussCutZExt"  nbPhi="18" />
+
+<union  name="BAR_VoussoirCut" >
+  <posXYZ  volume="BAR_VoussoirRoundCut"       X_Y_Z="  0. ;  ABRT_VousCYpo_VoussoirCutYpos ;        0.           "     rot="   0. ;  0. ; 0."  />
+  <posXYZ  volume="BAR_VoussoirRoundCut"       X_Y_Z="  0. ; -ABRT_VousCYpo_VoussoirCutYpos ;        0.           "     rot="   0. ;  0. ; 0."  />
+  <posXYZ  volume="BAR_VoussoirRectCut"        X_Y_Z="  0. ;  ABRT_VousCYpo_VoussoirCutYpos ; ABRT_VousCZpo_VoussoirCutZpos "     rot="   0. ;  0. ; 0."  />
+  <posXYZ  volume="BAR_VoussoirRectCut"        X_Y_Z="  0. ; -ABRT_VousCYpo_VoussoirCutYpos ; ABRT_VousCZpo_VoussoirCutZpos "     rot="   0. ;  0. ; 0."  />
+  <posXYZ  volume="BAR_VoussoirRectCut"        X_Y_Z="  0. ;  ABRT_VousCYpo_VoussoirCutYpos ;-ABRT_VousCZpo_VoussoirCutZpos "     rot="   0. ;  0. ; 0."  />
+  <posXYZ  volume="BAR_VoussoirRectCut"        X_Y_Z="  0. ; -ABRT_VousCYpo_VoussoirCutYpos ;-ABRT_VousCZpo_VoussoirCutZpos "     rot="   0. ;  0. ; 0."  />
+  <posXYZ  volume="BAR_VoussoirCentralRectCut" X_Y_Z=" GENV_Eps ;        0.            ; ABRT_VousCZpo_VoussoirCutZpos+GENV_Eps"  rot="   0. ;  0. ; 0."  />
+  <posXYZ  volume="BAR_VoussoirCentralRectCut" X_Y_Z="-GENV_Eps ;        0.            ;-ABRT_VousCZpo_VoussoirCutZpos-GENV_Eps"  rot="   0. ;  0. ; 0."  />
+</union>
+<subtraction  name="BAR_Voussoir" >
+  <posXYZ  volume="BAR_VoussoirMainBlock"   X_Y_Z=" 0. ; 0. ; 0. "  rot="   0. ; 90. ; 0."  />
+  <posXYZ  volume="BAR_VoussoirCut" X_Y_Z=" ABRT_VousCXof_VoussCutXoffset ; 0. ; 0. "  rot="   0. ;  0. ; 0."  />
+</subtraction>
+
+<union  name="BAR_ConboxTheCut" >
+  <posXYZ  volume="BAR_ConboxEarCut"       X_Y_Z="  0. ; 0. ; ABRT_CnbECZpo_ConboxEarCutZpos      "  rot=" 0. ; 0. ; 0." />
+  <posXYZ  volume="BAR_ConboxEarCut"       X_Y_Z="  0. ; 0. ;-ABRT_CnbECZpo_ConboxEarCutZpos      "  rot=" 0. ; 0. ; 0." />
+  <posXYZ  volume="BAR_ConboxEarCut"       X_Y_Z="  0. ; 0. ; ABRT_CnbECZpo_ConboxEarCutZpos      "  rot=" 0. ; 180. ; 0." />
+  <posXYZ  volume="BAR_ConboxEarCut"       X_Y_Z="  0. ; 0. ;-ABRT_CnbECZpo_ConboxEarCutZpos      "  rot=" 0. ; 180. ; 0." />
+  <posXYZ  volume="BAR_ConboxInnerEarCut"  X_Y_Z="  0. ; 0. ; ABRT_CnbIECZp_ConboxInnerEarCutZpos "  rot=" 0. ; 0. ; 0." />
+  <posXYZ  volume="BAR_ConboxInnerEarCut"  X_Y_Z="  0. ; 0. ;-ABRT_CnbIECZp_ConboxInnerEarCutZpos "  rot=" 0. ; 0. ; 0." />
+  <posXYZ  volume="BAR_ConboxInnerEarCut"  X_Y_Z="  0. ; 0. ; ABRT_CnbIECZp_ConboxInnerEarCutZpos "  rot=" 0. ; 180. ; 0." />
+  <posXYZ  volume="BAR_ConboxInnerEarCut"  X_Y_Z="  0. ; 0. ;-ABRT_CnbIECZp_ConboxInnerEarCutZpos "  rot=" 0. ; 180. ; 0." />
+  <posXYZ  volume="BAR_ConboxCavity"       X_Y_Z="  0. ; 0. ; 0. "                         rot=" -90. ; 0. ; 0." />
+</union>
+<subtraction  name="BAR_ConnectingBox" >
+  <posXYZ  volume="BAR_ConboxMainBlock" />
+  <posXYZ  volume="BAR_ConboxTheCut" />
+</subtraction>
+
+<composition  name="BAR_Voussoir_Sector" >
+  <posXYZ  volume="BAR_ConnectingBox"  X_Y_Z=" ABRT_CnboxRad_ConboxRadius         ;            0.              ; 0. "  rot=" 0. ;  0. ; -90. " />
+  <posXYZ  volume="BAR_ConboxShaft"    X_Y_Z=" ABRT_CoMaRmin_ColdMassRmin+ABRT_CoMaRThi_ColdMassRThick+ABRT_BielYhei_BiellYheight-ABRT_BielYcHo_BiellYcenHole ; 0. ; 0. "  rot=" 90. ; 0. ; 0. " />
+  <posXYZ  volume="BAR_Voussoir"       X_Y_Z=" GENV_Co225*ABRT_VoussRad_VoussoirRadius ; -GENV_Si225*ABRT_VoussRad_VoussoirRadius  ; 0. "  rot=" 0. ;  0. ; -22.5" />
+</composition>
+
+
+
+
+
+<composition  name="BAR_Toroid_Sector" >
+  <posXYZ  volume="BAR_CryoTub_Sector" />
+  <posXYZ  volume="BAR_ThermShield_Sector" />
+  <foreach  index="Ivouss"  begin="0"  loops="4" >
+    <posXYZ  volume="BAR_Strut_Sector"     X_Y_Z=" 0. ; 0. ; ABRT_Zvouss[Ivouss] " >
+      <ring  value="-4+Ivouss" />
+    </posXYZ>
+    <posXYZ  volume="BAR_Voussoir_Sector"  X_Y_Z=" 0. ; 0. ; ABRT_Zvouss[Ivouss] " >
+      <ring  value="-4+Ivouss" />
+    </posXYZ>
+  </foreach>
+  <foreach  index="Ivouss"  begin="4"  loops="4" >
+    <posXYZ  volume="BAR_Strut_Sector"     X_Y_Z=" 0. ; 0. ; ABRT_Zvouss[Ivouss] " >
+      <ring  value="Ivouss-3" />
+    </posXYZ>
+    <posXYZ  volume="BAR_Voussoir_Sector"  X_Y_Z=" 0. ; 0. ; ABRT_Zvouss[Ivouss] " >
+      <ring  value="Ivouss-3" />
+    </posXYZ>
+  </foreach>
+  <posXYZ  volume="BAR_ColdMass_Sector" />
+</composition>
+
+<!--
+<composition  name="BAR_Toroid" >
+  <mposPhi  volume="BAR_Toroid_Sector" Phi0="22.5"  ncopy="8" >
+    <sector  value="1"  step="1"  />
+  </mposPhi>
+</composition>
+-->
+<composition  name="BAR_sector02" >
+  <posXYZ  volume="BAR_Toroid_Sector"  rot=" 0. ; 0. ; 22.5"  />
+</composition>
+<composition  name="BAR_sector04" >
+  <posXYZ  volume="BAR_Toroid_Sector"  rot=" 0. ; 0. ; 67.5"  />
+</composition>
+<composition  name="BAR_sector06" >
+  <posXYZ  volume="BAR_Toroid_Sector"  rot=" 0. ; 0. ;112.5"  />
+</composition>
+<composition  name="BAR_sector08" >
+  <posXYZ  volume="BAR_Toroid_Sector"  rot=" 0. ; 0. ;157.5"  />
+</composition>
+<composition  name="BAR_sector10" >
+  <posXYZ  volume="BAR_Toroid_Sector"  rot=" 0. ; 0. ;202.5"  />
+</composition>
+<composition  name="BAR_sector12" >
+  <posXYZ  volume="BAR_Toroid_Sector"  rot=" 0. ; 0. ;247.5"  />
+</composition>
+<composition  name="BAR_sector14" >
+  <posXYZ  volume="BAR_Toroid_Sector"  rot=" 0. ; 0. ;292.5"  />
+</composition>
+<composition  name="BAR_sector16" >
+  <posXYZ  volume="BAR_Toroid_Sector"  rot=" 0. ; 0. ;337.5"  />
+</composition>
+<composition  name="BAR_Toroid" >
+  <posXYZ  volume="BAR_sector02"/>
+  <posXYZ  volume="BAR_sector04"/>
+  <posXYZ  volume="BAR_sector06"/>
+  <posXYZ  volume="BAR_sector08"/>
+  <posXYZ  volume="BAR_sector10"/>
+  <posXYZ  volume="BAR_sector12"/>
+  <posXYZ  volume="BAR_sector14"/>
+  <posXYZ  volume="BAR_sector16"/>
+</composition>
+
+</section>
+
+<section name       = "Solenoid"
+         version    = "1.1"
+         date       = "22 11 1962"
+         author     = "laurent"
+         top_volume = "Solenoid">
+<!--     name       =  Solenoid                      section name       = "Magnets"   -->
+<!--  
+      **************************************************************
+      ***                                                       ****
+      ***                  Solenoid                             ****
+      ***                                                       ****
+      **************************************************************
+-->
+
+<tubs   name="tubs_hole"      material="Aluminium"   Rio_Z="1210;1267;5300" />
+<composition name="Solenoid">
+   <posXYZ volume="tubs_hole"      X_Y_Z=" 0 ; 0 ; 0"  />
+</composition>
+</section>
+
+<section name       = "ATLAS Feet"
+         version    = "7.0"
+         date       = "20 November 2003"
+         author     = "Jochen Meyer, Daniel Pomarede, Laurent Chevalier"
+         top_volume = "Feet">
+
+
+<!--  reviewed/corrected in October 2009 by Jochen Meyer 
+      comment: * blueprint references are available on the twiki Pages
+               * still some details are missing                       -->  
+
+<!--     name       =  Feet only                     section name       = "Feet"      -->
+<!--  **************************************************************
+      **************************************************************
+      ***                                                       ****
+      ***                     ATLAS Feet                        ****
+      ***                                                       ****
+      **************************************************************
+      **************************************************************  -->
+<!--  Standard Feet                                         -->
+<!--  Basic parameters extracted from drawing ATLHBFB_0003  -->
+
+
+<!--  Main Plate  -->
+<!-- BEGIN confirmation with atlhbfb_0003-vAF (if no other comment) -->
+<var  name="FEET_MainPlXo_MainPlateXorigin"                  value="    0. " />
+<var  name="FEET_MnPlGXwi_MainPlate_GroundXwidth"            value=" 1800. " />  <!-- confirmed atcnh___0005-vAG -->
+<var  name="FEET_MnPlRCdx_MainPlateRoundCutDX"               value="  868. " />
+<var  name="FEET_MnPldxex_MainPlateDXextr"                   value="  733. " />
+<var  name="FEET_MnPlUpDx_MainPlateUpperDX"                  value=" 1234.5" />
+<var  name="FEET_MnPlUpXw_MainPlateUpperXwidth"              value=" 1315. " />
+<var  name="FEET_MnPlMiDx_MainPlateMiddleDX"                 value="  380. " />
+
+<var  name="FEET_MainPlYo_MainPlateYorigin"                  value="    0. " />
+<var  name="FEET_MainPlHe_MainPlateHeight"                   value=" 5300. " />
+<var  name="FEET_MainPlH1_MainPlateHeight_intermediate1"     value=" 1605. " />
+<var  name="FEET_MnPlRCYp_MainPlateRoundCut_Y"               value=" 2173. " />
+<var  name="FEET_MnPlSRCY_MainPlateSecondaryRoundCut_Y"      value=" 1958. " />  <!-- NO CONFIRMATION POSSIBLE -->
+<var  name="FEET_MnPlUpDy_MainPlateUpperDY"                  value="  790. " />
+<var  name="FEET_MnPlMiDy_MainPlateMiddleDY"                 value=" 1813. " />
+<var  name="FEET_MnPlPeHe_MainPlate_PedestalHeight"          value="   60. " />
+
+<var  name="FEET_MainPldZ_MainPlateDZ"                       value="   80. " />
+<var  name="FEET_MnPlZsep_MainPlateZsep"                     value="  980. " />
+
+<var  name="FEET_MnPlRCra_MainPlateRoundCut_R"               value="  615. " />
+<var  name="FEET_MnPlSRCr_MainPlateSecondaryRoundCut_R"      value="  400. " />  <!-- NO CONFIRMATION POSSIBLE -->
+
+<var  name="FEET_MnPlHDiX_MainPlateHoleDistanceX"            value=" 1275. " />
+
+
+<!--  Connecting Plates  -->
+
+<var  name="FEET_MinCPlxw_MiniConnPlate_Xwidth"        value="  310. " />
+<var  name="FEET_MinCPlyh_MiniConnPlate_Yheight"       value="   75. " />
+<var  name="FEET_MinCPltz_MiniConnPlate_ThetaZ"        value="   22.5" />
+<var  name="FEET_MinCPlzl_MiniConnPlate_Zlength"       value=" 1100. " />
+
+<var  name="FEET_SlaCPlxw_SlantedConnPlate_Xwidth"     value=" 2964. " />  <!-- GUESS since volume is a rough approx. -->
+<var  name="FEET_SlaCPlyh_SlantedConnPlate_Yheight"    value="   70. " />  <!-- confirmed atlhbfc_0003-vAG -->
+<var  name="FEET_SlaCPltz_SlantedConnPlate_ThetaZ"     value="  -67.5" />
+<var  name="FEET_SlaCPlzl_SlantedConnPlate_Zlength"    value=" 1100. " />  <!-- confirmed atlhbfc_0003-vAG -->
+
+<var  name="FEET_SlaCPlBr_BracketTriangle_Zwidth"      value="    5. " />   <!-- atlmh__0011-v0 -->
+<var  name="FEET_SlaCPlBr_BracketTube_Short"           value=" 1016. " />   <!-- atlmh__0011-v0 -->
+<var  name="FEET_SlaCPlBr_BracketTube_Long"            value=" 1140. " />   <!-- atlmh__0011-v0 -->
+<var  name="FEET_SlaCPlBr_Bracket_Pos"                 value="  600. " />   <!-- approximate position -->
+<var  name="FEET_SlaCPlBr_BracketTub_OuterRadius"      value="   37.5" />   <!-- atlmh__0011-v0 -->
+<var  name="FEET_SlaCPlBr_BracketTub_InnerRadius"      value="   32.5" />   <!-- atlmh__0011-v0 -->
+
+<var  name="FEET_GrndPlzl_GroundPlate_Zlength"         value=" 1150. " />  <!-- confirmed atcnh___0005-vAG -->
+
+<var  name="FEET_VCnPlxwi_VerticalConnPlate_Xwidth"    value="   80. " />
+<var  name="FEET_VCnPlyhe_VerticalConnPlate_Yheight"   value=" 1890. " />
+<var  name="FEET_VCnPldxe_VerticalConnPlate_DX"        value="  150. " />
+<var  name="FEET_VCnPldye_VerticalConnPlate_DY"        value=" 1140. " />
+
+<var  name="FEET_UCnPlxwi_UpperConnPlate_Xwidth"       value="   57. " />
+<var  name="FEET_UCnPlyhe_UpperConnPlate_Yheight"      value="  790. " />
+<var  name="FEET_UpCPzlen_UpperConnPlate_Zlength"      value="  980. " />
+<!-- END confirmation with atlhbfb_0003-vAF -->
+
+<!--  Rail Support  -->
+<!-- BEGIN confirmation with atlhbsf_0002-vAE (if no other comment) -->
+<var  name="FEET_Xwidth"                               value="  525. "/>
+
+<var  name="FEET_UpperHeY_RailSupportUpper_Yheight"    value="  120. " />
+<var  name="FEET_UpperLeZ_RailSupportUpper_Zlength"    value=" 1190. " />
+
+<var  name="FEET_LowerHeY_RailSupportLower_Yheight"    value="   95. " />
+<var  name="FEET_LowerLeZ_RailSupportLower_Zlength"    value=" 1100. " />
+
+<var  name="FEET_TotalHeY_RailSupportTotal_Yheight"    value="  890. " />
+<var  name="FEET_CentrLeZ_RailSupportCentral_Zlength"  value=" 1080. " />
+<var  name="FEET_CentrXth_RailSupportCentral_Xthick"   value="  100. " />
+<var  name="FEET_MidllYth_RailSupportMiddle_Ythick"    value="   80. " />
+<var  name="FEET_VertiZth_RailSupportVertical_Zthick"  value="   80. " />
+<var  name="FEET_MidllYpo_RailSupportMiddle_Ypos"      value="  400. " />
+
+<var  name="FEET_ExtreHeY_RailSupportExtr_Yheight"     value="   15. " />
+<var  name="FEET_ExtreLeZ_RailSupportExtr_Zlength"     value="  700. " />
+
+<var  name="FEET_HoleDist_RailSupport_DrillHoleDist"   value="  385. " />
+<!-- END confirmation with atlhbsf_0002-vAE -->
+
+<var  name="FEET_CentrHeY_RailSupportCentral_Yheight"  value="FEET_TotalHeY_RailSupportTotal_Yheight - FEET_UpperHeY_RailSupportUpper_Yheight - FEET_LowerHeY_RailSupportLower_Yheight " />
+
+<!-- Standard Feet Strut ATLTBWS_0011 -->
+<!-- BEGIN confirmation with atltbws_0011-v0 (if no other comment) -->
+<var  name="FEET_SFSthicz"        value="  40. " />
+<var  name="FEET_SFSthicy"        value="  50. " />
+<var  name="FEET_SFSwidth"        value=" 400. " />
+<var  name="FEET_SFSheigh"        value=" 600. " />
+<var  name="FEET_SFSangle"        value="  10. " />
+<var  name="FEET_SFSthicx"        value="  55. " />  <!-- unused variable -->
+<var  name="FEET_SFSlengx"        value="3440. " />
+<var  name="FEET_SFSRCutR"        value=" 210. " />
+<var  name="FEET_SFSRCpx"         value=" 897.5" />
+<var  name="FEET_SFSmystic"       value="  20. " />  <!-- NO CONFIRMATION POSSIBLE -->
+
+<!-- Extremity Feet Strut ATLTBWS_0012 -->
+<var  name="FEET_EFSlengx"        value="2780. " />  <!-- confirmed atcnh___0005-vAG -->
+
+<!-- Standard Feet Strut extremity plate -->
+<var  name="FEET_SFSEPdz"         value=" 500. " />
+<var  name="FEET_SFSEPdy"         value=" 690. " />
+<var  name="FEET_SFSEPdx"         value="  55. " />
+<!-- Standard and Extremity Feet Strut spacers -->
+<var  name="FEET_SFSSPdz"         value=" 980. " />
+<var  name="FEET_EFSSPdz"         value=" 980. " />  <!-- confirmed in discussion with Tatiana Klioutchnikova -->
+<var  name="FEET_SFSSPdy"         value=" 790. " />
+<var  name="FEET_EFSSPdy"         value=" 740. " />  <!-- to be confirmed -->
+<var  name="FEET_SFSSPdx"         value="  55. " />
+<!-- END confirmation with atltbws_0011-v0 -->
+<!-- comment on the following two values: since the feet position was adjusted FEET_SFSSPsep was increased without clash! 
+these parts had been maschined during installation so that the true value is not known and different for each foot -->
+<var  name="FEET_SFSSPsep"        value="  18.5 "/>  <!-- to be confirmed, drawing gives 15mm leading to clash with feet -->
+<var  name="FEET_EFSSPsep"        value="  28.5 "/>  <!-- to be confirmed -->
+
+<!--  Girder 1-2  -->
+<!-- BEGIN confirmation with atlhbg1_0001-vAF (if no other comment) -->
+<var  name="FEET_G12LPxwt_Girder12_LateralPlate_Xwidth_Total"             value=" 2355. " />
+<var  name="FEET_G12IPSxo_Girder12_InnerPlateSmalloffset_Xdist"           value="   35. " />
+<var  name="FEET_G12IPSLx_Girder12_InnerPlateSmall2Large_Xdist"           value="  995. " />
+<var  name="FEET_G12IPLLx_Girder12_InnerPlateLarge2Large_Xdist"           value="  335. " />
+<var  name="FEET_G12IPLSx_Girder12_InnerPlateLarge2Small_Xdist"           value="  960. " />
+
+<var  name="FEET_G12RPxwi_Girder12_ReinforcementPlate_Xwidth"             value=" 2015. " />
+<var  name="FEET_G12LPxw1_Girder12_LateralPlate_Xwidth_Inter1"            value=" 1558. " />
+
+<var  name="FEET_G12LPx12_Girder12_LateralPlate_Xwidth_Inter1Inter2"      value="  263.5" />
+<var  name="FEET_G12IPxwi_Girder12_InnerPlate_Xwidth"                     value="   30. " />
+<var  name="FEET_G12UMPwi_Girder12_UpperMiniPlate_Xwidth"                 value="  135. " />
+<var  name="FEET_G12SMPwi_Girder12_SideMiniPlate_Xwidth"                  value="  135. " />
+
+<var  name="FEET_G12yorig_Girder12_Yorigin"                               value="    0. " />
+<var  name="FEET_G12LPyht_Girder12_LateralPlate_Yheight_Total"            value="  445. " />
+<var  name="FEET_G12LPyh1_Girder12_LateralPlate_Yheight_Inter1"           value="  375. " />
+<var  name="FEET_G12LPyh2_Girder12_LateralPlate_Yheight_Inter2"           value="  260. " />
+<var  name="FEET_G12LPyth_Girder12_LowerPlate_Ythick"                     value="   40. " />
+<var  name="FEET_G12UPyth_Girder12_UpperPlate_Ythick"                     value="   40. " />
+<var  name="FEET_G12RPydi_Girder12_ReinforcementPlate_Ydist"              value="  330. " />
+<var  name="FEET_G12UMPyh_Girder12_UpperMiniPlate_Yheight"                value="   40. " />
+
+<var  name="FEET_G12UPzle_Girder12_UpperPlate_Zlength"                    value="  640. " />
+<var  name="FEET_G12UMPzl_Girder12_UpperMiniPlate_Zlength"                value="  630. " />
+<var  name="FEET_G12BPzle_Girder12_BottomPlate_Zlength"                   value="  460. " />
+<var  name="FEET_G12LPzle_Girder12_LateralPlate_Zlength"                  value="   40. " />  <!-- unused variable -->
+<var  name="FEET_G12RPzle_Girder12_ReinforcementPlate_Zlength"            value="   40. " />
+<var  name="FEET_G12SMPzl_Girder12_SideMiniPlate_Zlength"                 value="   50. " />
+<!-- END confirmation with atlhbg1_0001-vAF -->
+
+
+<!--  Girder 2-3  -->
+<!-- BEGIN confirmation with atlhbg2_0001-vAF (if no other comment) -->
+<var  name="FEET_G23LPxwt_Girder23_LateralPlate_Xwidth_Total"             value=" 2135. " />
+<var  name="FEET_G23IPSxo_Girder23_InnerPlateSmalloffset_Xdist"           value="   35. " />
+<var  name="FEET_G23IPSLx_Girder23_InnerPlateSmall2Large_Xdist"           value=" 1025. " />
+<var  name="FEET_G23IPLLx_Girder23_InnerPlateLarge2Large_Xdist"           value="  305. " />
+<var  name="FEET_G23IPLSx_Girder23_InnerPlateLarge2Small_Xdist"           value="  740. " />
+
+<var  name="FEET_G23RPxwi_Girder23_ReinforcementPlate_Xwidth"             value=" 1795. " />
+<var  name="FEET_G23LPxw1_Girder23_LateralPlate_Xwidth_Inter1"            value=" 1338. " />
+
+<var  name="FEET_G23LPx12_Girder23_LateralPlate_Xwidth_Inter1Inter2"      value="  263.5" />
+<var  name="FEET_G23IPxwi_Girder23_InnerPlate_Xwidth"                     value="   30. " />
+<var  name="FEET_G23UMPwi_Girder23_UpperMiniPlate_Xwidth"                 value="  135. " />
+<var  name="FEET_G23SMPwi_Girder23_SideMiniPlate_Xwidth"                  value="  135. " />
+<!-- END confirmation with atlhbg2_0001-vAF -->
+
+<!--  Girder 3-4  -->
+<!-- BEGIN confirmation with atlhbg3_0001-vAF (if no other comment) -->
+<var  name="FEET_G34LPxwt_Girder34_LateralPlate_Xwidth_Total"             value=" 1680. " />
+<var  name="FEET_G34IPSxo_Girder34_InnerPlateSmalloffset_Xdist"           value="   35. " />
+<var  name="FEET_G34IPSLx_Girder34_InnerPlateSmall2Large_Xdist"           value="  895. " />
+<var  name="FEET_G34IPLLx_Girder34_InnerPlateLarge2Large_Xdist"           value="  335. " />
+<var  name="FEET_G34IPLSx_Girder34_InnerPlateLarge2Small_Xdist"           value="  385. " />
+
+<var  name="FEET_G34RPxwi_Girder34_ReinforcementPlate_Xwidth"             value=" 1340. " />
+<var  name="FEET_G34LPxw1_Girder34_LateralPlate_Xwidth_Inter1"            value="  883. " />
+
+<var  name="FEET_G34LPx12_Girder34_LateralPlate_Xwidth_Inter1Inter2"      value="  263.5" />
+<var  name="FEET_G34IPxwi_Girder34_InnerPlate_Xwidth"                     value="   30. " />
+<var  name="FEET_G34UMPwi_Girder34_UpperMiniPlate_Xwidth"                 value="  135. " />
+<var  name="FEET_G34SMPwi_Girder34_SideMiniPlate_Xwidth"                  value="  135. " />
+<!-- END confirmation with atlhbg3_0001-vAF -->
+
+<!--  Girder Extremity  -->
+<!-- BEGIN confirmation with atlhbg4_0002-vAE (if no other comment) -->
+<var  name="FEET_GExBPzw_GirderEx_BottomPlate_Zwidth"                     value="   40. " />
+<var  name="FEET_GExBPyw_GirderEx_BottomPlate_Ywidth"                     value="  765. " />
+<var  name="FEET_GExBPxws_GirderEx_BottomPlate_Xwidth_Short"              value="  507. " />
+<var  name="FEET_GExBPxwl_GirderEx_BottomPlate_Xwidth_Long"               value="  778. " />
+<var  name="FEET_GExBPangyz_GirderEx_BottomPlate_AngleYZ"                 value="   50. " />
+
+<var  name="FEET_GExFPzw_GirderEx_FrontPlate_Zwidth"                      value="   40. " />
+<var  name="FEET_GExFPyw_GirderEx_FrontPlate_Ywidth"                      value="  383.5" />
+<var  name="FEET_GExFPxw_GirderEx_FrontPlate_Xwidth"                      value="  389.5" />
+
+<var  name="FEET_GExSPzw_GirderEx_SidePlate_Zwidth"                       value="   40. " />
+<var  name="FEET_GExSPyws_GirderEx_SidePlate_Ywidth_Short"                value="  259.5" />
+<var  name="FEET_GExSPywl_GirderEx_SidePlate_Ywidth_Long"                 value="  857. " />
+<var  name="FEET_GExSPxw_GirderEx_SidePlate_Xwidth"                       value="  725. " />
+<var  name="FEET_GExSPangxz_GirderEx_SidePlate_AngleXZ"                   value="   80. " />
+<var  name="FEET_GExSPxs_GirderEx_SidePlate_XShift"                       value="  294.5" />
+
+<var  name="FEET_GExTPzws_GirderEx_TopPlate_Zwidth_Short"                 value="   75. " />  <!-- GUESS since maschined during installation -->
+<var  name="FEET_GExTPzwl_GirderEx_TopPlate_Zwidth_Long"                  value="   80. " />
+<var  name="FEET_GExTPyws_GirderEx_TopPlate_Ywidth_Short"                 value="  650. " />
+<var  name="FEET_GExTPywl_GirderEx_TopPlate_Ywidth_Long"                  value="  850. " />
+<var  name="FEET_GExTPxwt_GirderEx_TopPlate_Xwidth_Total"                 value="  740. " />
+<var  name="FEET_GExTPxwp_GirderEx_TopPlate_Xwidth_Part"                  value="   46. " />
+<var  name="FEET_GExTPangi_GirderEx_TopPlate_AngleInternal"               value="   50. " />
+<!-- END confirmation with atlhbg4_0002-vAE -->
+
+<var  name="FEET_GExCzw_GirderEx_Connector_Zwidth"                        value="   70. " />  <!-- confirmed atcnh___0005-vAG -->
+
+<!-- BEGIN confirmation with atlhbeb_0032-vAA (if no other comment) -->
+<var  name="FEET_GExTCxw_GirderEx_TopConnector_Xwidth"                    value="  960. " />
+<var  name="FEET_GExTCyw_GirderEx_TopConnector_Ywidth"                    value="  200. " />
+<var  name="FEET_GExSCxw_GirderEx_SideConnector_Xwidth"                   value="  200. " />
+<var  name="FEET_GExSCyw_GirderEx_SideConnector_Ywidth"                   value="  700. " />
+<var  name="FEET_GExBCxw_GirderEx_BottomConnector_Xwidth"                 value="  850. " />
+<var  name="FEET_GExBCyw_GirderEx_BottomConnector_Ywidth"                 value="  200. " />
+<var  name="FEET_GExCys_GirderEx_Connector_Yshift"                        value="   68. " />  <!-- GUESS since maschined during installation -->
+
+
+<!--  Extremity Feet specific parameters -->
+
+<var  name="FEET_ExMPheig_ExtremityMainPlate_Height"                  value=" 5420.  " />
+<var  name="FEET_ExMPRCra_ExtremityMainPlateRoundCut_R"                   value="  385.  " />
+<var  name="FEET_ExMPRCdx_ExtremityMainPlateRoundCut_DX"                  value=" 1058.  " />
+<var  name="FEET_ExMPRCyp_ExtremityMainPlateRoundCut_Y"                   value=" 2780.  " />
+<var  name="FEET_ExMCPyhe_ExtremityMiniConnPlate_Yheight"                 value="   75.  " />
+<var  name="FEET_ExMCPzle_ExtremityMiniConnPlate_Zlength"                 value=" 1480.  " />
+<var  name="FEET_ExGPzlen_ExtremityGroundPlate_Zlength"                   value=" 1460.  " />
+<var  name="FEET_ExSCPzle_ExtremitySlantedConnPlate_Zlength"              value=" 1450.  " />  <!-- confirmed atlhbec_0001-vAF -->
+<var  name="FEET_ExRSzoff_ExtremityRailSupport_Zoffset"                   value="   62.5 " />  <!-- confirmed with a comparison of drilled holes in atlhbeb_0032-vAA and atlhbse_0001-vAG-->
+
+<var  name="FEET_ExMPhei1_ExtremityMainPlate_Height_intermediate1"    value=" 1727.  " />
+<var  name="FEET_ExMPhei2_ExtremityMainPlate_Height_intermediate2"    value=" 1558.  " />
+
+<var  name="FEET_ExMPxwid_ExtremityMainPlate_Xwidth"                  value=" 1635.  " />
+<var  name="FEET_ExMPxwi1_ExtremityMainPlate_Xwidth_inter1"           value=" 1013.  " />
+<var  name="FEET_ExMPxwi2_ExtremityMainPlate_Xwidth_inter2"           value="  510.  " />
+    
+<var  name="FEET_ExMPyhi1_ExtremityMainPlate_Yheight_inter1"          value="   93.  " />
+<var  name="FEET_ExMPyhi2_ExtremityMainPlate_Yheight_inter2"          value=" 4480.  " />
+<var  name="FEET_ExMPyhi3_ExtremityMainPlate_Yheight_inter3"          value="  740.  " />
+<var  name="FEET_ExMPyhi4_ExtremityMainPlate_Yheight_inter4"          value="  100.  " />
+
+<var  name="FEET_ExMPxdi1_ExtremityMainPlate_Xdist_inter1"            value=" 1070.  " />
+<var  name="FEET_ExMPxdi2_ExtremityMainPlate_Xdist_inter2"            value="  688.  " />
+<var  name="FEET_ExMPydi2_ExtremityMainPlate_Ydist_inter1"            value=" 2834.  " />
+
+<var  name="FEET_ExVCPldx_ExtremityVerticalConnPlate_DX"              value="  100.  " />
+<var  name="FEET_ExVCPldy_ExtremityVerticalConnPlate_DY"              value=" 1075.  " />
+
+<var  name="FEET_ExMPzsep_ExtremityMainPlate_Zsep"                    value=" 1360.  " />
+
+<var  name="FEET_ExSPRCra_ExtremitySlantedConnPlateRoundCut_Radius"   value="  225.  " />  <!-- confirmed atlhbec_0001-vAF -->
+<var  name="FEET_ExSPRCof_ExtremitySlantedConnPlateRoundCut_Offset"   value=" -400.  " />  <!-- GUESS since volume is a rough approx. -->
+
+<var  name="FEET_ExVCPthi_ExtremityVerticalConnPlate_Thickness"       value="   80.  " />
+<var  name="FEET_ExVCPxex_ExtremityVerticalConnPlate_Xext"            value="  284.  " />
+<var  name="FEET_ExVCPhei_ExtremityVerticalConnPlate_Height"          value=" 2005.  " />
+
+<var  name="FEET_ExVCPycu_ExtremityVerticalConnPlate_CutY"            value="  337.  " />
+<var  name="FEET_ExVCPxcu_ExtremityVerticalConnPlate_CutX"            value="  450.  " />
+
+<var  name="FEET_ExUCPyhe_ExtremityUpperConnPlate_Yheight"            value="  740.  " />
+<var  name="FEET_ExUCPzle_ExtremityUpperConnPlate_Zlength"            value=" 1360.  " />
+<!-- END confirmation with atlhbeb_0032-vAA -->
+
+<!--  Extremity Feet Rail support -->
+<!-- BEGIN confirmation with atlhbse_0001-vAG (if no other comment) -->
+<var  name="FEET_ExRSUzle_ExtremityRailSupportUpper_Zlength"              value=" 1820.  " />
+<var  name="FEET_ExRSLdzl_ExtremityRailSupportLower_DZlength"             value="   20.  " />
+<var  name="FEET_ExRSTyhe_ExtremityRailSupportTotal_Yheight"              value="  790.  " />
+<var  name="FEET_ExRSLyhe_ExtremityRailSupportLower_Yheight"              value="   90.  " />
+<var  name="FEET_ExRSEyhe_ExtremityRailSupportExtr_Yheight"               value="   20.  " />
+
+<var  name="FEET_ExRSCyhe_ExtremityRailSupportCentral_Yheight"            value="  560.  " />
+<var  name="FEET_ExRSCzle_ExtremityRailSupportCentral_Zlength"            value=" 1820.  " />
+<var  name="FEET_ExRSMzle_ExtremityRailSupportMiddle_Zlength"             value=" 1205.  " />
+
+<var  name="FEET_ExRSCxwi_ExtremityRailSupportCentral_Xwidth"             value="   80.  " />
+<var  name="FEET_ExRSMxwi_ExtremityRailSupportMiddle_Xwidth"              value="  222.5 " />
+<var  name="FEET_ExRSVxwi_ExtremityRailSupportVertical_Xwidth"            value="  222.5 " />
+
+<var  name="FEET_ExRSVzi1_ExtremityRailSupportVertical_Zpos_inter1"       value="  420.  " />
+<var  name="FEET_ExRSEzle_ExtremityRailSupportExtr_Zlength"               value=" 1090.  " />
+<var  name="FEET_ExRSEzof_ExtremityRailSupportExtr_Zoffset"               value="  180.  " />
+
+<var  name="FEET_ExRSC1de_ExtremityRailSupportCut1_Depth"                 value="  217.  " />
+<var  name="FEET_ExRSC1wi_ExtremityRailSupportCut1_Width"                 value="  950.  " />
+
+<var  name="FEET_ExRSC1xe_ExtremityRailSupportCut1_dumXext"               value="  300.  " />  <!-- NO CONFIRMATION POSSIBLE -->
+<var  name="FEET_ExRSC2xe_ExtremityRailSupportCut2_dumXext"               value="  320.  " />  <!-- NO CONFIRMATION POSSIBLE -->
+
+<var  name="FEET_ExRSC2z1_ExtremityRailSupportCut1_Zoffset1"              value="  604.  " />
+<var  name="FEET_ExRSC2z2_ExtremityRailSupportCut1_Zoffset2"              value="  200.  " />
+
+<var  name="FEET_ExRSMCde_ExtremityRailSupportMiddleCut_Depth"            value="  149.  " />
+<var  name="FEET_ExRSMCwi_ExtremityRailSupportMiddleCut_Width"            value="  860.  " />
+<var  name="FEET_ExRSMCzo_ExtremityRailSupportMiddleCut_Zoffset"          value="  206.  " />
+
+<var  name="FEET_ExRSMCy1_ExtremityRailSupportMiddleCut_dumy1"            value="  300.  " />  <!-- NO CONFIRMATION POSSIBLE -->
+<var  name="FEET_ExRSMCy2_ExtremityRailSupportMiddleCut_dumy2"            value="  600.  " />  <!-- NO CONFIRMATION POSSIBLE -->
+<!-- END confirmation with atlhbse_0001-vAG -->
+
+<!--  Global Positions  -->
+<!-- BEGIN confirmation with atcnh___0005-vAG (if no other comment) -->
+<var  name="FEET_StdFooXp_StandardFoot_Xpos"   value="  2710.  " />
+<var  name="FEET_StdFooYp_StandardFoot_Ypos"   value="-11020.  " />
+
+<var  name="FEET_ZposFee1"                     value="     0.  " />
+<var  name="FEET_ZposFee2"                     value="  3425.  " />
+<var  name="FEET_ZposFee3"                     value="  6630.  " />
+<var  name="FEET_ZposFee4"                     value="  9380.  " />
+<var  name="FEET_ZposFee5"                     value=" 12080.  " />
+
+<var  name="FEET_GirdExtXpos_XposGirderEx"     value="  2735.5 " />
+<var  name="FEET_GirdExtZpos_ZposGirderEx"     value="  6625.  " />
+
+
+<var  name="FEET_GirdYHei_YHeightGirder"       value="  3935.  " />
+<var  name="FEET_GirdXpos_XposGirder"          value="  2735.5 " />
+<!-- END confirmation with atcnh___0005-vAG -->
+
+
+<!--  Additional parameters of arbitrary values  -->
+<var  name="FEET_MPlaHcec_FeetMainPlate_Hcec"  value="  50.  " />  <!-- NO CONFIRMATION POSSIBLE -->
+<var  name="FEET_dumz"                         value="2000.  " />  <!-- NO CONFIRMATION POSSIBLE -->
+<var  name="FEET_dumphi"                       value="  36.  " />  <!-- NO CONFIRMATION POSSIBLE -->
+
+
+
+
+<!--  Standard Feet Modelization of Main Plate -->
+
+<var  name="FEET_MainPlXa"          value=" FEET_MainPlXo_MainPlateXorigin     " />
+<var  name="FEET_MainPlYa"          value=" FEET_MainPlYo_MainPlateYorigin  +  FEET_MnPlPeHe_MainPlate_PedestalHeight       " />
+<var  name="FEET_MainPlXb"          value=" FEET_MnPlGXwi_MainPlate_GroundXwidth " />
+<var  name="FEET_MainPlYb"          value=" FEET_MainPlYo_MainPlateYorigin   +  FEET_MnPlPeHe_MainPlate_PedestalHeight     " />
+<var  name="FEET_MainPlXc"          value=" FEET_MnPlGXwi_MainPlate_GroundXwidth " />
+<var  name="FEET_MainPlYc"          value=" FEET_MainPlH1_MainPlateHeight_intermediate1  +  FEET_MnPlPeHe_MainPlate_PedestalHeight" />
+
+<!--  Circular extrusion  -->
+
+<var  name="FEET_MaPlRCXc_MainPlateRoundCut_XC"  value=" FEET_MnPlGXwi_MainPlate_GroundXwidth-FEET_MnPlRCdx_MainPlateRoundCutDX " />
+<var  name="FEET_MaPlRCYc_MainPlateRoundCut_YC"  value=" FEET_MnPlRCYp_MainPlateRoundCut_Y   +  FEET_MnPlPeHe_MainPlate_PedestalHeight   " />
+<var  name="FEET_MaiPlXc3"                       value=" FEET_MaPlRCXc_MainPlateRoundCut_XC - FEET_MnPlRCra_MainPlateRoundCut_R * GENV_Co45 " />
+<var  name="FEET_MaiPlYc3"                       value=" FEET_MaPlRCYc_MainPlateRoundCut_YC + FEET_MnPlRCra_MainPlateRoundCut_R * GENV_Si45 " />
+
+
+<!--  Additional circular extrusion  -->
+
+<var  name="FEET_MPlXextr_FeetMainPlate_Xextr"       value=" FEET_MnPlGXwi_MainPlate_GroundXwidth - FEET_MnPldxex_MainPlateDXextr " />
+<var  name="FEET_MPlYextr_FeetMainPlate_Yextr"       value=" FEET_MnPlSRCY_MainPlateSecondaryRoundCut_Y  +  FEET_MnPlPeHe_MainPlate_PedestalHeight" />
+<var  name="FEET_MPlRextr_FeetMainPlate_Rextr"       value=" FEET_MnPlSRCr_MainPlateSecondaryRoundCut_R " />
+<var  name="FEET_MaiPlXc2"         value=" FEET_MPlXextr_FeetMainPlate_Xextr + FEET_MPlRextr_FeetMainPlate_Rextr * GENV_Si225 " />
+<var  name="FEET_MaiPlYc2"         value=" FEET_MPlYextr_FeetMainPlate_Yextr - FEET_MPlRextr_FeetMainPlate_Rextr * GENV_Co225 " />
+
+<!--  Circular extrusions completion -->
+
+<var  name="FEET_MPlXcec1"  value=" FEET_MPlXextr_FeetMainPlate_Xextr                       " />
+<var  name="FEET_MPlYcec1"  value=" FEET_MPlYextr_FeetMainPlate_Yextr - FEET_MPlRextr_FeetMainPlate_Rextr " />
+<var  name="FEET_MPlXcec2"  value=" FEET_MaPlRCXc_MainPlateRoundCut_XC                       " />
+<var  name="FEET_MPlYcec2"  value=" FEET_MaPlRCYc_MainPlateRoundCut_YC - FEET_MnPlRCra_MainPlateRoundCut_R " />
+
+<var  name="FEET_a"         value=" GENV_Ta45 " />
+<var  name="FEET_b"         value=" FEET_MaiPlYc3 - FEET_MaiPlXc3 * GENV_Ta45  " />
+<var  name="FEET_aprime"    value="-GENV_Ta675 " />
+<var  name="FEET_bprime"    value=" FEET_MainPlYc  + FEET_MainPlXc  * GENV_Ta675 " />
+<var  name="FEET_aseconde"  value=" GENV_Ta225 " />
+<var  name="FEET_bseconde"  value=" FEET_MaiPlYc2 - FEET_MaiPlXc2 * FEET_aseconde  " />
+
+<var  name="FEET_MainPlXd"  value=" -(FEET_b-FEET_bprime)/(FEET_a-FEET_aprime) " />
+<var  name="FEET_MainPlYd"  value=" FEET_a*FEET_MainPlXd + FEET_b " />
+<var  name="FEET_MainPlXe"  value=" FEET_MainPlXc - FEET_MnPlUpDx_MainPlateUpperDX " />
+<var  name="FEET_MainPlYe"  value=" FEET_aprime*FEET_MainPlXe + FEET_bprime " />
+<var  name="FEET_MaiPlXc1"  value=" -(FEET_bseconde-FEET_bprime)/(FEET_aseconde-FEET_aprime) " />
+<var  name="FEET_MaiPlYc1"  value=" FEET_aseconde*FEET_MaiPlXc1 + FEET_bseconde " />
+<var  name="FEET_MainPlXf"  value=" FEET_MainPlXe " />
+<var  name="FEET_MainPlYf"  value=" FEET_MainPlHe_MainPlateHeight " />
+<var  name="FEET_MainPlXg"  value=" FEET_MainPlXe - FEET_MnPlUpXw_MainPlateUpperXwidth " />
+<var  name="FEET_MainPlYg"  value=" FEET_MainPlHe_MainPlateHeight " />
+<var  name="FEET_MainPlXh"  value=" FEET_MainPlXg " />
+<var  name="FEET_MainPlYh"  value=" FEET_MainPlHe_MainPlateHeight - FEET_MnPlUpDy_MainPlateUpperDY " />
+<var  name="FEET_MainPlXi"  value=" FEET_MainPlXo_MainPlateXorigin - FEET_MnPlMiDx_MainPlateMiddleDX " />
+<var  name="FEET_MainPlYi"  value=" FEET_MnPlMiDy_MainPlateMiddleDY + FEET_MnPlMiDx_MainPlateMiddleDX*GENV_Ta675 " />
+<var  name="FEET_MainPlXj"  value=" FEET_MainPlXo_MainPlateXorigin " />
+<var  name="FEET_MainPlYj"  value=" FEET_MnPlMiDy_MainPlateMiddleDY +  FEET_MnPlPeHe_MainPlate_PedestalHeight" />
+
+
+
+<gvxy  name="FeetMainPlate"       material="Iron"   dZ="FEET_MainPldZ_MainPlateDZ"  >
+  <gvxy_point  X_Y=" FEET_MainPlXa     ;  FEET_MainPlYa  " />
+  <gvxy_point  X_Y=" FEET_MainPlXb     ;  FEET_MainPlYb  " />
+  <gvxy_point  X_Y=" FEET_MainPlXc     ;  FEET_MainPlYc  " />
+  <gvxy_point  X_Y=" FEET_MaiPlXc1    ;  FEET_MaiPlYc1 " />
+  <gvxy_point  X_Y=" FEET_MaiPlXc2    ;  FEET_MaiPlYc2 " />
+  <gvxy_point  X_Y=" FEET_MaiPlXc3    ;  FEET_MaiPlYc3 " />
+  <gvxy_point  X_Y=" FEET_MainPlXd     ;  FEET_MainPlYd  " />
+  <gvxy_point  X_Y=" FEET_MainPlXe     ;  FEET_MainPlYe  " />
+  <gvxy_point  X_Y=" FEET_MainPlXf     ;  FEET_MainPlYf  " />
+  <gvxy_point  X_Y=" FEET_MainPlXg     ;  FEET_MainPlYg  " />
+  <gvxy_point  X_Y=" FEET_MainPlXh     ;  FEET_MainPlYh  " />
+  <gvxy_point  X_Y=" FEET_MainPlXi     ;  FEET_MainPlYi  " />
+  <gvxy_point  X_Y=" FEET_MainPlXj     ;  FEET_MainPlYj  " />
+</gvxy>
+
+<tubs     name="MainPlateRoundCut"            material="Aluminium1"  Rio_Z=" 0 ; FEET_MnPlRCra_MainPlateRoundCut_R ; FEET_dumz"  nbPhi="FEET_dumphi" />
+<tubs     name="MainPlateSecondaryRoundCut"   material="Aluminium1"  Rio_Z=" 0 ; FEET_MPlRextr_FeetMainPlate_Rextr ; FEET_dumz"  nbPhi="FEET_dumphi" />
+<gvxy     name="MainPlateRoundCutCompletion"  material="Aluminium1"   dZ="FEET_dumz"  >
+  <gvxy_point  X_Y="   FEET_MPlXcec1    ;   FEET_MPlYcec1   " />
+  <gvxy_point  X_Y="   FEET_MPlXcec1    ;   FEET_MPlYcec1 + FEET_MPlaHcec_FeetMainPlate_Hcec   " />
+  <gvxy_point  X_Y="   FEET_MPlXcec2    ;   FEET_MPlYcec2 + FEET_MPlaHcec_FeetMainPlate_Hcec   " />
+  <gvxy_point  X_Y="   FEET_MPlXcec2    ;   FEET_MPlYcec2   " />
+</gvxy>
+
+
+<!--  Ensemble of Connecting plates -->
+
+<var  name="FEET_Alpha1"                             value="FEET_MinCPltz_MiniConnPlate_ThetaZ + atan(FEET_MinCPlyh_MiniConnPlate_Yheight/FEET_MinCPlxw_MiniConnPlate_Xwidth)/GENV_PiS180" />
+<var  name="FEET_CoAl1"                              value="cos(FEET_Alpha1*GENV_PiS180)" />
+<var  name="FEET_SiAl1"                              value="sin(FEET_Alpha1*GENV_PiS180)" />
+<var  name="FEET_MiCPDiag_MiniConnPlate_DIAG"        value=" ( (FEET_MinCPlxw_MiniConnPlate_Xwidth/2.)**2. + (FEET_MinCPlyh_MiniConnPlate_Yheight/2.)**2. )**0.5 " />
+<var  name="FEET_MiCPxpos_MiniConnPlate_X"           value=" FEET_MaiPlXc1-FEET_MiCPDiag_MiniConnPlate_DIAG*FEET_CoAl1" />
+<var  name="FEET_MiCPypos_MiniConnPlate_Y"           value=" FEET_MaiPlYc1-FEET_MiCPDiag_MiniConnPlate_DIAG*FEET_SiAl1  " />
+<box  name="MiniConnPlate"        material="Iron"  X_Y_Z="FEET_MinCPlxw_MiniConnPlate_Xwidth; FEET_MinCPlyh_MiniConnPlate_Yheight; FEET_MinCPlzl_MiniConnPlate_Zlength " />
+
+<var  name="FEET_Alpha2"                             value="-FEET_SlaCPltz_SlantedConnPlate_ThetaZ + atan(FEET_SlaCPlyh_SlantedConnPlate_Yheight/FEET_SlaCPlxw_SlantedConnPlate_Xwidth)/GENV_PiS180" />
+<var  name="FEET_CoAl2"                              value="cos(FEET_Alpha2*GENV_PiS180)" />
+<var  name="FEET_SiAl2"                              value="sin(FEET_Alpha2*GENV_PiS180)" />
+<var  name="FEET_SlCPDiag_SlantedConnPlate_DIAG"     value=" ( (FEET_SlaCPlxw_SlantedConnPlate_Xwidth/2.)**2. + (FEET_SlaCPlyh_SlantedConnPlate_Yheight/2.)**2. )**0.5 " />
+<var  name="FEET_SlCPBR_POS"                         value=" 600. " />
+<var  name="FEET_SlCPxpos_SlantedConnPlate_X"        value=" FEET_MaiPlXc1-FEET_SlCPDiag_SlantedConnPlate_DIAG*FEET_CoAl2 + FEET_MinCPlyh_MiniConnPlate_Yheight*GENV_Si225" />
+<var  name="FEET_SlCPypos_SlantedConnPlate_Y"        value=" FEET_MaiPlYc1+FEET_SlCPDiag_SlantedConnPlate_DIAG*FEET_SiAl2 - FEET_MinCPlyh_MiniConnPlate_Yheight*GENV_Co225  " />
+<box  name="SlantedConnPlate"     material="Iron" X_Y_Z="FEET_SlaCPlxw_SlantedConnPlate_Xwidth; FEET_SlaCPlyh_SlantedConnPlate_Yheight; FEET_SlaCPlzl_SlantedConnPlate_Zlength" />
+
+<var  name="FEET_SlaCPlBr_BracketTriangle_ShortSide" value=" sqrt(FEET_SlaCPlBr_BracketTube_Long**2-FEET_SlaCPlBr_BracketTube_Short**2)  " />
+<var  name="FEET_SlaCPlBr_BracketTriangle_cosphi"    value=" FEET_SlaCPlBr_BracketTube_Short/FEET_SlaCPlBr_BracketTube_Long  " />
+<var  name="FEET_SlaCPlBr_BracketTriangle_sinphi"    value=" FEET_SlaCPlBr_BracketTriangle_ShortSide/FEET_SlaCPlBr_BracketTube_Long " />
+
+<gvxy  name="SlantedConnPlateBracketTriangle"     material="Aluminium" dZ="FEET_SlaCPlBr_BracketTriangle_Zwidth" > 
+  <gvxy_point X_Y="FEET_SlaCPlBr_BracketTriangle_ShortSide; 0." />
+  <gvxy_point X_Y="                                     0.; 0." />
+  <gvxy_point X_Y="                                     0.; FEET_SlaCPlBr_BracketTube_Short" />
+</gvxy>
+
+<tubs name="SlantedConnPlateBracketTubeShort"  material="Aluminium"  Rio_Z="FEET_SlaCPlBr_BracketTub_InnerRadius; FEET_SlaCPlBr_BracketTub_OuterRadius; FEET_SlaCPlBr_BracketTube_Short" nbPhi="15" />
+<tubs name="SlantedConnPlateBracketTubeLong"   material="Aluminium"  Rio_Z="FEET_SlaCPlBr_BracketTub_InnerRadius; FEET_SlaCPlBr_BracketTub_OuterRadius; FEET_SlaCPlBr_BracketTube_Long"  nbPhi="15" />
+
+<composition  name="SlantedConnPlateBracket" >
+ <posXYZ  volume="SlantedConnPlateBracketTriangle"   X_Y_Z="GENV_Eps+2*FEET_SlaCPlBr_BracketTub_OuterRadius; 0.; 0."  rot="0.;0.;0." />
+ <posXYZ  volume="SlantedConnPlateBracketTubeShort"  X_Y_Z="FEET_SlaCPlBr_BracketTub_OuterRadius; FEET_SlaCPlBr_BracketTube_Short/2.; 0. "    rot="90.;0.;0." />
+ <posXYZ  volume="SlantedConnPlateBracketTubeLong"   X_Y_Z="GENV_Eps+2.*FEET_SlaCPlBr_BracketTub_OuterRadius+FEET_SlaCPlBr_BracketTriangle_ShortSide/2.+(FEET_SlaCPlBr_BracketTub_OuterRadius+GENV_Eps)*(FEET_SlaCPlBr_BracketTriangle_cosphi); FEET_SlaCPlBr_BracketTube_Short/2+(FEET_SlaCPlBr_BracketTub_OuterRadius+GENV_Eps)*FEET_SlaCPlBr_BracketTriangle_sinphi; 0. "    rot="90.; 0.; acos(FEET_SlaCPlBr_BracketTriangle_cosphi)/GENV_PiS180" />
+</composition>
+
+<var  name="FEET_GrnPxwid_GroundPlate_Xwidth"        value=" FEET_MnPlGXwi_MainPlate_GroundXwidth " />
+<var  name="FEET_GrnPyhei_GroundPlate_Yheight"       value=" FEET_MnPlPeHe_MainPlate_PedestalHeight  " />
+<var  name="FEET_GrnPxpos_GroundPlate_X"             value=" FEET_GrnPxwid_GroundPlate_Xwidth/2." />
+<var  name="FEET_GrnPypos_GroundPlate_Y"             value=" FEET_GrnPyhei_GroundPlate_Yheight/2." />
+<box  name="GroundPlate"          material="Iron"   X_Y_Z="FEET_GrnPxwid_GroundPlate_Xwidth; FEET_GrnPyhei_GroundPlate_Yheight; FEET_GrndPlzl_GroundPlate_Zlength" />
+
+<var  name="FEET_VeCPxpos_VerticalConnPlate_X"       value=" FEET_VCnPldxe_VerticalConnPlate_DX - FEET_VCnPlxwi_VerticalConnPlate_Xwidth/2." />
+<var  name="FEET_VeCPypos_VerticalConnPlate_Y"       value=" FEET_VCnPldye_VerticalConnPlate_DY + FEET_VCnPlyhe_VerticalConnPlate_Yheight/2." />
+<var  name="FEET_VeCPzlen_VerticalConnPlate_Zlength" value=" FEET_MnPlZsep_MainPlateZsep - FEET_MainPldZ_MainPlateDZ " />
+<box  name="VerticalConnPlate"    material="Iron"   X_Y_Z="FEET_VCnPlxwi_VerticalConnPlate_Xwidth; FEET_VCnPlyhe_VerticalConnPlate_Yheight; FEET_VeCPzlen_VerticalConnPlate_Zlength" />
+
+<var  name="FEET_UpCPxpos_UpperConnPlate_X"          value=" FEET_MainPlXh - FEET_UCnPlxwi_UpperConnPlate_Xwidth/2." />
+<var  name="FEET_UpCPypos_UpperConnPlate_Y"          value=" FEET_MainPlYh + FEET_UCnPlyhe_UpperConnPlate_Yheight/2." />
+<box  name="UpperConnPlate"       material="Iron"   X_Y_Z="FEET_UCnPlxwi_UpperConnPlate_Xwidth; FEET_UCnPlyhe_UpperConnPlate_Yheight; FEET_UpCPzlen_UpperConnPlate_Zlength" />
+
+
+
+<!--  Rail Support  -->
+
+<gvxysx   name="RailSupportFull"      material="Iron4"   dZ="FEET_Xwidth"  >
+  <gvxy_point  X_Y=" FEET_ExtreLeZ_RailSupportExtr_Zlength/2.    ; -FEET_ExtreHeY_RailSupportExtr_Yheight  "  />
+  <gvxy_point  X_Y=" FEET_ExtreLeZ_RailSupportExtr_Zlength/2.    ;              0.           "  />
+  <gvxy_point  X_Y=" FEET_LowerLeZ_RailSupportLower_Zlength/2.   ;              0.           "  />
+  <gvxy_point  X_Y=" FEET_LowerLeZ_RailSupportLower_Zlength/2.   ;  FEET_LowerHeY_RailSupportLower_Yheight "  />
+  <gvxy_point  X_Y=" FEET_CentrLeZ_RailSupportCentral_Zlength/2. ;  FEET_LowerHeY_RailSupportLower_Yheight "  />
+  <gvxy_point  X_Y=" FEET_CentrLeZ_RailSupportCentral_Zlength/2. ;  FEET_TotalHeY_RailSupportTotal_Yheight-FEET_UpperHeY_RailSupportUpper_Yheight "  />
+  <gvxy_point  X_Y=" FEET_UpperLeZ_RailSupportUpper_Zlength/2.   ;  FEET_TotalHeY_RailSupportTotal_Yheight-FEET_UpperHeY_RailSupportUpper_Yheight "  />
+  <gvxy_point  X_Y=" FEET_UpperLeZ_RailSupportUpper_Zlength/2.   ;  FEET_TotalHeY_RailSupportTotal_Yheight "  />
+</gvxysx>
+<box  name="RailSupportHoleA"  material="Iron1"  X_Y_Z=" 2.*FEET_Xwidth     ; FEET_CentrHeY_RailSupportCentral_Yheight    ; FEET_CentrLeZ_RailSupportCentral_Zlength-2.*FEET_VertiZth_RailSupportVertical_Zthick " />
+<box  name="RailSupportHoleB"  material="Iron1"  X_Y_Z=" FEET_CentrXth_RailSupportCentral_Xthick ; 2.*FEET_CentrHeY_RailSupportCentral_Yheight ; FEET_CentrLeZ_RailSupportCentral_Zlength " />
+<box  name="RailSupportHoleC"  material="Iron1"  X_Y_Z=" 3.*FEET_Xwidth     ; FEET_MidllYth_RailSupportMiddle_Ythick      ; FEET_CentrLeZ_RailSupportCentral_Zlength " />
+<subtraction  name="RailSupportHole" >
+  <posXYZ   volume="RailSupportHoleA"  />
+  <posXYZ   volume="RailSupportHoleB"  />
+  <posXYZ   volume="RailSupportHoleC"  />
+</subtraction>
+<subtraction  name="RailSupport" >
+  <posXYZ   volume="RailSupportFull"  rot=" 0. ; 90. ; 0. "  />
+  <posXYZ   volume="RailSupportHole"  X_Y_Z=" 0. ; FEET_LowerHeY_RailSupportLower_Yheight+FEET_CentrHeY_RailSupportCentral_Yheight/2. ; 0. " />
+</subtraction>
+
+<var  name="FEET_Midyposi_RailSupportMiddle_Y"     value=" FEET_MidllYpo_RailSupportMiddle_Ypos  + FEET_MidllYth_RailSupportMiddle_Ythick/2." />
+
+<var  name="FEET_posx"    value=" FEET_MainPlXf - FEET_Xwidth/2. " />
+<var  name="FEET_posy"    value=" FEET_MainPlYf"  />
+
+<!-- Modelization of Standard Feet Strut -->
+<var  name="FEET_SFSxc"       value="  FEET_SFSwidth/2.  " />
+<var  name="FEET_SFSyc"       value="  FEET_SFSheigh/2.  " />
+<var  name="FEET_SFSxb"       value="  FEET_SFSxc " />
+<var  name="FEET_SFSyb"       value="  FEET_SFSyc - FEET_SFSthicy " />
+<var  name="FEET_SFSxa"       value="  FEET_SFSthicz/2.  " />
+<var  name="FEET_SFSya"       value="  FEET_SFSyb - tan(FEET_SFSangle*GENV_PiS180)*(FEET_SFSwidth-FEET_SFSthicz)/2.  " />
+
+<gvxysxy   name="FEET_StandardStrutCore"      material="Aluminium"   dZ="FEET_SFSlengx"  >
+  <gvxy_point X_Y="FEET_SFSxa;FEET_SFSya"/>
+  <gvxy_point X_Y="FEET_SFSxb;FEET_SFSyb"/>
+  <gvxy_point X_Y="FEET_SFSxc;FEET_SFSyc"/>
+</gvxysxy>
+
+<gvxysxy   name="FEET_ExtremityStrutCore"      material="Aluminium"   dZ="FEET_EFSlengx"  >
+  <gvxy_point X_Y="FEET_SFSxa;FEET_SFSya"/>
+  <gvxy_point X_Y="FEET_SFSxb;FEET_SFSyb"/>
+  <gvxy_point X_Y="FEET_SFSxc;FEET_SFSyc"/>
+</gvxysxy>
+
+<var  name="FEET_SFSRCutZ" value="FEET_SFSthicz*2. " />
+
+<!-- Standard Feet -->
+<var  name="FEET_SFSEPpx"  value="FEET_SFSlengx/2.+ FEET_SFSEPdx/2." />
+<var  name="FEET_SFSSPx1"  value="FEET_SFSEPpx+ FEET_SFSEPdx/2.+FEET_SFSSPsep+FEET_SFSSPdx/2." />
+<var  name="FEET_SFSSPx2"  value="FEET_SFSSPx1+FEET_SFSSPdx" />
+<var  name="FEET_SFSSPx3"  value="FEET_SFSEPpx+ FEET_SFSEPdx/2.+FEET_SFSSPsep/2." />
+
+<!-- Extremity Feet -->
+<var  name="FEET_EFSEPpx"  value="FEET_EFSlengx/2.+ FEET_SFSEPdx/2." />
+<var  name="FEET_EFSSPx1"  value="FEET_EFSEPpx+ FEET_SFSEPdx/2.+FEET_EFSSPsep+FEET_SFSSPdx/2." />
+<var  name="FEET_EFSSPx2"  value="FEET_EFSSPx1+FEET_SFSSPdx" />
+<var  name="FEET_EFSSPx3"  value="FEET_EFSEPpx+ FEET_SFSEPdx/2.+FEET_EFSSPsep/2." />
+
+<tubs name="FEET_StandardStrutHole" material="Aluminium" Rio_Z=" 0.; FEET_SFSRCutR; FEET_SFSRCutZ"/>
+
+<box  name="FEET_StandardStrutExtremityPlate" material="Iron" X_Y_Z="FEET_SFSEPdx;FEET_SFSEPdy;FEET_SFSEPdz "  />
+<box  name="FEET_StandardStrutSpacer"         material="Iron" X_Y_Z="FEET_SFSSPdx;FEET_SFSSPdy;FEET_SFSSPdz "  />
+<box  name="FEET_StandardStrutShim"           material="Iron" X_Y_Z="FEET_SFSSPsep;FEET_SFSEPdy;FEET_SFSEPdz"  />
+<box  name="FEET_ExtremityStrutShim"          material="Iron" X_Y_Z="FEET_EFSSPsep;FEET_SFSEPdy;FEET_SFSEPdz"  />
+<box  name="FEET_ExtremityStrutSpacer"        material="Iron" X_Y_Z="FEET_SFSSPdx;FEET_EFSSPdy;FEET_EFSSPdz "  />
+
+<subtraction  name="FEET_StandardStrutCut" >
+  <posXYZ  volume="FEET_StandardStrutCore" />
+  <posXYZ  volume="FEET_StandardStrutHole" X_Y_Z=" 0. ; 0. ; FEET_SFSRCpx"  rot="   0. ; 90. ; 0."  />
+  <posXYZ  volume="FEET_StandardStrutHole" X_Y_Z=" 0. ; 0. ;-FEET_SFSRCpx"  rot="   0. ; 90. ; 0."  />
+</subtraction>
+
+<subtraction  name="FEET_ExtremityStrutCut" >
+  <posXYZ  volume="FEET_ExtremityStrutCore"/>
+  <posXYZ  volume="FEET_StandardStrutHole" X_Y_Z=" 0. ; 0. ; FEET_SFSRCpx"  rot="   0. ; 90. ; 0."  />
+  <posXYZ  volume="FEET_StandardStrutHole" X_Y_Z=" 0. ; 0. ;-FEET_SFSRCpx"  rot="   0. ; 90. ; 0."  />
+</subtraction>
+
+<composition  name="FEET_StandardStrut" >
+  <posXYZ  volume="FEET_StandardStrutCut"  X_Y_Z="0.;-FEET_SFSmystic;0." rot="   0. ; 90. ; 0." />
+  <posXYZ  volume="FEET_StandardStrutExtremityPlate" X_Y_Z=" FEET_SFSEPpx;-FEET_SFSmystic;0." />
+  <posXYZ  volume="FEET_StandardStrutExtremityPlate" X_Y_Z="-FEET_SFSEPpx;-FEET_SFSmystic;0." />
+  <posXYZ  volume="FEET_StandardStrutShim"           X_Y_Z=" FEET_SFSSPx3;-FEET_SFSmystic;0." />
+  <posXYZ  volume="FEET_StandardStrutShim"           X_Y_Z="-FEET_SFSSPx3;-FEET_SFSmystic;0." />
+  <posXYZ  volume="FEET_StandardStrutSpacer"         X_Y_Z=" FEET_SFSSPx1;0.;0." />
+  <posXYZ  volume="FEET_StandardStrutSpacer"         X_Y_Z=" FEET_SFSSPx2;0.;0." />
+  <posXYZ  volume="FEET_StandardStrutSpacer"         X_Y_Z="-FEET_SFSSPx1;0.;0." />
+  <posXYZ  volume="FEET_StandardStrutSpacer"         X_Y_Z="-FEET_SFSSPx2;0.;0." />
+</composition>
+
+<composition  name="FEET_ExtremityStrut" >
+  <posXYZ  volume="FEET_ExtremityStrutCut" X_Y_Z=" 0.;FEET_SFSEPdy/2.-FEET_EFSSPdy/2.;0." rot="   0. ; 90. ; 0." />
+  <posXYZ  volume="FEET_StandardStrutExtremityPlate" X_Y_Z=" FEET_EFSEPpx;FEET_SFSEPdy/2.-FEET_EFSSPdy/2.;0." />
+  <posXYZ  volume="FEET_StandardStrutExtremityPlate" X_Y_Z="-FEET_EFSEPpx;FEET_SFSEPdy/2.-FEET_EFSSPdy/2.;0." />
+  <posXYZ  volume="FEET_ExtremityStrutShim"          X_Y_Z=" FEET_EFSSPx3;FEET_SFSEPdy/2.-FEET_EFSSPdy/2.;0." />
+  <posXYZ  volume="FEET_ExtremityStrutShim"          X_Y_Z="-FEET_EFSSPx3;FEET_SFSEPdy/2.-FEET_EFSSPdy/2.;0." />
+  <posXYZ  volume="FEET_ExtremityStrutSpacer"        X_Y_Z=" FEET_EFSSPx1;0.;0." />
+  <posXYZ  volume="FEET_ExtremityStrutSpacer"        X_Y_Z=" FEET_EFSSPx2;0.;0." />
+  <posXYZ  volume="FEET_ExtremityStrutSpacer"        X_Y_Z="-FEET_EFSSPx1;0.;0." />
+  <posXYZ  volume="FEET_ExtremityStrutSpacer"        X_Y_Z="-FEET_EFSSPx2;0.;0." />
+</composition>
+
+<!--  Girder 1-2  -->
+
+<var  name="FEET_G12BoPxa_Girder12_BottomPlate_XA"          value="FEET_G12LPxw1_Girder12_LateralPlate_Xwidth_Inter1/2." />
+<var  name="FEET_G12BoPxb_Girder12_BottomPlate_XB"          value="FEET_G12BoPxa_Girder12_BottomPlate_XA + FEET_G12LPx12_Girder12_LateralPlate_Xwidth_Inter1Inter2" />
+<var  name="FEET_G12BoPxc_Girder12_BottomPlate_XC"          value="FEET_G12LPxwt_Girder12_LateralPlate_Xwidth_Total/2." />
+<var  name="FEET_G12BoPxd_Girder12_BottomPlate_XD"          value="FEET_G12BoPxc_Girder12_BottomPlate_XC" />
+<var  name="FEET_G12BoPxe_Girder12_BottomPlate_XE"          value="FEET_G12BoPxb_Girder12_BottomPlate_XB" />
+<var  name="FEET_G12BoPxf_Girder12_BottomPlate_XF"          value="FEET_G12BoPxa_Girder12_BottomPlate_XA" />
+
+<var  name="FEET_G12BoPya_Girder12_BottomPlate_YA"          value="FEET_G12yorig_Girder12_Yorigin + FEET_G12LPyht_Girder12_LateralPlate_Yheight_Total - FEET_G12LPyh1_Girder12_LateralPlate_Yheight_Inter1- FEET_G12LPyth_Girder12_LowerPlate_Ythick" />
+<var  name="FEET_G12BoPyb_Girder12_BottomPlate_YB"          value="FEET_G12yorig_Girder12_Yorigin + FEET_G12LPyht_Girder12_LateralPlate_Yheight_Total - FEET_G12LPyh2_Girder12_LateralPlate_Yheight_Inter2 - FEET_G12LPyth_Girder12_LowerPlate_Ythick" />
+<var  name="FEET_G12BoPyc_Girder12_BottomPlate_YC"          value="FEET_G12BoPyb_Girder12_BottomPlate_YB" />
+<var  name="FEET_G12BoPyd_Girder12_BottomPlate_YD"          value="FEET_G12BoPyc_Girder12_BottomPlate_YC + FEET_G12LPyth_Girder12_LowerPlate_Ythick" />
+<var  name="FEET_G12BoPye_Girder12_BottomPlate_YE"          value="FEET_G12BoPyb_Girder12_BottomPlate_YB + FEET_G12LPyth_Girder12_LowerPlate_Ythick" />
+<var  name="FEET_G12BoPyf_Girder12_BottomPlate_YF"          value="FEET_G12BoPya_Girder12_BottomPlate_YA + FEET_G12LPyth_Girder12_LowerPlate_Ythick" />
+
+<gvxysx   name="Girder12_BottomPlate"      material="Iron"   dZ="FEET_G12BPzle_Girder12_BottomPlate_Zlength"  >
+  <gvxy_point  X_Y="  FEET_G12BoPxa_Girder12_BottomPlate_XA   ;  FEET_G12BoPya_Girder12_BottomPlate_YA "   />
+  <gvxy_point  X_Y="  FEET_G12BoPxb_Girder12_BottomPlate_XB   ;  FEET_G12BoPyb_Girder12_BottomPlate_YB "   />
+  <gvxy_point  X_Y="  FEET_G12BoPxc_Girder12_BottomPlate_XC   ;  FEET_G12BoPyc_Girder12_BottomPlate_YC "   />
+  <gvxy_point  X_Y="  FEET_G12BoPxd_Girder12_BottomPlate_XD   ;  FEET_G12BoPyd_Girder12_BottomPlate_YD "   />
+  <gvxy_point  X_Y="  FEET_G12BoPxe_Girder12_BottomPlate_XE   ;  FEET_G12BoPye_Girder12_BottomPlate_YE "   />
+  <gvxy_point  X_Y="  FEET_G12BoPxf_Girder12_BottomPlate_XF   ;  FEET_G12BoPyf_Girder12_BottomPlate_YF "   />
+</gvxysx>
+
+<var  name="FEET_G12IPzle_Girder12_InnerPlate_Zlength"            value="FEET_G12BPzle_Girder12_BottomPlate_Zlength" />
+<var  name="FEET_G12IPLyh_Girder12_InnerPlateLarge_Yheight"       value="FEET_G12LPyh1_Girder12_LateralPlate_Yheight_Inter1" />
+<var  name="FEET_G12IPLyp_Girder12_InnerPlateLarge_Ypos"          value="FEET_G12BoPyf_Girder12_BottomPlate_YF + FEET_G12IPLyh_Girder12_InnerPlateLarge_Yheight/2." />
+<var  name="FEET_G12IPSyh_Girder12_InnerPlateSmall_Yheight"       value="FEET_G12LPyh2_Girder12_LateralPlate_Yheight_Inter2" />
+<var  name="FEET_G12IPSyp_Girder12_InnerPlateSmall_Ypos"          value="FEET_G12BoPye_Girder12_BottomPlate_YE + FEET_G12IPSyh_Girder12_InnerPlateSmall_Yheight/2." />
+
+<var  name="FEET_G12IPSx1_Girder12_InnerPlateSmall1_Xpos"         value="-FEET_G12LPxwt_Girder12_LateralPlate_Xwidth_Total/2. + FEET_G12IPSxo_Girder12_InnerPlateSmalloffset_Xdist +  FEET_G12IPxwi_Girder12_InnerPlate_Xwidth/2." />
+<var  name="FEET_G12IPLx1_Girder12_InnerPlateLarge1_Xpos"         value="-FEET_G12LPxwt_Girder12_LateralPlate_Xwidth_Total/2. + FEET_G12IPSLx_Girder12_InnerPlateSmall2Large_Xdist + FEET_G12IPxwi_Girder12_InnerPlate_Xwidth/2." />
+<var  name="FEET_G12IPLx2_Girder12_InnerPlateLarge2_Xpos"         value=" FEET_G12IPLx1_Girder12_InnerPlateLarge1_Xpos + FEET_G12IPLLx_Girder12_InnerPlateLarge2Large_Xdist " />
+<var  name="FEET_G12IPSx2_Girder12_InnerPlateSmall2_Xpos"         value=" FEET_G12IPLx2_Girder12_InnerPlateLarge2_Xpos + FEET_G12IPLSx_Girder12_InnerPlateLarge2Small_Xdist " />
+
+<box  name="Girder12_InnerPlateLarge"            material="Iron"  X_Y_Z="FEET_G12IPxwi_Girder12_InnerPlate_Xwidth; FEET_G12IPLyh_Girder12_InnerPlateLarge_Yheight; FEET_G12IPzle_Girder12_InnerPlate_Zlength" />
+<box  name="Girder12_InnerPlateSmall"            material="Iron"  X_Y_Z="FEET_G12IPxwi_Girder12_InnerPlate_Xwidth; FEET_G12IPSyh_Girder12_InnerPlateSmall_Yheight; FEET_G12IPzle_Girder12_InnerPlate_Zlength" />
+
+<var  name="FEET_G12UPxwi_Girder12_UpperPlate_Xwidth"             value="FEET_G12LPxwt_Girder12_LateralPlate_Xwidth_Total" />
+<var  name="FEET_G12UPyhe_Girder12_UpperPlate_Yheight"            value="FEET_G12UPyth_Girder12_UpperPlate_Ythick" />
+<var  name="FEET_G12UPypo_Girder12_UpperPlate_Ypos"               value="FEET_G12yorig_Girder12_Yorigin + FEET_G12LPyht_Girder12_LateralPlate_Yheight_Total + FEET_G12UPyth_Girder12_UpperPlate_Ythick/2. " />
+<box  name="Girder12_UpperPlate"                 material="Iron"  X_Y_Z="FEET_G12UPxwi_Girder12_UpperPlate_Xwidth; FEET_G12UPyhe_Girder12_UpperPlate_Yheight; FEET_G12UPzle_Girder12_UpperPlate_Zlength"  />
+
+<var  name="FEET_G12RePxa_Girder12_ReinforcementPlate_XA"         value="FEET_G12RPxwi_Girder12_ReinforcementPlate_Xwidth/2." />
+<var  name="FEET_G12RePxb_Girder12_ReinforcementPlate_XB"         value="FEET_G12RePxa_Girder12_ReinforcementPlate_XA" />
+<var  name="FEET_G12RePxc_Girder12_ReinforcementPlate_XC"         value="FEET_G12BoPxc_Girder12_BottomPlate_XC" />
+<var  name="FEET_G12RePxd_Girder12_ReinforcementPlate_XD"         value="FEET_G12RePxc_Girder12_ReinforcementPlate_XC" />
+<var  name="FEET_G12RePya_Girder12_ReinforcementPlate_YA"         value="FEET_G12yorig_Girder12_Yorigin" />
+<var  name="FEET_G12RePyb_Girder12_ReinforcementPlate_YB"         value="FEET_G12LPyht_Girder12_LateralPlate_Yheight_Total - FEET_G12RPydi_Girder12_ReinforcementPlate_Ydist" />
+<var  name="FEET_G12RePyc_Girder12_ReinforcementPlate_YC"         value="FEET_G12RePyb_Girder12_ReinforcementPlate_YB" />
+<var  name="FEET_G12RePyd_Girder12_ReinforcementPlate_YD"         value="FEET_G12LPyht_Girder12_LateralPlate_Yheight_Total " />
+
+<gvxysx     name="Girder12_ReinforcementPlate"   material="Iron"   dZ="FEET_G12RPzle_Girder12_ReinforcementPlate_Zlength"  >
+  <gvxy_point  X_Y="  FEET_G12RePxa_Girder12_ReinforcementPlate_XA   ;  FEET_G12RePya_Girder12_ReinforcementPlate_YA "   />
+  <gvxy_point  X_Y="  FEET_G12RePxb_Girder12_ReinforcementPlate_XB   ;  FEET_G12RePyb_Girder12_ReinforcementPlate_YB "   />
+  <gvxy_point  X_Y="  FEET_G12RePxc_Girder12_ReinforcementPlate_XC   ;  FEET_G12RePyc_Girder12_ReinforcementPlate_YC "   />
+  <gvxy_point  X_Y="  FEET_G12RePxd_Girder12_ReinforcementPlate_XD   ;  FEET_G12RePyd_Girder12_ReinforcementPlate_YD "   />
+</gvxysx>
+<var  name="FEET_G12RePzp_Girder12_ReinforcementPlate_Zpos"       value="FEET_G12BPzle_Girder12_BottomPlate_Zlength/2. +FEET_G12RPzle_Girder12_ReinforcementPlate_Zlength/2." />
+
+<var  name="FEET_G12UMPyp_Girder12_UpperMiniPlate_Ypos"           value="FEET_G12yorig_Girder12_Yorigin + FEET_G12LPyht_Girder12_LateralPlate_Yheight_Total + FEET_G12UPyth_Girder12_UpperPlate_Ythick + FEET_G12UMPyh_Girder12_UpperMiniPlate_Yheight/2. " />
+<var  name="FEET_G12UMPxp_Girder12_UpperMiniPlate_Xpos"           value="FEET_G12LPxwt_Girder12_LateralPlate_Xwidth_Total/2. - FEET_G12UMPwi_Girder12_UpperMiniPlate_Xwidth/2." />
+<box  name="Girder12_UpperMiniPlate"             material="Iron"   X_Y_Z="FEET_G12UMPwi_Girder12_UpperMiniPlate_Xwidth; FEET_G12UMPyh_Girder12_UpperMiniPlate_Yheight; FEET_G12UMPzl_Girder12_UpperMiniPlate_Zlength"  />
+
+<var  name="FEET_G12SMPyh_Girder12_SideMiniPlate_Yheight"         value="FEET_G12RPydi_Girder12_ReinforcementPlate_Ydist" />
+<var  name="FEET_G12SMPyp_Girder12_SideMiniPlate_Ypos"            value="FEET_G12RePyb_Girder12_ReinforcementPlate_YB+FEET_G12SMPyh_Girder12_SideMiniPlate_Yheight/2." />
+<var  name="FEET_G12SMPxp_Girder12_SideMiniPlate_Xpos"            value="FEET_G12LPxwt_Girder12_LateralPlate_Xwidth_Total/2. - FEET_G12SMPwi_Girder12_SideMiniPlate_Xwidth/2." />
+<var  name="FEET_G12SMPzp_Girder12_SideMiniPlate_Zpos"            value="FEET_G12UPzle_Girder12_UpperPlate_Zlength/2. - FEET_G12SMPzl_Girder12_SideMiniPlate_Zlength/2." />
+<box  name="Girder12_SideMiniPlate"              material="Iron"   X_Y_Z="FEET_G12SMPwi_Girder12_SideMiniPlate_Xwidth; FEET_G12SMPyh_Girder12_SideMiniPlate_Yheight; FEET_G12SMPzl_Girder12_SideMiniPlate_Zlength"  />
+
+
+
+<composition  name="Girder12" >
+  <posXYZ  volume="Girder12_BottomPlate"         X_Y_Z="0.;0.;0."  />
+  <posXYZ  volume="Girder12_InnerPlateLarge"     X_Y_Z=" FEET_G12IPLx1_Girder12_InnerPlateLarge1_Xpos; FEET_G12IPLyp_Girder12_InnerPlateLarge_Ypos  ;0."  />
+  <posXYZ  volume="Girder12_InnerPlateLarge"     X_Y_Z=" FEET_G12IPLx2_Girder12_InnerPlateLarge2_Xpos; FEET_G12IPLyp_Girder12_InnerPlateLarge_Ypos  ;0."  />
+  <posXYZ  volume="Girder12_InnerPlateSmall"     X_Y_Z=" FEET_G12IPSx1_Girder12_InnerPlateSmall1_Xpos; FEET_G12IPSyp_Girder12_InnerPlateSmall_Ypos  ;0."  />
+  <posXYZ  volume="Girder12_InnerPlateSmall"     X_Y_Z=" FEET_G12IPSx2_Girder12_InnerPlateSmall2_Xpos; FEET_G12IPSyp_Girder12_InnerPlateSmall_Ypos  ;0."  />
+  <posXYZ  volume="Girder12_UpperPlate"          X_Y_Z="0.; FEET_G12UPypo_Girder12_UpperPlate_Ypos  ;0."  />
+  <posXYZ  volume="Girder12_ReinforcementPlate"  X_Y_Z="0.; 0.  ; FEET_G12RePzp_Girder12_ReinforcementPlate_Zpos"  />
+  <posXYZ  volume="Girder12_ReinforcementPlate"  X_Y_Z="0.; 0.  ;-FEET_G12RePzp_Girder12_ReinforcementPlate_Zpos"  />
+  <posXYZ  volume="Girder12_UpperMiniPlate"      X_Y_Z="-FEET_G12UMPxp_Girder12_UpperMiniPlate_Xpos; FEET_G12UMPyp_Girder12_UpperMiniPlate_Ypos  ;0."  />
+  <posXYZ  volume="Girder12_UpperMiniPlate"      X_Y_Z=" FEET_G12UMPxp_Girder12_UpperMiniPlate_Xpos; FEET_G12UMPyp_Girder12_UpperMiniPlate_Ypos  ;0."  />
+  <posXYZ  volume="Girder12_SideMiniPlate"       X_Y_Z=" FEET_G12SMPxp_Girder12_SideMiniPlate_Xpos; FEET_G12SMPyp_Girder12_SideMiniPlate_Ypos  ;FEET_G12SMPzp_Girder12_SideMiniPlate_Zpos"    />
+  <posXYZ  volume="Girder12_SideMiniPlate"       X_Y_Z=" FEET_G12SMPxp_Girder12_SideMiniPlate_Xpos; FEET_G12SMPyp_Girder12_SideMiniPlate_Ypos  ;-FEET_G12SMPzp_Girder12_SideMiniPlate_Zpos"   />
+  <posXYZ  volume="Girder12_SideMiniPlate"       X_Y_Z="-FEET_G12SMPxp_Girder12_SideMiniPlate_Xpos; FEET_G12SMPyp_Girder12_SideMiniPlate_Ypos  ;FEET_G12SMPzp_Girder12_SideMiniPlate_Zpos"   />
+  <posXYZ  volume="Girder12_SideMiniPlate"       X_Y_Z="-FEET_G12SMPxp_Girder12_SideMiniPlate_Xpos; FEET_G12SMPyp_Girder12_SideMiniPlate_Ypos  ;-FEET_G12SMPzp_Girder12_SideMiniPlate_Zpos"  />
+</composition>
+
+
+<!--  Girder 2-3  -->
+
+<var  name="FEET_G23BoPxa_Girder23_BottomPlate_XA"          value="FEET_G23LPxw1_Girder23_LateralPlate_Xwidth_Inter1/2." />
+<var  name="FEET_G23BoPxb_Girder23_BottomPlate_XB"          value="FEET_G23BoPxa_Girder23_BottomPlate_XA + FEET_G23LPx12_Girder23_LateralPlate_Xwidth_Inter1Inter2" />
+<var  name="FEET_G23BoPxc_Girder23_BottomPlate_XC"          value="FEET_G23LPxwt_Girder23_LateralPlate_Xwidth_Total/2." />
+<var  name="FEET_G23BoPxd_Girder23_BottomPlate_XD"          value="FEET_G23BoPxc_Girder23_BottomPlate_XC" />
+<var  name="FEET_G23BoPxe_Girder23_BottomPlate_XE"          value="FEET_G23BoPxb_Girder23_BottomPlate_XB" />
+<var  name="FEET_G23BoPxf_Girder23_BottomPlate_XF"          value="FEET_G23BoPxa_Girder23_BottomPlate_XA" />
+
+<gvxysx     name="Girder23_BottomPlate"    material="Iron"   dZ="FEET_G12BPzle_Girder12_BottomPlate_Zlength"  >
+  <gvxy_point  X_Y="  FEET_G23BoPxa_Girder23_BottomPlate_XA   ;  FEET_G12BoPya_Girder12_BottomPlate_YA "   />
+  <gvxy_point  X_Y="  FEET_G23BoPxb_Girder23_BottomPlate_XB   ;  FEET_G12BoPyb_Girder12_BottomPlate_YB "   />
+  <gvxy_point  X_Y="  FEET_G23BoPxc_Girder23_BottomPlate_XC   ;  FEET_G12BoPyc_Girder12_BottomPlate_YC "   />
+  <gvxy_point  X_Y="  FEET_G23BoPxd_Girder23_BottomPlate_XD   ;  FEET_G12BoPyd_Girder12_BottomPlate_YD "   />
+  <gvxy_point  X_Y="  FEET_G23BoPxe_Girder23_BottomPlate_XE   ;  FEET_G12BoPye_Girder12_BottomPlate_YE "   />
+  <gvxy_point  X_Y="  FEET_G23BoPxf_Girder23_BottomPlate_XF   ;  FEET_G12BoPyf_Girder12_BottomPlate_YF "   />
+</gvxysx>
+
+<var  name="FEET_G23IPSx1_Girder23_InnerPlateSmall1_Xpos"   value="-FEET_G23LPxwt_Girder23_LateralPlate_Xwidth_Total/2. + FEET_G23IPSxo_Girder23_InnerPlateSmalloffset_Xdist +  FEET_G23IPxwi_Girder23_InnerPlate_Xwidth/2." />
+<var  name="FEET_G23IPLx1_Girder23_InnerPlateLarge1_Xpos"   value="-FEET_G23LPxwt_Girder23_LateralPlate_Xwidth_Total/2. + FEET_G23IPSLx_Girder23_InnerPlateSmall2Large_Xdist + FEET_G23IPxwi_Girder23_InnerPlate_Xwidth/2." />
+<var  name="FEET_G23IPLx2_Girder23_InnerPlateLarge2_Xpos"   value=" FEET_G23IPLx1_Girder23_InnerPlateLarge1_Xpos + FEET_G23IPLLx_Girder23_InnerPlateLarge2Large_Xdist " />
+<var  name="FEET_G23IPSx2_Girder23_InnerPlateSmall2_Xpos"   value=" FEET_G23IPLx2_Girder23_InnerPlateLarge2_Xpos + FEET_G23IPLSx_Girder23_InnerPlateLarge2Small_Xdist " />
+
+<box  name="Girder23_InnerPlateLarge"      material="Iron"   X_Y_Z="FEET_G23IPxwi_Girder23_InnerPlate_Xwidth; FEET_G12IPLyh_Girder12_InnerPlateLarge_Yheight; FEET_G12IPzle_Girder12_InnerPlate_Zlength"  />
+<box  name="Girder23_InnerPlateSmall"      material="Iron"   X_Y_Z="FEET_G23IPxwi_Girder23_InnerPlate_Xwidth; FEET_G12IPSyh_Girder12_InnerPlateSmall_Yheight; FEET_G12IPzle_Girder12_InnerPlate_Zlength"  />
+
+<var  name="FEET_G23UPxwi_Girder23_UpperPlate_Xwidth"       value="FEET_G23LPxwt_Girder23_LateralPlate_Xwidth_Total" />
+<var  name="FEET_G23UPyhe_Girder23_UpperPlate_Yheight"      value="FEET_G12UPyth_Girder12_UpperPlate_Ythick" />
+<box  name="Girder23_UpperPlate"           material="Iron"   X_Y_Z="FEET_G23UPxwi_Girder23_UpperPlate_Xwidth; FEET_G23UPyhe_Girder23_UpperPlate_Yheight; FEET_G12UPzle_Girder12_UpperPlate_Zlength"  />
+
+<var  name="FEET_G23RePxa_Girder23_ReinforcementPlate_XA"   value="FEET_G23RPxwi_Girder23_ReinforcementPlate_Xwidth/2." />
+<var  name="FEET_G23RePxb_Girder23_ReinforcementPlate_XB"   value="FEET_G23RePxa_Girder23_ReinforcementPlate_XA" />
+<var  name="FEET_G23RePxc_Girder23_ReinforcementPlate_XC"   value="FEET_G23BoPxc_Girder23_BottomPlate_XC" />
+<var  name="FEET_G23RePxd_Girder23_ReinforcementPlate_XD"   value="FEET_G23RePxc_Girder23_ReinforcementPlate_XC" />
+<var  name="FEET_G23RePya_Girder23_ReinforcementPlate_YA"   value="FEET_G12yorig_Girder12_Yorigin" />
+<var  name="FEET_G23RePyb_Girder23_ReinforcementPlate_YB"   value="FEET_G12LPyht_Girder12_LateralPlate_Yheight_Total - FEET_G12RPydi_Girder12_ReinforcementPlate_Ydist" />
+<var  name="FEET_G23RePyc_Girder23_ReinforcementPlate_YC"   value="FEET_G23RePyb_Girder23_ReinforcementPlate_YB" />
+<var  name="FEET_G23RePyd_Girder23_ReinforcementPlate_YD"   value="FEET_G12LPyht_Girder12_LateralPlate_Yheight_Total " />
+
+<gvxysx     name="Girder23_ReinforcementPlate"  material="Iron"   dZ="FEET_G12RPzle_Girder12_ReinforcementPlate_Zlength"  >
+  <gvxy_point  X_Y="  FEET_G23RePxa_Girder23_ReinforcementPlate_XA   ;  FEET_G23RePya_Girder23_ReinforcementPlate_YA "   />
+  <gvxy_point  X_Y="  FEET_G23RePxb_Girder23_ReinforcementPlate_XB   ;  FEET_G23RePyb_Girder23_ReinforcementPlate_YB "   />
+  <gvxy_point  X_Y="  FEET_G23RePxc_Girder23_ReinforcementPlate_XC   ;  FEET_G23RePyc_Girder23_ReinforcementPlate_YC "   />
+  <gvxy_point  X_Y="  FEET_G23RePxd_Girder23_ReinforcementPlate_XD   ;  FEET_G23RePyd_Girder23_ReinforcementPlate_YD "   />
+</gvxysx>
+
+<var  name="FEET_G23UMPxp_Girder23_UpperMiniPlate_Xpos"     value="FEET_G23LPxwt_Girder23_LateralPlate_Xwidth_Total/2. - FEET_G23UMPwi_Girder23_UpperMiniPlate_Xwidth/2." />
+<box  name="Girder23_UpperMiniPlate"       material="Iron" X_Y_Z="FEET_G23UMPwi_Girder23_UpperMiniPlate_Xwidth; FEET_G12UMPyh_Girder12_UpperMiniPlate_Yheight; FEET_G12UMPzl_Girder12_UpperMiniPlate_Zlength" />
+
+<var  name="FEET_G23SMPxp_Girder23_SideMiniPlate_Xpos"      value="FEET_G23LPxwt_Girder23_LateralPlate_Xwidth_Total/2. - FEET_G23SMPwi_Girder23_SideMiniPlate_Xwidth/2." />
+<box  name="Girder23_SideMiniPlate"        material="Iron" X_Y_Z="FEET_G23SMPwi_Girder23_SideMiniPlate_Xwidth; FEET_G12SMPyh_Girder12_SideMiniPlate_Yheight; FEET_G12SMPzl_Girder12_SideMiniPlate_Zlength"  />
+
+<composition  name="Girder23" >
+  <posXYZ  volume="Girder23_BottomPlate"         X_Y_Z="0.;0.;0."  />
+  <posXYZ  volume="Girder23_InnerPlateLarge"     X_Y_Z=" FEET_G23IPLx1_Girder23_InnerPlateLarge1_Xpos; FEET_G12IPLyp_Girder12_InnerPlateLarge_Ypos  ;0."  />
+  <posXYZ  volume="Girder23_InnerPlateLarge"     X_Y_Z=" FEET_G23IPLx2_Girder23_InnerPlateLarge2_Xpos; FEET_G12IPLyp_Girder12_InnerPlateLarge_Ypos  ;0."  />
+  <posXYZ  volume="Girder23_InnerPlateSmall"     X_Y_Z=" FEET_G23IPSx1_Girder23_InnerPlateSmall1_Xpos; FEET_G12IPSyp_Girder12_InnerPlateSmall_Ypos  ;0."  />
+  <posXYZ  volume="Girder23_InnerPlateSmall"     X_Y_Z=" FEET_G23IPSx2_Girder23_InnerPlateSmall2_Xpos; FEET_G12IPSyp_Girder12_InnerPlateSmall_Ypos  ;0."  />
+  <posXYZ  volume="Girder23_UpperPlate"          X_Y_Z="0.; FEET_G12UPypo_Girder12_UpperPlate_Ypos  ;0."  />
+  <posXYZ  volume="Girder23_ReinforcementPlate"  X_Y_Z="0.; 0.  ; FEET_G12RePzp_Girder12_ReinforcementPlate_Zpos"  />
+  <posXYZ  volume="Girder23_ReinforcementPlate"  X_Y_Z="0.; 0.  ;-FEET_G12RePzp_Girder12_ReinforcementPlate_Zpos"  />
+  <posXYZ  volume="Girder23_UpperMiniPlate"      X_Y_Z="-FEET_G23UMPxp_Girder23_UpperMiniPlate_Xpos; FEET_G12UMPyp_Girder12_UpperMiniPlate_Ypos  ;0."  />
+  <posXYZ  volume="Girder23_UpperMiniPlate"      X_Y_Z=" FEET_G23UMPxp_Girder23_UpperMiniPlate_Xpos; FEET_G12UMPyp_Girder12_UpperMiniPlate_Ypos  ;0."  />
+  <posXYZ  volume="Girder23_SideMiniPlate"       X_Y_Z=" FEET_G23SMPxp_Girder23_SideMiniPlate_Xpos; FEET_G12SMPyp_Girder12_SideMiniPlate_Ypos  ;FEET_G12SMPzp_Girder12_SideMiniPlate_Zpos"  />
+  <posXYZ  volume="Girder23_SideMiniPlate"       X_Y_Z=" FEET_G23SMPxp_Girder23_SideMiniPlate_Xpos; FEET_G12SMPyp_Girder12_SideMiniPlate_Ypos  ;-FEET_G12SMPzp_Girder12_SideMiniPlate_Zpos" />
+  <posXYZ  volume="Girder23_SideMiniPlate"       X_Y_Z="-FEET_G23SMPxp_Girder23_SideMiniPlate_Xpos; FEET_G12SMPyp_Girder12_SideMiniPlate_Ypos  ;FEET_G12SMPzp_Girder12_SideMiniPlate_Zpos"  />
+  <posXYZ  volume="Girder23_SideMiniPlate"       X_Y_Z="-FEET_G23SMPxp_Girder23_SideMiniPlate_Xpos; FEET_G12SMPyp_Girder12_SideMiniPlate_Ypos  ;-FEET_G12SMPzp_Girder12_SideMiniPlate_Zpos" />
+</composition>
+
+
+
+<!--  Girder 3-4  -->
+
+<var  name="FEET_G34BoPxa_Girder34_BottomPlate_XA"          value="FEET_G34LPxw1_Girder34_LateralPlate_Xwidth_Inter1/2." />
+<var  name="FEET_G34BoPxb_Girder34_BottomPlate_XB"          value="FEET_G34BoPxa_Girder34_BottomPlate_XA + FEET_G34LPx12_Girder34_LateralPlate_Xwidth_Inter1Inter2" />
+<var  name="FEET_G34BoPxc_Girder34_BottomPlate_XC"          value="FEET_G34LPxwt_Girder34_LateralPlate_Xwidth_Total/2." />
+<var  name="FEET_G34BoPxd_Girder34_BottomPlate_XD"          value="FEET_G34BoPxc_Girder34_BottomPlate_XC" />
+<var  name="FEET_G34BoPxe_Girder34_BottomPlate_XE"          value="FEET_G34BoPxb_Girder34_BottomPlate_XB" />
+<var  name="FEET_G34BoPxf_Girder34_BottomPlate_XF"          value="FEET_G34BoPxa_Girder34_BottomPlate_XA" />
+
+<gvxysx     name="Girder34_BottomPlate"         material="Iron"   dZ="FEET_G12BPzle_Girder12_BottomPlate_Zlength"  >
+  <gvxy_point  X_Y="  FEET_G34BoPxa_Girder34_BottomPlate_XA   ;  FEET_G12BoPya_Girder12_BottomPlate_YA "   />
+  <gvxy_point  X_Y="  FEET_G34BoPxb_Girder34_BottomPlate_XB   ;  FEET_G12BoPyb_Girder12_BottomPlate_YB "   />
+  <gvxy_point  X_Y="  FEET_G34BoPxc_Girder34_BottomPlate_XC   ;  FEET_G12BoPyc_Girder12_BottomPlate_YC "   />
+  <gvxy_point  X_Y="  FEET_G34BoPxd_Girder34_BottomPlate_XD   ;  FEET_G12BoPyd_Girder12_BottomPlate_YD "   />
+  <gvxy_point  X_Y="  FEET_G34BoPxe_Girder34_BottomPlate_XE   ;  FEET_G12BoPye_Girder12_BottomPlate_YE "   />
+  <gvxy_point  X_Y="  FEET_G34BoPxf_Girder34_BottomPlate_XF   ;  FEET_G12BoPyf_Girder12_BottomPlate_YF "   />
+</gvxysx>
+
+<var  name="FEET_G34IPSx1_Girder34_InnerPlateSmall1_Xpos"  value="-FEET_G34LPxwt_Girder34_LateralPlate_Xwidth_Total/2. + FEET_G34IPSxo_Girder34_InnerPlateSmalloffset_Xdist +  FEET_G34IPxwi_Girder34_InnerPlate_Xwidth/2." />
+<var  name="FEET_G34IPLx1_Girder34_InnerPlateLarge1_Xpos"  value="-FEET_G34LPxwt_Girder34_LateralPlate_Xwidth_Total/2. + FEET_G34IPSLx_Girder34_InnerPlateSmall2Large_Xdist + FEET_G34IPxwi_Girder34_InnerPlate_Xwidth/2." />
+<var  name="FEET_G34IPLx2_Girder34_InnerPlateLarge2_Xpos"  value=" FEET_G34IPLx1_Girder34_InnerPlateLarge1_Xpos + FEET_G34IPLLx_Girder34_InnerPlateLarge2Large_Xdist " />
+<var  name="FEET_G34IPSx2_Girder34_InnerPlateSmall2_Xpos"  value=" FEET_G34IPLx2_Girder34_InnerPlateLarge2_Xpos + FEET_G34IPLSx_Girder34_InnerPlateLarge2Small_Xdist " />
+
+<box  name="Girder34_InnerPlateLarge"     material="Iron"   X_Y_Z="FEET_G34IPxwi_Girder34_InnerPlate_Xwidth; FEET_G12IPLyh_Girder12_InnerPlateLarge_Yheight; FEET_G12IPzle_Girder12_InnerPlate_Zlength"  />
+<box  name="Girder34_InnerPlateSmall"     material="Iron"   X_Y_Z="FEET_G34IPxwi_Girder34_InnerPlate_Xwidth; FEET_G12IPSyh_Girder12_InnerPlateSmall_Yheight; FEET_G12IPzle_Girder12_InnerPlate_Zlength"  />
+
+<var  name="FEET_G34UPxwi_Girder34_UpperPlate_Xwidth"      value="FEET_G34LPxwt_Girder34_LateralPlate_Xwidth_Total" />
+<var  name="FEET_G34UPyhe_Girder34_UpperPlate_Yheight"     value="FEET_G12UPyth_Girder12_UpperPlate_Ythick" />
+<box  name="Girder34_UpperPlate"          material="Iron"   X_Y_Z="FEET_G34UPxwi_Girder34_UpperPlate_Xwidth; FEET_G34UPyhe_Girder34_UpperPlate_Yheight; FEET_G12UPzle_Girder12_UpperPlate_Zlength"  />
+
+<var  name="FEET_G34RePxa_Girder34_ReinforcementPlate_XA"  value="FEET_G34RPxwi_Girder34_ReinforcementPlate_Xwidth/2." />
+<var  name="FEET_G34RePxb_Girder34_ReinforcementPlate_XB"  value="FEET_G34RePxa_Girder34_ReinforcementPlate_XA" />
+<var  name="FEET_G34RePxc_Girder34_ReinforcementPlate_XC"  value="FEET_G34BoPxc_Girder34_BottomPlate_XC" />
+<var  name="FEET_G34RePxd_Girder34_ReinforcementPlate_XD"  value="FEET_G34RePxc_Girder34_ReinforcementPlate_XC" />
+<var  name="FEET_G34RePya_Girder34_ReinforcementPlate_YA"  value="FEET_G12yorig_Girder12_Yorigin" />
+<var  name="FEET_G34RePyb_Girder34_ReinforcementPlate_YB"  value="FEET_G12LPyht_Girder12_LateralPlate_Yheight_Total - FEET_G12RPydi_Girder12_ReinforcementPlate_Ydist" />
+<var  name="FEET_G34RePyc_Girder34_ReinforcementPlate_YC"  value="FEET_G34RePyb_Girder34_ReinforcementPlate_YB" />
+<var  name="FEET_G34RePyd_Girder34_ReinforcementPlate_YD"  value="FEET_G12LPyht_Girder12_LateralPlate_Yheight_Total " />
+
+<gvxysx     name="Girder34_ReinforcementPlate"         material="Iron"   dZ="FEET_G12RPzle_Girder12_ReinforcementPlate_Zlength"  >
+  <gvxy_point  X_Y="  FEET_G34RePxa_Girder34_ReinforcementPlate_XA   ;  FEET_G34RePya_Girder34_ReinforcementPlate_YA "   />
+  <gvxy_point  X_Y="  FEET_G34RePxb_Girder34_ReinforcementPlate_XB   ;  FEET_G34RePyb_Girder34_ReinforcementPlate_YB "   />
+  <gvxy_point  X_Y="  FEET_G34RePxc_Girder34_ReinforcementPlate_XC   ;  FEET_G34RePyc_Girder34_ReinforcementPlate_YC "   />
+  <gvxy_point  X_Y="  FEET_G34RePxd_Girder34_ReinforcementPlate_XD   ;  FEET_G34RePyd_Girder34_ReinforcementPlate_YD "   />
+</gvxysx>
+
+<var  name="FEET_G34UMPxp_Girder34_UpperMiniPlate_Xpos"    value="FEET_G34LPxwt_Girder34_LateralPlate_Xwidth_Total/2. - FEET_G34UMPwi_Girder34_UpperMiniPlate_Xwidth/2." />
+<box  name="Girder34_UpperMiniPlate"      material="Iron" X_Y_Z="FEET_G34UMPwi_Girder34_UpperMiniPlate_Xwidth; FEET_G12UMPyh_Girder12_UpperMiniPlate_Yheight; FEET_G12UMPzl_Girder12_UpperMiniPlate_Zlength" />
+
+<var  name="FEET_G34SMPxp_Girder34_SideMiniPlate_Xpos"     value="FEET_G34LPxwt_Girder34_LateralPlate_Xwidth_Total/2. - FEET_G34SMPwi_Girder34_SideMiniPlate_Xwidth/2." />
+<box  name="Girder34_SideMiniPlate"       material="Iron" X_Y_Z="FEET_G34SMPwi_Girder34_SideMiniPlate_Xwidth; FEET_G12SMPyh_Girder12_SideMiniPlate_Yheight; FEET_G12SMPzl_Girder12_SideMiniPlate_Zlength"  />
+
+<composition  name="Girder34" >
+  <posXYZ  volume="Girder34_BottomPlate"         X_Y_Z="0.;0.;0."  />
+  <posXYZ  volume="Girder34_InnerPlateLarge"     X_Y_Z=" FEET_G34IPLx1_Girder34_InnerPlateLarge1_Xpos; FEET_G12IPLyp_Girder12_InnerPlateLarge_Ypos  ;0."  />
+  <posXYZ  volume="Girder34_InnerPlateLarge"     X_Y_Z=" FEET_G34IPLx2_Girder34_InnerPlateLarge2_Xpos; FEET_G12IPLyp_Girder12_InnerPlateLarge_Ypos  ;0."  />
+  <posXYZ  volume="Girder34_InnerPlateSmall"     X_Y_Z=" FEET_G34IPSx1_Girder34_InnerPlateSmall1_Xpos; FEET_G12IPSyp_Girder12_InnerPlateSmall_Ypos  ;0."  />
+  <posXYZ  volume="Girder34_InnerPlateSmall"     X_Y_Z=" FEET_G34IPSx2_Girder34_InnerPlateSmall2_Xpos; FEET_G12IPSyp_Girder12_InnerPlateSmall_Ypos  ;0."  />
+  <posXYZ  volume="Girder34_UpperPlate"          X_Y_Z="0.; FEET_G12UPypo_Girder12_UpperPlate_Ypos  ;0."  />
+  <posXYZ  volume="Girder34_ReinforcementPlate"  X_Y_Z="0.; 0.  ; FEET_G12RePzp_Girder12_ReinforcementPlate_Zpos"  />
+  <posXYZ  volume="Girder34_ReinforcementPlate"  X_Y_Z="0.; 0.  ;-FEET_G12RePzp_Girder12_ReinforcementPlate_Zpos"  />
+  <posXYZ  volume="Girder34_UpperMiniPlate"      X_Y_Z="-FEET_G34UMPxp_Girder34_UpperMiniPlate_Xpos; FEET_G12UMPyp_Girder12_UpperMiniPlate_Ypos  ;0."  />
+  <posXYZ  volume="Girder34_UpperMiniPlate"      X_Y_Z=" FEET_G34UMPxp_Girder34_UpperMiniPlate_Xpos; FEET_G12UMPyp_Girder12_UpperMiniPlate_Ypos  ;0."  />
+  <posXYZ  volume="Girder34_SideMiniPlate"       X_Y_Z=" FEET_G34SMPxp_Girder34_SideMiniPlate_Xpos; FEET_G12SMPyp_Girder12_SideMiniPlate_Ypos  ;FEET_G12SMPzp_Girder12_SideMiniPlate_Zpos"   />
+  <posXYZ  volume="Girder34_SideMiniPlate"       X_Y_Z=" FEET_G34SMPxp_Girder34_SideMiniPlate_Xpos; FEET_G12SMPyp_Girder12_SideMiniPlate_Ypos  ;-FEET_G12SMPzp_Girder12_SideMiniPlate_Zpos"  />
+  <posXYZ  volume="Girder34_SideMiniPlate"       X_Y_Z=" -FEET_G34SMPxp_Girder34_SideMiniPlate_Xpos; FEET_G12SMPyp_Girder12_SideMiniPlate_Ypos  ;FEET_G12SMPzp_Girder12_SideMiniPlate_Zpos"  />
+  <posXYZ  volume="Girder34_SideMiniPlate"       X_Y_Z=" -FEET_G34SMPxp_Girder34_SideMiniPlate_Xpos; FEET_G12SMPyp_Girder12_SideMiniPlate_Ypos  ;-FEET_G12SMPzp_Girder12_SideMiniPlate_Zpos" />
+</composition>
+
+<!--  Girder Extremity  -->
+
+<var  name="FEET_GExBPxa_GirderEx_BottomPlate_XA"    value=" FEET_GExBPxws_GirderEx_BottomPlate_Xwidth_Short/2." />
+<var  name="FEET_GExBPxb_GirderEx_BottomPlate_XB"    value=" FEET_GExBPxwl_GirderEx_BottomPlate_Xwidth_Long/2." />
+<var  name="FEET_GExBPya_GirderEx_BottomPlate_YA"    value=" FEET_GExBPyw_GirderEx_BottomPlate_Ywidth/2." />
+<var  name="FEET_GExBPyb_GirderEx_BottomPlate_YB"    value="-FEET_GExBPyw_GirderEx_BottomPlate_Ywidth/2." />
+
+<gvxysx  name="GirderExtremity_BottomPlate"         material="Iron"   dZ="FEET_GExBPzw_GirderEx_BottomPlate_Zwidth"  >
+  <gvxy_point  X_Y="  FEET_GExBPxa_GirderEx_BottomPlate_XA  ;  FEET_GExBPya_GirderEx_BottomPlate_YA "   />
+  <gvxy_point  X_Y="  FEET_GExBPxb_GirderEx_BottomPlate_XB  ;  FEET_GExBPyb_GirderEx_BottomPlate_YB "   />
+</gvxysx>
+
+<var  name="FEET_GExSPxa_GirderEx_SidePlate_XA"    value=" FEET_GExSPxw_GirderEx_SidePlate_Xwidth/2." />
+<var  name="FEET_GExSPxb_GirderEx_SidePlate_XB"    value="-FEET_GExSPxa_GirderEx_SidePlate_XA" />
+<var  name="FEET_GExSPya_GirderEx_SidePlate_YA"    value=" FEET_GExSPyws_GirderEx_SidePlate_Ywidth_Short" />
+<var  name="FEET_GExSPyb_GirderEx_SidePlate_YB"    value=" FEET_GExSPyws_GirderEx_SidePlate_Ywidth_Short-FEET_GExSPywl_GirderEx_SidePlate_Ywidth_Long" />
+
+<gvxy     name="GirderExtremity_SidePlate_single"         material="Iron"   dZ="FEET_GExSPzw_GirderEx_SidePlate_Zwidth"  >
+  <gvxy_point  X_Y="  -FEET_GExSPxa_GirderEx_SidePlate_XA  ;  0. "   />
+  <gvxy_point  X_Y="  -FEET_GExSPxa_GirderEx_SidePlate_XA  ;  FEET_GExSPya_GirderEx_SidePlate_YA "   />
+  <gvxy_point  X_Y="  -FEET_GExSPxb_GirderEx_SidePlate_XB  ;  FEET_GExSPya_GirderEx_SidePlate_YA "   />
+  <gvxy_point  X_Y="  -FEET_GExSPxb_GirderEx_SidePlate_XB  ;  FEET_GExSPyb_GirderEx_SidePlate_YB "   />
+</gvxy>
+
+<box  name="GirderExtremity_FrontPlate"  material="Iron" X_Y_Z="FEET_GExFPxw_GirderEx_FrontPlate_Xwidth; FEET_GExFPyw_GirderEx_FrontPlate_Ywidth; FEET_GExFPzw_GirderEx_FrontPlate_Zwidth" />
+
+<var  name="FEET_GExTPywd_GirderEx_TopPlate_Ywidth_Difference" value=" FEET_GExTPywl_GirderEx_TopPlate_Ywidth_Long - FEET_GExTPyws_GirderEx_TopPlate_Ywidth_Short " />
+<var  name="FEET_GExTPywdh_GirderEx_TopPlate_Ywidth_DiffHalf"  value=" FEET_GExTPywd_GirderEx_TopPlate_Ywidth_Difference/2. " />
+<var  name="FEET_GExTPxws_GirderEx_TopPlate_Xwidth_Short"      value=" FEET_GExTPxwp_GirderEx_TopPlate_Xwidth_Part + FEET_GExTPywdh_GirderEx_TopPlate_Ywidth_DiffHalf/tan(FEET_GExTPangi_GirderEx_TopPlate_AngleInternal*GENV_PiS180) " />
+<var  name="FEET_GExTPxwl_GirderEx_TopPlate_Xwidth_Long"       value=" FEET_GExTPxwt_GirderEx_TopPlate_Xwidth_Total - FEET_GExTPxws_GirderEx_TopPlate_Xwidth_Short " />
+
+<box  name="GirderExtremity_TopPlate_Big"  material="Iron" X_Y_Z="FEET_GExTPyws_GirderEx_TopPlate_Ywidth_Short; FEET_GExTPxwl_GirderEx_TopPlate_Xwidth_Long; FEET_GExTPzws_GirderEx_TopPlate_Zwidth_Short" />
+
+<var  name="FEET_GExTPxa_GirderEx_TopPlate_XA"    value=" FEET_GExTPyws_GirderEx_TopPlate_Ywidth_Short/2." />
+<var  name="FEET_GExTPxb_GirderEx_TopPlate_XB"    value=" FEET_GExTPywl_GirderEx_TopPlate_Ywidth_Long/2." />
+<var  name="FEET_GExTPya_GirderEx_TopPlate_YA"    value=" FEET_GExTPxws_GirderEx_TopPlate_Xwidth_Short/2." />
+<var  name="FEET_GExTPyb_GirderEx_TopPlate_YB"    value=" FEET_GExTPxwp_GirderEx_TopPlate_Xwidth_Part-FEET_GExTPya_GirderEx_TopPlate_YA" />
+<var  name="FEET_GExTPyc_GirderEx_TopPlate_YC"    value="-FEET_GExTPya_GirderEx_TopPlate_YA" />
+
+<gvxysx  name="GirderExtremity_TopPlate_Small"         material="Iron"   dZ="FEET_GExTPzwl_GirderEx_TopPlate_Zwidth_Long"  >
+  <gvxy_point  X_Y="  FEET_GExTPxa_GirderEx_TopPlate_XA  ;   FEET_GExTPya_GirderEx_TopPlate_YA "   />
+  <gvxy_point  X_Y="  FEET_GExTPxb_GirderEx_TopPlate_XB  ;   FEET_GExTPyb_GirderEx_TopPlate_YB "   />
+  <gvxy_point  X_Y="  FEET_GExTPxb_GirderEx_TopPlate_XB  ;   FEET_GExTPyc_GirderEx_TopPlate_YC "   />
+</gvxysx>
+
+<composition  name="GirderExtremity_TopPlate" >
+  <posXYZ  volume="GirderExtremity_TopPlate_Big"       X_Y_Z="0.;  FEET_GExTPzws_GirderEx_TopPlate_Zwidth_Short/2.; FEET_GExTPxws_GirderEx_TopPlate_Xwidth_Short+FEET_GExTPxwl_GirderEx_TopPlate_Xwidth_Long/2."  rot="90.; 0.; 0."/>
+  <posXYZ  volume="GirderExtremity_TopPlate_Small"     X_Y_Z="0.;  FEET_GExTPzwl_GirderEx_TopPlate_Zwidth_Long/2.; FEET_GExTPxws_GirderEx_TopPlate_Xwidth_Short/2."   rot="90.;  0.; 0."/>
+</composition>
+
+<var  name="FEET_GExSPxsp_GirderEx_SidePlate_XShift_Pre"   value="FEET_GExSPxs_GirderEx_SidePlate_XShift-FEET_GExSPxw_GirderEx_SidePlate_Xwidth/2.*cos(FEET_GExSPangxz_GirderEx_SidePlate_AngleXZ*GENV_PiS180)" />
+<var  name="FEET_GExSPxstc_GirderEx_SidePlate_XShift_ThicknessCorrection"   value="FEET_GExSPzw_GirderEx_SidePlate_Zwidth/2.*sin(FEET_GExSPangxz_GirderEx_SidePlate_AngleXZ*GENV_PiS180)" />
+<var  name="FEET_GExSPxst_GirderEx_SidePlate_XShift_Total" value="FEET_GExSPxsp_GirderEx_SidePlate_XShift_Pre+FEET_GExSPxstc_GirderEx_SidePlate_XShift_ThicknessCorrection"/>
+
+<var  name="FEET_GExSPzsp_GirderEx_SidePlate_ZShift_Pre"   value="FEET_GExSPxw_GirderEx_SidePlate_Xwidth/2.*sin(FEET_GExSPangxz_GirderEx_SidePlate_AngleXZ*GENV_PiS180)" />
+<var  name="FEET_GExSPzstc_GirderEx_SidePlate_ZShift_ThicknessCorrection" value="FEET_GExSPzw_GirderEx_SidePlate_Zwidth/2.*cos(FEET_GExSPangxz_GirderEx_SidePlate_AngleXZ*GENV_PiS180)"/>
+<var  name="FEET_GExSPzst_GirderEx_SidePlate_ZShift_Total" value="FEET_GExSPzsp_GirderEx_SidePlate_ZShift_Pre+FEET_GExSPzstc_GirderEx_SidePlate_ZShift_ThicknessCorrection" />
+
+<composition  name="GirderExtremity_SidePlate" >
+  <posXYZ  volume="GirderExtremity_SidePlate_single"          X_Y_Z="FEET_GExSPxst_GirderEx_SidePlate_XShift_Total;  0.; FEET_GExSPzst_GirderEx_SidePlate_ZShift_Total"  rot="0.;  FEET_GExSPangxz_GirderEx_SidePlate_AngleXZ; 0."/>
+  <posXYZ  volume="GirderExtremity_SidePlate_single"          X_Y_Z="-FEET_GExSPxst_GirderEx_SidePlate_XShift_Total;  0.; FEET_GExSPzst_GirderEx_SidePlate_ZShift_Total"  rot="0.;  -FEET_GExSPangxz_GirderEx_SidePlate_AngleXZ+180.; 0."/>
+</composition>
+
+<var  name="Feet_GExBPzsp_GirderEx_BottomPlate_ZShift_Pre"  value="FEET_GExBPyw_GirderEx_BottomPlate_Ywidth/2.*sin(FEET_GExBPangyz_GirderEx_BottomPlate_AngleYZ*GENV_PiS180)"/>
+<var  name="Feet_GExBPzstc_GirderEx_BottomPlate_ZShift_ThicknessCorrection" value="FEET_GExBPzw_GirderEx_BottomPlate_Zwidth/2.*cos(FEET_GExBPangyz_GirderEx_BottomPlate_AngleYZ*GENV_PiS180)"/>
+<var  name="Feet_GExBPzst_GirderEx_BottomPlate_ZShift_Total" value="Feet_GExBPzsp_GirderEx_BottomPlate_ZShift_Pre+Feet_GExBPzstc_GirderEx_BottomPlate_ZShift_ThicknessCorrection" />
+
+<var  name="Feet_GExBPyshv_GirderEx_BottomPlate_YShift_HelpValue" value="FEET_GExBPyw_GirderEx_BottomPlate_Ywidth+FEET_GExBPzw_GirderEx_BottomPlate_Zwidth/2./tan(FEET_GExBPangyz_GirderEx_BottomPlate_AngleYZ*GENV_PiS180)" />
+<var  name="Feet_GExBPysp_GirderEx_BottomPlate_YShift_Pre"  value="FEET_GExSPywl_GirderEx_SidePlate_Ywidth_Long-FEET_GExSPyws_GirderEx_SidePlate_Ywidth_Short-cos(FEET_GExBPangyz_GirderEx_BottomPlate_AngleYZ*GENV_PiS180)*Feet_GExBPyshv_GirderEx_BottomPlate_YShift_HelpValue/2.+FEET_GExSPzstc_GirderEx_SidePlate_ZShift_ThicknessCorrection/tan(FEET_GExBPangyz_GirderEx_BottomPlate_AngleYZ*GENV_PiS180)"/>
+<var  name="Feet_GExBPystc_GirderEx_BottomPlate_YShift_ThicknessCorrection" value="FEET_GExBPzw_GirderEx_BottomPlate_Zwidth/2./sin(FEET_GExBPangyz_GirderEx_BottomPlate_AngleYZ*GENV_PiS180)"/>
+<var  name="Feet_GExBPyst_GirderEx_BottomPlate_YShift_Total" value="Feet_GExBPysp_GirderEx_BottomPlate_YShift_Pre+Feet_GExBPystc_GirderEx_BottomPlate_YShift_ThicknessCorrection" />
+
+<composition  name="GirderExtremity_Pre" >
+  <posXYZ  volume="GirderExtremity_FrontPlate"         X_Y_Z="0.; FEET_GExSPyws_GirderEx_SidePlate_Ywidth_Short-FEET_GExFPyw_GirderEx_FrontPlate_Ywidth/2.;  FEET_GExTPxwt_GirderEx_TopPlate_Xwidth_Total-175.-FEET_GExFPzw_GirderEx_FrontPlate_Zwidth/2."  rot="0.;  0.; 0."/>
+  <posXYZ  volume="GirderExtremity_TopPlate"           X_Y_Z="0.;  FEET_GExSPyws_GirderEx_SidePlate_Ywidth_Short; 0."  rot="0.; 0.; 0."/>
+  <posXYZ  volume="GirderExtremity_SidePlate"          X_Y_Z="0.;  0.; 0."  rot="0.;  0.; 0."/>
+  <posXYZ  volume="GirderExtremity_BottomPlate"        X_Y_Z="0.; -Feet_GExBPyst_GirderEx_BottomPlate_YShift_Total; Feet_GExBPzst_GirderEx_BottomPlate_ZShift_Total"  rot="FEET_GExBPangyz_GirderEx_BottomPlate_AngleYZ;  0.; 0."/>
+</composition>
+
+<box  name="GirderExtremity_TopConnector"     material="Iron" X_Y_Z="   FEET_GExTCxw_GirderEx_TopConnector_Xwidth;    FEET_GExTCyw_GirderEx_TopConnector_Ywidth; FEET_GExCzw_GirderEx_Connector_Zwidth " />
+<box  name="GirderExtremity_SideConnector"    material="Iron" X_Y_Z="  FEET_GExSCxw_GirderEx_SideConnector_Xwidth;   FEET_GExSCyw_GirderEx_SideConnector_Ywidth; FEET_GExCzw_GirderEx_Connector_Zwidth " />
+<box  name="GirderExtremity_BottomConnector"  material="Iron" X_Y_Z="FEET_GExBCxw_GirderEx_BottomConnector_Xwidth; FEET_GExBCyw_GirderEx_BottomConnector_Ywidth; FEET_GExCzw_GirderEx_Connector_Zwidth " />
+
+<var  name="FEET_GExPreyp_GirderEx_Pre_Yposition"              value=" -FEET_GExTPzws_GirderEx_TopPlate_Zwidth_Short-FEET_GExSPyws_GirderEx_SidePlate_Ywidth_Short" />
+<var  name="FEET_GExTCyp_GirderEx_TopConnector_Yposition"      value=" -FEET_GExTCyw_GirderEx_TopConnector_Ywidth/2.+FEET_GExCys_GirderEx_Connector_Yshift" />
+<var  name="FEET_GExSCxp_GirderEx_SideConnector_Xposition"     value=" FEET_GExBCxw_GirderEx_BottomConnector_Xwidth/2. -FEET_GExSCxw_GirderEx_SideConnector_Xwidth/2. " />
+<var  name="FEET_GExSCyp_GirderEx_SideConnector_Yposition"     value=" FEET_GExTCyp_GirderEx_TopConnector_Yposition-FEET_GExSCyw_GirderEx_SideConnector_Ywidth/2.-FEET_GExTCyw_GirderEx_TopConnector_Ywidth/2." />
+<var  name="FEET_GExBCyp_GirderEx_BottomConnector_Yposition"   value=" FEET_GExSCyp_GirderEx_SideConnector_Yposition-FEET_GExSCyw_GirderEx_SideConnector_Ywidth/2.-FEET_GExBCyw_GirderEx_BottomConnector_Ywidth/2." />
+
+
+<composition  name="GirderExtremity" >
+  <posXYZ  volume="GirderExtremity_Pre"              X_Y_Z="                                             0.;            FEET_GExPreyp_GirderEx_Pre_Yposition; FEET_GExCzw_GirderEx_Connector_Zwidth"    />
+  <posXYZ  volume="GirderExtremity_TopConnector"     X_Y_Z="                                             0.;    FEET_GExTCyp_GirderEx_TopConnector_Yposition; FEET_GExCzw_GirderEx_Connector_Zwidth/2." />
+  <posXYZ  volume="GirderExtremity_SideConnector"    X_Y_Z="  FEET_GExSCxp_GirderEx_SideConnector_Xposition;   FEET_GExSCyp_GirderEx_SideConnector_Yposition; FEET_GExCzw_GirderEx_Connector_Zwidth/2." />
+  <posXYZ  volume="GirderExtremity_SideConnector"    X_Y_Z=" -FEET_GExSCxp_GirderEx_SideConnector_Xposition;   FEET_GExSCyp_GirderEx_SideConnector_Yposition; FEET_GExCzw_GirderEx_Connector_Zwidth/2." />
+  <posXYZ  volume="GirderExtremity_BottomConnector"  X_Y_Z="                                             0.; FEET_GExBCyp_GirderEx_BottomConnector_Yposition; FEET_GExCzw_GirderEx_Connector_Zwidth/2." />
+</composition>
+
+<!--                              -->
+<!--  Perform Cuts on Main Plate  -->
+<!--                              -->
+
+<subtraction  name="FeetMainPlate_inter1" >
+  <posXYZ  volume="FeetMainPlate"  />
+  <posXYZ  volume="MainPlateRoundCut"   X_Y_Z="FEET_MaPlRCXc_MainPlateRoundCut_XC;FEET_MaPlRCYc_MainPlateRoundCut_YC; 0."  />
+</subtraction>
+
+<subtraction  name="FeetMainPlate_inter2" >
+  <posXYZ  volume="FeetMainPlate_inter1"  />
+  <posXYZ  volume="MainPlateSecondaryRoundCut"   X_Y_Z="FEET_MPlXextr_FeetMainPlate_Xextr;FEET_MPlYextr_FeetMainPlate_Yextr; 0."  />
+</subtraction>
+
+<subtraction  name="FeetMainPlate_inter3" >
+  <posXYZ  volume="FeetMainPlate_inter2"         />
+  <posXYZ  volume="MainPlateRoundCutCompletion"  />
+</subtraction>
+
+<subtraction  name="FeetMain" >
+  <posXYZ  volume="FeetMainPlate_inter3"  />
+  <posXYZ  volume="MiniConnPlate"      X_Y_Z="FEET_MiCPxpos_MiniConnPlate_X;FEET_MiCPypos_MiniConnPlate_Y+GENV_Eps; 0." rot="0.;0.;FEET_MinCPltz_MiniConnPlate_ThetaZ" />
+</subtraction>
+
+<var name="FEET_RaSuXo_RailSupport_Xoffset"   value="-FEET_MnPlUpXw_MainPlateUpperXwidth - FEET_UCnPlxwi_UpperConnPlate_Xwidth + FEET_MnPlHDiX_MainPlateHoleDistanceX + (FEET_Xwidth - FEET_HoleDist_RailSupport_DrillHoleDist)/2." />
+
+<composition  name="StandardFoot" >
+  <posXYZ  volume="FeetMain"                X_Y_Z="0.;0.;-FEET_MnPlZsep_MainPlateZsep/2"  />
+  <posXYZ  volume="FeetMain"                X_Y_Z="0.;0.; FEET_MnPlZsep_MainPlateZsep/2"  />
+  <posXYZ  volume="MiniConnPlate"           X_Y_Z="FEET_MiCPxpos_MiniConnPlate_X;FEET_MiCPypos_MiniConnPlate_Y+GENV_Eps; 0."        rot="0.;0.;FEET_MinCPltz_MiniConnPlate_ThetaZ" />
+  <posXYZ  volume="SlantedConnPlate"        X_Y_Z="FEET_SlCPxpos_SlantedConnPlate_X;FEET_SlCPypos_SlantedConnPlate_Y+GENV_Eps; 0."  rot="0.;0.;FEET_SlaCPltz_SlantedConnPlate_ThetaZ" />
+  <posXYZ  volume="SlantedConnPlateBracket" X_Y_Z="FEET_SlCPxpos_SlantedConnPlate_X+(0.5*FEET_SlaCPlyh_SlantedConnPlate_Yheight+GENV_Eps)*GENV_Co225-(FEET_SlaCPlBr_Bracket_Pos-GENV_Eps)*GENV_Si225;FEET_SlCPypos_SlantedConnPlate_Y+GENV_Eps+(0.5*FEET_SlaCPlyh_SlantedConnPlate_Yheight+GENV_Eps)*GENV_Si225+(FEET_SlaCPlBr_Bracket_Pos-GENV_Eps)*GENV_Co225;0."  rot="0.;0.;FEET_SlaCPltz_SlantedConnPlate_ThetaZ" />
+  <posXYZ  volume="GroundPlate"             X_Y_Z="FEET_GrnPxpos_GroundPlate_X;FEET_GrnPypos_GroundPlate_Y; 0."        />
+  <posXYZ  volume="VerticalConnPlate"       X_Y_Z="FEET_VeCPxpos_VerticalConnPlate_X;FEET_VeCPypos_VerticalConnPlate_Y; 0." />
+  <posXYZ  volume="UpperConnPlate"          X_Y_Z="FEET_UpCPxpos_UpperConnPlate_X;FEET_UpCPypos_UpperConnPlate_Y; 0."  />
+  <posXYZ  volume="RailSupport"             X_Y_Z="FEET_posx + FEET_RaSuXo_RailSupport_Xoffset;FEET_posy; 0."        />
+</composition>
+
+<var  name="FEET_StdFStYp_StandardFootStrut_Ypos"   value="FEET_StdFooYp_StandardFoot_Ypos + FEET_MainPlHe_MainPlateHeight - FEET_MnPlUpDy_MainPlateUpperDY/2." />
+
+<composition  name="StandardFootAssembly" >
+  <posXYZ  volume="StandardFoot"    X_Y_Z="-FEET_StdFooXp_StandardFoot_Xpos;FEET_StdFooYp_StandardFoot_Ypos        ;0."  rot="0.;180.; 0." >
+    <sector  value="6"  />
+  </posXYZ>
+  <posXYZ  volume="StandardFoot"    X_Y_Z=" FEET_StdFooXp_StandardFoot_Xpos;FEET_StdFooYp_StandardFoot_Ypos        ;0."  rot="0.;  0.; 0." >
+    <sector  value="7"  />
+  </posXYZ>
+  <posXYZ  volume="FEET_StandardStrut" X_Y_Z="  0.      ;FEET_StdFStYp_StandardFootStrut_Ypos;0."  >
+    <sector  value="7"  />
+  </posXYZ>
+</composition>
+
+
+
+
+<!--  Extremity Feet -->
+
+<var  name="FEET_ExMPRCxc_ExtremityMainPlateRoundCut_XC"   value=" FEET_MnPlGXwi_MainPlate_GroundXwidth-FEET_ExMPRCdx_ExtremityMainPlateRoundCut_DX " />
+<var  name="FEET_ExMPRCyc_ExtremityMainPlateRoundCut_YC"   value=" FEET_ExMPRCyp_ExtremityMainPlateRoundCut_Y   +  FEET_MnPlPeHe_MainPlate_PedestalHeight   " />
+<tubs name="ExtremityMainPlateRoundCut"   material="Aluminium1"  Rio_Z=" 0 ; FEET_ExMPRCra_ExtremityMainPlateRoundCut_R ; FEET_dumz"  nbPhi="FEET_dumphi" />
+
+<var  name="FEET_ExMPlxc3_ExtremityMainPlate_XC3"      value=" FEET_ExMPRCxc_ExtremityMainPlateRoundCut_XC - FEET_ExMPRCra_ExtremityMainPlateRoundCut_R * GENV_Co525 " />
+<var  name="FEET_ExMPlyc3_ExtremityMainPlate_YC3"      value=" FEET_ExMPRCyc_ExtremityMainPlateRoundCut_YC + FEET_ExMPRCra_ExtremityMainPlateRoundCut_R * GENV_Si525 " />
+
+<var  name="FEET_ExMPlxc4_ExtremityMainPlate_XC4"      value=" FEET_ExMPRCxc_ExtremityMainPlateRoundCut_XC - FEET_ExMPRCra_ExtremityMainPlateRoundCut_R * GENV_Co5 " />
+<var  name="FEET_ExMPlyc4_ExtremityMainPlate_YC4"      value=" FEET_ExMPRCyc_ExtremityMainPlateRoundCut_YC + FEET_ExMPRCra_ExtremityMainPlateRoundCut_R * GENV_Si5 " />
+
+<var  name="FEET_ExMPlxc5_ExtremityMainPlate_XC5"      value=" FEET_MaPlRCXc_MainPlateRoundCut_XC - FEET_MnPlRCra_MainPlateRoundCut_R  * GENV_Co5 " />
+<var  name="FEET_ExMPlyc5_ExtremityMainPlate_YC5"      value=" FEET_MaPlRCYc_MainPlateRoundCut_YC + FEET_MnPlRCra_MainPlateRoundCut_R  * GENV_Si5 " />
+
+<var  name="FEET_a2"                                       value=" GENV_Ta375 " />
+<var  name="FEET_b2"                                       value=" FEET_ExMPlyc3_ExtremityMainPlate_YC3 - FEET_ExMPlxc3_ExtremityMainPlate_XC3 * GENV_Ta375  " />
+<var  name="FEET_a2prime"                                  value="-GENV_Ta675 " />
+<var  name="FEET_b2prime"                                  value=" FEET_MainPlYc + FEET_MainPlXc * GENV_Ta675 " />
+<var  name="FEET_ExMPlaxd_ExtremityMainPlate_XD"       value=" -(FEET_b2-FEET_b2prime)/(FEET_a2-FEET_a2prime) " />
+<var  name="FEET_ExMPlayd_ExtremityMainPlate_YD"       value=" FEET_a2*FEET_ExMPlaxd_ExtremityMainPlate_XD + FEET_b2 " />
+
+<var  name="FEET_ExMPc2c1_ExtremityMainPlate_LengthC2C1" value="FEET_ExMCPyhe_ExtremityMiniConnPlate_Yheight+(FEET_ExMPhei1_ExtremityMainPlate_Height_intermediate1-FEET_MainPlH1_MainPlateHeight_intermediate1)/GENV_Co225 " />
+<var  name="FEET_ExMPlxc1_ExtremityMainPlate_XC1"      value="FEET_MnPlGXwi_MainPlate_GroundXwidth - FEET_ExMPc2c1_ExtremityMainPlate_LengthC2C1*GENV_Si225 " />
+<var  name="FEET_ExMPlyc1_ExtremityMainPlate_YC1"      value="FEET_MainPlYc+ FEET_ExMPc2c1_ExtremityMainPlate_LengthC2C1*GENV_Co225" />
+
+<var  name="FEET_ExMPyc1a_ExtremityMainPlate_YC1a"     value="FEET_ExMPhei2_ExtremityMainPlate_Height_intermediate2 +  FEET_MnPlPeHe_MainPlate_PedestalHeight  " />
+<var  name="FEET_ExMPxc1a_ExtremityMainPlate_XC1a"     value="FEET_ExMPlxc1_ExtremityMainPlate_XC1 - (FEET_ExMPlyc1_ExtremityMainPlate_YC1-FEET_ExMPyc1a_ExtremityMainPlate_YC1a)/GENV_Ta225 " />
+
+<var  name="FEET_ExMPxc1b_ExtremityMainPlate_XC1b"     value="FEET_MaPlRCXc_MainPlateRoundCut_XC " />
+<var  name="FEET_ExMPyc1b_ExtremityMainPlate_YC1b"     value="FEET_ExMPyc1a_ExtremityMainPlate_YC1a  " />
+
+<var  name="FEET_Alpha3"                           value="FEET_MinCPltz_MiniConnPlate_ThetaZ + atan(FEET_ExMCPyhe_ExtremityMiniConnPlate_Yheight/FEET_MinCPlxw_MiniConnPlate_Xwidth)/GENV_PiS180" />
+<var  name="FEET_CoAl3"                            value="cos(FEET_Alpha3*GENV_PiS180)" />
+<var  name="FEET_SiAl3"                            value="sin(FEET_Alpha3*GENV_PiS180)" />
+<var  name="FEET_ExMCPDia_ExtremityMiniConnPlate_DIAG"     value=" ( (FEET_MinCPlxw_MiniConnPlate_Xwidth/2.)**2. + (FEET_ExMCPyhe_ExtremityMiniConnPlate_Yheight/2.)**2. )**0.5 " />
+<var  name="FEET_ExMCPxpo_ExtremityMiniConnPlate_X"        value="FEET_ExMPlxc1_ExtremityMainPlate_XC1-FEET_ExMCPDia_ExtremityMiniConnPlate_DIAG*FEET_CoAl3" />
+<var  name="FEET_ExMCPypo_ExtremityMiniConnPlate_Y"        value="FEET_ExMPlyc1_ExtremityMainPlate_YC1-FEET_ExMCPDia_ExtremityMiniConnPlate_DIAG*FEET_SiAl3  " />
+
+<box  name="ExtremityMiniConnPlate" material="Iron"  X_Y_Z="FEET_MinCPlxw_MiniConnPlate_Xwidth; FEET_ExMCPyhe_ExtremityMiniConnPlate_Yheight; FEET_ExMCPzle_ExtremityMiniConnPlate_Zlength " />
+
+<var  name="FEET_ExMPlaxf_ExtremityMainPlate_XF"       value=" FEET_MainPlXe" />
+<var  name="FEET_ExMPlayf_ExtremityMainPlate_YF"       value=" FEET_ExMPheig_ExtremityMainPlate_Height " />
+
+<var  name="FEET_ExMPlxf1_ExtremityMainPlate_XF1"      value=" FEET_MainPlXf - ( FEET_ExMPxwid_ExtremityMainPlate_Xwidth - FEET_ExMPxwi1_ExtremityMainPlate_Xwidth_inter1 )" />
+<var  name="FEET_ExMPlyf1_ExtremityMainPlate_YF1"      value=" FEET_ExMPheig_ExtremityMainPlate_Height " />
+
+<var  name="FEET_ExMPlxf2_ExtremityMainPlate_XF2"      value="FEET_ExMPlxf1_ExtremityMainPlate_XF1 " />
+<var  name="FEET_ExMPlyf2_ExtremityMainPlate_YF2"      value="FEET_ExMPlyf1_ExtremityMainPlate_YF1 - FEET_ExMPyhi1_ExtremityMainPlate_Yheight_inter1" />
+
+<var  name="FEET_ExMPlyf3_ExtremityMainPlate_YF3" value="FEET_ExMPyhi2_ExtremityMainPlate_Yheight_inter2+FEET_ExMPyhi3_ExtremityMainPlate_Yheight_inter3-FEET_ExMPyhi4_ExtremityMainPlate_Yheight_inter4+FEET_MnPlPeHe_MainPlate_PedestalHeight"/>
+
+<var  name="FEET_ExMPlxf3_ExtremityMainPlate_XF3" value="FEET_ExMPlxf2_ExtremityMainPlate_XF2 - (FEET_ExMPlyf2_ExtremityMainPlate_YF2-FEET_ExMPlyf3_ExtremityMainPlate_YF3)/GENV_Ta20 " />
+
+<var  name="FEET_ExMPlxf4_ExtremityMainPlate_XF4"      value="FEET_ExMPlxf2_ExtremityMainPlate_XF2 - (FEET_ExMPxwi1_ExtremityMainPlate_Xwidth_inter1-FEET_ExMPxwi2_ExtremityMainPlate_Xwidth_inter2)" />
+<var  name="FEET_ExMPlyf4_ExtremityMainPlate_YF4"      value="FEET_ExMPlyf3_ExtremityMainPlate_YF3 " />
+
+<var  name="FEET_ExMPlxf5_ExtremityMainPlate_XF5"      value="FEET_ExMPlxf4_ExtremityMainPlate_XF4 - FEET_ExMPyhi4_ExtremityMainPlate_Yheight_inter4*GENV_Ta225" />
+<var  name="FEET_ExMPlyf5_ExtremityMainPlate_YF5"      value="FEET_ExMPlyf4_ExtremityMainPlate_YF4 + FEET_ExMPyhi4_ExtremityMainPlate_Yheight_inter4" />
+
+<var  name="FEET_ExMPlxf6_ExtremityMainPlate_XF6"      value="FEET_ExMPlxf4_ExtremityMainPlate_XF4 - FEET_ExMPxwi2_ExtremityMainPlate_Xwidth_inter2" />
+<var  name="FEET_ExMPlyf6_ExtremityMainPlate_YF6"      value="FEET_ExMPlyf5_ExtremityMainPlate_YF5" />
+
+<var  name="FEET_ExMPlxf7_ExtremityMainPlate_XF7"      value="FEET_ExMPlxf6_ExtremityMainPlate_XF6" />
+<var  name="FEET_ExMPlyf7_ExtremityMainPlate_YF7"      value="FEET_ExMPlyf6_ExtremityMainPlate_YF6 - FEET_ExMPyhi3_ExtremityMainPlate_Yheight_inter3" />
+
+<var  name="FEET_ExMPlaxi_ExtremityMainPlate_XI"       value=" -FEET_ExMPxdi1_ExtremityMainPlate_Xdist_inter1 + FEET_ExMPxdi2_ExtremityMainPlate_Xdist_inter2 " />
+
+<var  name="FEET_ExMPlaxh_ExtremityMainPlate_XH"       value="FEET_ExMPlaxi_ExtremityMainPlate_XI -(FEET_ExMPyhi2_ExtremityMainPlate_Yheight_inter2-FEET_ExMPydi2_ExtremityMainPlate_Ydist_inter1)/GENV_Ta77  " />
+<var  name="FEET_ExMPlayh_ExtremityMainPlate_YH"       value=" FEET_ExMPlyf7_ExtremityMainPlate_YF7 " />
+
+
+<gvxy  name="ExtremityFeetMainPlate"      material="Iron"   dZ="FEET_MainPldZ_MainPlateDZ"  >
+  <gvxy_point  X_Y=" FEET_MainPlXa              ;  FEET_MainPlYa            " />
+  <gvxy_point  X_Y=" FEET_MainPlXb              ;  FEET_MainPlYb            " />
+  <gvxy_point  X_Y=" FEET_MainPlXc              ;  FEET_MainPlYc            " />
+  <gvxy_point  X_Y=" FEET_ExMPlxc1_ExtremityMainPlate_XC1    ;  FEET_ExMPlyc1_ExtremityMainPlate_YC1  " />
+  <gvxy_point  X_Y=" FEET_ExMPxc1a_ExtremityMainPlate_XC1a   ;  FEET_ExMPyc1a_ExtremityMainPlate_YC1a " />
+  <gvxy_point  X_Y=" FEET_ExMPxc1b_ExtremityMainPlate_XC1b   ;  FEET_ExMPyc1b_ExtremityMainPlate_YC1b " />
+  <gvxy_point  X_Y=" FEET_ExMPlxc5_ExtremityMainPlate_XC5    ;  FEET_ExMPlyc5_ExtremityMainPlate_YC5  " />
+  <gvxy_point  X_Y=" FEET_ExMPlxc4_ExtremityMainPlate_XC4    ;  FEET_ExMPlyc4_ExtremityMainPlate_YC4  " />
+  <gvxy_point  X_Y=" FEET_ExMPlxc3_ExtremityMainPlate_XC3    ;  FEET_ExMPlyc3_ExtremityMainPlate_YC3  " />
+  <gvxy_point  X_Y=" FEET_ExMPlaxd_ExtremityMainPlate_XD     ;  FEET_ExMPlayd_ExtremityMainPlate_YD   " />
+  <gvxy_point  X_Y=" FEET_MainPlXe              ;  FEET_MainPlYe            " />
+  <gvxy_point  X_Y=" FEET_ExMPlaxf_ExtremityMainPlate_XF     ;  FEET_ExMPlayf_ExtremityMainPlate_YF   " />
+  <gvxy_point  X_Y=" FEET_ExMPlxf1_ExtremityMainPlate_XF1    ;  FEET_ExMPlyf1_ExtremityMainPlate_YF1  " />
+  <gvxy_point  X_Y=" FEET_ExMPlxf2_ExtremityMainPlate_XF2    ;  FEET_ExMPlyf2_ExtremityMainPlate_YF2  " />
+  <gvxy_point  X_Y=" FEET_ExMPlxf3_ExtremityMainPlate_XF3    ;  FEET_ExMPlyf3_ExtremityMainPlate_YF3  " />
+  <gvxy_point  X_Y=" FEET_ExMPlxf4_ExtremityMainPlate_XF4    ;  FEET_ExMPlyf4_ExtremityMainPlate_YF4  " />
+  <gvxy_point  X_Y=" FEET_ExMPlxf5_ExtremityMainPlate_XF5    ;  FEET_ExMPlyf5_ExtremityMainPlate_YF5  " />
+  <gvxy_point  X_Y=" FEET_ExMPlxf6_ExtremityMainPlate_XF6    ;  FEET_ExMPlyf6_ExtremityMainPlate_YF6  " />
+  <gvxy_point  X_Y=" FEET_ExMPlxf7_ExtremityMainPlate_XF7    ;  FEET_ExMPlyf7_ExtremityMainPlate_YF7  " />
+  <gvxy_point  X_Y=" FEET_ExMPlaxh_ExtremityMainPlate_XH     ;  FEET_ExMPlayh_ExtremityMainPlate_YH   " />
+  <gvxy_point  X_Y=" FEET_MainPlXi              ;  FEET_MainPlYi            " />
+  <gvxy_point  X_Y=" FEET_MainPlXj              ;  FEET_MainPlYj            " />
+</gvxy>
+
+
+
+<!--  Ensemble of Connecting plates -->
+
+<box  name="ExtremityGroundPlate"         material="Iron"   X_Y_Z="FEET_GrnPxwid_GroundPlate_Xwidth; FEET_GrnPyhei_GroundPlate_Yheight; FEET_ExGPzlen_ExtremityGroundPlate_Zlength" />
+
+<box  name="ExtremitySlantedConnPlate_box"     material="Iron" X_Y_Z="FEET_SlaCPlxw_SlantedConnPlate_Xwidth; FEET_SlaCPlyh_SlantedConnPlate_Yheight; FEET_ExSCPzle_ExtremitySlantedConnPlate_Zlength" />
+<tubs name="ExtremitySlantedConnPlateRoundCut" material="Iron" Rio_Z=" 0 ;  FEET_ExSPRCra_ExtremitySlantedConnPlateRoundCut_Radius; FEET_dumz"  nbPhi="FEET_dumphi" />
+
+<subtraction  name="ExtremitySlantedConnPlate" >
+  <posXYZ  volume="ExtremitySlantedConnPlate_box"  />
+  <posXYZ  volume="ExtremitySlantedConnPlateRoundCut"   X_Y_Z="FEET_ExSPRCof_ExtremitySlantedConnPlateRoundCut_Offset;0.;0."  rot="90.;0.;0." />
+</subtraction>
+
+
+<var  name="FEET_ExUCPxpo_ExtremityUpperConnPlate_X"          value="FEET_ExMPlxf7_ExtremityMainPlate_XF7 - FEET_UCnPlxwi_UpperConnPlate_Xwidth/2." />
+<var  name="FEET_ExUCPypo_ExtremityUpperConnPlate_Y"          value=" FEET_ExMPlayh_ExtremityMainPlate_YH + FEET_ExUCPyhe_ExtremityUpperConnPlate_Yheight/2." />
+<box  name="ExtremityUpperConnPlate"         material="Iron"  X_Y_Z="FEET_UCnPlxwi_UpperConnPlate_Xwidth; FEET_ExUCPyhe_ExtremityUpperConnPlate_Yheight; FEET_ExUCPzle_ExtremityUpperConnPlate_Zlength" />
+
+<var  name="FEET_ExVCPzle_ExtremityVerticalConnPlate_Zlength" value=" FEET_ExMPzsep_ExtremityMainPlate_Zsep - FEET_MainPldZ_MainPlateDZ " />
+
+<var  name="FEET_ExVCPlxa_ExtremityVerticalConnPlate_XA"  value=" 0." />
+<var  name="FEET_ExVCPlya_ExtremityVerticalConnPlate_YA"  value=" 0." />
+<var  name="FEET_ExVCPlxb_ExtremityVerticalConnPlate_XB"  value="FEET_ExVCPlxa_ExtremityVerticalConnPlate_XA - FEET_ExVCPthi_ExtremityVerticalConnPlate_Thickness" />
+<var  name="FEET_ExVCPlyb_ExtremityVerticalConnPlate_YB"  value="FEET_ExVCPlya_ExtremityVerticalConnPlate_YA" />
+
+<var  name="FEET_ExVCPlxc_ExtremityVerticalConnPlate_XC"  value="FEET_ExVCPlxb_ExtremityVerticalConnPlate_XB" />
+<var  name="FEET_ExVCPlyc_ExtremityVerticalConnPlate_YC"  value="FEET_ExVCPhei_ExtremityVerticalConnPlate_Height-(FEET_ExVCPxex_ExtremityVerticalConnPlate_Xext-FEET_ExVCPthi_ExtremityVerticalConnPlate_Thickness)*GENV_Ta675"/>
+
+<var  name="FEET_ExVCPlxd_ExtremityVerticalConnPlate_XD"  value="FEET_ExVCPlxc_ExtremityVerticalConnPlate_XC - FEET_ExVCPxex_ExtremityVerticalConnPlate_Xext + FEET_ExVCPthi_ExtremityVerticalConnPlate_Thickness*GENV_Co225" />
+<var  name="FEET_ExVCPlyd_ExtremityVerticalConnPlate_YD"  value="FEET_ExVCPhei_ExtremityVerticalConnPlate_Height - FEET_ExVCPthi_ExtremityVerticalConnPlate_Thickness*GENV_Si225" />
+
+<var  name="FEET_ExVCPlxe_ExtremityVerticalConnPlate_XE"  value="FEET_ExVCPlxd_ExtremityVerticalConnPlate_XD + FEET_ExVCPthi_ExtremityVerticalConnPlate_Thickness*GENV_Co225 " />
+<var  name="FEET_ExVCPlye_ExtremityVerticalConnPlate_YE"  value="FEET_ExVCPlyd_ExtremityVerticalConnPlate_YD + FEET_ExVCPthi_ExtremityVerticalConnPlate_Thickness*GENV_Si225 " />
+
+<var  name="FEET_ExVCPlxf_ExtremityVerticalConnPlate_XF"  value="FEET_ExVCPlxa_ExtremityVerticalConnPlate_XA " />
+<var  name="FEET_ExVCPlyf_ExtremityVerticalConnPlate_YF"  value="FEET_ExVCPlyc_ExtremityVerticalConnPlate_YC " />
+
+<gvxy     name="ExtremityVerticalConnPlateCore"         material="Iron"   dZ="FEET_ExVCPzle_ExtremityVerticalConnPlate_Zlength"  >
+  <gvxy_point  X_Y="  FEET_ExVCPlxa_ExtremityVerticalConnPlate_XA  ;  FEET_ExVCPlya_ExtremityVerticalConnPlate_YA "   />
+  <gvxy_point  X_Y="  FEET_ExVCPlxb_ExtremityVerticalConnPlate_XB  ;  FEET_ExVCPlyb_ExtremityVerticalConnPlate_YB "   />
+  <gvxy_point  X_Y="  FEET_ExVCPlxc_ExtremityVerticalConnPlate_XC  ;  FEET_ExVCPlyc_ExtremityVerticalConnPlate_YC "   />
+  <gvxy_point  X_Y="  FEET_ExVCPlxd_ExtremityVerticalConnPlate_XD  ;  FEET_ExVCPlyd_ExtremityVerticalConnPlate_YD "   />
+  <gvxy_point  X_Y="  FEET_ExVCPlxe_ExtremityVerticalConnPlate_XE  ;  FEET_ExVCPlye_ExtremityVerticalConnPlate_YE "   />
+  <gvxy_point  X_Y="  FEET_ExVCPlxf_ExtremityVerticalConnPlate_XF  ;  FEET_ExVCPlyf_ExtremityVerticalConnPlate_YF "   />
+</gvxy>
+
+<box  name="ExtremityVerticalConnPlateCut"   material="Iron"   X_Y_Z="FEET_ExVCPxcu_ExtremityVerticalConnPlate_CutX; FEET_ExVCPycu_ExtremityVerticalConnPlate_CutY; FEET_dumz" />
+
+
+<var  name="FEET_ExVCPlxp_ExtremityVerticalConnPlate_Xpos" value="(FEET_ExVCPlxd_ExtremityVerticalConnPlate_XD+FEET_ExVCPlxe_ExtremityVerticalConnPlate_XE)/2.+GENV_Co675*FEET_ExVCPycu_ExtremityVerticalConnPlate_CutY/2."/>
+<var  name="FEET_ExVCPlyp_ExtremityVerticalConnPlate_Ypos" value="(FEET_ExVCPlyd_ExtremityVerticalConnPlate_YD+FEET_ExVCPlye_ExtremityVerticalConnPlate_YE)/2.-GENV_Si675*FEET_ExVCPycu_ExtremityVerticalConnPlate_CutY/2."/>
+
+<subtraction  name="ExtremityVerticalConnPlate" >
+  <posXYZ  volume="ExtremityVerticalConnPlateCore"  />
+  <posXYZ  volume="ExtremityVerticalConnPlateCut"  X_Y_Z="FEET_ExVCPlxp_ExtremityVerticalConnPlate_Xpos; FEET_ExVCPlyp_ExtremityVerticalConnPlate_Ypos +GENV_Eps; 0. "   rot=" 0. ; 90. ; 22.5"  />
+</subtraction>
+
+<var  name="FEET_ExVCPlax_ExtremityVerticalConnPlate_X"       value=" FEET_ExVCPldx_ExtremityVerticalConnPlate_DX " />
+<var  name="FEET_ExVCPlay_ExtremityVerticalConnPlate_Y"       value=" FEET_ExVCPldy_ExtremityVerticalConnPlate_DY + FEET_MnPlPeHe_MainPlate_PedestalHeight" />
+
+<!--  Extremity Feet Rail support -->
+
+<var  name="FEET_ExRSLzle_ExtremityRailSupportLower_Zlength"      value="FEET_ExRSUzle_ExtremityRailSupportUpper_Zlength - FEET_ExRSLdzl_ExtremityRailSupportLower_DZlength" />
+<var  name="FEET_ExRSVyhe_ExtremityRailSupportVertical_Yheight"   value="FEET_ExRSCyhe_ExtremityRailSupportCentral_Yheight " />
+<var  name="FEET_ExRSMxpo_ExtremityRailSupportMiddle_Xpos"        value="FEET_ExRSMxwi_ExtremityRailSupportMiddle_Xwidth/2. + FEET_ExRSCxwi_ExtremityRailSupportCentral_Xwidth/2." />
+<var  name="FEET_ExRSVxpo_ExtremityRailSupportVertical_Xpos"      value="FEET_ExRSVxwi_ExtremityRailSupportVertical_Xwidth/2. + FEET_ExRSCxwi_ExtremityRailSupportCentral_Xwidth/2." />
+
+
+<box  name="ExtremityRailSupportUpper"    material="Iron"  X_Y_Z="FEET_Xwidth; FEET_UpperHeY_RailSupportUpper_Yheight; FEET_ExRSUzle_ExtremityRailSupportUpper_Zlength " />
+<box  name="ExtremityRailSupportLower"    material="Iron"  X_Y_Z="FEET_Xwidth; FEET_ExRSLyhe_ExtremityRailSupportLower_Yheight; FEET_ExRSLzle_ExtremityRailSupportLower_Zlength " />
+<box  name="ExtremityRailSupportCentral"  material="Iron"  X_Y_Z="FEET_ExRSCxwi_ExtremityRailSupportCentral_Xwidth; FEET_ExRSCyhe_ExtremityRailSupportCentral_Yheight; FEET_ExRSCzle_ExtremityRailSupportCentral_Zlength" />
+<box  name="ExtremityRailSupportMiddle"   material="Iron"  X_Y_Z="FEET_ExRSMxwi_ExtremityRailSupportMiddle_Xwidth; FEET_MidllYth_RailSupportMiddle_Ythick; FEET_ExRSMzle_ExtremityRailSupportMiddle_Zlength" />
+<box  name="ExtremityRailSupportVertical" material="Iron"  X_Y_Z="FEET_ExRSVxwi_ExtremityRailSupportVertical_Xwidth; FEET_ExRSVyhe_ExtremityRailSupportVertical_Yheight; FEET_VertiZth_RailSupportVertical_Zthick" />
+<box  name="ExtremityRailSupportExtr"     material="Iron"  X_Y_Z="FEET_Xwidth; FEET_ExRSEyhe_ExtremityRailSupportExtr_Yheight; FEET_ExRSEzle_ExtremityRailSupportExtr_Zlength  " />
+
+
+<var  name="FEET_ExRSEypo_ExtremityRailSupportExtr_Y"     value="FEET_ExRSEyhe_ExtremityRailSupportExtr_Yheight/2."/>
+<var  name="FEET_ExRSUypo_ExtremityRailSupportUpper_Y"    value="FEET_ExRSTyhe_ExtremityRailSupportTotal_Yheight-FEET_UpperHeY_RailSupportUpper_Yheight/2."/>
+<var  name="FEET_ExRSLypo_ExtremityRailSupportLower_Y"    value="FEET_ExRSEyhe_ExtremityRailSupportExtr_Yheight+FEET_ExRSLyhe_ExtremityRailSupportLower_Yheight/2."/>
+<var  name="FEET_ExRSCypo_ExtremityRailSupportCentral_Y"  value="FEET_ExRSEyhe_ExtremityRailSupportExtr_Yheight+FEET_ExRSLyhe_ExtremityRailSupportLower_Yheight+FEET_ExRSCyhe_ExtremityRailSupportCentral_Yheight/2."/>
+<var  name="FEET_ExRSVypo_ExtremityRailSupportVertical_Y" value="FEET_ExRSCypo_ExtremityRailSupportCentral_Y"/>
+
+<var  name="FEET_ExRSVzp1_ExtremityRailSupportVertical1_Zpos" value="-FEET_ExRSUzle_ExtremityRailSupportUpper_Zlength/2.+FEET_ExRSVzi1_ExtremityRailSupportVertical_Zpos_inter1-FEET_VertiZth_RailSupportVertical_Zthick/2."/>
+<var  name="FEET_ExRSVzp2_ExtremityRailSupportVertical2_Zpos" value=" FEET_ExRSVzp1_ExtremityRailSupportVertical1_Zpos + FEET_ExRSMzle_ExtremityRailSupportMiddle_Zlength + FEET_VertiZth_RailSupportVertical_Zthick" />
+<var  name="FEET_ExRSMzpo_ExtremityRailSupportMiddle_Zpos"    value="(FEET_ExRSVzp1_ExtremityRailSupportVertical1_Zpos+FEET_ExRSVzp2_ExtremityRailSupportVertical2_Zpos)/2." />
+<var  name="FEET_ExRSEzpo_ExtremityRailSupportExtr_Zpos"      value=" FEET_ExRSLzle_ExtremityRailSupportLower_Zlength/2.-FEET_ExRSEzof_ExtremityRailSupportExtr_Zoffset-FEET_ExRSEzle_ExtremityRailSupportExtr_Zlength/2."/>
+
+<var  name="FEET_ExRSC1ye_ExtremityRailSupportCut1_Yext"          value="FEET_ExRSC1wi_ExtremityRailSupportCut1_Width - FEET_ExRSC2z2_ExtremityRailSupportCut1_Zoffset2*2 " />
+<var  name="FEET_ExRSC2ye_ExtremityRailSupportCut2_Yext"          value="FEET_ExRSC1wi_ExtremityRailSupportCut1_Width  " />
+
+<box  name="ExtremityRailSupportCut1"     material="Iron"  X_Y_Z="FEET_ExRSC1xe_ExtremityRailSupportCut1_dumXext; FEET_ExRSC1ye_ExtremityRailSupportCut1_Yext; FEET_dumz "    />
+<box  name="ExtremityRailSupportCut2"     material="Iron"  X_Y_Z="FEET_ExRSC2xe_ExtremityRailSupportCut2_dumXext; FEET_ExRSC2ye_ExtremityRailSupportCut2_Yext; FEET_dumz "    />
+<tubs name="ExtremityRailSupportCut3"     material="Iron"  Rio_Z=" 0 ; FEET_ExRSC2z2_ExtremityRailSupportCut1_Zoffset2 ; FEET_dumz"  nbPhi="FEET_dumphi" />
+
+<var  name="FEET_ExRSC1xp_ExtremityRailSupportCut1_Xpos" value="FEET_dumz/2. +  ( FEET_Xwidth/2.- FEET_ExRSC1de_ExtremityRailSupportCut1_Depth) " />
+<var  name="FEET_ExRSC2xp_ExtremityRailSupportCut2_Xpos" value="FEET_dumz/2. +  ( FEET_Xwidth/2.- FEET_ExRSC1de_ExtremityRailSupportCut1_Depth+ FEET_ExRSC2z2_ExtremityRailSupportCut1_Zoffset2) " />
+
+<var  name="FEET_ExRSC1zp_ExtremityRailSupportCut1_Zpos" value="-FEET_ExRSLzle_ExtremityRailSupportLower_Zlength/2.+ FEET_ExRSC2z1_ExtremityRailSupportCut1_Zoffset1 + FEET_ExRSC1wi_ExtremityRailSupportCut1_Width/2." />
+
+<var  name="FEET_ExRSC3xp_ExtremityRailSupportCut3_Xpos" value="FEET_Xwidth/2. -(FEET_ExRSC1de_ExtremityRailSupportCut1_Depth-FEET_ExRSC2z2_ExtremityRailSupportCut1_Zoffset2)" />
+<var  name="FEET_ExRSC3zp_ExtremityRailSupportCut3_Zpos" value="-FEET_ExRSLzle_ExtremityRailSupportLower_Zlength/2.+ FEET_ExRSC2z1_ExtremityRailSupportCut1_Zoffset1 + FEET_ExRSC2z2_ExtremityRailSupportCut1_Zoffset2" />
+
+<var  name="FEET_ExRSC4z1" value="FEET_ExRSC1wi_ExtremityRailSupportCut1_Width-FEET_ExRSC2z2_ExtremityRailSupportCut1_Zoffset2"/>
+<var  name="FEET_ExRSC4zp_ExtremityRailSupportCut4_Zpos" value="-FEET_ExRSLzle_ExtremityRailSupportLower_Zlength/2.+FEET_ExRSC2z1_ExtremityRailSupportCut1_Zoffset1+FEET_ExRSC4z1"/>
+
+<var  name="FEET_ExRSMCxa_ExtremityRailSupportMiddleCut_XA"      value="FEET_ExRSMCwi_ExtremityRailSupportMiddleCut_Width/2." />
+<var  name="FEET_ExRSMCya_ExtremityRailSupportMiddleCut_YA"      value="FEET_ExRSMCy1_ExtremityRailSupportMiddleCut_dumy1" />
+
+<var  name="FEET_ExRSMCxb_ExtremityRailSupportMiddleCut_XB"      value="FEET_ExRSMCxa_ExtremityRailSupportMiddleCut_XA" />
+<var  name="FEET_ExRSMCyb_ExtremityRailSupportMiddleCut_YB"      value="FEET_ExRSMCya_ExtremityRailSupportMiddleCut_YA + FEET_ExRSMCy2_ExtremityRailSupportMiddleCut_dumy2" />
+
+<var  name="FEET_ExRSMCxc_ExtremityRailSupportMiddleCut_XC"      value="FEET_ExRSMCwi_ExtremityRailSupportMiddleCut_Width/2.- FEET_ExRSMCde_ExtremityRailSupportMiddleCut_Depth" />
+<var  name="FEET_ExRSMCyc_ExtremityRailSupportMiddleCut_YC"      value="FEET_ExRSMCyb_ExtremityRailSupportMiddleCut_YB + FEET_ExRSMCde_ExtremityRailSupportMiddleCut_Depth" />
+
+<gvxysx     name="ExtremityRailSupportMiddleCut"         material="Iron"   dZ="FEET_dumz"  >
+  <gvxy_point  X_Y="  FEET_ExRSMCxa_ExtremityRailSupportMiddleCut_XA  ;  FEET_ExRSMCya_ExtremityRailSupportMiddleCut_YA "   />
+  <gvxy_point  X_Y="  FEET_ExRSMCxb_ExtremityRailSupportMiddleCut_XB  ;  FEET_ExRSMCyb_ExtremityRailSupportMiddleCut_YB "   />
+  <gvxy_point  X_Y="  FEET_ExRSMCxc_ExtremityRailSupportMiddleCut_XC  ;  FEET_ExRSMCyc_ExtremityRailSupportMiddleCut_YC "   />
+</gvxysx>
+
+<var  name="FEET_ExRSMCxp_ExtremityRailSupportMiddle_cut_Xpos" value="FEET_ExRSMCyc_ExtremityRailSupportMiddleCut_YC+FEET_Xwidth/2.-FEET_ExRSMCde_ExtremityRailSupportMiddleCut_Depth" />
+
+<var  name="FEET_ExRSMCz1" value="FEET_ExRSVzi1_ExtremityRailSupportVertical_Zpos_inter1+FEET_ExRSMCzo_ExtremityRailSupportMiddleCut_Zoffset"/>
+<var  name="FEET_ExRSMCzp_ExtremityRailSupportMiddle_cut_Zpos" value="FEET_ExRSMCxb_ExtremityRailSupportMiddleCut_XB-FEET_ExRSLzle_ExtremityRailSupportLower_Zlength/2.+FEET_ExRSMCz1"/>
+
+<composition  name="ExtremityRailSupport" >
+  <posXYZ  volume="ExtremityRailSupportUpper"       X_Y_Z=" 0.;FEET_ExRSUypo_ExtremityRailSupportUpper_Y;0."    />
+  <posXYZ  volume="ExtremityRailSupportCentral"     X_Y_Z=" 0.;FEET_ExRSCypo_ExtremityRailSupportCentral_Y;0."  />
+  <posXYZ  volume="ExtremityRailSupportVertical"    X_Y_Z=" FEET_ExRSVxpo_ExtremityRailSupportVertical_Xpos;FEET_ExRSVypo_ExtremityRailSupportVertical_Y; FEET_ExRSVzp1_ExtremityRailSupportVertical1_Zpos"  />
+  <posXYZ  volume="ExtremityRailSupportVertical"    X_Y_Z="-FEET_ExRSVxpo_ExtremityRailSupportVertical_Xpos;FEET_ExRSVypo_ExtremityRailSupportVertical_Y; FEET_ExRSVzp1_ExtremityRailSupportVertical1_Zpos"  />
+  <posXYZ  volume="ExtremityRailSupportVertical"    X_Y_Z=" FEET_ExRSVxpo_ExtremityRailSupportVertical_Xpos;FEET_ExRSVypo_ExtremityRailSupportVertical_Y; FEET_ExRSVzp2_ExtremityRailSupportVertical2_Zpos"  />
+  <posXYZ  volume="ExtremityRailSupportVertical"    X_Y_Z="-FEET_ExRSVxpo_ExtremityRailSupportVertical_Xpos;FEET_ExRSVypo_ExtremityRailSupportVertical_Y; FEET_ExRSVzp2_ExtremityRailSupportVertical2_Zpos"  />
+</composition>
+
+
+<subtraction  name="ExtremityRailSupportMiddle_cut_plus" >
+  <posXYZ  volume="ExtremityRailSupportMiddle"      X_Y_Z="FEET_ExRSMxpo_ExtremityRailSupportMiddle_Xpos;FEET_Midyposi_RailSupportMiddle_Y;FEET_ExRSMzpo_ExtremityRailSupportMiddle_Zpos"  rot="0.;0.;0." />
+  <posXYZ  volume="ExtremityRailSupportMiddleCut"  X_Y_Z="FEET_ExRSMCxp_ExtremityRailSupportMiddle_cut_Xpos;0.;FEET_ExRSMCzp_ExtremityRailSupportMiddle_cut_Zpos"  rot="0.;90.;90." />
+</subtraction>
+
+<subtraction  name="ExtremityRailSupportMiddle_cut_minus" >
+  <posXYZ  volume="ExtremityRailSupportMiddle"      X_Y_Z="-FEET_ExRSMxpo_ExtremityRailSupportMiddle_Xpos;FEET_Midyposi_RailSupportMiddle_Y;FEET_ExRSMzpo_ExtremityRailSupportMiddle_Zpos"  rot="0.;0.;0." />
+  <posXYZ  volume="ExtremityRailSupportMiddleCut"  X_Y_Z="-FEET_ExRSMCxp_ExtremityRailSupportMiddle_cut_Xpos;0.;FEET_ExRSMCzp_ExtremityRailSupportMiddle_cut_Zpos"  rot="0.;90.;270." />
+</subtraction>
+
+<subtraction  name="ExtremityRailSupportLower_cut1_plus" >
+  <posXYZ  volume="ExtremityRailSupportLower"       rot="0.;0.;0." />
+  <posXYZ  volume="ExtremityRailSupportCut1"        X_Y_Z="FEET_ExRSC1xp_ExtremityRailSupportCut1_Xpos;0.;FEET_ExRSC1zp_ExtremityRailSupportCut1_Zpos"  rot="90.;0.;90." />
+</subtraction>
+<subtraction  name="ExtremityRailSupportLower_cut2_plus" >
+  <posXYZ  volume="ExtremityRailSupportLower_cut1_plus"  />
+  <posXYZ  volume="ExtremityRailSupportCut2"        X_Y_Z="FEET_ExRSC2xp_ExtremityRailSupportCut2_Xpos;0.;FEET_ExRSC1zp_ExtremityRailSupportCut1_Zpos"  rot="90.;0.;90." />
+</subtraction>
+<subtraction  name="ExtremityRailSupportLower_cut3_plus" >
+  <posXYZ  volume="ExtremityRailSupportLower_cut2_plus"  />
+  <posXYZ  volume="ExtremityRailSupportCut3"        X_Y_Z="FEET_ExRSC3xp_ExtremityRailSupportCut3_Xpos;0.;FEET_ExRSC3zp_ExtremityRailSupportCut3_Zpos"  rot="90.;0.;0." />
+</subtraction>
+<subtraction  name="ExtremityRailSupportLower_cut4_plus" >
+  <posXYZ  volume="ExtremityRailSupportLower_cut3_plus"  />
+  <posXYZ  volume="ExtremityRailSupportCut3"        X_Y_Z="FEET_ExRSC3xp_ExtremityRailSupportCut3_Xpos;0.;FEET_ExRSC4zp_ExtremityRailSupportCut4_Zpos"  rot="90.;0.;0." />
+</subtraction>
+
+
+
+<subtraction  name="ExtremityRailSupportExtr_cut1_plus" >
+  <posXYZ  volume="ExtremityRailSupportExtr"             X_Y_Z="0.;FEET_ExRSEypo_ExtremityRailSupportExtr_Y;FEET_ExRSEzpo_ExtremityRailSupportExtr_Zpos"     rot="0.;0.;0." />
+  <posXYZ  volume="ExtremityRailSupportCut1"             X_Y_Z="FEET_ExRSC1xp_ExtremityRailSupportCut1_Xpos;0.;FEET_ExRSC1zp_ExtremityRailSupportCut1_Zpos"  rot="90.;0.;90." />
+</subtraction>
+<subtraction  name="ExtremityRailSupportExtr_cut2_plus" >
+  <posXYZ  volume="ExtremityRailSupportExtr_cut1_plus"   />
+  <posXYZ  volume="ExtremityRailSupportCut2"             X_Y_Z="FEET_ExRSC2xp_ExtremityRailSupportCut2_Xpos;0.;FEET_ExRSC1zp_ExtremityRailSupportCut1_Zpos"  rot="90.;0.;90." />
+</subtraction>
+<subtraction  name="ExtremityRailSupportExtr_cut3_plus" >
+  <posXYZ  volume="ExtremityRailSupportExtr_cut2_plus"   />
+  <posXYZ  volume="ExtremityRailSupportCut3"             X_Y_Z="FEET_ExRSC3xp_ExtremityRailSupportCut3_Xpos;0.;FEET_ExRSC3zp_ExtremityRailSupportCut3_Zpos"  rot="90.;0.;0." />
+</subtraction>
+<subtraction  name="ExtremityRailSupportExtr_cut4_plus" >
+  <posXYZ  volume="ExtremityRailSupportExtr_cut3_plus"   />
+  <posXYZ  volume="ExtremityRailSupportCut3"             X_Y_Z="FEET_ExRSC3xp_ExtremityRailSupportCut3_Xpos;0.;FEET_ExRSC4zp_ExtremityRailSupportCut4_Zpos"  rot="90.;0.;0." />
+</subtraction>
+
+<composition  name="ExtremityRailSupport_plus" >
+  <posXYZ  volume="ExtremityRailSupport"                  />
+  <posXYZ  volume="ExtremityRailSupportMiddle_cut_plus"   />
+  <posXYZ  volume="ExtremityRailSupportMiddle" X_Y_Z="-FEET_ExRSMxpo_ExtremityRailSupportMiddle_Xpos;FEET_Midyposi_RailSupportMiddle_Y;FEET_ExRSMzpo_ExtremityRailSupportMiddle_Zpos"/>
+  <posXYZ  volume="ExtremityRailSupportLower_cut4_plus"  X_Y_Z="0.;FEET_ExRSLypo_ExtremityRailSupportLower_Y;0." />
+  <posXYZ  volume="ExtremityRailSupportExtr_cut4_plus"   X_Y_Z="0.;0.;0." />
+</composition>
+
+<composition  name="ExtremityRailSupport_minus" >
+  <posXYZ  volume="ExtremityRailSupport"                  />
+  <posXYZ  volume="ExtremityRailSupportMiddle_cut_minus"  />
+  <posXYZ  volume="ExtremityRailSupportMiddle" X_Y_Z="FEET_ExRSMxpo_ExtremityRailSupportMiddle_Xpos;FEET_Midyposi_RailSupportMiddle_Y;FEET_ExRSMzpo_ExtremityRailSupportMiddle_Zpos"/>
+  <posXYZ  volume="ExtremityRailSupportLower_cut4_plus"  X_Y_Z="0.;FEET_ExRSLypo_ExtremityRailSupportLower_Y;0." rot="0.;0.;180." />
+  <posXYZ  volume="ExtremityRailSupportExtr_cut4_plus"   X_Y_Z="0.;FEET_ExRSEyhe_ExtremityRailSupportExtr_Yheight;0." rot="0.;0.;180." />
+</composition>
+
+
+
+
+<var name="FEET_ExRSposx_ExtremityRailSupport_X" value="FEET_ExMPlaxf_ExtremityMainPlate_XF-FEET_Xwidth/2."/>
+<var name="FEET_ExRSposy_ExtremityRailSupport_Y" value="FEET_ExMPlayf_ExtremityMainPlate_YF-FEET_ExRSEyhe_ExtremityRailSupportExtr_Yheight"/>
+<var name="FEET_ExRSposz_ExtremityRailSupport_Z" value="-FEET_ExRSzoff_ExtremityRailSupport_Zoffset-(FEET_ExRSVzp1_ExtremityRailSupportVertical1_Zpos+FEET_ExRSVzp2_ExtremityRailSupportVertical2_Zpos)/2."/>
+
+
+
+<!--                              -->
+<!--  Perform Cuts on Main Plate  -->
+<!--                              -->
+
+<subtraction  name="ExtremityFeetMainPlate_inter1" >
+  <posXYZ  volume="ExtremityFeetMainPlate"  />
+  <posXYZ  volume="MainPlateRoundCut"               X_Y_Z="FEET_MaPlRCXc_MainPlateRoundCut_XC;FEET_MaPlRCYc_MainPlateRoundCut_YC; 0."  />
+</subtraction>
+
+<subtraction  name="ExtremityFeetMainPlate_inter2" >
+  <posXYZ  volume="ExtremityFeetMainPlate_inter1"   />
+  <posXYZ  volume="ExtremityMainPlateRoundCut"      X_Y_Z=" FEET_ExMPRCxc_ExtremityMainPlateRoundCut_XC; FEET_ExMPRCyc_ExtremityMainPlateRoundCut_YC; 0."  />
+</subtraction>
+
+<subtraction  name="ExtremityFeetMain" >
+  <posXYZ  volume="ExtremityFeetMainPlate_inter2"   />
+  <posXYZ  volume="ExtremityMiniConnPlate"          X_Y_Z="FEET_ExMCPxpo_ExtremityMiniConnPlate_X;FEET_ExMCPypo_ExtremityMiniConnPlate_Y+GENV_Eps; 0." rot="0.;0.;FEET_MinCPltz_MiniConnPlate_ThetaZ" />
+
+</subtraction>
+
+
+
+
+<composition  name="ExtremityFoot" >
+  <posXYZ  volume="ExtremityFeetMain"           X_Y_Z="0.;0.; FEET_ExMPzsep_ExtremityMainPlate_Zsep/2"  />
+  <posXYZ  volume="ExtremityFeetMain"           X_Y_Z="0.;0.;-FEET_ExMPzsep_ExtremityMainPlate_Zsep/2"  />
+  <posXYZ  volume="ExtremityMiniConnPlate"      X_Y_Z="FEET_ExMCPxpo_ExtremityMiniConnPlate_X;FEET_ExMCPypo_ExtremityMiniConnPlate_Y+GENV_Eps; 0."  rot="0.;0.;FEET_MinCPltz_MiniConnPlate_ThetaZ" />
+  <posXYZ  volume="ExtremitySlantedConnPlate"   X_Y_Z="FEET_SlCPxpos_SlantedConnPlate_X;FEET_SlCPypos_SlantedConnPlate_Y+GENV_Eps; 0."              rot="0.;0.;FEET_SlaCPltz_SlantedConnPlate_ThetaZ" />
+  <posXYZ  volume="ExtremityGroundPlate"        X_Y_Z="FEET_GrnPxpos_GroundPlate_X;FEET_GrnPypos_GroundPlate_Y; 0."  />
+  <posXYZ  volume="ExtremityVerticalConnPlate"  X_Y_Z="FEET_ExVCPlax_ExtremityVerticalConnPlate_X;FEET_ExVCPlay_ExtremityVerticalConnPlate_Y; 0."  />
+  <posXYZ  volume="ExtremityUpperConnPlate"     X_Y_Z="FEET_ExUCPxpo_ExtremityUpperConnPlate_X;FEET_ExUCPypo_ExtremityUpperConnPlate_Y; 0."  />
+</composition>
+
+<var  name="FEET_ExRSpxap_ExtremityRailSupport_assembled_plus_X"     value=" FEET_ExRSposx_ExtremityRailSupport_X + FEET_StdFooXp_StandardFoot_Xpos + FEET_RaSuXo_RailSupport_Xoffset" />
+<var  name="FEET_ExRSpxam_ExtremityRailSupport_assembled_minus_X"    value="-FEET_ExRSposx_ExtremityRailSupport_X - FEET_StdFooXp_StandardFoot_Xpos - FEET_RaSuXo_RailSupport_Xoffset" />
+<var  name="FEET_ExRSpyas_ExtremityRailSupport_assembled_Y"          value=" FEET_ExRSposy_ExtremityRailSupport_Y + FEET_StdFooYp_StandardFoot_Ypos " />
+
+<var  name="FEET_ExtFStYp_ExtremityFootStrut_Ypos"  value="FEET_StdFooYp_StandardFoot_Ypos + FEET_ExUCPypo_ExtremityUpperConnPlate_Y" />
+
+<composition  name="ExtremityFootAssemblyPlus" >
+  <posXYZ  volume="ExtremityFoot"               X_Y_Z="-FEET_StdFooXp_StandardFoot_Xpos;FEET_StdFooYp_StandardFoot_Ypos;0."  rot="0.;180.;0." >
+    <sector  value="6" />
+  </posXYZ>
+  <posXYZ  volume="ExtremityRailSupport_minus"  X_Y_Z=" FEET_ExRSpxam_ExtremityRailSupport_assembled_minus_X;FEET_ExRSpyas_ExtremityRailSupport_assembled_Y; -FEET_ExRSposz_ExtremityRailSupport_Z"  rot="0.;180.;0." >
+    <sector  value="6" />
+  </posXYZ>
+  <posXYZ  volume="ExtremityFoot"               X_Y_Z=" FEET_StdFooXp_StandardFoot_Xpos;FEET_StdFooYp_StandardFoot_Ypos;0." >
+    <sector  value="7" />
+  </posXYZ>
+  <posXYZ  volume="ExtremityRailSupport_plus"   X_Y_Z=" FEET_ExRSpxap_ExtremityRailSupport_assembled_plus_X; FEET_ExRSpyas_ExtremityRailSupport_assembled_Y; -FEET_ExRSposz_ExtremityRailSupport_Z"  rot="0.;180.;0." >
+    <sector  value="7" />
+  </posXYZ>
+  <posXYZ  volume="FEET_ExtremityStrut"         X_Y_Z="0.;FEET_ExtFStYp_ExtremityFootStrut_Ypos;0." >
+    <sector  value="7" />
+  </posXYZ>
+</composition>
+
+<composition  name="ExtremityFootAssemblyMinus" >
+  <posXYZ  volume="ExtremityFoot"               X_Y_Z="-FEET_StdFooXp_StandardFoot_Xpos;FEET_StdFooYp_StandardFoot_Ypos;0."  rot="0.;180.;0." >
+    <sector  value="7" />
+  </posXYZ>
+  <posXYZ  volume="ExtremityRailSupport_minus"  X_Y_Z=" FEET_ExRSpxam_ExtremityRailSupport_assembled_minus_X;FEET_ExRSpyas_ExtremityRailSupport_assembled_Y; -FEET_ExRSposz_ExtremityRailSupport_Z"  rot="0.;180.;0." >
+    <sector  value="7" />
+  </posXYZ>
+  <posXYZ  volume="ExtremityFoot"               X_Y_Z=" FEET_StdFooXp_StandardFoot_Xpos;FEET_StdFooYp_StandardFoot_Ypos;0." >
+    <sector  value="6" />
+  </posXYZ>
+  <posXYZ  volume="ExtremityRailSupport_plus"   X_Y_Z=" FEET_ExRSpxap_ExtremityRailSupport_assembled_plus_X; FEET_ExRSpyas_ExtremityRailSupport_assembled_Y; -FEET_ExRSposz_ExtremityRailSupport_Z"  rot="0.;180.;0." >
+    <sector  value="6" />
+  </posXYZ>
+  <posXYZ  volume="FEET_ExtremityStrut"         X_Y_Z="0.;FEET_ExtFStYp_ExtremityFootStrut_Ypos;0." >
+    <sector  value="7" />
+  </posXYZ>
+</composition>
+
+
+<var  name="FEET_Gir12zpo"          value="(FEET_ZposFee1+FEET_ZposFee2)/2. " />
+<var  name="FEET_Gir12ypo"          value=" FEET_StdFooYp_StandardFoot_Ypos + FEET_GirdYHei_YHeightGirder" />
+<var  name="FEET_Gir23zpo"          value="(FEET_ZposFee2+FEET_ZposFee3)/2. " />
+<var  name="FEET_Gir34zpo"          value="(FEET_ZposFee3+FEET_ZposFee4)/2. " />
+<var  name="FEET_GirExzpo"          value="FEET_ZposFee5-FEET_ExMPzsep_ExtremityMainPlate_Zsep/2.-FEET_MainPldZ_MainPlateDZ/2." />
+<var  name="FEET_GirExxpo"          value="FEET_GirdExtXpos_XposGirderEx"/>
+
+
+<composition  name="Feet" >
+  <posXYZ  volume="StandardFootAssembly"    X_Y_Z=" 0.;0.; FEET_ZposFee1" >
+    <ring  value="0" />
+  </posXYZ>
+  <posXYZ  volume="StandardFootAssembly"    X_Y_Z=" 0.;0.; FEET_ZposFee2" >
+    <ring  value="1" />
+  </posXYZ>
+  <posXYZ  volume="StandardFootAssembly"    X_Y_Z=" 0.;0.;-FEET_ZposFee2" >
+    <ring  value="-1" />
+  </posXYZ>
+  <posXYZ  volume="StandardFootAssembly"    X_Y_Z=" 0.;0.; FEET_ZposFee3" >
+    <ring  value="2" />
+  </posXYZ>
+  <posXYZ  volume="StandardFootAssembly"    X_Y_Z=" 0.;0.;-FEET_ZposFee3" >
+    <ring  value="-2" />
+  </posXYZ>
+  <posXYZ  volume="StandardFootAssembly"    X_Y_Z=" 0.;0.; FEET_ZposFee4" >
+    <ring  value="3" />
+  </posXYZ>
+  <posXYZ  volume="StandardFootAssembly"    X_Y_Z=" 0.;0.;-FEET_ZposFee4" >
+    <ring  value="-3" />
+  </posXYZ>
+  <posXYZ  volume="ExtremityFootAssemblyPlus"   X_Y_Z=" 0.;0.; FEET_ZposFee5"  rot="0.;  0.;0." >
+    <ring  value="4" />
+  </posXYZ>
+  <posXYZ  volume="ExtremityFootAssemblyMinus"  X_Y_Z=" 0.;0.;-FEET_ZposFee5"  rot="0.;180.;0." >
+    <ring  value="-4" />
+  </posXYZ>
+  <posXYZ  volume="Girder12"    X_Y_Z=" FEET_GirdXpos_XposGirder;FEET_Gir12ypo;FEET_Gir12zpo"   rot="0.;-90.;0." >
+    <sector  value="7" />
+    <ring    value="1" />
+  </posXYZ>
+  <posXYZ  volume="Girder12"    X_Y_Z="-FEET_GirdXpos_XposGirder;FEET_Gir12ypo;FEET_Gir12zpo"   rot="0.;-90.;0." >
+    <sector  value="6" />
+    <ring    value="1" />
+  </posXYZ>
+  <posXYZ  volume="Girder12"    X_Y_Z=" FEET_GirdXpos_XposGirder;FEET_Gir12ypo;-FEET_Gir12zpo"  rot="0.;-90.;0." >
+    <sector  value="7" />
+    <ring    value="-1" />
+  </posXYZ>
+  <posXYZ  volume="Girder12"    X_Y_Z="-FEET_GirdXpos_XposGirder;FEET_Gir12ypo;-FEET_Gir12zpo"  rot="0.;-90.;0." >
+    <sector  value="6" />
+    <ring    value="-1" />
+  </posXYZ>
+  <posXYZ  volume="Girder23"    X_Y_Z=" FEET_GirdXpos_XposGirder;FEET_Gir12ypo;FEET_Gir23zpo"   rot="0.;-90.;0." >
+    <sector  value="7" />
+    <ring    value="2" />
+  </posXYZ>
+  <posXYZ  volume="Girder23"    X_Y_Z="-FEET_GirdXpos_XposGirder;FEET_Gir12ypo;FEET_Gir23zpo"   rot="0.;-90.;0." >
+    <sector  value="6" />
+    <ring    value="2" />
+  </posXYZ>
+  <posXYZ  volume="Girder23"    X_Y_Z=" FEET_GirdXpos_XposGirder;FEET_Gir12ypo;-FEET_Gir23zpo"  rot="0.;-90.;0." >
+    <sector  value="7" />
+    <ring    value="-2" />
+  </posXYZ>
+  <posXYZ  volume="Girder23"    X_Y_Z="-FEET_GirdXpos_XposGirder;FEET_Gir12ypo;-FEET_Gir23zpo"  rot="0.;-90.;0." >
+    <sector  value="6" />
+    <ring    value="-2" />
+  </posXYZ>
+  <posXYZ  volume="Girder34"    X_Y_Z=" FEET_GirdXpos_XposGirder;FEET_Gir12ypo;FEET_Gir34zpo"   rot="0.;-90.;0." >
+    <sector  value="7" />
+    <ring    value="3" />
+  </posXYZ>
+  <posXYZ  volume="Girder34"    X_Y_Z="-FEET_GirdXpos_XposGirder;FEET_Gir12ypo;FEET_Gir34zpo"   rot="0.;-90.;0." >
+    <sector  value="6" />
+    <ring    value="3" />
+  </posXYZ>
+  <posXYZ  volume="Girder34"    X_Y_Z=" FEET_GirdXpos_XposGirder;FEET_Gir12ypo;-FEET_Gir34zpo"  rot="0.;-90.;0." >
+    <sector  value="7" />
+    <ring    value="-3" />
+  </posXYZ>
+  <posXYZ  volume="Girder34"    X_Y_Z="-FEET_GirdXpos_XposGirder;FEET_Gir12ypo;-FEET_Gir34zpo"  rot="0.;-90.;0." >
+    <sector  value="6" />
+    <ring    value="-3" />
+  </posXYZ>
+  <posXYZ  volume="GirderExtremity"    X_Y_Z="  FEET_GirdExtXpos_XposGirderEx; -FEET_GirdExtZpos_ZposGirderEx;  FEET_GirExzpo"  rot="0.;180.;0." >
+  </posXYZ>
+  <posXYZ  volume="GirderExtremity"    X_Y_Z=" -FEET_GirdExtXpos_XposGirderEx; -FEET_GirdExtZpos_ZposGirderEx;  FEET_GirExzpo"  rot="0.;180.;0." >
+  </posXYZ>
+  <posXYZ  volume="GirderExtremity"    X_Y_Z="  FEET_GirdExtXpos_XposGirderEx; -FEET_GirdExtZpos_ZposGirderEx; -FEET_GirExzpo"  rot="0.;0.;0." >
+  </posXYZ>
+  <posXYZ  volume="GirderExtremity"    X_Y_Z=" -FEET_GirdExtXpos_XposGirderEx; -FEET_GirdExtZpos_ZposGirderEx; -FEET_GirExzpo"  rot="0.;0.;0." >
+  </posXYZ>
+</composition>
+
+</section>
+
+<section name       = "ATLAS Rail"
+         version    = "7.0"
+         date       = "10 December 2003"
+         author     = "Jochen Meyer, Laurent Chevalier, Daniel Pomarede"
+         top_volume = "RailAssembly">
+
+
+
+<!--  Basic parameters  -->
+
+<!--  Rails Main section  -->
+<!-- BEGIN confirmation with atlhbrb_0001-vAH (if no other comment) -->
+<var  name="RAIL_CeRzleng_CentralRail_Zlength"     value="6850." />
+<var  name="RAIL_ExRzleng_ExtremityRail_Zlength"   value="9784." />
+<var  name="RAIL_CeRwidt1_CentralRail_Width1"      value=" 450." />
+<var  name="RAIL_CeRwidt2_CentralRail_Width2"      value=" 120." />
+<var  name="RAIL_CeRwid3o_CentralRail_Width3outer" value=" 380." />
+<var  name="RAIL_CeRwid3i_CentralRail_Width3inner" value=" 350." />
+
+<var  name="RAIL_CeRthic1_CentralRail_Thick1"      value=" 100." />
+<var  name="RAIL_CeRthic2_CentralRail_Thick2"      value=" 200." />
+
+<!--  Reinforcement Plates  -->
+
+<var  name="RAIL_CeRRPSzl_CentralRailReinforcementPlate_std_Zlength"       value=" 50." />
+<var  name="RAIL_CeRRPEzl_CentralRailReinforcementPlate_extremity_Zlength" value=" 40." />
+<var  name="RAIL_CeRRPIx1_CentralRailReinforcementPlateInner_Xdist1"       value="260." />
+<var  name="RAIL_CeRRPOx1_CentralRailReinforcementPlateOuter_Xdist1"       value="290." />
+
+<!-- CentralRailReinforcementPlate_std_Zpos -->
+<array  name="RAIL_CeRRPSzp" values="490.;1090.;1687.5;2285.;2885.;3400.;3915.;4515.;5112.5;5710.;6310. " />
+<!-- ExtremityRailReinforcementPlate_std_Zpos -->
+<array  name="RAIL_ExRRPSzp" values="540;1085;1627.5;2170;2715;3230;3745;4315;4895;5465;5980;6495;7017.5;7540;8062.5;8720;9375" />
+
+<!--  Global position  -->
+<var  name="RAIL_Xpos"       value=" 2985." />  <!-- confirmed atcnh___0005-vAG -->
+<var  name="RAIL_Ypos_above" value="-4390." />  <!-- confirmed atcnh___0005-vAG -->
+
+<!--  Derived variables  -->
+
+<var  name="RAIL_totHeight"  value="RAIL_CeRthic2_CentralRail_Thick2+2.*RAIL_CeRthic1_CentralRail_Thick1" />
+
+
+
+<!--  Feet Modelization  -->
+
+<!--  Rail Main section  -->
+
+<var  name="RAIL_CeRy"        value="0." />
+
+<var  name="RAIL_CeRxb"       value="RAIL_CeRwidt1_CentralRail_Width1/2." />
+<var  name="RAIL_CeRyb"       value="0." />
+
+<var  name="RAIL_CeRxc"       value="RAIL_CeRxb" />
+<var  name="RAIL_CeRyc"       value="RAIL_CeRthic1_CentralRail_Thick1" />
+
+<var  name="RAIL_CeRxd"       value="RAIL_CeRwidt2_CentralRail_Width2/2." />
+<var  name="RAIL_CeRyd"       value="RAIL_CeRyc" />
+
+<var  name="RAIL_CeRxe"       value="RAIL_CeRxd" />
+<var  name="RAIL_CeRye"       value="RAIL_CeRyd+RAIL_CeRthic2_CentralRail_Thick2" />
+
+<var  name="RAIL_CeRxf"       value="RAIL_CeRwid3i_CentralRail_Width3inner" />
+<var  name="RAIL_CeRyf"       value="RAIL_CeRye" />
+
+<var  name="RAIL_CeRxg"       value="RAIL_CeRxf" />
+<var  name="RAIL_CeRyg"       value="RAIL_CeRyf+RAIL_CeRthic1_CentralRail_Thick1" />
+
+<var  name="RAIL_CeRxh"       value="-RAIL_CeRwid3o_CentralRail_Width3outer" />
+<var  name="RAIL_CeRyh"       value="RAIL_CeRyg" />
+
+<var  name="RAIL_CeRxi"       value="RAIL_CeRxh" />
+<var  name="RAIL_CeRyi"       value="RAIL_CeRye" />
+
+<var  name="RAIL_CeRxj"       value="-RAIL_CeRwidt2_CentralRail_Width2/2." />
+<var  name="RAIL_CeRyj"       value="RAIL_CeRyi" />
+
+<var  name="RAIL_CeRxk"       value="RAIL_CeRxj" />
+<var  name="RAIL_CeRyk"       value="RAIL_CeRyc" />
+
+<var  name="RAIL_CeRxl"       value="-RAIL_CeRwidt1_CentralRail_Width1/2." />
+<var  name="RAIL_CeRyl"       value="RAIL_CeRyk" />
+
+<var  name="RAIL_CeRxm"       value="RAIL_CeRxl" />
+<var  name="RAIL_CeRym"       value="RAIL_CeRy " />
+
+<!-- gvxy     name="CentralRail"            material="Iron"   dZ="RAIL_CeRzleng_CentralRail_Zlength"  >
+  <gvxy_point X_Y="-RAIL_CeRxb;RAIL_CeRyb"/>
+  <gvxy_point X_Y="-RAIL_CeRxc;RAIL_CeRyc"/>
+  <gvxy_point X_Y="-RAIL_CeRxd;RAIL_CeRyd"/>
+  <gvxy_point X_Y="-RAIL_CeRxe;RAIL_CeRye"/>
+  <gvxy_point X_Y="-RAIL_CeRxf;RAIL_CeRyf"/>
+  <gvxy_point X_Y="-RAIL_CeRxg;RAIL_CeRyg"/>
+  <gvxy_point X_Y="-RAIL_CeRxh;RAIL_CeRyh"/>
+  <gvxy_point X_Y="-RAIL_CeRxi;RAIL_CeRyi"/>
+  <gvxy_point X_Y="-RAIL_CeRxj;RAIL_CeRyj"/>
+  <gvxy_point X_Y="-RAIL_CeRxk;RAIL_CeRyk"/>
+  <gvxy_point X_Y="-RAIL_CeRxl;RAIL_CeRyl"/>
+  <gvxy_point X_Y="-RAIL_CeRxm;RAIL_CeRym"/>
+</gvxy -->
+
+<var name="Rail_temp1" value="RAIL_CeRyg/2.-(RAIL_CeRyg-RAIL_CeRyf)/2." />
+<var name="Rail_temp2" value="-RAIL_CeRyg/2.+(RAIL_CeRyc-RAIL_CeRyb)/2." />
+<var name="Rail_temp3" value="(RAIL_CeRxg+RAIL_CeRxh)/2." />
+
+<box name="ExtremityRail_a" material="Iron" X_Y_Z="RAIL_CeRxd*2.;RAIL_CeRyg;RAIL_ExRzleng_ExtremityRail_Zlength - GENV_Eps" />
+<box name="ExtremityRail_b" material="Iron" X_Y_Z="(RAIL_CeRxg-RAIL_CeRxh);(RAIL_CeRyg-RAIL_CeRyf);RAIL_ExRzleng_ExtremityRail_Zlength" />
+<box name="ExtremityRail_c" material="Iron" X_Y_Z="-2.*RAIL_CeRxl;(RAIL_CeRyc-RAIL_CeRyb);RAIL_ExRzleng_ExtremityRail_Zlength" />
+<union name="ExtremityRail_d" >
+  <posXYZ  volume="ExtremityRail_a" />
+  <posXYZ  volume="ExtremityRail_b" X_Y_Z="-Rail_temp3;Rail_temp1;0"/>
+  <posXYZ  volume="ExtremityRail_c" X_Y_Z="0.;Rail_temp2;0"/>
+</union>
+
+<composition name="ExtremityRail_plus_new" >
+  <posXYZ  volume="ExtremityRail_d" X_Y_Z="0.;RAIL_CeRyg/2.;0." />
+</composition>
+
+<box name="CentralRail_a" material="Iron" X_Y_Z="RAIL_CeRxd*2.;RAIL_CeRyg;RAIL_CeRzleng_CentralRail_Zlength - GENV_Eps" />
+<box name="CentralRail_b" material="Iron" X_Y_Z="(RAIL_CeRxg-RAIL_CeRxh);(RAIL_CeRyg-RAIL_CeRyf);RAIL_CeRzleng_CentralRail_Zlength" />
+<box name="CentralRail_c" material="Iron" X_Y_Z="-2.*RAIL_CeRxl;(RAIL_CeRyc-RAIL_CeRyb);RAIL_CeRzleng_CentralRail_Zlength" />
+<union name="CentralRail_d" >
+  <posXYZ  volume="CentralRail_a" />
+  <posXYZ  volume="CentralRail_b" X_Y_Z="-Rail_temp3;Rail_temp1;0"/>
+  <posXYZ  volume="CentralRail_c" X_Y_Z="0.;Rail_temp2;0"/>
+</union>
+
+<composition name="CentralRail_new" >
+  <posXYZ  volume="CentralRail_d" X_Y_Z="0.;RAIL_CeRyg/2.;0." />
+</composition>
+
+<!--gvxy     name="ExtremityRail_plus"            material="Iron"   dZ="RAIL_ExRzleng_ExtremityRail_Zlength"  >
+  <gvxy_point  X_Y=" -RAIL_CeRxb  ;  RAIL_CeRyb "   />
+  <gvxy_point  X_Y=" -RAIL_CeRxc  ;  RAIL_CeRyc "   />
+  <gvxy_point  X_Y=" -RAIL_CeRxd  ;  RAIL_CeRyd "   />
+  <gvxy_point  X_Y=" -RAIL_CeRxe  ;  RAIL_CeRye "   />
+  <gvxy_point  X_Y=" -RAIL_CeRxf  ;  RAIL_CeRyf "   />
+  <gvxy_point  X_Y=" -RAIL_CeRxg  ;  RAIL_CeRyg "   />
+  <gvxy_point  X_Y=" -RAIL_CeRxh  ;  RAIL_CeRyh "   />
+  <gvxy_point  X_Y=" -RAIL_CeRxi  ;  RAIL_CeRyi "   />
+  <gvxy_point  X_Y=" -RAIL_CeRxj  ;  RAIL_CeRyj "   />
+  <gvxy_point  X_Y=" -RAIL_CeRxk  ;  RAIL_CeRyk "   />
+  <gvxy_point  X_Y=" -RAIL_CeRxl  ;  RAIL_CeRyl "   />
+  <gvxy_point  X_Y=" -RAIL_CeRxm  ;  RAIL_CeRym "   />
+</gvxy -->
+
+<composition  name="ExtremityRail_minus" >
+  <posXYZ  volume="ExtremityRail_plus_new"  rot=" 0.; 180.; 0. " />
+</composition>
+
+
+
+<!--  Reinforcement Plates  -->
+
+<var  name="RAIL_CeRRPIy2_CentralRailReinforcementPlateInner_Ydist2"   value="(RAIL_CeRRPIx1_CentralRailReinforcementPlateInner_Xdist1 + RAIL_CeRwidt2_CentralRail_Width2/2. - RAIL_CeRxc) * GENV_Ta55" />
+
+<var  name="RAIL_CeRRPIxa"       value="RAIL_CeRxd" />
+<var  name="RAIL_CeRRPIya"       value="RAIL_CeRyd" />
+<var  name="RAIL_CeRRPIxb"       value="RAIL_CeRxc" />
+<var  name="RAIL_CeRRPIyb"       value="RAIL_CeRyc" />
+<var  name="RAIL_CeRRPIxc"       value="RAIL_CeRxd + RAIL_CeRRPIx1_CentralRailReinforcementPlateInner_Xdist1" />
+<var  name="RAIL_CeRRPIyc"       value="RAIL_CeRyc + RAIL_CeRRPIy2_CentralRailReinforcementPlateInner_Ydist2" />
+<var  name="RAIL_CeRRPIxd"       value="RAIL_CeRRPIxc" />
+<var  name="RAIL_CeRRPIyd"       value="RAIL_CeRye" />
+<var  name="RAIL_CeRRPIxe"       value="RAIL_CeRRPIxa" />
+<var  name="RAIL_CeRRPIye"       value="RAIL_CeRRPIyd" />
+
+<gvxy     name="CentralRailReinforcementPlateInner_extremity"  material="Iron"   dZ="RAIL_CeRRPEzl_CentralRailReinforcementPlate_extremity_Zlength"  >
+  <gvxy_point  X_Y=" -RAIL_CeRRPIxa  ;  RAIL_CeRRPIya "   />
+  <gvxy_point  X_Y=" -RAIL_CeRRPIxb  ;  RAIL_CeRRPIyb "   />
+  <gvxy_point  X_Y=" -RAIL_CeRRPIxc  ;  RAIL_CeRRPIyc "   />
+  <gvxy_point  X_Y=" -RAIL_CeRRPIxd  ;  RAIL_CeRRPIyd "   />
+  <gvxy_point  X_Y=" -RAIL_CeRRPIxe  ;  RAIL_CeRRPIye "   />
+</gvxy>
+
+
+<var  name="RAIL_CeRRPOxa"       value="-RAIL_CeRxd" />
+<var  name="RAIL_CeRRPOya"       value=" RAIL_CeRyd" />
+<var  name="RAIL_CeRRPOxb"       value="-RAIL_CeRxc" />
+<var  name="RAIL_CeRRPOyb"       value=" RAIL_CeRyc" />
+<var  name="RAIL_CeRRPOxc"       value="-RAIL_CeRxd - RAIL_CeRRPOx1_CentralRailReinforcementPlateOuter_Xdist1" />
+<var  name="RAIL_CeRRPOyc"       value=" RAIL_CeRyc + RAIL_CeRRPIy2_CentralRailReinforcementPlateInner_Ydist2" />
+<var  name="RAIL_CeRRPOxd"       value=" RAIL_CeRRPOxc" />
+<var  name="RAIL_CeRRPOyd"       value=" RAIL_CeRye" />
+<var  name="RAIL_CeRRPOxe"       value=" RAIL_CeRRPOxa" />
+<var  name="RAIL_CeRRPOye"       value=" RAIL_CeRRPOyd" />
+
+<gvxy     name="CentralRailReinforcementPlateOuter_extremity"         material="Iron"   dZ="RAIL_CeRRPEzl_CentralRailReinforcementPlate_extremity_Zlength"  >
+  <gvxy_point  X_Y="  RAIL_CeRRPOxa  ;  RAIL_CeRRPOya "   />
+  <gvxy_point  X_Y="  RAIL_CeRRPOxb  ;  RAIL_CeRRPOyb "   />
+  <gvxy_point  X_Y="  RAIL_CeRRPOxc  ;  RAIL_CeRRPOyc "   />
+  <gvxy_point  X_Y="  RAIL_CeRRPOxd  ;  RAIL_CeRRPOyd "   />
+  <gvxy_point  X_Y="  RAIL_CeRRPOxe  ;  RAIL_CeRRPOye "   />
+</gvxy>
+
+<var  name="RAIL_CeRRPe1z_CentralRailReinforcementPlate_extremity1_Zpos"      value="-RAIL_CeRzleng_CentralRail_Zlength/2. + RAIL_CeRRPEzl_CentralRailReinforcementPlate_extremity_Zlength/2. " />
+<var  name="RAIL_CeRRPe2z_CentralRailReinforcementPlate_extremity2_Zpos"      value="-RAIL_CeRRPe1z_CentralRailReinforcementPlate_extremity1_Zpos" />
+<var  name="RAIL_ExRRPe1z_ExtremityRailReinforcementPlate_extremity1_Zpos"    value="-RAIL_ExRzleng_ExtremityRail_Zlength/2. + RAIL_CeRRPEzl_CentralRailReinforcementPlate_extremity_Zlength/2. " />
+<var  name="RAIL_ExRRPe2z_ExtremityRailReinforcementPlate_extremity2_Zpos"    value="-RAIL_ExRRPe1z_ExtremityRailReinforcementPlate_extremity1_Zpos" />
+
+<gvxy     name="CentralRailReinforcementPlateInner_std"         material="Iron"   dZ="RAIL_CeRRPSzl_CentralRailReinforcementPlate_std_Zlength"  >
+  <gvxy_point  X_Y=" -RAIL_CeRRPIxa  ;  RAIL_CeRRPIya "   />
+  <gvxy_point  X_Y=" -RAIL_CeRRPIxb  ;  RAIL_CeRRPIyb "   />
+  <gvxy_point  X_Y=" -RAIL_CeRRPIxc  ;  RAIL_CeRRPIyc "   />
+  <gvxy_point  X_Y=" -RAIL_CeRRPIxd  ;  RAIL_CeRRPIyd "   />
+  <gvxy_point  X_Y=" -RAIL_CeRRPIxe  ;  RAIL_CeRRPIye "   />
+</gvxy>
+<gvxy     name="CentralRailReinforcementPlateOuter_std"         material="Iron"   dZ="RAIL_CeRRPSzl_CentralRailReinforcementPlate_std_Zlength"  >
+  <gvxy_point  X_Y="  RAIL_CeRRPOxa  ;  RAIL_CeRRPOya "   />
+  <gvxy_point  X_Y="  RAIL_CeRRPOxb  ;  RAIL_CeRRPOyb "   />
+  <gvxy_point  X_Y="  RAIL_CeRRPOxc  ;  RAIL_CeRRPOyc "   />
+  <gvxy_point  X_Y="  RAIL_CeRRPOxd  ;  RAIL_CeRRPOyd "   />
+  <gvxy_point  X_Y="  RAIL_CeRRPOxe  ;  RAIL_CeRRPOye "   />
+</gvxy>
+
+
+
+<composition  name="CentralRailReinforcementPlate_extremity_minus" >
+  <posXYZ  volume="CentralRailReinforcementPlateInner_extremity"   rot="0.;180.;0." />
+  <posXYZ  volume="CentralRailReinforcementPlateOuter_extremity"   />
+</composition>
+<composition  name="CentralRailReinforcementPlate_extremity_plus" >
+  <posXYZ  volume="CentralRailReinforcementPlateInner_extremity"   />
+  <posXYZ  volume="CentralRailReinforcementPlateOuter_extremity"   rot="0.;180.;0." />
+</composition>
+
+<composition  name="CentralRailReinforcementPlate_std_minus" >
+  <posXYZ  volume="CentralRailReinforcementPlateInner_std"         rot="0.;180.;0." />
+  <posXYZ  volume="CentralRailReinforcementPlateOuter_std"         />
+</composition>
+<composition  name="CentralRailReinforcementPlate_std_plus" >
+  <posXYZ  volume="CentralRailReinforcementPlateInner_std"         />
+  <posXYZ  volume="CentralRailReinforcementPlateOuter_std"         rot="0.;180.;0." />
+</composition>
+
+
+
+<!--  Feet Assembly  -->
+
+<composition  name="CentralRailAssembly" >
+  <!-- posXYZ  volume="CentralRail" rot="0.;180.;0." /-->
+  <posXYZ  volume="CentralRail_new" rot="0.;180.;0." />
+  <posXYZ  volume="CentralRailReinforcementPlate_extremity_minus"    X_Y_Z=" 0.;0.; RAIL_CeRRPe1z_CentralRailReinforcementPlate_extremity1_Zpos"  />
+  <posXYZ  volume="CentralRailReinforcementPlate_extremity_minus"    X_Y_Z=" 0.;0.; RAIL_CeRRPe2z_CentralRailReinforcementPlate_extremity2_Zpos"  />
+  <foreach  index="I"  begin="0"  loops="11" >
+    <posXYZ  volume="CentralRailReinforcementPlate_std_minus"        X_Y_Z=" 0.;0.;-RAIL_CeRzleng_CentralRail_Zlength/2. + RAIL_CeRRPSzl_CentralRailReinforcementPlate_std_Zlength/2. + RAIL_CeRRPSzp[I]"  />
+  </foreach>
+</composition>
+
+
+<var  name="RAIL_Ypos"        value="RAIL_Ypos_above - RAIL_totHeight" /> <!-- ATTENTION THIS VARIABLE IS ALSO USED IN SHIELDING AND HFTRUCK SECTIONS -->
+<var  name="RAIL_ExtrZpos"    value="RAIL_CeRzleng_CentralRail_Zlength/2.+RAIL_ExRzleng_ExtremityRail_Zlength/2." />
+
+
+<composition  name="ExtremityRailAssembly" >
+  <posXYZ  volume="ExtremityRail_minus"                            X_Y_Z=" -RAIL_Xpos;0.; 0."  />
+  <posXYZ  volume="CentralRailReinforcementPlate_extremity_minus"  X_Y_Z="-RAIL_Xpos;0.; RAIL_ExRRPe1z_ExtremityRailReinforcementPlate_extremity1_Zpos"  />
+  <posXYZ  volume="CentralRailReinforcementPlate_extremity_minus"  X_Y_Z="-RAIL_Xpos;0.; RAIL_ExRRPe2z_ExtremityRailReinforcementPlate_extremity2_Zpos"  />
+  
+  <foreach  index="I"  begin="0"  loops="17" >
+    <posXYZ  volume="CentralRailReinforcementPlate_std_minus"      X_Y_Z=" -RAIL_Xpos;0.;-RAIL_ExRzleng_ExtremityRail_Zlength/2. - RAIL_CeRRPSzl_CentralRailReinforcementPlate_std_Zlength/2. + RAIL_ExRRPSzp[I]"  />
+  </foreach>
+
+  <!--posXYZ  volume="ExtremityRail_plus"                             X_Y_Z=" RAIL_Xpos;0.; 0."  /-->
+  <posXYZ  volume="ExtremityRail_plus_new"                             X_Y_Z=" RAIL_Xpos;0.; 0."  />
+  <posXYZ  volume="CentralRailReinforcementPlate_extremity_plus"   X_Y_Z=" RAIL_Xpos;0.; RAIL_ExRRPe1z_ExtremityRailReinforcementPlate_extremity1_Zpos"  />
+  <posXYZ  volume="CentralRailReinforcementPlate_extremity_plus"   X_Y_Z=" RAIL_Xpos;0.; RAIL_ExRRPe2z_ExtremityRailReinforcementPlate_extremity2_Zpos"  />
+  
+  <foreach  index="I"  begin="0"  loops="17" >
+    <posXYZ  volume="CentralRailReinforcementPlate_std_plus"       X_Y_Z=" RAIL_Xpos;0.;-RAIL_ExRzleng_ExtremityRail_Zlength/2. - RAIL_CeRRPSzl_CentralRailReinforcementPlate_std_Zlength/2. + RAIL_ExRRPSzp[I]"  />
+  </foreach>
+</composition>
+
+<composition  name="RailAssembly" >
+  <posXYZ  volume="CentralRailAssembly"    X_Y_Z="-RAIL_Xpos;RAIL_Ypos; 0."      rot="0.;  0.;0." />
+  <posXYZ  volume="CentralRailAssembly"    X_Y_Z=" RAIL_Xpos;RAIL_Ypos; 0."      rot="0.;180.;0." />
+  <posXYZ  volume="ExtremityRailAssembly"  X_Y_Z=" 0.;RAIL_Ypos; RAIL_ExtrZpos"  rot="0.;  0.;0." />
+  <posXYZ  volume="ExtremityRailAssembly"  X_Y_Z=" 0.;RAIL_Ypos;-RAIL_ExtrZpos"  rot="0.;180.;0." /> 
+</composition>
+
+</section>
+
+
+
+  
+
+<section name       = "ATLAS Shielding"
+         version    = "8.0"
+         date       = "10 January 2011"
+         author     = "Daniel Pomarede, reviewed by Jochen"
+         top_volume = "useless">
+
+
+<!--     name       =  A Frame Welded Assembly       section name       = "Shielding" -->
+
+<!--  **************************************************************
+      **************************************************************
+      ***                                                       ****
+      ***                     ATLAS Shields                     ****
+      ***                                                       ****
+      **************************************************************  
+      **************************************************************  -->
+
+
+
+<!--  JF Shielding  -->
+
+<!--  "A" Frame Welded Assembly  -->
+
+
+
+<!--  Useful variables  -->
+
+<var  name="JFSH_XYZref"                                      value="   0." />  <!-- NO CONFIRMATION NEEDED -->
+<var  name="JFSH_rot180"                                      value=" 180." />  <!-- NO CONFIRMATION NEEDED -->
+
+<!--  Primary variables  -->
+
+<!-- BEGIN confirmation with atljf___0087-vAC (if no other comment) -->
+<var  name="JFSH_AFBBleng_AFrame_BottomBar_length"            value="5498." />
+<var  name="JFSH_AFBheigh_AFrame_Bar_height"                  value=" 250." />
+<var  name="JFSH_AFrwidth_AFrame_width"                       value=" 250." />
+<var  name="JFSH_AFBthic1_AFrame_Bar_thickness1"              value="   9." />
+<var  name="JFSH_AFBthic2_AFrame_Bar_thickness2"              value="  14." />
+<var  name="JFSH_AFLangle_AFrame_Leg_angle"                   value="  42." />
+
+<var  name="JFSH_AFSlengt_AFrame_Spacer_length"               value=" 140." />
+<var  name="JFSH_AFSheigh_AFrame_Spacer_height"               value=" 290." />
+
+<var  name="JFSH_AFWEBBx1_AFrame_Web_element_BottomBar_X1"    value="   0." />  <!-- NO CONFIRMATION NEEDED -->
+<var  name="JFSH_AFWEBBx2_AFrame_Web_element_BottomBar_X2"    value="1306." />  <!-- confirmed atljf___0028-vAD -->
+<var  name="JFSH_AFWEleng_AFrame_Web_element_length"          value="  30." />
+<var  name="JFSH_AFWEBLx1_AFrame_Web_element_Leg_DX1"         value="1090.+8." />    <!-- temporarily sum to avoid overlap, second Flange needs to be introduced, confirmed atljf___0028-vAD-->
+<var  name="JFSH_AFWEBLx2_AFrame_Web_element_Leg_DX2"         value=" 965." />  <!-- confirmed atljf___0028-vAD -->
+
+<var  name="JFSH_AFFthick_AFrame_Flange_thickness"            value="  15." />
+<var  name="JFSH_AFFlengt_AFrame_Flange_length"               value=" 935." />
+
+<var  name="JFSH_AFTPleng_AFrame_TopPlate_length"             value=" 300." />
+<var  name="JFSH_AFTPheig_AFrame_TopPlate_height"             value="  50." />
+
+<var  name="JFSH_AFWheigh_AFrame_Wedge_height"                value=" 149.2"/>
+<var  name="JFSH_AFWexten_AFrame_Wedge_extension"             value=" 200." />
+<var  name="JFSH_AFWthick_AFrame_Wedge_thickness"             value="  50." />
+<var  name="JFSH_AFWzoffs_AFrame_Wedge_zoffset"               value="  20." />  <!-- confirmed atljf___0028-vAD -->
+
+<var  name="JFSH_AFFEElen_AFrame_Feet_length"                 value="  830."/>
+<var  name="JFSH_AFFEEthi_AFrame_Feet_thickness"              value="   50."/>
+<var  name="JFSH_AFFEEsle_AFrame_Feet_shortlength"            value="  100. - 20."/> <!-- reduced value to avoid clash with rail -->
+<var  name="JFSH_AFFEEhei_AFrame_Feet_height"                 value="  225."/>
+<var  name="JFSH_AFFEEext_AFrame_Feet_X_extension"            value=" 6830."/>  <!-- confirmed atljf___0028-vAD -->
+
+<var  name="JFSH_AFtothei_AFrame_Total_height"                value=" 2740."/>  <!-- confirmed atljf___0028-vAD -->
+<var  name="JFSH_AFECTcle_Clearance_ECT_AFrame"               value="   25."/>  <!-- confirmed atljf___0010-vAC -->
+
+<var  name="JFSH_ECTnomiz_ECT_Nominal_zpos"                   value="12914."/>  <!-- confirmed atljf___0010-vAC -->
+<!-- END confirmation with atljf___0087-vAC -->
+
+<!--  Derived variables  TEMPORAY already declare in RAIL Section laurent 05-05-10 ********* -->
+<var  name="RAIL_CeRthic1_CentralRail_Thick1JFSH" value="  100." />  <!-- confirmed atlhbrb_0001-vAH -->
+<var  name="RAIL_CeRthic2_CentralRail_Thick2JFSH" value="  200." />  <!-- confirmed atlhbrb_0001-vAH -->
+<var  name="RAIL_Ypos_aboveJFSH"                  value="-4390." />  <!-- confirmed atcnh___0005-vAG -->
+<var  name="RAIL_totHeightJFSH"                   value="RAIL_CeRthic2_CentralRail_Thick2JFSH+2.*RAIL_CeRthic1_CentralRail_Thick1JFSH" />
+<var  name="RAIL_YposJFSH"                        value="RAIL_Ypos_aboveJFSH - RAIL_totHeightJFSH" />
+<var  name="JFSH_AFyposit_AFrame_Ypos"            value="RAIL_YposJFSH+RAIL_totHeightJFSH+JFSH_AFFEEthi_AFrame_Feet_thickness" />
+<var  name="JFSH_AFzposit_AFrame_Zpos"            value="JFSH_XYZref + JFSH_AFECTcle_Clearance_ECT_AFrame +JFSH_AFrwidth_AFrame_width/2." />
+<var  name="JFSH_AFASposy_AFrame_Assembly_Y"          value=" JFSH_AFyposit_AFrame_Ypos" />
+<var  name="JFSH_AFASposz_AFrame_Assembly_Z"          value=" JFSH_AFzposit_AFrame_Zpos" />
+<!--  Derived variables  TEMPORAY already declare in RAIL Section ********* -->
+
+
+<!--  "A" Frame Welded Assembly Bottom Bar Lower Horizontal Plate -->
+<var  name="JFSH_AFBLHPxa"      value="JFSH_AFBBleng_AFrame_BottomBar_length/2." />
+<var  name="JFSH_AFBLHPya"      value="JFSH_XYZref" />
+<var  name="JFSH_AFBLHPyb"      value="JFSH_AFBLHPya+JFSH_AFBthic2_AFrame_Bar_thickness2" />
+
+<var  name="JFSH_AFBLHPxb"      value="JFSH_AFBLHPxa - (JFSH_AFBLHPyb-JFSH_AFBLHPya)/tan(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+
+<trd name="JFSH_AFrame_BottomBar_LowerHorizontalPlate"  material="ShieldSteel"  Xmp_Ymp_Z="2.*JFSH_AFBLHPxb; 2.*JFSH_AFBLHPxa; JFSH_AFrwidth_AFrame_width; JFSH_AFrwidth_AFrame_width; JFSH_AFBLHPyb-JFSH_AFBLHPya" />
+
+
+<!--  "A" Frame Welded Assembly Bottom Bar Vertical Plate -->
+
+<var  name="JFSH_AFBBVPxa"      value="JFSH_AFBLHPxb" />
+<var  name="JFSH_AFBBVPya"      value="JFSH_AFBthic2_AFrame_Bar_thickness2" />
+<var  name="JFSH_AFBBVPyb"      value="JFSH_AFBheigh_AFrame_Bar_height - JFSH_AFBthic2_AFrame_Bar_thickness2" />
+
+<var  name="JFSH_AFBBVPxb"      value="JFSH_AFBBVPxa - (JFSH_AFBBVPyb-JFSH_AFBBVPya)/tan(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+
+<trd name="JFSH_AFrame_BottomBar_VerticalPlate"  material="ShieldSteel"  Xmp_Ymp_Z="2.*JFSH_AFBBVPxb; 2.*JFSH_AFBBVPxa; JFSH_AFBthic1_AFrame_Bar_thickness1; JFSH_AFBthic1_AFrame_Bar_thickness1; JFSH_AFBBVPyb-JFSH_AFBBVPya" />
+
+<!--  "A" Frame Welded Assembly Bottom Bar Upper Horizontal Plate -->
+
+<var  name="JFSH_AFBUHPxa"      value="JFSH_AFBBVPxb" />
+<var  name="JFSH_AFBUHPya"      value="JFSH_AFBBVPyb" />
+<var  name="JFSH_AFBUHPyb"      value="JFSH_AFBUHPya + JFSH_AFBthic2_AFrame_Bar_thickness2" />
+
+<var  name="JFSH_AFBUHPxb"      value="JFSH_AFBUHPxa - (JFSH_AFBUHPyb-JFSH_AFBUHPya)/tan(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+
+<trd name="JFSH_AFrame_BottomBar_UpperHorizontalPlate"  material="ShieldSteel"  Xmp_Ymp_Z="2.*JFSH_AFBUHPxb; 2.*JFSH_AFBUHPxa; JFSH_AFrwidth_AFrame_width; JFSH_AFrwidth_AFrame_width; JFSH_AFBUHPyb-JFSH_AFBUHPya" />
+
+
+<!--  "A" Frame Welded Assembly Leg Lower Horizontal Plate -->
+
+<var  name="JFSH_AFLLHPxa"      value="JFSH_AFBLHPxa" />
+<var  name="JFSH_AFLLHPya"      value="JFSH_AFBLHPya" />
+
+<var  name="JFSH_AFLLHPxb"      value="JFSH_AFSlengt_AFrame_Spacer_length/2." />
+<var  name="JFSH_AFLLHPyb"      value="(JFSH_AFLLHPxa-JFSH_AFLLHPxb)*tan(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)    " />
+
+<var  name="JFSH_AFLLHPxc"      value="JFSH_AFLLHPxb" />
+<var  name="JFSH_AFLLHPyc"      value="JFSH_AFLLHPyb + JFSH_AFBthic2_AFrame_Bar_thickness2/cos(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+
+<var  name="JFSH_AFLLHPxd"      value="JFSH_AFLLHPxa + JFSH_AFBthic2_AFrame_Bar_thickness2/sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFLLHPyd"      value="JFSH_AFBLHPya" />
+
+<box  name="JFSH_AFrame_Leg_LowerHorizontalPlate_basic" material="ShieldSteel"   X_Y_Z="JFSH_AFBthic2_AFrame_Bar_thickness2; JFSH_AFLLHPyc/sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180);    JFSH_AFrwidth_AFrame_width"  />
+<box  name="JFSH_AFrame_Leg_LowerHorizontalPlate_cut1"  material="ShieldSteel"   X_Y_Z="2.*JFSH_AFLLHPxb; JFSH_AFrwidth_AFrame_width; 2.*JFSH_AFrwidth_AFrame_width"  />
+<box  name="JFSH_AFrame_Leg_LowerHorizontalPlate_cut2"  material="ShieldSteel"   X_Y_Z="JFSH_AFrwidth_AFrame_width; JFSH_AFrwidth_AFrame_width; 2.*JFSH_AFrwidth_AFrame_width"  />
+
+<subtraction name="JFSH_AFrame_Leg_LowerHorizontalPlate">
+  <posXYZ  volume="JFSH_AFrame_Leg_LowerHorizontalPlate_basic"  X_Y_Z="(JFSH_AFLLHPxd+JFSH_AFLLHPxb)/2.-JFSH_AFBthic2_AFrame_Bar_thickness2*sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)/2.; JFSH_AFLLHPyc/2.-JFSH_AFBthic2_AFrame_Bar_thickness2*cos(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)/2.; 0. " rot=" 0.; 0.; 90-JFSH_AFLangle_AFrame_Leg_angle"/>
+  <posXYZ  volume="JFSH_AFrame_Leg_LowerHorizontalPlate_cut1"   X_Y_Z="0.; JFSH_AFLLHPyc; 0."/>
+  <posXYZ  volume="JFSH_AFrame_Leg_LowerHorizontalPlate_cut2"   X_Y_Z="JFSH_AFLLHPxd; -JFSH_AFrwidth_AFrame_width/2.; 0."/>
+</subtraction>
+
+<!--  "A" Frame Welded Assembly Leg Vertical Plate -->
+
+<var  name="JFSH_AFLVPxa"      value="JFSH_AFLLHPxd" />
+<var  name="JFSH_AFLVPya"      value="JFSH_AFLLHPyd" />
+
+<var  name="JFSH_AFLVPxb"      value="JFSH_AFLLHPxc" />
+<var  name="JFSH_AFLVPyb"      value="JFSH_AFLLHPyc" />
+
+<var  name="JFSH_AFLVPxc"      value="JFSH_AFLVPxb" />
+<var  name="JFSH_AFLVPyc"      value="JFSH_AFtothei_AFrame_Total_height - JFSH_AFTPheig_AFrame_TopPlate_height" />
+
+<var  name="JFSH_AFLVPxe"      value="JFSH_AFLVPxa + (JFSH_AFBheigh_AFrame_Bar_height-2*JFSH_AFBthic2_AFrame_Bar_thickness2)/sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFLVPye"      value="JFSH_AFBLHPya" />
+
+<var  name="JFSH_AFLVPyd"      value="JFSH_AFLVPyc" />
+<var  name="JFSH_AFLVPxd"      value="JFSH_AFLVPxe - (JFSH_AFLVPyd)/tan(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+
+<box  name="JFSH_AFrame_Leg_VerticalPlate_basic" material="ShieldSteel"   X_Y_Z="-(JFSH_AFLVPxa-JFSH_AFLVPxe)*sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180); (JFSH_AFLVPxe-JFSH_AFLVPxb)/cos(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180); JFSH_AFBthic1_AFrame_Bar_thickness1" />
+<box  name="JFSH_AFrame_Leg_VerticalPlate_cut1"  material="ShieldSteel"   X_Y_Z="JFSH_AFLVPxa; JFSH_AFLVPxa; JFSH_AFLVPxa"/>
+<box  name="JFSH_AFrame_Leg_VerticalPlate_cut2"  material="ShieldSteel"   X_Y_Z="JFSH_AFLVPxa; JFSH_AFLVPxa; JFSH_AFLVPxa"/>
+<box  name="JFSH_AFrame_Leg_VerticalPlate_cut3"  material="ShieldSteel"   X_Y_Z="JFSH_AFLVPxa; JFSH_AFLVPxa; JFSH_AFLVPxa"/>
+
+<subtraction     name="JFSH_AFrame_Leg_VerticalPlate">
+  <posXYZ  volume="JFSH_AFrame_Leg_VerticalPlate_basic"  X_Y_Z="(JFSH_AFLVPxe+JFSH_AFLVPxc)/2.+(JFSH_AFLVPxa-JFSH_AFLVPxe)*(1-cos(2.*JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180))/4.; (JFSH_AFLVPxe-JFSH_AFLVPxb)*tan(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)/2.+(JFSH_AFLVPxa-JFSH_AFLVPxe)*sin(2.*JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)/4.; 0" rot=" 0.; 0.; 90-JFSH_AFLangle_AFrame_Leg_angle"/>
+  <posXYZ  volume="JFSH_AFrame_Leg_VerticalPlate_cut1"   X_Y_Z="JFSH_AFLVPxa; -JFSH_AFLVPxa/2.; 0"/>
+  <posXYZ  volume="JFSH_AFrame_Leg_VerticalPlate_cut2"   X_Y_Z="-JFSH_AFLVPxa/2.+JFSH_AFLVPxb; JFSH_AFLVPyb; 0"/>
+  <posXYZ  volume="JFSH_AFrame_Leg_VerticalPlate_cut3"   X_Y_Z="0.; JFSH_AFLVPyc+JFSH_AFLVPxa/2.; 0"/>
+</subtraction>
+
+<!--  "A" Frame Welded Assembly Leg Upper Horizontal Plate -->
+
+<var  name="JFSH_AFLUHPxa"      value="JFSH_AFLVPxe" />
+<var  name="JFSH_AFLUHPya"      value="JFSH_AFLVPye" />
+
+<var  name="JFSH_AFLUHPxb"      value="JFSH_AFLVPxd" />
+<var  name="JFSH_AFLUHPyb"      value="JFSH_AFLVPyd" />
+
+<var  name="JFSH_AFLUHPxc"      value="JFSH_AFLUHPxb + JFSH_AFBthic2_AFrame_Bar_thickness2/sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFLUHPyc"      value="JFSH_AFLVPyc" />
+
+<var  name="JFSH_AFLUHPxd"      value="JFSH_AFLUHPxa + JFSH_AFBthic2_AFrame_Bar_thickness2/sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFLUHPyd"      value="JFSH_AFLUHPya" />
+
+<var  name="JFSH_AFrame_Leg_Angle" value="atan(JFSH_AFLUHPyb / (JFSH_AFLUHPxb - JFSH_AFLUHPxa))"/>
+<box  name="JFSH_AFrame_Leg_UpperHorizontalPlate_basic" material="ShieldSteel" X_Y_Z="(JFSH_AFLUHPxa - JFSH_AFLUHPxb)/cos(JFSH_AFrame_Leg_Angle) + cos(JFSH_AFrame_Leg_Angle)*(JFSH_AFLUHPxd - JFSH_AFLUHPxa); -sin(JFSH_AFrame_Leg_Angle)*(JFSH_AFLUHPxd - JFSH_AFLUHPxa);JFSH_AFrwidth_AFrame_width"/> 
+<box  name="JFSH_AFrame_Leg_UpperHorizontalPlate_cut" material="ShieldSteel" X_Y_Z="(JFSH_AFLUHPxd-JFSH_AFLUHPxa)*4.;(JFSH_AFLUHPxd-JFSH_AFLUHPxa)*4.;JFSH_AFrwidth_AFrame_width*2."/>
+
+<subtraction name="JFSH_AFrame_Leg_UpperHorizontalPlate">
+  <posXYZ  volume="JFSH_AFrame_Leg_UpperHorizontalPlate_basic"    X_Y_Z="JFSH_AFLUHPxb + (JFSH_AFLUHPxd - JFSH_AFLUHPxb)/2.; JFSH_AFLUHPyb/2.; 0."           rot="0.;0.;JFSH_AFrame_Leg_Angle/GENV_Pi*180." />
+  <posXYZ  volume="JFSH_AFrame_Leg_UpperHorizontalPlate_cut"      X_Y_Z="JFSH_AFLUHPxd; -2.*(JFSH_AFLUHPxd - JFSH_AFLUHPxa); 0."/>
+  <posXYZ  volume="JFSH_AFrame_Leg_UpperHorizontalPlate_cut"      X_Y_Z="JFSH_AFLUHPxc; JFSH_AFLUHPyc + 2.*(JFSH_AFLUHPxd - JFSH_AFLUHPxa); 0."/>
+</subtraction>
+
+<!--  "A" Frame Welded Assembly Top Plate -->
+
+<var  name="JFSH_AFTPLAxa"      value="JFSH_AFTPleng_AFrame_TopPlate_length/2." />
+<var  name="JFSH_AFTPLAya"      value="JFSH_AFtothei_AFrame_Total_height-JFSH_AFTPheig_AFrame_TopPlate_height" />
+
+<var  name="JFSH_AFTPLAxb"      value="JFSH_AFTPLAxa " />
+<var  name="JFSH_AFTPLAyb"      value="JFSH_AFtothei_AFrame_Total_height" />
+
+<trd name="JFSH_AFrame_TopPlate"  material="ShieldSteel"  Xmp_Ymp_Z="2.*JFSH_AFTPLAxb; 2.*JFSH_AFTPLAxa; JFSH_AFrwidth_AFrame_width; JFSH_AFrwidth_AFrame_width; JFSH_AFTPLAyb-JFSH_AFTPLAya" />
+
+<!--  "A" Frame Welded Assembly Spacer -->
+
+<var  name="JFSH_AFSPACxa"      value="JFSH_AFSlengt_AFrame_Spacer_length/2." />
+<var  name="JFSH_AFSPACya"      value="JFSH_AFTPLAya-JFSH_AFSheigh_AFrame_Spacer_height" />
+
+<var  name="JFSH_AFSPACxb"      value="JFSH_AFSPACxa " />
+<var  name="JFSH_AFSPACyb"      value="JFSH_AFTPLAya" />
+
+<trd name="JFSH_AFrame_Spacer"  material="ShieldSteel"  Xmp_Ymp_Z="2.*JFSH_AFSPACxb; 2.*JFSH_AFSPACxa; JFSH_AFrwidth_AFrame_width; JFSH_AFrwidth_AFrame_width; JFSH_AFSPACyb-JFSH_AFSPACya" />
+
+
+<!--  "A" Frame Welded Assembly Web -->
+
+<var  name="JFSH_AFWEBwid_AFrame_Web_element_width"      value="(JFSH_AFrwidth_AFrame_width-JFSH_AFBthic1_AFrame_Bar_thickness1)/2." />
+<var  name="JFSH_AFWEBhei_AFrame_Web_element_height"     value="JFSH_AFBheigh_AFrame_Bar_height-2.*JFSH_AFBthic2_AFrame_Bar_thickness2" />
+
+<var  name="JFSH_AFWEBBBy_AFrame_Web_element_BottomBar_Y"     value="JFSH_AFBthic2_AFrame_Bar_thickness2+JFSH_AFWEBhei_AFrame_Web_element_height/2" />
+<var  name="JFSH_AFWEBzpo_AFrame_Web_element_Z"     value="JFSH_AFBthic1_AFrame_Bar_thickness1/2. + JFSH_AFWEBwid_AFrame_Web_element_width/2." />
+
+<box  name="JFSH_AFrame_Web_element"     material="ShieldSteel"  X_Y_Z="JFSH_AFWEleng_AFrame_Web_element_length;JFSH_AFWEBhei_AFrame_Web_element_height;JFSH_AFWEBwid_AFrame_Web_element_width"    />
+
+<composition  name="JFSH_AFrame_Web_composite_element" >
+  <posXYZ  volume="JFSH_AFrame_Web_element"    X_Y_Z="0.;0.; JFSH_AFWEBzpo_AFrame_Web_element_Z"           rot="0.;0.;0." />
+  <posXYZ  volume="JFSH_AFrame_Web_element"    X_Y_Z="0.;0.;-JFSH_AFWEBzpo_AFrame_Web_element_Z"           rot="0.;0.;0." />
+</composition>
+
+<!--  "A" Frame Welded Assembly Web element leg -->
+
+<var  name="JFSH_AFWELxi1"    value="JFSH_AFLUHPxd - JFSH_AFWEBLx1_AFrame_Web_element_Leg_DX1*cos(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFWELyi1"    value="JFSH_AFWEBLx1_AFrame_Web_element_Leg_DX1*sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFWELxp1"    value="JFSH_AFWELxi1-(JFSH_AFWEBhei_AFrame_Web_element_height/2 + JFSH_AFBthic2_AFrame_Bar_thickness2)*sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFWELyp1"    value="JFSH_AFWELyi1-(JFSH_AFWEBhei_AFrame_Web_element_height/2 + JFSH_AFBthic2_AFrame_Bar_thickness2)*cos(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+
+<var  name="JFSH_AFWELxi2"    value="JFSH_AFWELxi1 - JFSH_AFWEBLx2_AFrame_Web_element_Leg_DX2*cos(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFWELyi2"    value="JFSH_AFWELyi1 + JFSH_AFWEBLx2_AFrame_Web_element_Leg_DX2*sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFWELxp2"    value="JFSH_AFWELxi2-(JFSH_AFWEBhei_AFrame_Web_element_height/2 + JFSH_AFBthic2_AFrame_Bar_thickness2)*sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFWELyp2"    value="JFSH_AFWELyi2-(JFSH_AFWEBhei_AFrame_Web_element_height/2 + JFSH_AFBthic2_AFrame_Bar_thickness2)*cos(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+
+<var  name="JFSH_AFWELxi3"    value="JFSH_AFWELxi2 - JFSH_AFWEBLx2_AFrame_Web_element_Leg_DX2*cos(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFWELyi3"    value="JFSH_AFWELyi2 + JFSH_AFWEBLx2_AFrame_Web_element_Leg_DX2*sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFWELxp3"    value="JFSH_AFWELxi3-(JFSH_AFWEBhei_AFrame_Web_element_height/2 + JFSH_AFBthic2_AFrame_Bar_thickness2)*sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFWELyp3"    value="JFSH_AFWELyi3-(JFSH_AFWEBhei_AFrame_Web_element_height/2 + JFSH_AFBthic2_AFrame_Bar_thickness2)*cos(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+
+<!--  "A" Frame Welded Assembly Flanges -->
+
+<var  name="JFSH_AFFwidth_AFrame_Flange_width"      value="JFSH_AFWEBwid_AFrame_Web_element_width" />
+<var  name="JFSH_AFFzposi_AFrame_Flange_Z"          value="JFSH_AFWEBzpo_AFrame_Web_element_Z" />
+
+<box  name="JFSH_AFrame_Flange"     material="ShieldSteel"  X_Y_Z="JFSH_AFFlengt_AFrame_Flange_length;JFSH_AFFthick_AFrame_Flange_thickness;JFSH_AFFwidth_AFrame_Flange_width"    />
+<composition  name="JFSH_AFrame_Flange_composite" >
+  <posXYZ  volume="JFSH_AFrame_Flange"    X_Y_Z="0.;0.; JFSH_AFFzposi_AFrame_Flange_Z"           rot="0.;0.;0." />
+  <posXYZ  volume="JFSH_AFrame_Flange"    X_Y_Z="0.;0.;-JFSH_AFFzposi_AFrame_Flange_Z"           rot="0.;0.;0." />
+</composition>
+
+<var  name="JFSH_AFFposx1_AFrame_Flange_X1"    value="JFSH_AFWELxp1+(JFSH_AFFlengt_AFrame_Flange_length+JFSH_AFWEleng_AFrame_Web_element_length)*cos(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)/2" />
+<var  name="JFSH_AFFposy1_AFrame_Flange_Y1"    value="JFSH_AFWELyp1-(JFSH_AFFlengt_AFrame_Flange_length+JFSH_AFWEleng_AFrame_Web_element_length)*sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)/2" />
+
+<var  name="JFSH_AFFposx2_AFrame_Flange_X2"    value="JFSH_AFWELxp2+(JFSH_AFFlengt_AFrame_Flange_length+JFSH_AFWEleng_AFrame_Web_element_length)*cos(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)/2" />
+<var  name="JFSH_AFFposy2_AFrame_Flange_Y2"    value="JFSH_AFWELyp2-(JFSH_AFFlengt_AFrame_Flange_length+JFSH_AFWEleng_AFrame_Web_element_length)*sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)/2" />
+
+<!--  "A" Frame Welded Assembly Wedges -->
+
+<var  name="JFSH_AFWposxa_AFrame_Wedge_XA"    value="JFSH_XYZref" />
+<var  name="JFSH_AFWposya_AFrame_Wedge_YA"    value="JFSH_XYZref" />
+<var  name="JFSH_AFWposxb_AFrame_Wedge_XB"    value="JFSH_AFWheigh_AFrame_Wedge_height*tan(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFWposyb_AFrame_Wedge_YB"    value="JFSH_AFWheigh_AFrame_Wedge_height" />
+<var  name="JFSH_AFWposxc_AFrame_Wedge_XC"    value="JFSH_AFWposxb_AFrame_Wedge_XB+JFSH_AFWexten_AFrame_Wedge_extension*cos(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFWposyc_AFrame_Wedge_YC"    value="JFSH_AFWposyb_AFrame_Wedge_YB-JFSH_AFWexten_AFrame_Wedge_extension*sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFWposxd_AFrame_Wedge_XD"    value="JFSH_AFWposxc_AFrame_Wedge_XC- JFSH_AFWposyc_AFrame_Wedge_YC * tan(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFWposyd_AFrame_Wedge_YD"    value="JFSH_AFWposya_AFrame_Wedge_YA" />
+
+<var  name="JFSH_AFWposx0_AFrame_Wedge_X0"    value="JFSH_AFWposxb_AFrame_Wedge_XB + JFSH_AFWposyb_AFrame_Wedge_YB / tan(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180)" />
+<var  name="JFSH_AFWposy0_AFrame_Wedge_Y0"    value="JFSH_AFWposxa_AFrame_Wedge_XA" />
+
+<box  name="JFSH_AFrame_Wedge_basic"  material="ShieldSteel"   X_Y_Z="JFSH_AFWposxc_AFrame_Wedge_XC; JFSH_AFWposyb_AFrame_Wedge_YB; JFSH_AFWthick_AFrame_Wedge_thickness"/>
+<box  name="JFSH_AFrame_Wedge_cut1"   material="ShieldSteel"   X_Y_Z="2.*(JFSH_AFWposxc_AFrame_Wedge_XC-JFSH_AFWposxb_AFrame_Wedge_XB)*sin(JFSH_AFLangle_AFrame_Leg_angle*GENV_PiS180); JFSH_AFWposxc_AFrame_Wedge_XC; 2.*JFSH_AFWthick_AFrame_Wedge_thickness"/>
+<box  name="JFSH_AFrame_Wedge_cut2"   material="ShieldSteel"   X_Y_Z="JFSH_AFWposxc_AFrame_Wedge_XC; 2.*JFSH_AFWposxb_AFrame_Wedge_XB*cos(atan(JFSH_AFWposxb_AFrame_Wedge_XB/JFSH_AFWposyb_AFrame_Wedge_YB)); 2.*JFSH_AFWthick_AFrame_Wedge_thickness"/>
+<box  name="JFSH_AFrame_Wedge_cut3"   material="ShieldSteel"   X_Y_Z="JFSH_AFWposxc_AFrame_Wedge_XC; 2.*(JFSH_AFWposxc_AFrame_Wedge_XC-JFSH_AFWposxd_AFrame_Wedge_XD)*cos(atan((JFSH_AFWposxc_AFrame_Wedge_XC-JFSH_AFWposxd_AFrame_Wedge_XD)/JFSH_AFWposyc_AFrame_Wedge_YC)); 2.*JFSH_AFWthick_AFrame_Wedge_thickness"/>
+
+<subtraction  name="JFSH_AFrame_Wedge">
+  <posXYZ  volume="JFSH_AFrame_Wedge_basic" X_Y_Z="JFSH_AFWposxc_AFrame_Wedge_XC/2.; JFSH_AFWposyb_AFrame_Wedge_YB/2.; 0." />
+  <posXYZ  volume="JFSH_AFrame_Wedge_cut1"  X_Y_Z="JFSH_AFWposxc_AFrame_Wedge_XC; JFSH_AFWposyb_AFrame_Wedge_YB; 0." rot=" 0.; 0.; 90-JFSH_AFLangle_AFrame_Leg_angle" />
+  <posXYZ  volume="JFSH_AFrame_Wedge_cut2"  X_Y_Z="0.; JFSH_AFWposyb_AFrame_Wedge_YB; 0." rot=" 0.; 0.; 90-atan(JFSH_AFWposxb_AFrame_Wedge_XB/JFSH_AFWposyb_AFrame_Wedge_YB)/GENV_PiS180" />
+  <posXYZ  volume="JFSH_AFrame_Wedge_cut3"  X_Y_Z="JFSH_AFWposxc_AFrame_Wedge_XC; 0.; 0." rot=" 0.; 0.; 90-atan((JFSH_AFWposxc_AFrame_Wedge_XC-JFSH_AFWposxd_AFrame_Wedge_XD)/JFSH_AFWposyc_AFrame_Wedge_YC)/GENV_PiS180" />
+</subtraction>
+
+<var  name="JFSH_AFWposix_AFrame_Wedge_X"    value=" JFSH_AFBUHPxb - JFSH_AFWposx0_AFrame_Wedge_X0" />
+<var  name="JFSH_AFWposiy_AFrame_Wedge_Y"    value=" JFSH_AFBUHPyb - JFSH_AFWposy0_AFrame_Wedge_Y0" />
+<var  name="JFSH_AFWposiz_AFrame_Wedge_Z"    value=" JFSH_AFrwidth_AFrame_width/2. - JFSH_AFWzoffs_AFrame_Wedge_zoffset - JFSH_AFWthick_AFrame_Wedge_thickness/2." />
+
+<!--  "A" Frame Welded Assembly Feet -->
+
+<var  name="JFSH_AFFeetxa_AFrame_Feet_XA"    value="JFSH_AFFEElen_AFrame_Feet_length/2." />
+<var  name="JFSH_AFFeetya_AFrame_Feet_YA"    value="JFSH_XYZref" />
+<var  name="JFSH_AFFeetxb_AFrame_Feet_XB"    value="JFSH_AFFeetxa_AFrame_Feet_XA" />
+<var  name="JFSH_AFFeetyb_AFrame_Feet_YB"    value="JFSH_AFFeetya_AFrame_Feet_YA - JFSH_AFFEEhei_AFrame_Feet_height" />
+<var  name="JFSH_AFFeetxc_AFrame_Feet_XC"    value="JFSH_AFFeetxb_AFrame_Feet_XB - JFSH_AFFEEsle_AFrame_Feet_shortlength" />
+<var  name="JFSH_AFFeetyc_AFrame_Feet_YC"    value="JFSH_AFFeetyb_AFrame_Feet_YB" />
+<var  name="JFSH_AFFeetxd_AFrame_Feet_XD"    value="JFSH_AFFeetxc_AFrame_Feet_XC" />
+<var  name="JFSH_AFFeetyd_AFrame_Feet_YD"    value="JFSH_AFFeetyb_AFrame_Feet_YB+JFSH_AFFEEthi_AFrame_Feet_thickness" />
+<var  name="JFSH_AFFeetxe_AFrame_Feet_XE"    value="JFSH_AFFeetxc_AFrame_Feet_XC+JFSH_AFFEEsle_AFrame_Feet_shortlength-JFSH_AFFEEthi_AFrame_Feet_thickness" />
+<var  name="JFSH_AFFeetye_AFrame_Feet_YE"    value="JFSH_AFFeetyd_AFrame_Feet_YD" />
+<var  name="JFSH_AFFeetxf_AFrame_Feet_XF"    value="JFSH_AFFeetxe_AFrame_Feet_XE" />
+<var  name="JFSH_AFFeetyf_AFrame_Feet_YF"    value="JFSH_AFFeetya_AFrame_Feet_YA-JFSH_AFFEEthi_AFrame_Feet_thickness" />
+
+<var  name="JFSH_AFFeetpx_AFrame_Feet_X"     value=" JFSH_AFFEEext_AFrame_Feet_X_extension/2. - JFSH_AFFEElen_AFrame_Feet_length/2." />
+
+<box name="JFSH_AFrame_Feet_basic"  material="ShieldSteel" X_Y_Z="2.*JFSH_AFFeetxa_AFrame_Feet_XA; -JFSH_AFFeetyb_AFrame_Feet_YB; JFSH_AFrwidth_AFrame_width" />
+<box name="JFSH_AFrame_Feet_cut1"   material="ShieldSteel" X_Y_Z="2.*JFSH_AFFeetxe_AFrame_Feet_XE; JFSH_AFFeetyf_AFrame_Feet_YF-JFSH_AFFeetye_AFrame_Feet_YE; 2.*JFSH_AFrwidth_AFrame_width" />
+<box name="JFSH_AFrame_Feet_cut2"   material="ShieldSteel" X_Y_Z="2.*JFSH_AFFeetxc_AFrame_Feet_XC; JFSH_AFFeetyf_AFrame_Feet_YF-JFSH_AFFeetye_AFrame_Feet_YE; 2.*JFSH_AFrwidth_AFrame_width" />
+
+<subtraction  name="JFSH_AFrame_Feet">
+  <posXYZ  volume="JFSH_AFrame_Feet_basic"  X_Y_Z="0.; JFSH_AFFeetyb_AFrame_Feet_YB/2.; 0."/>
+  <posXYZ  volume="JFSH_AFrame_Feet_cut1"   X_Y_Z="0.; (JFSH_AFFeetye_AFrame_Feet_YE-JFSH_AFFeetyf_AFrame_Feet_YF)/2.+JFSH_AFFeetyf_AFrame_Feet_YF; 0."/>
+  <posXYZ  volume="JFSH_AFrame_Feet_cut2"   X_Y_Z="0.; JFSH_AFFeetyc_AFrame_Feet_YC; 0."/>
+</subtraction>
+
+<!-- +++++++++++++++++++++++++++++++++++++++++++++++++ -->
+<!--  "A" Frame Welded Assembly Composition of volumes -->
+<!-- +++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<composition  name="JFSH_AFrame_BottomBar" >
+  <posXYZ  volume="JFSH_AFrame_BottomBar_LowerHorizontalPlate"    X_Y_Z="0.;(JFSH_AFBLHPyb-JFSH_AFBLHPya)/2.; 0."                                                          rot="90.;0.;0."/>
+  <posXYZ  volume="JFSH_AFrame_BottomBar_VerticalPlate"           X_Y_Z="0.;(JFSH_AFBBVPyb-JFSH_AFBBVPya)/2.+JFSH_AFBLHPyb-JFSH_AFBLHPya; 0."                              rot="90.;0.;0."/>
+  <posXYZ  volume="JFSH_AFrame_BottomBar_UpperHorizontalPlate"    X_Y_Z="0.;(JFSH_AFBUHPyb-JFSH_AFBUHPya)/2.+JFSH_AFBBVPyb-JFSH_AFBBVPya+JFSH_AFBLHPyb-JFSH_AFBLHPya; 0."  rot="90.;0.;0."/>
+  <posXYZ  volume="JFSH_AFrame_Web_composite_element"    X_Y_Z=" JFSH_AFWEBBx1_AFrame_Web_element_BottomBar_X1;JFSH_AFWEBBBy_AFrame_Web_element_BottomBar_Y;0. "           rot="0.;0.;0." />
+  <posXYZ  volume="JFSH_AFrame_Web_composite_element"    X_Y_Z=" JFSH_AFWEBBx2_AFrame_Web_element_BottomBar_X2;JFSH_AFWEBBBy_AFrame_Web_element_BottomBar_Y;0. "           rot="0.;0.;0." />
+  <posXYZ  volume="JFSH_AFrame_Web_composite_element"    X_Y_Z="-JFSH_AFWEBBx2_AFrame_Web_element_BottomBar_X2;JFSH_AFWEBBBy_AFrame_Web_element_BottomBar_Y;0. "           rot="0.;0.;0." />
+</composition>
+
+<composition  name="JFSH_AFrame_Leg" >
+  <posXYZ  volume="JFSH_AFrame_Leg_LowerHorizontalPlate"    X_Y_Z="0.;0.; 0."           rot="0.;0.;0." />
+  <posXYZ  volume="JFSH_AFrame_Leg_VerticalPlate"           X_Y_Z="0.;0.; 0."           rot="0.;0.;0." />
+  <posXYZ  volume="JFSH_AFrame_Leg_UpperHorizontalPlate"    X_Y_Z="0.;0.; 0."           rot="0.;0.;0." />
+  <posXYZ  volume="JFSH_AFrame_Web_composite_element"    X_Y_Z=" JFSH_AFWELxp1;JFSH_AFWELyp1;0. "           rot="0.;0.;-JFSH_AFLangle_AFrame_Leg_angle" />
+  <posXYZ  volume="JFSH_AFrame_Web_composite_element"    X_Y_Z=" JFSH_AFWELxp2;JFSH_AFWELyp2;0. "           rot="0.;0.;-JFSH_AFLangle_AFrame_Leg_angle" />
+  <posXYZ  volume="JFSH_AFrame_Web_composite_element"    X_Y_Z=" JFSH_AFWELxp3;JFSH_AFWELyp3;0. "           rot="0.;0.;-JFSH_AFLangle_AFrame_Leg_angle" />
+  <posXYZ  volume="JFSH_AFrame_Flange_composite"         X_Y_Z=" JFSH_AFFposx1_AFrame_Flange_X1;JFSH_AFFposy1_AFrame_Flange_Y1;0. "           rot="0.;0.;-JFSH_AFLangle_AFrame_Leg_angle" />
+  <posXYZ  volume="JFSH_AFrame_Flange_composite"         X_Y_Z=" JFSH_AFFposx2_AFrame_Flange_X2;JFSH_AFFposy2_AFrame_Flange_Y2;0. "           rot="0.;0.;-JFSH_AFLangle_AFrame_Leg_angle" />
+</composition>
+
+<composition  name="JFSH_AFrame_Assembly" >
+  <posXYZ  volume="JFSH_AFrame_TopPlate"    X_Y_Z="0.;JFSH_AFTPLAyb-(JFSH_AFTPLAyb-JFSH_AFTPLAya)/2.; 0."           rot="90.;0.;0." />
+  <posXYZ  volume="JFSH_AFrame_Spacer"      X_Y_Z="0.;JFSH_AFSPACyb-(JFSH_AFSPACyb-JFSH_AFSPACya)/2.; 0."           rot="90.;0.;0." />
+  <posXYZ  volume="JFSH_AFrame_BottomBar"   X_Y_Z="0.;0.; 0."           rot="0.;0.;0." />
+  <posXYZ  volume="JFSH_AFrame_Leg"         X_Y_Z="0.;0.; 0."           rot="0.;0.;0." />
+  <posXYZ  volume="JFSH_AFrame_Leg"         X_Y_Z="0.;0.; 0."           rot="0.;JFSH_rot180;0." />
+  <posXYZ  volume="JFSH_AFrame_Wedge"       X_Y_Z=" JFSH_AFWposix_AFrame_Wedge_X;JFSH_AFWposiy_AFrame_Wedge_Y; JFSH_AFWposiz_AFrame_Wedge_Z"           rot="0.;0.;0." />
+  <posXYZ  volume="JFSH_AFrame_Wedge"       X_Y_Z=" JFSH_AFWposix_AFrame_Wedge_X;JFSH_AFWposiy_AFrame_Wedge_Y;-JFSH_AFWposiz_AFrame_Wedge_Z"           rot="0.;0.;0." />
+  <posXYZ  volume="JFSH_AFrame_Wedge"       X_Y_Z="-JFSH_AFWposix_AFrame_Wedge_X;JFSH_AFWposiy_AFrame_Wedge_Y; JFSH_AFWposiz_AFrame_Wedge_Z"           rot="0.;JFSH_rot180;0." />
+  <posXYZ  volume="JFSH_AFrame_Wedge"       X_Y_Z="-JFSH_AFWposix_AFrame_Wedge_X;JFSH_AFWposiy_AFrame_Wedge_Y;-JFSH_AFWposiz_AFrame_Wedge_Z"           rot="0.;JFSH_rot180;0." />
+  <posXYZ  volume="JFSH_AFrame_Feet"        X_Y_Z=" JFSH_AFFeetpx_AFrame_Feet_X;0.;0."           rot="0.;0.;0." />
+  <posXYZ  volume="JFSH_AFrame_Feet"        X_Y_Z="-JFSH_AFFeetpx_AFrame_Feet_X;0.;0."           rot="0.;0.;0." />
+</composition>
+
+<!--     name       =  JF Shielding                  section name       = "Shielding" -->
+<!--  Simple modelization -->
+
+
+<!--  Primary variables  -->
+
+<!-- BEGIN confirmation with atljf___0010-vAC (if no other comment) -->
+<!--  Main Cylinder  -->
+<var  name="JFSH_JFCMClen_JFCMainCylinder_length"                  value=" 5041." />
+<var  name="JFSH_JFCMCir1_JFCMainCylinder_innerRadius1"            value="  282." />  <!-- NO CONFIRMATION POSSIBLE; changed by Sven.Menke@CERN.CH Jul 2020 from 304 to 282 according to http://atlas.web.cern.ch/Atlas/GROUPS/Shielding/shielding.htm -->
+<var  name="JFSH_JFCMCouR_JFCMainCylinder_outerRadius"             value=" 1550." />
+<var  name="JFSH_JFCMChSl_JFCMainCylinder_HoleSLope"               value="    1.1"/>  <!-- NO CONFIRMATION POSSIBLE -->
+<var  name="JFSH_JFCMChSl_JFCMainCylinder_HoleSLope_zoffset"       value=" 1630." />  <!-- this length plus plug is straight; introduced by Sven.Menke@CERN.CH Jul 2020 according to https://edms.cern.ch/ui/file/322317/AC/atljf___0003-vAC.pdf -->
+<var  name="JFSH_JFCMChSl_JFCMainCylinder_OctoZoverlap"            value="  520." />  <!-- this is the z-portion of JFC3 that is modeled here as Oct; introduced by Sven.Menke@CERN.CH Jul 2020 -->
+<var  name="JFSH_JFCMCzof_JFCMainCylinder_zoffset"                 value="   45." />
+<var  name="JFSH_JFCMCrso_JFCMainCylinder_rolledsteeloff"          value="   30." />  <!-- confirmed atljf___0031-vAE -->
+<var  name="JFSH_JFCMCpoo_JFCMainCylinder_polybaronoff"            value="   50." />  <!-- confirmed atljf___0030-vAD -->
+
+<!--  PLUG  -->
+<var  name="JFSH_PLUGleng_Plug_length"                             value="  250." />
+<var  name="JFSH_PLUGinRa_Plug_innerRadius"                        value="  280." />  <!-- confirmed atljf___0006-vAE -->
+<var  name="JFSH_PLUGouRa_Plug_outerRadius"                        value="  520." />  <!-- confirmed atljf___0006-vAE -->
+        
+<!--  JFS Octogon  -->
+<var  name="JFSH_JFSOCmRa_JFSOctogon_mainRadius"                   value=" 2100." />
+<var  name="JFSH_JFSOClen_JFSOctogon_length"                       value=" 3000." />
+<var  name="JFSH_JFSOCzof_JFSOctogon_zoffset"                      value=" 5086." />
+<var  name="JFSH_JFSOCrso_JFSOctogon_rolledsteeloff"               value="   30." />  <!-- confirmed atljf___0029-vAG -->
+<var  name="JFSH_JFSOCpoo_JFSOctogon_polybaronoff"                 value="   80." />  <!-- confirmed atljf___0024-vAD -->
+
+<!-- END confirmation with atljf___0010-vAC -->
+
+<!--  A-Frame to JFS Octogon connection -->
+<var  name="JFSH_AFOconle_AFrame_to_JFSOctogon_connection_length"  value="  230." />  <!-- NO CONFIRMATION POSSIBLE -->
+<var  name="JFSH_AFOconwi_AFrame_to_JFSOctogon_connection_width"   value="  200." />  <!-- NO CONFIRMATION POSSIBLE -->
+<var  name="JFSH_AFOconhe_AFrame_to_JFSOctogon_connection_height"  value="   67." />  <!-- NO CONFIRMATION POSSIBLE -->
+
+<!--  Derived variables  -->
+
+<var  name="JFSH_JFCMCir2_JFCMainCylinder_innerRadius2"   value="JFSH_JFCMCir1_JFCMainCylinder_innerRadius1+(JFSH_JFCMClen_JFCMainCylinder_length-JFSH_JFCMChSl_JFCMainCylinder_HoleSLope_zoffset)*tan(JFSH_JFCMChSl_JFCMainCylinder_HoleSLope*GENV_PiS180)"/> <!-- changed by SvenMenke@CERN.CH Jul 2020 -->
+<var  name="JFSH_JFCMCir3_JFCMainCylinder_innerRadius3"   value="JFSH_JFCMCir2_JFCMainCylinder_innerRadius2+JFSH_JFCMChSl_JFCMainCylinder_OctoZoverlap*tan(JFSH_JFCMChSl_JFCMainCylinder_HoleSLope*GENV_PiS180)"/> <!-- added by SvenMenke@CERN.CH Jul 2020 -->
+<var  name="JFSH_JFCMCzpo_JFCMainCylinder_Z"              value="JFSH_XYZref+JFSH_JFCMCzof_JFCMainCylinder_zoffset" />
+<var  name="JFSH_JFSOCzpo_JFSOctogon_Z"                   value="JFSH_XYZref+JFSH_JFSOCzof_JFSOctogon_zoffset+JFSH_JFSOClen_JFSOctogon_length/2." />
+<var  name="JFSH_PLUGzpos_Plug_posz"                      value="JFSH_XYZref-JFSH_PLUGleng_Plug_length"/>
+
+<!--  JFC Cylinder -->
+<pcon   name="JFSH_JFCMainCylinder_core"      material="ShieldIron"  >
+     <polyplane   Rio_Z="JFSH_PLUGinRa_Plug_innerRadius;JFSH_PLUGouRa_Plug_outerRadius;JFSH_PLUGzpos_Plug_posz"  />
+     <polyplane   Rio_Z="JFSH_PLUGinRa_Plug_innerRadius;JFSH_PLUGouRa_Plug_outerRadius;0."  />
+     <polyplane   Rio_Z="JFSH_JFCMCir1_JFCMainCylinder_innerRadius1;JFSH_JFCMCouR_JFCMainCylinder_outerRadius-JFSH_JFCMCrso_JFCMainCylinder_rolledsteeloff-JFSH_JFCMCpoo_JFCMainCylinder_polybaronoff-GENV_Eps;0."  />
+     <polyplane   Rio_Z="JFSH_JFCMCir1_JFCMainCylinder_innerRadius1;JFSH_JFCMCouR_JFCMainCylinder_outerRadius-JFSH_JFCMCrso_JFCMainCylinder_rolledsteeloff-JFSH_JFCMCpoo_JFCMainCylinder_polybaronoff-GENV_Eps;JFSH_JFCMChSl_JFCMainCylinder_HoleSLope_zoffset"  /> <!-- added plane by Sven.Menke@CERN.CH Jul 2020 since JFC2 is first straight and then with 1.1 degrees like JFC3 -->
+     <polyplane   Rio_Z="JFSH_JFCMCir2_JFCMainCylinder_innerRadius2;JFSH_JFCMCouR_JFCMainCylinder_outerRadius-JFSH_JFCMCrso_JFCMainCylinder_rolledsteeloff-JFSH_JFCMCpoo_JFCMainCylinder_polybaronoff-GENV_Eps;JFSH_JFCMClen_JFCMainCylinder_length"  />
+</pcon>
+
+<tubs name="JFSH_JFCMainCylinder_steelroll" material="ShieldSteel" Rio_Z=" JFSH_JFCMCouR_JFCMainCylinder_outerRadius-JFSH_JFCMCrso_JFCMainCylinder_rolledsteeloff+GENV_Eps; JFSH_JFCMCouR_JFCMainCylinder_outerRadius; JFSH_JFCMClen_JFCMainCylinder_length"/>
+<tubs name="JFSH_JFCMainCylinder_polyroll" material="PolyBoronH3B03" Rio_Z=" JFSH_JFCMCouR_JFCMainCylinder_outerRadius-JFSH_JFCMCrso_JFCMainCylinder_rolledsteeloff-JFSH_JFCMCpoo_JFCMainCylinder_polybaronoff; JFSH_JFCMCouR_JFCMainCylinder_outerRadius-JFSH_JFCMCrso_JFCMainCylinder_rolledsteeloff; JFSH_JFCMClen_JFCMainCylinder_length"/>
+
+<!--  A Frame to JFC Cylinder connection -->
+
+<box  name="JFSH_AFrame_to_JFCMainCylinder_connection"     material="ShieldSteel"  X_Y_Z="JFSH_AFOconwi_AFrame_to_JFSOctogon_connection_width;JFSH_AFOconhe_AFrame_to_JFSOctogon_connection_height;JFSH_AFOconle_AFrame_to_JFSOctogon_connection_length"    />
+
+<var  name="JFSH_AFMCcony_AFrame_to_JFCMainCylinder_connection_Y"   value="JFSH_AFASposy_AFrame_Assembly_Y  + JFSH_AFtothei_AFrame_Total_height + JFSH_AFOconhe_AFrame_to_JFSOctogon_connection_height/2." />
+<var  name="JFSH_AFMCconz_AFrame_to_JFCMainCylinder_connection_Z"   value="JFSH_AFOconle_AFrame_to_JFSOctogon_connection_length/2.+GENV_Eps" />
+<var  name="JFSH_AFconnexion2" value="15." />  <!-- former value 290. -->
+<union  name="JFSH_JFCMainCylinder_compsteel" >
+  <posXYZ  volume="JFSH_JFCMainCylinder_steelroll"              X_Y_Z=" 0. ; 0. ; JFSH_JFCMClen_JFCMainCylinder_length/2. "  rot="   0. ; 0. ; 0."  />
+  <posXYZ  volume="JFSH_AFrame_to_JFCMainCylinder_connection"   X_Y_Z=" 0. ; JFSH_AFMCcony_AFrame_to_JFCMainCylinder_connection_Y ; JFSH_AFMCconz_AFrame_to_JFCMainCylinder_connection_Z+JFSH_AFconnexion2"  rot="   0. ; 0. ; 0."  />
+</union>
+
+<composition  name="JFSH_JFCCylinder" >
+  <posXYZ  volume="JFSH_JFCMainCylinder_core"       X_Y_Z=" 0. ; 0. ; 0. "  rot="   0. ; 0. ; 0."  />
+  <posXYZ  volume="JFSH_JFCMainCylinder_compsteel"  X_Y_Z=" 0. ; 0. ; 0. "  rot="   0. ; 0. ; 0."  />
+  <posXYZ  volume="JFSH_JFCMainCylinder_polyroll"   X_Y_Z=" 0. ; 0. ; JFSH_JFCMClen_JFCMainCylinder_length/2. "  rot="   0. ; 0. ; 0."  />
+</composition>
+
+<!--  JFS Octogon -->
+
+<var  name="JFSH_JFSOctxa_JFSOctogon_XA"    value="JFSH_JFSOCmRa_JFSOctogon_mainRadius-JFSH_JFSOCrso_JFSOctogon_rolledsteeloff-JFSH_JFSOCpoo_JFSOctogon_polybaronoff-GENV_Eps" />
+<var  name="JFSH_JFSOctya_JFSOctogon_YA"    value="JFSH_JFSOctxa_JFSOctogon_XA*GENV_Ta225" />
+<var  name="JFSH_JFSOctxb_JFSOctogon_XB"    value="JFSH_JFSOctya_JFSOctogon_YA" />
+<var  name="JFSH_JFSOctyb_JFSOctogon_YB"    value="JFSH_JFSOctxa_JFSOctogon_XA" />
+
+<gvxysxy     name="JFSH_JFSOctogon_Coreedge"  material="ShieldIron"  dZ="JFSH_JFSOClen_JFSOctogon_length-JFSH_JFSOCrso_JFSOctogon_rolledsteeloff-JFSH_JFSOCpoo_JFSOctogon_polybaronoff-GENV_Eps"  >
+  <gvxy_point  X_Y="  JFSH_JFSOctxa_JFSOctogon_XA  ; JFSH_JFSOctya_JFSOctogon_YA  "   />
+  <gvxy_point  X_Y="  JFSH_JFSOctxb_JFSOctogon_XB  ; JFSH_JFSOctyb_JFSOctogon_YB  "   />
+</gvxysxy>
+
+<tubs name="JFSH_JFSOctogon_Coreround" material="ShieldIron" Rio_Z=" 0. ;JFSH_JFCMCouR_JFCMainCylinder_outerRadius-JFSH_JFCMCrso_JFCMainCylinder_rolledsteeloff-JFSH_JFCMCpoo_JFCMainCylinder_polybaronoff-GENV_Eps; JFSH_JFSOCrso_JFSOctogon_rolledsteeloff+JFSH_JFSOCpoo_JFSOctogon_polybaronoff+2.*GENV_Eps"/>
+
+<union name="JFSH_JFSOctogon_Core" > 
+  <posXYZ  volume="JFSH_JFSOctogon_Coreedge"  X_Y_Z=" 0.; 0.; (JFSH_JFSOCrso_JFSOctogon_rolledsteeloff+JFSH_JFSOCpoo_JFSOctogon_polybaronoff+GENV_Eps)/2. "/>
+  <posXYZ  volume="JFSH_JFSOctogon_Coreround" X_Y_Z=" 0.; 0.;-(JFSH_JFSOClen_JFSOctogon_length-JFSH_JFSOCrso_JFSOctogon_rolledsteeloff-JFSH_JFSOCpoo_JFSOctogon_polybaronoff)/2.+GENV_Eps" />
+</union>
+
+<pcon name="JFSH_JFSOctogon_Hole" material="ShieldIron" > <!-- changed from tubs to pcon by Sven.Menke@CERN.CH Jul 2020 since inner bore of JFC3 has 1.1 degree angle -->
+     <polyplane   Rio_Z="0.;JFSH_JFCMCir2_JFCMainCylinder_innerRadius2;-0.6*JFSH_JFSOClen_JFSOctogon_length"/>
+     <polyplane   Rio_Z="0.;JFSH_JFCMCir2_JFCMainCylinder_innerRadius2;-0.5*JFSH_JFSOClen_JFSOctogon_length"/>
+     <polyplane   Rio_Z="0.;JFSH_JFCMCir2_JFCMainCylinder_innerRadius2;-0.5*JFSH_JFSOClen_JFSOctogon_length"/>
+     <polyplane   Rio_Z="0.;JFSH_JFCMCir3_JFCMainCylinder_innerRadius3;-0.5*JFSH_JFSOClen_JFSOctogon_length+JFSH_JFCMChSl_JFCMainCylinder_OctoZoverlap"/>
+     <polyplane   Rio_Z="0.;JFSH_JFCMCir3_JFCMainCylinder_innerRadius3; 0.6*JFSH_JFSOClen_JFSOctogon_length"/>
+</pcon>
+<var  name="JFSH_JFSOctHBPzo_JFSOctogon_HoleBPzoffset"    value=" 600." />       <!-- confirmed atljf___0010-vAC -->
+<var  name="JFSH_JFSOctHBPoR_JFSOctogon_HoleBPoutRad"     value=" 436. + 1." />  <!-- value of MuonSys mother volume -->
+<tubs name="JFSH_JFSOctogon_HoleBP" material="ShieldIron" Rio_Z=" 0. ;JFSH_JFSOctHBPoR_JFSOctogon_HoleBPoutRad; JFSH_JFSOClen_JFSOctogon_length"/>
+<subtraction  name="JFSH_JFSOctogon_main" >
+  <posXYZ  volume="JFSH_JFSOctogon_Core"   X_Y_Z=" 0. ; 0. ; 0. "  rot="   0. ; 0. ; 0."  />
+  <posXYZ  volume="JFSH_JFSOctogon_Hole"   X_Y_Z=" 0. ; 0. ; 0. "  rot="   0. ; 0. ; 0."  />
+  <posXYZ  volume="JFSH_JFSOctogon_HoleBP"   X_Y_Z=" 0. ; 0. ; JFSH_JFSOctHBPzo_JFSOctogon_HoleBPzoffset "  rot="   0. ; 0. ; 0."  />
+</subtraction>
+
+<gvxysxy     name="JFSH_JFSOctogon_Polyedge_baseside"  material="PolyBoronH3B03"  dZ="JFSH_JFSOClen_JFSOctogon_length-JFSH_JFSOCrso_JFSOctogon_rolledsteeloff - JFSH_JFSOCpoo_JFSOctogon_polybaronoff - GENV_Eps"  >
+  <gvxy_point  X_Y="  JFSH_JFSOctxa_JFSOctogon_XA+JFSH_JFSOCpoo_JFSOctogon_polybaronoff+GENV_Eps  ; JFSH_JFSOctya_JFSOctogon_YA+(JFSH_JFSOCpoo_JFSOctogon_polybaronoff+GENV_Eps)*GENV_Ta225  "   />
+  <gvxy_point  X_Y="  JFSH_JFSOctxb_JFSOctogon_XB+(JFSH_JFSOCpoo_JFSOctogon_polybaronoff+GENV_Eps)*GENV_Ta225  ; JFSH_JFSOctyb_JFSOctogon_YB+JFSH_JFSOCpoo_JFSOctogon_polybaronoff+GENV_Eps  "   />
+</gvxysxy>
+
+<gvxysxy     name="JFSH_JFSOctogon_Polyedge_subblock"  material="PolyBoronH3B03"  dZ="JFSH_JFSOClen_JFSOctogon_length-JFSH_JFSOCpoo_JFSOctogon_polybaronoff-JFSH_JFSOCrso_JFSOctogon_rolledsteeloff+GENV_Eps"  >
+  <gvxy_point  X_Y="  JFSH_JFSOctxa_JFSOctogon_XA+GENV_Eps  ; JFSH_JFSOctya_JFSOctogon_YA+GENV_Eps*GENV_Ta225  "   />
+  <gvxy_point  X_Y="  JFSH_JFSOctxb_JFSOctogon_XB+GENV_Eps*GENV_Ta225  ; JFSH_JFSOctyb_JFSOctogon_YB+GENV_Eps  "   />
+</gvxysxy>
+
+<subtraction   name="JFSH_JFSOctogon_Polyedge_side">
+  <posXYZ  volume="JFSH_JFSOctogon_Polyedge_baseside"      X_Y_Z=" 0. ; 0. ; JFSH_JFSOCrso_JFSOctogon_rolledsteeloff/2. + JFSH_JFSOCpoo_JFSOctogon_polybaronoff/2."  />
+  <posXYZ  volume="JFSH_JFSOctogon_Polyedge_subblock"  X_Y_Z=" 0. ; 0. ; (JFSH_JFSOCpoo_JFSOctogon_polybaronoff+JFSH_JFSOCrso_JFSOctogon_rolledsteeloff-GENV_Eps)/2.+GENV_Eps"  />
+</subtraction>
+
+<gvxysxy     name="JFSH_JFSOctogon_Polyedge_basefront"  material="PolyBoronB2O3"  dZ="JFSH_JFSOCpoo_JFSOctogon_polybaronoff"  >
+  <gvxy_point  X_Y="  JFSH_JFSOctxa_JFSOctogon_XA+JFSH_JFSOCpoo_JFSOctogon_polybaronoff+GENV_Eps  ; JFSH_JFSOctya_JFSOctogon_YA+(JFSH_JFSOCpoo_JFSOctogon_polybaronoff+GENV_Eps)*GENV_Ta225  "   />
+  <gvxy_point  X_Y="  JFSH_JFSOctxb_JFSOctogon_XB+(JFSH_JFSOCpoo_JFSOctogon_polybaronoff+GENV_Eps)*GENV_Ta225  ; JFSH_JFSOctyb_JFSOctogon_YB+JFSH_JFSOCpoo_JFSOctogon_polybaronoff+GENV_Eps  "   />
+</gvxysxy>
+
+<tubs name="JFSH_JFSOctogon_Polyedge_subtube" material="PolyBoronB2O3" Rio_Z=" 0. ;JFSH_JFCMCouR_JFCMainCylinder_outerRadius-JFSH_JFCMCrso_JFCMainCylinder_rolledsteeloff-JFSH_JFCMCpoo_JFCMainCylinder_polybaronoff+GENV_Eps; JFSH_JFSOCpoo_JFSOctogon_polybaronoff+2.*GENV_Eps"/>
+
+<subtraction   name="JFSH_JFSOctogon_Polyedge_front">
+  <posXYZ  volume="JFSH_JFSOctogon_Polyedge_basefront"      X_Y_Z=" 0. ; 0. ; -(JFSH_JFSOClen_JFSOctogon_length-JFSH_JFSOCpoo_JFSOctogon_polybaronoff)/2.+JFSH_JFSOCrso_JFSOctogon_rolledsteeloff"  />
+  <posXYZ  volume="JFSH_JFSOctogon_Polyedge_subtube"   X_Y_Z=" 0. ; 0. ; -(JFSH_JFSOClen_JFSOctogon_length-JFSH_JFSOCpoo_JFSOctogon_polybaronoff)/2.+JFSH_JFSOCrso_JFSOctogon_rolledsteeloff"  />
+</subtraction>
+
+<gvxysxy     name="JFSH_JFSOctogon_Steeledge_base"  material="ShieldSteel"  dZ="JFSH_JFSOClen_JFSOctogon_length"  >
+  <gvxy_point  X_Y="  JFSH_JFSOctxa_JFSOctogon_XA+(JFSH_JFSOCpoo_JFSOctogon_polybaronoff+JFSH_JFSOCrso_JFSOctogon_rolledsteeloff+GENV_Eps)  ; JFSH_JFSOctya_JFSOctogon_YA+(JFSH_JFSOCpoo_JFSOctogon_polybaronoff+JFSH_JFSOCrso_JFSOctogon_rolledsteeloff+GENV_Eps)*GENV_Ta225  "   />
+  <gvxy_point  X_Y="  JFSH_JFSOctxb_JFSOctogon_XB+(JFSH_JFSOCpoo_JFSOctogon_polybaronoff+JFSH_JFSOCrso_JFSOctogon_rolledsteeloff+GENV_Eps)*GENV_Ta225  ; JFSH_JFSOctyb_JFSOctogon_YB+(JFSH_JFSOCpoo_JFSOctogon_polybaronoff+JFSH_JFSOCrso_JFSOctogon_rolledsteeloff+GENV_Eps)  "   />
+</gvxysxy>
+
+<gvxysxy     name="JFSH_JFSOctogon_Steeledge_subblock"  material="ShieldSteel"  dZ="JFSH_JFSOClen_JFSOctogon_length-JFSH_JFSOCrso_JFSOctogon_rolledsteeloff+2.*GENV_Eps"  >
+  <gvxy_point  X_Y="  JFSH_JFSOctxa_JFSOctogon_XA+(JFSH_JFSOCpoo_JFSOctogon_polybaronoff+2.*GENV_Eps)  ; JFSH_JFSOctya_JFSOctogon_YA+(JFSH_JFSOCpoo_JFSOctogon_polybaronoff+2.*GENV_Eps)*GENV_Ta225  "   />
+  <gvxy_point  X_Y="  JFSH_JFSOctxb_JFSOctogon_XB+(JFSH_JFSOCpoo_JFSOctogon_polybaronoff+2.*GENV_Eps)*GENV_Ta225  ; JFSH_JFSOctyb_JFSOctogon_YB+(JFSH_JFSOCpoo_JFSOctogon_polybaronoff+2.*GENV_Eps)  "   />
+</gvxysxy>
+<tubs name="JFSH_JFSOctogon_Steeledge_subtube" material="ShieldSteel" Rio_Z=" 0. ;JFSH_JFCMCouR_JFCMainCylinder_outerRadius-JFSH_JFCMCrso_JFCMainCylinder_rolledsteeloff-JFSH_JFCMCpoo_JFCMainCylinder_polybaronoff+GENV_Eps; JFSH_JFSOCrso_JFSOctogon_rolledsteeloff+2.*GENV_Eps"/>
+
+<subtraction   name="JFSH_JFSOctogon_Steeledge_main">
+  <posXYZ  volume="JFSH_JFSOctogon_Steeledge_base"      X_Y_Z=" 0. ; 0. ; 0."  />
+  <posXYZ  volume="JFSH_JFSOctogon_Steeledge_subblock"  X_Y_Z=" 0. ; 0. ; JFSH_JFSOCrso_JFSOctogon_rolledsteeloff/2."  />
+  <posXYZ  volume="JFSH_JFSOctogon_Steeledge_subtube"   X_Y_Z=" 0. ; 0. ; -(JFSH_JFSOClen_JFSOctogon_length-JFSH_JFSOCrso_JFSOctogon_rolledsteeloff)/2."  />
+</subtraction>
+
+<composition name="JFSH_JFSOctogon">
+  <posXYZ  volume="JFSH_JFSOctogon_main"            X_Y_Z=" 0. ; 0. ; 0. "  rot="   0. ; 0. ; 0."  />
+  <posXYZ  volume="JFSH_JFSOctogon_Polyedge_side"   X_Y_Z=" 0. ; 0. ; 0. "  rot="   0. ; 0. ; 0."  />
+  <posXYZ  volume="JFSH_JFSOctogon_Polyedge_front"  X_Y_Z=" 0. ; 0. ; 0. "  rot="   0. ; 0. ; 0."  />
+  <posXYZ  volume="JFSH_JFSOctogon_Steeledge_main"  X_Y_Z=" 0. ; 0. ; 0. "  rot="   0. ; 0. ; 0."  />
+</composition>
+
+<!--  JN Nose Shielding  -->
+
+<!--  TX1STM Elements -->
+<var  name="JNSH_TX1e1oRa"    value=" 1480." />   <!-- JFSH_tx1stm_element1_outerRadius -->
+<var  name="JNSH_TX1e1iRa"    value=" 1285." />   <!-- JFSH_tx1stm_element1_innerRadius -->
+<var  name="JNSH_TX1e1iLe"    value=" 1045." />   <!-- JFSH_tx1stm_element1_length -->
+<var  name="JNSH_TX1e2iRa"    value=" 1085." />   <!-- JFSH_tx1stm_element2_innerRadius -->
+<var  name="JNSH_TX1e2iLe"    value=" 1100." />   <!-- JFSH_tx1stm_element2_length -->
+<var  name="JNSH_TX1e3iLe"    value=" 2900." />   <!-- JFSH_tx1stm_element3_length -->
+
+<var  name="JNSH_TX1SO1iRa"   value=" 1550." />
+<var  name="JNSH_TX1SO1oRa"   value=" 2620." />
+<var  name="JNSH_TX1SO1iLe"   value=" 1800." />   <!-- to adjust for cavern asymmetry and wall-position -->
+<var  name="JNSH_TX1SO6oRa"   value=" 2075." />
+<var  name="JNSH_TX1SO6iLe"   value="  200." />
+
+<var  name="JNSH_TX1STzof"    value=" JFSH_JFSOClen_JFSOctogon_length + JFSH_JFSOCzof_JFSOctogon_zoffset" />
+
+<var  name="JNSH_TX1e1zpo_tx1stm_element1_Z"              value="JFSH_XYZref+JNSH_TX1STzof+JNSH_TX1e1iLe/2." />
+<var  name="JNSH_TX1e2zpo_tx1stm_element2_Z"              value="JNSH_TX1e1zpo_tx1stm_element1_Z+JNSH_TX1e1iLe/2.+JNSH_TX1e2iLe/2."/>
+<var  name="JNSH_TX1e3zpo_tx1stm_element3_Z"              value="JNSH_TX1e2zpo_tx1stm_element2_Z+JNSH_TX1e2iLe/2.+JNSH_TX1e3iLe/2."/>
+
+<var  name="JNSH_TX1SO6zpo_tx1som_element6_Z"              value="JFSH_XYZref+JNSH_TX1STzof+JNSH_TX1SO6iLe/2."/>
+<var  name="JNSH_TX1SO1zpo_tx1som_element1_Z"              value="JNSH_TX1SO6zpo_tx1som_element6_Z+JNSH_TX1SO6iLe/2.+JNSH_TX1SO1iLe/2."/>
+
+<!--  JFS TX1STM -->
+<tubs   name="JNSH_tx1stm_element1"    material="ShieldIron"    Rio_Z="JNSH_TX1e1iRa ; JNSH_TX1e1oRa ; JNSH_TX1e1iLe"/>
+<tubs   name="JNSH_tx1stm_element2"    material="ShieldIron"    Rio_Z="JNSH_TX1e2iRa ; JNSH_TX1e1oRa ; JNSH_TX1e2iLe"/>
+<tubs   name="JNSH_tx1stm_element3"    material="ShieldIron"    Rio_Z="JNSH_TX1e1iRa ; JNSH_TX1e1oRa ; JNSH_TX1e3iLe"/>
+
+<var  name="JNSH_tx1som_e1_XA"    value="JNSH_TX1SO1oRa * tan(11.25 * GENV_PiS180)" />
+<var  name="JNSH_tx1som_e1_YA"    value="JNSH_TX1SO1oRa" />
+<var  name="JNSH_tx1som_e1_XB"    value="JNSH_tx1som_e1_XA * (1. + 2.*GENV_Co225)" />
+<var  name="JNSH_tx1som_e1_YB"    value="JNSH_tx1som_e1_YA - 2.*JNSH_tx1som_e1_XA*GENV_Si225" />
+<var  name="JNSH_tx1som_e1_XC"    value="JNSH_tx1som_e1_YB" />
+<var  name="JNSH_tx1som_e1_YC"    value="JNSH_tx1som_e1_XB" />
+<var  name="JNSH_tx1som_e1_XD"    value="JNSH_tx1som_e1_YA" />
+<var  name="JNSH_tx1som_e1_YD"    value="JNSH_tx1som_e1_XA" />
+
+<gvxysxy     name="JNSH_tx1som_element1_basic"         material="ShieldIron"   dZ="JNSH_TX1SO1iLe"  >
+  <gvxy_point  X_Y="  JNSH_tx1som_e1_XD  ; JNSH_tx1som_e1_YD  "   />
+  <gvxy_point  X_Y="  JNSH_tx1som_e1_XC  ; JNSH_tx1som_e1_YC  "   />
+  <gvxy_point  X_Y="  JNSH_tx1som_e1_XB  ; JNSH_tx1som_e1_YB  "   />
+  <gvxy_point  X_Y="  JNSH_tx1som_e1_XA  ; JNSH_tx1som_e1_YA  "   />
+</gvxysxy>
+<tubs   name="JNSH_tx1som_element6_cutout"    material="ShieldIron"    Rio_Z="0. ; JNSH_TX1SO1iRa ; 2.*JNSH_TX1SO1iLe"/>
+<subtraction  name="JNSH_tx1som_element1" >
+  <posXYZ  volume="JNSH_tx1som_element1_basic"    X_Y_Z=" 0. ; 0. ; 0. "  rot="   0. ; 0. ; 0."  />
+  <posXYZ  volume="JNSH_tx1som_element6_cutout"   X_Y_Z=" 0. ; 0. ; 0. "  rot="   0. ; 0. ; 0."  />
+</subtraction>
+
+<tubs   name="JNSH_tx1som_element6"    material="ShieldIron"    Rio_Z="JNSH_TX1SO1iRa ; JNSH_TX1SO6oRa ; JNSH_TX1SO6iLe"/>
+
+
+<!-- +++++++++++++++++++++++++++++++++++++++++++++++++ -->
+<!--  JF and JN Shield Composition of volumes          -->
+<!-- +++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<composition  name="JFSH_ShieldElements" >
+  <posXYZ  volume="JFSH_JFCCylinder"        X_Y_Z="0.;0.;JFSH_JFCMCzpo_JFCMainCylinder_Z"                         rot="0.;0.;0." />
+  <posXYZ  volume="JFSH_AFrame_Assembly"    X_Y_Z="0.;-4340; JFSH_JFCMCzpo_JFCMainCylinder_Z+JFSH_AFconnexion2+110."                rot="0.;0.;0." />
+  <posXYZ  volume="JFSH_JFSOctogon"         X_Y_Z="0.;0.;JFSH_JFSOCzpo_JFSOctogon_Z"                              rot="0.;0.;0." />
+  <posXYZ  volume="JNSH_tx1stm_element1"    X_Y_Z="0.;0.;JNSH_TX1e1zpo_tx1stm_element1_Z"                         rot="0.;0.;0." />
+  <posXYZ  volume="JNSH_tx1stm_element2"    X_Y_Z="0.;0.;JNSH_TX1e2zpo_tx1stm_element2_Z"                         rot="0.;0.;0." />
+  <posXYZ  volume="JNSH_tx1stm_element3"    X_Y_Z="0.;0.;JNSH_TX1e3zpo_tx1stm_element3_Z"                         rot="0.;0.;0." />
+  <posXYZ  volume="JNSH_tx1som_element6"    X_Y_Z="0.;0.;JNSH_TX1SO6zpo_tx1som_element6_Z"                        rot="0.;0.;0." />
+  <posXYZ  volume="JNSH_tx1som_element1"    X_Y_Z="0.;0.;JNSH_TX1SO1zpo_tx1som_element1_Z"                        rot="0.;0.;0." />
+</composition>
+
+
+<composition  name="JFSH_Shield" >
+  <posXYZ  volume="JFSH_ShieldElements"    X_Y_Z="0.;0.; JFSH_ECTnomiz_ECT_Nominal_zpos"     rot="0.;0.;0." />
+  <posXYZ  volume="JFSH_ShieldElements"    X_Y_Z="0.;0.;-JFSH_ECTnomiz_ECT_Nominal_zpos"     rot="0.;JFSH_rot180;0." />
+</composition>
+
+<!--  JD Disk Shielding  -->
+
+<!--  Useful variables  -->
+
+<var  name="JDSH_XYZrefpt_XYZReferencePoint"            value="    0." />  <!-- NO CONFIRMATION NEEDED -->
+<var  name="JDSH_rota180d_180degRotation"               value="  180." />  <!-- NO CONFIRMATION NEEDED -->
+
+<!--  Primary variables  -->
+
+<!--  data from ATCZ____0005  -->
+<var  name="JDSH_NomiZpos_Nominal_zpos"                 value=" 6784." />  <!-- ATL-MH-ER-0024 -->
+<!-- <var  name="JDSH_NomiZpos_Nominal_zpos"                 value=" 6650." /> -->
+
+<!--  Front Disk and Back Disk  -->
+
+<!-- BEGIN confirmation with atljd___0046-vAE (if no other comment) -->
+<var  name="JDSH_FDinnRad_FrontDisk_innerRadius"        value="  750." />
+<var  name="JDSH_FDoutRad_FrontDisk_outerRadius"        value=" 2700." />
+<var  name="JDSH_FDthickn_FrontDisk_thickness"          value="   50." />
+<!-- END confirmation with atljd___0046-vAE -->
+<var  name="JDSH_BDinnRad_BackDisk_innerRadius"         value="  540." />  <!-- NO CONFIRMATION POSSIBLE -->
+
+<!-- BEGIN confirmation with atljd___0100-vAD (if no other comment) -->
+<var  name="JDSH_BDhatohi_BackDisk_halftotalhight"      value=" 4360.  " />
+<var  name="JDSH_BDlophhi_BackDisk_lowparthalfhight"    value=" 1325.5 " />
+<var  name="JDSH_BDcutdia_BackDisk_cutoutdiameter"      value="  400.  " />  <!-- confirmed atljd___0103-vAD -->
+<var  name="JDSH_BDtbyoff_BackDisk_totbottomyoffset"    value="  432.  " />
+<var  name="JDSH_BDpbyoff_BackDisk_partbottomyoffset"   value="  223.  " />
+<var  name="JDSH_BDhedlen_BackDisk_halfedgelength"      value="  867.  " />
+<var  name="JDSH_BDloedle_BackDisk_loweredgelength"     value=" 1830.  " />
+<var  name="JDSH_BDfeyend_BackDisk_feetyend"            value=" 3370.  " />
+<var  name="JDSH_BDcuxoff_BackDisk_cutxoffset"          value=" 1400.  " />  <!-- confirmed atljd___0103-vAD -->
+<var  name="JDSH_BDcuyoff_BackDisk_cutyoffsetfromtop"   value="  930.  " />  <!-- confirmed atljd___0103-vAD -->
+<var  name="JDSH_BDfecaxo_BackDisk_feetcavityxoffset"   value="  108.  " />
+<var  name="JDSH_BDfeplhi_BackDisk_feetplatehight"      value="   50.  " />
+<var  name="JDSH_BackDisk_angle"                        value="   32.  " />
+<!-- END confirmation with atljd___0100-vAD -->
+
+<!-- BEGIN confirmation with atljd___0028-vAC (if no other comment) -->
+<var  name="JDSH_BDRRouRa_RetrunRing_outerRadius"       value=" 4220." />
+<var  name="JDSH_BDthickn_BackDisk_thickness"           value="   80." />
+
+
+<!--  Cone Assembly  -->
+
+<var  name="JDSH_CABCinRa_BrassCone_innerRadius"        value="  530." />
+<var  name="JDSH_CABCouRa_BrassCone_outerRadius"        value=" 1600." />
+<!-- END confirmation with atljd___0028-vAC -->
+
+<!-- BEGIN confirmation with atljd___0063-vAE (if no other comment) -->
+<var  name="JDSH_CABCthi1_BrassCone_thickness_inter1"   value="    5." />
+<var  name="JDSH_CABCthic_BrassCone_thickness"          value="  260." />
+<var  name="JDSH_CABCslAn_BrassCone_slopeAngle"         value="   10." />
+<var  name="JDSH_CABCslLe_BrassCone_slopeLength"        value="  900." />
+<!-- END confirmation with atljd___0063-vAE -->
+
+<!-- BEGIN confirmation with atljd___0069-vAC (if no other comment) -->
+<var  name="JDSH_CALCthic_LeadCone_thickness"           value="   30." />
+<var  name="JDSH_CALCleng_LeadCone_length"              value="  888." />
+<var  name="JDSH_CALCwidt_LeadCone_width"               value="  629." />
+<!-- END confirmation with atljd___0069-vAC -->
+
+<!-- BEGIN confirmation with atljd___0066-vAA (if no other comment) -->
+<var  name="JDSH_CAPCthic_PolyCone_thickness"           value="   70." />
+<var  name="JDSH_CAPCleng_PolyCone_length"              value="  900." />
+<var  name="JDSH_CAPCwidt_PolyCone_width"               value="  634." />
+<var  name="JDSH_CACOprAn_Cone_projectiveAngle"         value=" 11.25" />
+<array  name="JDSH_CACOangz"                            values="-90.;-67.5;-45.;-22.5;0.;22.5;45.;67.5;90.;112.5;135.;157.5;180.;-157.5;-135.;-112.5"/>  <!-- NO CONFIRMATION POSSIBLE -->
+<var  name="JDSH_CACOangx_ConeAssembly_angx"            value="-10." />
+<!-- END confirmation with atljd___0066-vAA -->
+
+<!-- BEGIN confirmation with atljd___0081-vAI (if no other comment) -->
+<var  name="JDSH_TUBEinRa_Tube_innerRadius"             value="  430." />  <!-- NO CONFIRMATION POSSIBLE -->
+<var  name="JDSH_TUBEOuR1_Tube_OuterRadius1"            value="  730." />
+<var  name="JDSH_TUBEOuR2_Tube_OuterRadius2"            value="  530." />
+<var  name="JDSH_TUBEslen_Tube_shortlength"             value="   49." />
+<var  name="JDSH_TUBEleng_Tube_length"                  value=" 2105." />
+<!-- END confirmation with atljd___0081-vAI -->
+
+<!--  data from ATLJT___0036  -->
+<var  name="JDSH_PLUGinR1_Plug_innerRadius1"            value="  129. " />  <!-- NO CONFIRMATION POSSIBLE -->
+<var  name="JDSH_PLUGouRa_Plug_OuterRadius"             value="  428. " />  <!-- NO CONFIRMATION POSSIBLE -->
+<var  name="JDSH_PLUGleng_Plug_length"                  value=" 2105. " />  <!-- confirmed atljd___0081-vAI -->
+<var  name="JDSH_PLUGtiAn_Plug_tiltAngle"               value="    1.1" />  <!-- NO CONFIRMATION POSSIBLE -->
+
+<!-- BEGIN confirmation with atljd___0035-vAK (if no other comment) -->
+<var  name="JDSH_SWHinnRa_SmallWheelHub_innerRadius"    value="  540. " />
+<var  name="JDSH_SWHoutR1_SmallWheelHub_outerRadius1"   value="  764. " />
+<var  name="JDSH_SWHoutR2_SmallWheelHub_outerRadius2"   value="  850. " />
+<var  name="JDSH_SWHlengt_SmallWheelHub_length"         value="  700. " />
+<!-- END confirmation with atljd___0035-vAK -->
+
+<var  name="JDSH_SWHPthic_SmallWheelHub_Polythickness"  value="   50. " /> <!-- confirmed atljd___0112 -->
+<var  name="JDSH_SWHLthic_SmallWheelHub_Leadthickness"  value="   30. " /> <!-- confirmed atljd___0113 -->
+
+<!-- BEGIN confirmation with atljd___0031-vAD (if no other comment) -->
+<var  name="JDSH_MaRiFefxl_MainRibFeet_feetxlength"    value="  358. " />
+<var  name="JDSH_MaRiFefyo_MainRibFeet_feetyoffset"    value="  100. " />
+<var  name="JDSH_MaRiFelol_MainRibFeet_lowerlength"    value=" 2737. " />
+<var  name="JDSH_MaRiFeupl_MainRibFeet_upperlength"    value=" 2923. " />
+<var  name="JDSH_MaRiFuxle_MainRibFull_xlength"        value=" 3185. " />
+<var  name="JDSH_MaRiFuyle_MainRibFull_ylength"        value=" 3950. " />
+<var  name="JDSH_MaRiFeaxy_MainRibFeet_anglexyplane"   value="   58. " />
+<var  name="JDSH_MaRiFeayz_MainRibFeet_angleyzplane"   value="   -6. " />
+<var  name="JDSH_MaRiFeata_MainRibFeet_attribangle"    value="   30. " />
+<var  name="JDSH_MaRiFemad_MainRibFeet_mainwidth"      value="  250. " />
+<var  name="JDSH_MaRiFewzw_MainRibFeet_wholezwidth"    value="  517. " />
+<var  name="JDSH_MaRiFeozw_MainRibFeet_offsetzwidth"   value="  180. " />
+<var  name="JDSH_MaRiFeazo_MainRibFeet_attribzoffset"  value="   40. " />
+<var  name="JDSH_MaRiFeazw_MainRibFeet_attribzwidth"   value="  150. " />
+<var  name="JDSH_MaRiFerao_MainRibFeet_radialoffset"   value=" 1000. + 10. " />  <!-- sum to avoid overlap, reasonalbe due to many approx. in this region -->
+<var  name="JDSH_MaRiFeatw_MainRibFeet_attribwidth"    value="  830. " />
+<var  name="JDSH_MaRiFearw_MainRibFeet_attredwidth"    value="  605. " />  <!-- confirmed atljd___0065-vAA -->
+<var  name="JDSH_MainRibFeet_PosX"                     value=" 3185. " />
+<var  name="JDSH_MainRibFeet_PosY"                     value="-3950. " />
+<!-- END confirmation with atljd___0031-vAD -->
+
+<!--  Derived variables  -->
+
+<var  name="JDSH_FDzposit_FrontDisk_Z"      value="JDSH_XYZrefpt_XYZReferencePoint + JDSH_FDthickn_FrontDisk_thickness/2. " />
+<var  name="JDSH_BDzposit_BackDisk_Z"       value="JDSH_FDzposit_FrontDisk_Z  + JDSH_FDthickn_FrontDisk_thickness/2.   + JDSH_BDthickn_BackDisk_thickness/2. " />
+<var  name="JDSH_CAzposit_ConeAssembly_Z"   value="JDSH_BDzposit_BackDisk_Z   + JDSH_BDthickn_BackDisk_thickness/2. " />
+<var  name="JDSH_TUBEzpos_Tube_Z"           value="JDSH_XYZrefpt_XYZReferencePoint" />
+<var  name="JDSH_PLUGzpos_Plug_Z"           value="JDSH_XYZrefpt_XYZReferencePoint" />
+<var  name="JDSH_SWHzposi_SmallWheelHub_Z"  value="JDSH_CAzposit_ConeAssembly_Z + JDSH_CABCthic_BrassCone_thickness" />
+
+<var  name="JDSH_CABCouR1_BrassCone_outerRadius1"      value="JDSH_CABCouRa_BrassCone_outerRadius - JDSH_CABCslLe_BrassCone_slopeLength * cos(JDSH_CABCslAn_BrassCone_slopeAngle*GENV_PiS180)" />
+<var  name="JDSH_CABCthi2_BrassCone_thickness2"        value="JDSH_CABCthi1_BrassCone_thickness_inter1 + JDSH_CABCslLe_BrassCone_slopeLength * sin(JDSH_CABCslAn_BrassCone_slopeAngle*GENV_PiS180)" />
+<var  name="JDSH_CABCouR2_BrassCone_outerRadius2"      value="JDSH_CABCouR1_BrassCone_outerRadius1 + (JDSH_CABCthic_BrassCone_thickness-JDSH_CABCthi2_BrassCone_thickness2) * tan(JDSH_CABCslAn_BrassCone_slopeAngle*GENV_PiS180)" />
+
+<var  name="JDSH_LCAxbpos_LeadConeAssembly_XB"        value=" JDSH_CALCwidt_LeadCone_width/2." />
+<var  name="JDSH_LCAybpos_LeadConeAssembly_YB"        value=" JDSH_CALCleng_LeadCone_length" />
+<var  name="JDSH_LCAxapos_LeadConeAssembly_XA"        value=" JDSH_LCAxbpos_LeadConeAssembly_XB - JDSH_CALCleng_LeadCone_length*tan(JDSH_CACOprAn_Cone_projectiveAngle*GENV_PiS180) " />
+<var  name="JDSH_LCAyapos_LeadConeAssembly_YA"        value=" 0." />
+
+<var  name="JDSH_PCAxbpos_PolyConeAssembly_XB"        value=" JDSH_CAPCwidt_PolyCone_width/2." />
+<var  name="JDSH_PCAybpos_PolyConeAssembly_YB"        value=" JDSH_CAPCleng_PolyCone_length" />
+<var  name="JDSH_PCAxapos_PolyConeAssembly_XA"        value=" JDSH_PCAxbpos_PolyConeAssembly_XB - JDSH_CAPCleng_PolyCone_length*tan(JDSH_CACOprAn_Cone_projectiveAngle*GENV_PiS180) " />
+<var  name="JDSH_PCAyapos_PolyConeAssembly_YA"        value=" 0." />
+
+<var  name="JDSH_CALCradi_LeadCone_Radius"      value="JDSH_CABCouR2_BrassCone_outerRadius2 - (JDSH_CALCthic_LeadCone_thickness/2.)*sin(JDSH_CABCslAn_BrassCone_slopeAngle*GENV_PiS180) " />
+<var  name="JDSH_CALCposz_LeadCone_posz"        value="JDSH_CABCthic_BrassCone_thickness - (JDSH_CALCthic_LeadCone_thickness/2.)*cos(JDSH_CABCslAn_BrassCone_slopeAngle*GENV_PiS180) - cos((JDSH_CACOangx_ConeAssembly_angx+90.)*GENV_PiS180) * (JDSH_LCAybpos_LeadConeAssembly_YB-JDSH_LCAyapos_LeadConeAssembly_YA)/2." />
+
+<var  name="JDSH_CAPCradi_PolyCone_Radius"      value="JDSH_CABCouR2_BrassCone_outerRadius2 - (JDSH_CALCthic_LeadCone_thickness+JDSH_CAPCthic_PolyCone_thickness/2.)*sin(JDSH_CABCslAn_BrassCone_slopeAngle*GENV_PiS180) " />
+<var  name="JDSH_CAPCposz_PolyCone_posz"        value="JDSH_CABCthic_BrassCone_thickness - (JDSH_CALCthic_LeadCone_thickness+JDSH_CAPCthic_PolyCone_thickness/2.)*cos(JDSH_CABCslAn_BrassCone_slopeAngle*GENV_PiS180) - cos((JDSH_CACOangx_ConeAssembly_angx+90.)*GENV_PiS180) * (JDSH_PCAybpos_PolyConeAssembly_YB-JDSH_PCAyapos_PolyConeAssembly_YA)/2. " />
+
+<var  name="JDSH_i1"      value="JDSH_CALCradi_LeadCone_Radius+(JDSH_LCAybpos_LeadConeAssembly_YB-JDSH_LCAyapos_LeadConeAssembly_YA)/2.*cos(JDSH_CABCslAn_BrassCone_slopeAngle*GENV_PiS180)" />
+<array name="JDSH_LCApx" values="JDSH_i1;JDSH_i1*GENV_Co225;JDSH_i1*GENV_Co45;JDSH_i1*GENV_Si225;0.;-JDSH_i1*GENV_Si225;-JDSH_i1*GENV_Co45;-JDSH_i1*GENV_Co225;-JDSH_i1;-JDSH_i1*GENV_Co225;-JDSH_i1*GENV_Co45;-JDSH_i1*GENV_Si225;0.;JDSH_i1*GENV_Si225;JDSH_i1*GENV_Co45;JDSH_i1*GENV_Co225"/>
+<array name="JDSH_LCApy" values="0.;JDSH_i1*GENV_Si225;JDSH_i1*GENV_Si45;JDSH_i1*GENV_Co225;JDSH_i1;JDSH_i1*GENV_Co225;JDSH_i1*GENV_Si45;JDSH_i1*GENV_Si225;0;-JDSH_i1*GENV_Si225;-JDSH_i1*GENV_Si45;-JDSH_i1*GENV_Co225;-JDSH_i1;-JDSH_i1*GENV_Co225;-JDSH_i1*GENV_Si45;-JDSH_i1*GENV_Si225"/>
+
+<var  name="JDSH_i2"      value="JDSH_CAPCradi_PolyCone_Radius+(JDSH_PCAybpos_PolyConeAssembly_YB-JDSH_PCAyapos_PolyConeAssembly_YA)/2.*cos(JDSH_CABCslAn_BrassCone_slopeAngle*GENV_PiS180)" />
+<array name="JDSH_PCApx" values="JDSH_i2;JDSH_i2*GENV_Co225;JDSH_i2*GENV_Co45;JDSH_i2*GENV_Si225;0.;-JDSH_i2*GENV_Si225;-JDSH_i2*GENV_Co45;-JDSH_i2*GENV_Co225;-JDSH_i2;-JDSH_i2*GENV_Co225;-JDSH_i2*GENV_Co45;-JDSH_i2*GENV_Si225;0.;JDSH_i2*GENV_Si225;JDSH_i2*GENV_Co45;JDSH_i2*GENV_Co225"/>
+<array name="JDSH_PCApy" values="0.;JDSH_i2*GENV_Si225;JDSH_i2*GENV_Si45;JDSH_i2*GENV_Co225;JDSH_i2;JDSH_i2*GENV_Co225;JDSH_i2*GENV_Si45;JDSH_i2*GENV_Si225;0.;-JDSH_i2*GENV_Si225;-JDSH_i2*GENV_Si45;-JDSH_i2*GENV_Co225;-JDSH_i2;-JDSH_i2*GENV_Co225;-JDSH_i2*GENV_Si45;-JDSH_i2*GENV_Si225"/>
+
+<var  name="JDSH_PLUGinR2_Plug_innerRadius2"       value=" JDSH_PLUGinR1_Plug_innerRadius1 + JDSH_PLUGleng_Plug_length *tan(JDSH_PLUGtiAn_Plug_tiltAngle*GENV_PiS180)" />
+
+<!-- Modelization of Volumes  -->
+
+<!-- Modelization of Front and Back disks  -->
+<tubs   name="JDSH_FrontDisk"   material="ShieldSteel"  Rio_Z="JDSH_FDinnRad_FrontDisk_innerRadius; JDSH_FDoutRad_FrontDisk_outerRadius; JDSH_FDthickn_FrontDisk_thickness" />
+
+<box    name="JDSH_BackDisk_CutBox1"   material="ShieldSteel"  X_Y_Z=" 2.*JDSH_BDlophhi_BackDisk_lowparthalfhight            ; JDSH_BDcutdia_BackDisk_cutoutdiameter                 ; 2.*JDSH_BDthickn_BackDisk_thickness"  />
+<tubs   name="JDSH_BackDisk_InnerTube" material="ShieldSteel"  Rio_Z=" 0. ; JDSH_BDinnRad_BackDisk_innerRadius ; 2*JDSH_BDthickn_BackDisk_thickness"  />
+<tubs   name="JDSH_BackDisk_CutTube"   material="ShieldSteel"  Rio_Z=" 0. ; JDSH_BDcutdia_BackDisk_cutoutdiameter/2. ; 2.*JDSH_BDthickn_BackDisk_thickness"  />
+
+<var name="JDSH_BD_GVXYPOS_posX3" value="GENV_Co225 * JDSH_BDloedle_BackDisk_loweredgelength + JDSH_BDhedlen_BackDisk_halfedgelength + GENV_Ta225 * ( GENV_Si225*JDSH_BDloedle_BackDisk_loweredgelength - (JDSH_BDhatohi_BackDisk_halftotalhight - (JDSH_BDhedlen_BackDisk_halfedgelength + 2.*JDSH_BDlophhi_BackDisk_lowparthalfhight + JDSH_BDtbyoff_BackDisk_totbottomyoffset) ) )"/>
+
+<gvxysx name="JDSH_BackDisk_tmp" material="ShieldSteel"   dZ="JDSH_BDthickn_BackDisk_thickness">
+  <gvxy_point  X_Y="JDSH_BDhedlen_BackDisk_halfedgelength; -JDSH_BDhatohi_BackDisk_halftotalhight "   />
+  <gvxy_point  X_Y="GENV_Co225 * JDSH_BDloedle_BackDisk_loweredgelength + JDSH_BDhedlen_BackDisk_halfedgelength; GENV_Si225*JDSH_BDloedle_BackDisk_loweredgelength-JDSH_BDhatohi_BackDisk_halftotalhight "   />
+  <gvxy_point  X_Y="JDSH_BD_GVXYPOS_posX3; - JDSH_BDhedlen_BackDisk_halfedgelength - 2.*JDSH_BDlophhi_BackDisk_lowparthalfhight - JDSH_BDtbyoff_BackDisk_totbottomyoffset "   />
+  <gvxy_point  X_Y="JDSH_BDfeyend_BackDisk_feetyend; - JDSH_BDhedlen_BackDisk_halfedgelength - 2.*JDSH_BDlophhi_BackDisk_lowparthalfhight - JDSH_BDtbyoff_BackDisk_totbottomyoffset "   />
+  <gvxy_point  X_Y="JDSH_BDfeyend_BackDisk_feetyend; -JDSH_BDhedlen_BackDisk_halfedgelength - 2.*JDSH_BDlophhi_BackDisk_lowparthalfhight - JDSH_BDtbyoff_BackDisk_totbottomyoffset + JDSH_BDfeplhi_BackDisk_feetplatehight "   />
+  <gvxy_point  X_Y="JDSH_BDfeyend_BackDisk_feetyend-JDSH_BDfecaxo_BackDisk_feetcavityxoffset; -JDSH_BDhedlen_BackDisk_halfedgelength - 2.*JDSH_BDlophhi_BackDisk_lowparthalfhight - JDSH_BDtbyoff_BackDisk_totbottomyoffset + JDSH_BDpbyoff_BackDisk_partbottomyoffset "   />
+  <gvxy_point  X_Y="JDSH_BDfeyend_BackDisk_feetyend-JDSH_BDfecaxo_BackDisk_feetcavityxoffset; -JDSH_BDhedlen_BackDisk_halfedgelength - 2.*JDSH_BDlophhi_BackDisk_lowparthalfhight "   />
+  <gvxy_point  X_Y="JDSH_BDhatohi_BackDisk_halftotalhight; -JDSH_BDhedlen_BackDisk_halfedgelength "   />
+  <gvxy_point  X_Y="JDSH_BDhatohi_BackDisk_halftotalhight; JDSH_BDhedlen_BackDisk_halfedgelength "   />
+  <gvxy_point  X_Y="JDSH_BDhatohi_BackDisk_halftotalhight-GENV_Si225*(2.*JDSH_BDhedlen_BackDisk_halfedgelength); JDSH_BDhedlen_BackDisk_halfedgelength + GENV_Co225*(2.*JDSH_BDhedlen_BackDisk_halfedgelength) "   />
+  <gvxy_point  X_Y="JDSH_BDhedlen_BackDisk_halfedgelength + GENV_Co225*(2.*JDSH_BDhedlen_BackDisk_halfedgelength); JDSH_BDhatohi_BackDisk_halftotalhight - GENV_Si225*(2.*JDSH_BDhedlen_BackDisk_halfedgelength) "   />
+  <gvxy_point  X_Y="JDSH_BDhedlen_BackDisk_halfedgelength; JDSH_BDhatohi_BackDisk_halftotalhight "   />
+</gvxysx>
+
+<subtraction name="JDSH_BackDisk">
+  <posXYZ   volume="JDSH_BackDisk_tmp"       X_Y_Z="0. ; 0. ; 0."  />
+  <posXYZ   volume="JDSH_BackDisk_InnerTube" X_Y_Z="0. ; 0. ; 0."  />
+  <posXYZ   volume="JDSH_BackDisk_CutBox1"   X_Y_Z=" JDSH_BDcuxoff_BackDisk_cutxoffset + JDSH_BDlophhi_BackDisk_lowparthalfhight ; JDSH_BDhatohi_BackDisk_halftotalhight-JDSH_BDcuyoff_BackDisk_cutyoffsetfromtop ; 0. "  />
+  <posXYZ   volume="JDSH_BackDisk_CutTube"   X_Y_Z=" JDSH_BDcuxoff_BackDisk_cutxoffset ; JDSH_BDhatohi_BackDisk_halftotalhight-JDSH_BDcuyoff_BackDisk_cutyoffsetfromtop ; 0. "  />
+</subtraction>
+
+<!-- Modelization of Brass Cone Assembly  -->
+<pcon   name="JDSH_BrassConeAssembly"          material="ShieldBrass"  >
+  <polyplane  Rio_Z="JDSH_CABCinRa_BrassCone_innerRadius; JDSH_CABCouRa_BrassCone_outerRadius  ;   0."                                       />
+  <polyplane  Rio_Z="JDSH_CABCinRa_BrassCone_innerRadius; JDSH_CABCouRa_BrassCone_outerRadius  ;   JDSH_CABCthi1_BrassCone_thickness_inter1" />
+  <polyplane  Rio_Z="JDSH_CABCinRa_BrassCone_innerRadius; JDSH_CABCouR1_BrassCone_outerRadius1 ;   JDSH_CABCthi2_BrassCone_thickness2 "      />
+  <polyplane  Rio_Z="JDSH_CABCinRa_BrassCone_innerRadius; JDSH_CABCouR2_BrassCone_outerRadius2 ;   JDSH_CABCthic_BrassCone_thickness "       />
+</pcon>
+
+<pcon   name="JDSH_BrassConeAssembly_NSW"          material="ShieldBrass"  >
+  <polyplane  Rio_Z="JDSH_CABCinRa_BrassCone_innerRadius; JDSH_CABCouRa_BrassCone_outerRadius - 30. ;   0."                                       />
+  <polyplane  Rio_Z="JDSH_CABCinRa_BrassCone_innerRadius; JDSH_CABCouRa_BrassCone_outerRadius - 30. ;   JDSH_CABCthi1_BrassCone_thickness_inter1 + 10." />
+  <polyplane  Rio_Z="JDSH_CABCinRa_BrassCone_innerRadius; JDSH_CABCouR2_BrassCone_outerRadius2 ;   JDSH_CABCthi1_BrassCone_thickness_inter1 + 10." />
+  <polyplane  Rio_Z="JDSH_CABCinRa_BrassCone_innerRadius; JDSH_CABCouR2_BrassCone_outerRadius2 ;   JDSH_CABCthic_BrassCone_thickness "       />
+</pcon>
+
+<!-- Modelization of Lead Cone Element  -->
+<trd name="JDSH_LeadConeAssembly"  material="Lead"  Xmp_Ymp_Z="2.*JDSH_LCAxbpos_LeadConeAssembly_XB; 2.*JDSH_LCAxapos_LeadConeAssembly_XA; JDSH_CALCthic_LeadCone_thickness; JDSH_CALCthic_LeadCone_thickness; JDSH_LCAybpos_LeadConeAssembly_YB-JDSH_LCAyapos_LeadConeAssembly_YA" />
+
+<pcon   name="JDSH_LeadConeAssembly_NSW"          material="Lead"  >
+  <polyplane  Rio_Z="JDSH_CABCouRa_BrassCone_outerRadius - 30. + GENV_Eps ; JDSH_CABCouRa_BrassCone_outerRadius + 5. ; 0." />
+  <polyplane  Rio_Z="JDSH_CABCouRa_BrassCone_outerRadius - 30. + GENV_Eps ; JDSH_CABCouRa_BrassCone_outerRadius + 5. ; JDSH_CAPCthic_PolyCone_thickness-40. + GENV_Eps + JDSH_CABCthi1_BrassCone_thickness_inter1 + 10. + GENV_Eps" />
+  <polyplane  Rio_Z="JDSH_CABCouR2_BrassCone_outerRadius2 + 2.*GENV_Eps + 23.; JDSH_CABCouRa_BrassCone_outerRadius + 5. ; JDSH_CAPCthic_PolyCone_thickness-40. + GENV_Eps + JDSH_CABCthi1_BrassCone_thickness_inter1 + 10. + GENV_Eps" />
+  <polyplane  Rio_Z="JDSH_CABCouR2_BrassCone_outerRadius2 + 2.*GENV_Eps + 23.; JDSH_CABCouRa_BrassCone_outerRadius + 5. ; JDSH_CAPCthic_PolyCone_thickness-40. + GENV_Eps + JDSH_CALCthic_LeadCone_thickness + JDSH_CABCthi1_BrassCone_thickness_inter1 + 10. + GENV_Eps - 17." />
+  <polyplane  Rio_Z="JDSH_CABCouR2_BrassCone_outerRadius2 + 2.*GENV_Eps + 23.; JDSH_SWHoutR1_SmallWheelHub_outerRadius1;   JDSH_CAPCthic_PolyCone_thickness-40. + GENV_Eps + JDSH_CALCthic_LeadCone_thickness + JDSH_CABCthi1_BrassCone_thickness_inter1 + 10. + GENV_Eps - 17." />
+  <polyplane  Rio_Z="JDSH_CABCouR2_BrassCone_outerRadius2 + 2.*GENV_Eps + 23.; JDSH_SWHoutR1_SmallWheelHub_outerRadius1;   JDSH_CABCthic_BrassCone_thickness " />
+</pcon>
+
+<!-- Modelization of Poly Cone Element  -->
+<trd name="JDSH_PolyConeAssembly"  material="PolyBoronB2O3"  Xmp_Ymp_Z="2.*JDSH_PCAxbpos_PolyConeAssembly_XB; 2.*JDSH_PCAxapos_PolyConeAssembly_XA; JDSH_CAPCthic_PolyCone_thickness; JDSH_CAPCthic_PolyCone_thickness; JDSH_PCAybpos_PolyConeAssembly_YB-JDSH_PCAyapos_PolyConeAssembly_YA" />
+
+<pcon   name="JDSH_PolyConeAssembly_NSW"          material="PolyBoronB2O3"  >
+  <polyplane  Rio_Z=" JDSH_CABCouR2_BrassCone_outerRadius2+GENV_Eps; JDSH_CABCouRa_BrassCone_outerRadius - 30.; JDSH_CABCthi1_BrassCone_thickness_inter1 + 10. + GENV_Eps" />
+  <polyplane  Rio_Z=" JDSH_CABCouR2_BrassCone_outerRadius2+GENV_Eps; JDSH_CABCouRa_BrassCone_outerRadius - 30.; JDSH_CABCthi1_BrassCone_thickness_inter1 + 10. + GENV_Eps + JDSH_CAPCthic_PolyCone_thickness-40." />
+  <polyplane  Rio_Z=" JDSH_CABCouR2_BrassCone_outerRadius2+GENV_Eps; JDSH_CABCouR2_BrassCone_outerRadius2 + GENV_Eps + 23.; JDSH_CABCthi1_BrassCone_thickness_inter1 + 10. + GENV_Eps + JDSH_CAPCthic_PolyCone_thickness-40." />
+  <polyplane  Rio_Z=" JDSH_CABCouR2_BrassCone_outerRadius2+GENV_Eps; JDSH_CABCouR2_BrassCone_outerRadius2 + GENV_Eps + 23.; JDSH_CABCthic_BrassCone_thickness" />
+</pcon>
+
+<!-- Composition of JD Cone Assembly  -->
+<composition  name="JDSH_ConeAssembly" >
+  <posXYZ  volume="JDSH_BrassConeAssembly"   X_Y_Z="0.;0.;0."      rot="0.;0.;0." />
+  <foreach  index="I"  begin="0"  loops="16" >
+    <posXYZ  volume="JDSH_LeadConeAssembly"       X_Y_Z="  JDSH_LCApx[I];JDSH_LCApy[I];JDSH_CALCposz_LeadCone_posz"   rot="JDSH_CACOangx_ConeAssembly_angx+90.;0.;JDSH_CACOangz[I]" />
+    <posXYZ  volume="JDSH_PolyConeAssembly"       X_Y_Z="  JDSH_PCApx[I];JDSH_PCApy[I];JDSH_CAPCposz_PolyCone_posz"   rot="JDSH_CACOangx_ConeAssembly_angx+90.;0.;JDSH_CACOangz[I]" />
+  </foreach>
+</composition>
+
+<composition  name="JDSH_ConeAssembly_NSW" >
+  <posXYZ  volume="JDSH_BrassConeAssembly_NSW"   X_Y_Z="  0.; 0.; 0."   rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_LeadConeAssembly_NSW"    X_Y_Z="  0.; 0.; 0."   rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_PolyConeAssembly_NSW"    X_Y_Z="  0.; 0.; 0."   rot="0.;0.;0." />
+</composition>
+
+<!-- Modelization of JD Tube -->
+<pcon   name="JDSH_Tube"          material="ShieldSteel"  >
+  <polyplane  Rio_Z="JDSH_TUBEinRa_Tube_innerRadius;JDSH_TUBEOuR1_Tube_OuterRadius1;0." />
+  <polyplane  Rio_Z="JDSH_TUBEinRa_Tube_innerRadius;JDSH_TUBEOuR1_Tube_OuterRadius1;JDSH_TUBEslen_Tube_shortlength" />
+  <polyplane  Rio_Z="JDSH_TUBEinRa_Tube_innerRadius;JDSH_TUBEOuR2_Tube_OuterRadius2;JDSH_TUBEslen_Tube_shortlength+1." />
+  <polyplane  Rio_Z="JDSH_TUBEinRa_Tube_innerRadius;JDSH_TUBEOuR2_Tube_OuterRadius2;JDSH_TUBEleng_Tube_length" />
+</pcon>
+<pcon name="JDSH_Plug" material="ShieldBrass" >
+  <polyplane Rio_Z="JDSH_PLUGinR2_Plug_innerRadius2;JDSH_PLUGouRa_Plug_OuterRadius;0." />
+  <polyplane Rio_Z="JDSH_PLUGinR1_Plug_innerRadius1;JDSH_PLUGouRa_Plug_OuterRadius;JDSH_PLUGleng_Plug_length" />
+</pcon>
+<pcon name="JDSH_SmallWheelHub" material="ShieldBrass" >
+  <polyplane Rio_Z="JDSH_SWHinnRa_SmallWheelHub_innerRadius;JDSH_SWHoutR1_SmallWheelHub_outerRadius1;0." />
+  <polyplane Rio_Z="JDSH_SWHinnRa_SmallWheelHub_innerRadius;JDSH_SWHoutR2_SmallWheelHub_outerRadius2;JDSH_SWHlengt_SmallWheelHub_length" />
+</pcon>
+
+<tubs   name="JDSH_SmallWheelHub_NSW"    material="ShieldBrass"    Rio_Z="JDSH_SWHinnRa_SmallWheelHub_innerRadius ; JDSH_SWHoutR1_SmallWheelHub_outerRadius1 - JDSH_SWHPthic_SmallWheelHub_Polythickness - JDSH_SWHLthic_SmallWheelHub_Leadthickness ; JDSH_SWHlengt_SmallWheelHub_length"/>
+
+<pcon name="JDSH_SmallWheelHubPoly" material="PolyBoronB2O3" >
+  <polyplane Rio_Z="JDSH_SWHoutR1_SmallWheelHub_outerRadius1 + GENV_Eps; JDSH_SWHoutR1_SmallWheelHub_outerRadius1 + JDSH_SWHPthic_SmallWheelHub_Polythickness; 0." />
+  <polyplane Rio_Z="JDSH_SWHoutR2_SmallWheelHub_outerRadius2 + GENV_Eps; JDSH_SWHoutR2_SmallWheelHub_outerRadius2 + JDSH_SWHPthic_SmallWheelHub_Polythickness; JDSH_SWHlengt_SmallWheelHub_length" />
+</pcon>
+
+<tubs   name="JDSH_SmallWheelHubPoly_NSW" material="PolyBoronB2O3"    Rio_Z="JDSH_SWHoutR1_SmallWheelHub_outerRadius1 - JDSH_SWHPthic_SmallWheelHub_Polythickness - JDSH_SWHLthic_SmallWheelHub_Leadthickness + GENV_Eps ; JDSH_SWHoutR1_SmallWheelHub_outerRadius1 - JDSH_SWHLthic_SmallWheelHub_Leadthickness ; JDSH_SWHlengt_SmallWheelHub_length"/>
+
+<pcon name="JDSH_SmallWheelHubLead" material="Lead" >
+  <polyplane Rio_Z="JDSH_SWHoutR1_SmallWheelHub_outerRadius1 + JDSH_SWHPthic_SmallWheelHub_Polythickness + GENV_Eps; JDSH_SWHoutR1_SmallWheelHub_outerRadius1 + JDSH_SWHPthic_SmallWheelHub_Polythickness + JDSH_SWHLthic_SmallWheelHub_Leadthickness; 0." />
+  <polyplane Rio_Z="JDSH_SWHoutR2_SmallWheelHub_outerRadius2 + JDSH_SWHPthic_SmallWheelHub_Polythickness + GENV_Eps; JDSH_SWHoutR2_SmallWheelHub_outerRadius2 + JDSH_SWHPthic_SmallWheelHub_Polythickness + JDSH_SWHLthic_SmallWheelHub_Leadthickness; JDSH_SWHlengt_SmallWheelHub_length" />
+</pcon>
+
+<tubs   name="JDSH_SmallWheelHubLead_NSW" material="Lead"    Rio_Z="JDSH_SWHoutR1_SmallWheelHub_outerRadius1 - JDSH_SWHLthic_SmallWheelHub_Leadthickness + GENV_Eps ; JDSH_SWHoutR1_SmallWheelHub_outerRadius1 ; JDSH_SWHlengt_SmallWheelHub_length"/>
+
+<!-- +++++++++++++++++++++++++++++++++++++++++++++++++ -->
+<!--  JD Shield Feet                                   -->
+<!-- +++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<var name="JDSH_MaRiFefxo_MainRibFeet_feetxoffset"  value="JDSH_MaRiFefxl_MainRibFeet_feetxlength - JDSH_MaRiFemad_MainRibFeet_mainwidth/sin(JDSH_MaRiFeaxy_MainRibFeet_anglexyplane*GENV_PiS180)" />
+<var name="JDSH_MaRiFeulp_MainRibFeet_upplenpro"    value="JDSH_MaRiFeupl_MainRibFeet_upperlength*sin(JDSH_MaRiFeaxy_MainRibFeet_anglexyplane*GENV_PiS180)" />
+<var name="JDSH_MaRiFellp_MainRibFeet_lowlenpro"    value="JDSH_MaRiFelol_MainRibFeet_lowerlength*cos(JDSH_MaRiFeaxy_MainRibFeet_anglexyplane*GENV_PiS180)" />
+<var name="JDSH_MaRiFeulp_MainRibFeet_upplenpro2"   value="JDSH_MaRiFeupl_MainRibFeet_upperlength*cos(JDSH_MaRiFeaxy_MainRibFeet_anglexyplane*GENV_PiS180)" />
+<var name="JDSH_MaRiFellp_MainRibFeet_lowlenpro2"   value="JDSH_MaRiFelol_MainRibFeet_lowerlength*sin(JDSH_MaRiFeaxy_MainRibFeet_anglexyplane*GENV_PiS180)" />
+<var name="JDSH_MaRiFetca_MainRibFeet_topcutangel"  value="(asin((cos(JDSH_MaRiFeaxy_MainRibFeet_anglexyplane*GENV_PiS180) * JDSH_MaRiFeupl_MainRibFeet_upperlength -JDSH_MaRiFellp_MainRibFeet_lowlenpro - JDSH_MaRiFemad_MainRibFeet_mainwidth / sin(JDSH_MaRiFeaxy_MainRibFeet_anglexyplane*GENV_PiS180)) / JDSH_MaRiFemad_MainRibFeet_mainwidth))" />
+
+<!-- arbitrary parameters for cutting boxes -->
+<var name="JDSH_MaRiCB1xw_MainCutBox1_xwidth"  value="  200. " />
+<var name="JDSH_MaRiCB1yw_MainCutBox1_ywidth"  value="  120. " />
+<var name="JDSH_MaRiCuBzw_MainCutBox_zwidth"   value="  600. " />
+<var name="JDSH_MaRiCB2xw_MainCutBox2_xwidth"  value=" 2000. " />
+<var name="JDSH_MaRiCB2yw_MainCutBox2_ywidth"  value=" JDSH_MaRiFuyle_MainRibFull_ylength " />
+<var name="JDSH_MaRiCB3yw_MainCutBox3_ywidth"  value=" JDSH_MaRiFelol_MainRibFeet_lowerlength" />
+<var name="JDSH_MaRiCB3xw_MainCutBox3_xwidth"  value=" 3000. " />
+<var name="JDSH_MaRiCB4yw_MainCutBox4_ywidth"  value=" 4000. " />
+
+<box name="JDSH_MainRib_basis"    material="ShieldIron"  X_Y_Z="JDSH_MaRiFuxle_MainRibFull_xlength; JDSH_MaRiFuyle_MainRibFull_ylength; JDSH_MaRiFewzw_MainRibFeet_wholezwidth" />
+
+<box name="JDSH_MainRib_cutbox1"  material="ShieldIron"  X_Y_Z="JDSH_MaRiCB1xw_MainCutBox1_xwidth; JDSH_MaRiCB1yw_MainCutBox1_ywidth; JDSH_MaRiCuBzw_MainCutBox_zwidth" />
+<box name="JDSH_MainRib_cutbox2"  material="ShieldIron"  X_Y_Z="JDSH_MaRiCB2xw_MainCutBox2_xwidth; JDSH_MaRiCB2yw_MainCutBox2_ywidth; JDSH_MaRiFewzw_MainRibFeet_wholezwidth" />
+<box name="JDSH_MainRib_cutbox3"  material="ShieldIron"  X_Y_Z="JDSH_MaRiCB3xw_MainCutBox3_xwidth; JDSH_MaRiCB3yw_MainCutBox3_ywidth; JDSH_MaRiCuBzw_MainCutBox_zwidth" />
+<box name="JDSH_MainRib_cutbox4"  material="ShieldIron"  X_Y_Z="JDSH_MaRiCB3xw_MainCutBox3_xwidth; JDSH_MaRiCB4yw_MainCutBox4_ywidth; JDSH_MaRiCuBzw_MainCutBox_zwidth" />
+<box name="JDSH_MainRib_cutbox5"  material="ShieldIron"  X_Y_Z="JDSH_MaRiCB2xw_MainCutBox2_xwidth; JDSH_MaRiCB2yw_MainCutBox2_ywidth; JDSH_MaRiCuBzw_MainCutBox_zwidth" />
+
+<var name="JDSH_MainRib_basis_PosX"  value="(JDSH_MaRiFuxle_MainRibFull_xlength)/2." />
+<var name="JDSH_MainRib_basis_PosY"  value="(JDSH_MaRiFuyle_MainRibFull_ylength)/2." />
+<var name="JDSH_MainRib_basis_PosZ"  value="JDSH_MaRiFewzw_MainRibFeet_wholezwidth/2." />
+
+<var name="JDSH_MainRib_cb1_PosX1"  value="JDSH_MaRiFefxo_MainRibFeet_feetxoffset - JDSH_MaRiCB1xw_MainCutBox1_xwidth/2. " />
+<var name="JDSH_MainRib_cb1_PosY1"  value="JDSH_MaRiFefyo_MainRibFeet_feetyoffset + JDSH_MaRiCB1yw_MainCutBox1_ywidth/2." />
+
+<var name="JDSH_MainRib_cb1_PosX2"  value="JDSH_MaRiFefxl_MainRibFeet_feetxlength + JDSH_MaRiCB1xw_MainCutBox1_xwidth/2." />
+<var name="JDSH_MainRib_cb1_PosY2"  value="JDSH_MaRiFefyo_MainRibFeet_feetyoffset - JDSH_MaRiCB1yw_MainCutBox1_ywidth/2." />
+
+<var name="JDSH_MainRib_cb2_PosX1"  value="JDSH_MaRiCB2xw_MainCutBox2_xwidth/2. " />
+<var name="JDSH_MainRib_cb2_PosY1"  value="(JDSH_MaRiCB2yw_MainCutBox2_ywidth*cos(-JDSH_MaRiFeayz_MainRibFeet_angleyzplane*GENV_PiS180)+JDSH_MaRiFewzw_MainRibFeet_wholezwidth*sin(-JDSH_MaRiFeayz_MainRibFeet_angleyzplane*GENV_PiS180))/2." />
+<var name="JDSH_MainRib_cb2_PosZ1"  value="JDSH_MaRiFewzw_MainRibFeet_wholezwidth+(-JDSH_MaRiCB2yw_MainCutBox2_ywidth*sin(-JDSH_MaRiFeayz_MainRibFeet_angleyzplane*GENV_PiS180)+JDSH_MaRiFewzw_MainRibFeet_wholezwidth*cos(-JDSH_MaRiFeayz_MainRibFeet_angleyzplane*GENV_PiS180))/2." />
+
+<var name="JDSH_MainRib_cb2_PosX2"  value="JDSH_MaRiFuxle_MainRibFull_xlength+(JDSH_MaRiCB2xw_MainCutBox2_xwidth*GENV_Co45)/2.-(JDSH_MaRiFerao_MainRibFeet_radialoffset+JDSH_MaRiFearw_MainRibFeet_attredwidth)*GENV_Si45 " />
+<var name="JDSH_MainRib_cb2_PosY2"  value="JDSH_MaRiFuyle_MainRibFull_ylength+(JDSH_MaRiCB2xw_MainCutBox2_xwidth*GENV_Si45)/2.-(JDSH_MaRiFerao_MainRibFeet_radialoffset+JDSH_MaRiFearw_MainRibFeet_attredwidth)*GENV_Co45 " />
+
+<var name="JDSH_MainRib_cb2_PosX3"  value="JDSH_MaRiFuxle_MainRibFull_xlength+(JDSH_MaRiCB2xw_MainCutBox2_xwidth*GENV_Co45)/2.-(JDSH_MaRiFerao_MainRibFeet_radialoffset+JDSH_MaRiFeatw_MainRibFeet_attribwidth)*GENV_Si45 " />
+<var name="JDSH_MainRib_cb2_PosY3"  value="JDSH_MaRiFuyle_MainRibFull_ylength+(JDSH_MaRiCB2xw_MainCutBox2_xwidth*GENV_Si45)/2.-(JDSH_MaRiFerao_MainRibFeet_radialoffset+JDSH_MaRiFeatw_MainRibFeet_attribwidth)*GENV_Co45 " />
+<var name="JDSH_MainRib_cb2_PosZ3"  value="JDSH_MaRiFewzw_MainRibFeet_wholezwidth/2.+JDSH_MaRiFeazw_MainRibFeet_attribzwidth " />
+
+<var name="JDSH_MainRib_cb2_PosX4"  value="JDSH_MaRiFuxle_MainRibFull_xlength-(JDSH_MaRiCB2xw_MainCutBox2_xwidth*cos(JDSH_MaRiFeata_MainRibFeet_attribangle*GENV_PiS180)*GENV_Co45)/2.-(JDSH_MaRiFerao_MainRibFeet_radialoffset+JDSH_MaRiFeatw_MainRibFeet_attribwidth)*GENV_Si45+JDSH_MaRiFewzw_MainRibFeet_wholezwidth*sin(JDSH_MaRiFeata_MainRibFeet_attribangle*GENV_PiS180)*GENV_Si45/2. " />
+<var name="JDSH_MainRib_cb2_PosY4"  value="JDSH_MaRiFuyle_MainRibFull_ylength-(JDSH_MaRiCB2xw_MainCutBox2_xwidth*cos(JDSH_MaRiFeata_MainRibFeet_attribangle*GENV_PiS180)*GENV_Si45)/2.-(JDSH_MaRiFerao_MainRibFeet_radialoffset+JDSH_MaRiFeatw_MainRibFeet_attribwidth)*GENV_Co45+JDSH_MaRiFewzw_MainRibFeet_wholezwidth*sin(JDSH_MaRiFeata_MainRibFeet_attribangle*GENV_PiS180)*GENV_Co45/2. " />
+<var name="JDSH_MainRib_cb2_PosZ4"  value="(JDSH_MaRiCB2xw_MainCutBox2_xwidth*sin(JDSH_MaRiFeata_MainRibFeet_attribangle*GENV_PiS180)+JDSH_MaRiFewzw_MainRibFeet_wholezwidth*cos(JDSH_MaRiFeata_MainRibFeet_attribangle*GENV_PiS180))/2.+JDSH_MaRiFeazw_MainRibFeet_attribzwidth+JDSH_MaRiFeazo_MainRibFeet_attribzoffset " />
+
+<var name="JDSH_MainRib_cb3_PosX"  value="(JDSH_MaRiCB3xw_MainCutBox3_xwidth*sin(JDSH_MaRiFeaxy_MainRibFeet_anglexyplane*GENV_PiS180)+JDSH_MaRiCB3yw_MainCutBox3_ywidth*cos(JDSH_MaRiFeaxy_MainRibFeet_anglexyplane*GENV_PiS180))/2. + JDSH_MaRiFefxl_MainRibFeet_feetxlength" />
+<var name="JDSH_MainRib_cb3_PosY"  value="JDSH_MaRiFefyo_MainRibFeet_feetyoffset+(-JDSH_MaRiCB3xw_MainCutBox3_xwidth*cos(JDSH_MaRiFeaxy_MainRibFeet_anglexyplane*GENV_PiS180)+JDSH_MaRiCB3yw_MainCutBox3_ywidth*sin(JDSH_MaRiFeaxy_MainRibFeet_anglexyplane*GENV_PiS180))/2." />
+
+<var name="JDSH_MainRib_cb4_PosX1"  value="(-JDSH_MaRiCB3xw_MainCutBox3_xwidth*sin(JDSH_MaRiFeaxy_MainRibFeet_anglexyplane*GENV_PiS180)+JDSH_MaRiCB4yw_MainCutBox4_ywidth*cos(JDSH_MaRiFeaxy_MainRibFeet_anglexyplane*GENV_PiS180))/2. + JDSH_MaRiFefxo_MainRibFeet_feetxoffset " />
+<var name="JDSH_MainRib_cb4_PosY1"  value="JDSH_MaRiFefyo_MainRibFeet_feetyoffset + (JDSH_MaRiCB3xw_MainCutBox3_xwidth*cos(JDSH_MaRiFeaxy_MainRibFeet_anglexyplane*GENV_PiS180)+JDSH_MaRiCB4yw_MainCutBox4_ywidth*sin(JDSH_MaRiFeaxy_MainRibFeet_anglexyplane*GENV_PiS180))/2." />
+
+<var name="JDSH_MainRib_cb4_PosX2"  value="(-JDSH_MaRiCB3xw_MainCutBox3_xwidth*GENV_Si45+JDSH_MaRiCB4yw_MainCutBox4_ywidth*GENV_Co45)/2.+JDSH_MaRiFefxl_MainRibFeet_feetxlength+JDSH_MaRiFellp_MainRibFeet_lowlenpro-JDSH_MaRiCB4yw_MainCutBox4_ywidth/2." />
+<var name="JDSH_MainRib_cb4_PosY2"  value="-(JDSH_MaRiCB3xw_MainCutBox3_xwidth*GENV_Co45+JDSH_MaRiCB4yw_MainCutBox4_ywidth*GENV_Si45)/2.+JDSH_MaRiFefyo_MainRibFeet_feetyoffset+JDSH_MaRiFellp_MainRibFeet_lowlenpro2+JDSH_MaRiCB4yw_MainCutBox4_ywidth/2." />
+<var name="JDSH_MainRib_cb4_PosZ2"  value="-JDSH_MaRiCuBzw_MainCutBox_zwidth/2.+JDSH_MaRiFeozw_MainRibFeet_offsetzwidth" />
+
+<var name="JDSH_MainRib_cb5_PosX1"  value="(JDSH_MaRiCB2xw_MainCutBox2_xwidth*GENV_Co45-JDSH_MaRiCB2yw_MainCutBox2_ywidth*GENV_Si45)/2.+JDSH_MaRiFefxo_MainRibFeet_feetxoffset+JDSH_MaRiFeulp_MainRibFeet_upplenpro2 " />
+<var name="JDSH_MainRib_cb5_PosY1"  value="(JDSH_MaRiCB2xw_MainCutBox2_xwidth*GENV_Si45+JDSH_MaRiCB2yw_MainCutBox2_ywidth*GENV_Co45)/2.+JDSH_MaRiFefyo_MainRibFeet_feetyoffset+JDSH_MaRiFellp_MainRibFeet_lowlenpro2+JDSH_MaRiFemad_MainRibFeet_mainwidth*cos(JDSH_MaRiFetca_MainRibFeet_topcutangel)" />
+
+<var name="JDSH_MainRib_cb5_PosX2"  value="(JDSH_MaRiCB2xw_MainCutBox2_xwidth*GENV_Co45+JDSH_MaRiCB2yw_MainCutBox2_ywidth*GENV_Si45)/2.+JDSH_MaRiFefxl_MainRibFeet_feetxlength+JDSH_MaRiFellp_MainRibFeet_lowlenpro " />
+<var name="JDSH_MainRib_cb5_PosY2"  value="(JDSH_MaRiCB2xw_MainCutBox2_xwidth*GENV_Si45-JDSH_MaRiCB2yw_MainCutBox2_ywidth*GENV_Co45)/2.+JDSH_MaRiFellp_MainRibFeet_lowlenpro2+JDSH_MaRiFefyo_MainRibFeet_feetyoffset" />
+
+<subtraction name="JDSH_MainRib_Left">
+  <posXYZ  volume="JDSH_MainRib_basis"   X_Y_Z="JDSH_MainRib_basis_PosX; JDSH_MainRib_basis_PosY; JDSH_MainRib_basis_PosZ"   />
+  <posXYZ  volume="JDSH_MainRib_cutbox1" X_Y_Z="JDSH_MainRib_cb1_PosX1 ; JDSH_MainRib_cb1_PosY1 ; JDSH_MainRib_basis_PosZ "  />
+  <posXYZ  volume="JDSH_MainRib_cutbox1" X_Y_Z="JDSH_MainRib_cb1_PosX2 ; JDSH_MainRib_cb1_PosY2 ; JDSH_MainRib_basis_PosZ "  />
+  <posXYZ  volume="JDSH_MainRib_cutbox2" X_Y_Z="JDSH_MainRib_cb2_PosX1 ; JDSH_MainRib_cb2_PosY1 ; JDSH_MainRib_cb2_PosZ1  "  rot=" JDSH_MaRiFeayz_MainRibFeet_angleyzplane ;  0. ; 0. "     />
+  <posXYZ  volume="JDSH_MainRib_cutbox2" X_Y_Z="JDSH_MainRib_cb2_PosX2 ; JDSH_MainRib_cb2_PosY2 ; JDSH_MainRib_basis_PosZ "  rot=" 0. ;  0. ; 45. "  />
+  <posXYZ  volume="JDSH_MainRib_cutbox2" X_Y_Z="JDSH_MainRib_cb2_PosX3 ; JDSH_MainRib_cb2_PosY3 ; JDSH_MainRib_cb2_PosZ3 "   rot=" 0. ;  0. ; 45. "  />
+  <posXYZ  volume="JDSH_MainRib_cutbox2" X_Y_Z="JDSH_MainRib_cb2_PosX4 ; JDSH_MainRib_cb2_PosY4 ; JDSH_MainRib_cb2_PosZ4  "  rot=" 0. ;  JDSH_MaRiFeata_MainRibFeet_attribangle ; 45. "     />
+  <posXYZ  volume="JDSH_MainRib_cutbox3" X_Y_Z="JDSH_MainRib_cb3_PosX  ; JDSH_MainRib_cb3_PosY  ; JDSH_MainRib_basis_PosZ "  rot=" 0. ;  0. ; JDSH_MaRiFeaxy_MainRibFeet_anglexyplane-90. " />
+  <posXYZ  volume="JDSH_MainRib_cutbox4" X_Y_Z="JDSH_MainRib_cb4_PosX1 ; JDSH_MainRib_cb4_PosY1 ; JDSH_MainRib_basis_PosZ "  rot=" 0. ;  0. ; JDSH_MaRiFeaxy_MainRibFeet_anglexyplane-90. " />
+  <posXYZ  volume="JDSH_MainRib_cutbox4" X_Y_Z="JDSH_MainRib_cb4_PosX2 ; JDSH_MainRib_cb4_PosY2 ; JDSH_MainRib_cb4_PosZ2  "  rot=" 0. ;  0. ; 45. "  />
+  <posXYZ  volume="JDSH_MainRib_cutbox5" X_Y_Z="JDSH_MainRib_cb5_PosX1 ; JDSH_MainRib_cb5_PosY1 ; JDSH_MainRib_basis_PosZ "  rot=" 0. ;  0. ; 45. "  />
+  <posXYZ  volume="JDSH_MainRib_cutbox5" X_Y_Z="JDSH_MainRib_cb5_PosX2 ; JDSH_MainRib_cb5_PosY2 ; JDSH_MainRib_basis_PosZ "  rot=" 0. ;  0. ; 45. "  />
+</subtraction>
+
+<subtraction name="JDSH_MainRib_Right">
+  <posXYZ  volume="JDSH_MainRib_basis"   X_Y_Z="-JDSH_MainRib_basis_PosX; JDSH_MainRib_basis_PosY; JDSH_MainRib_basis_PosZ"   />
+  <posXYZ  volume="JDSH_MainRib_cutbox1" X_Y_Z="-JDSH_MainRib_cb1_PosX1 ; JDSH_MainRib_cb1_PosY1 ; JDSH_MainRib_basis_PosZ "  />
+  <posXYZ  volume="JDSH_MainRib_cutbox1" X_Y_Z="-JDSH_MainRib_cb1_PosX2 ; JDSH_MainRib_cb1_PosY2 ; JDSH_MainRib_basis_PosZ "  />
+  <posXYZ  volume="JDSH_MainRib_cutbox2" X_Y_Z="-JDSH_MainRib_cb2_PosX1 ; JDSH_MainRib_cb2_PosY1 ; JDSH_MainRib_cb2_PosZ1  "  rot=" JDSH_MaRiFeayz_MainRibFeet_angleyzplane ;  0. ; 0. "      />
+  <posXYZ  volume="JDSH_MainRib_cutbox2" X_Y_Z="-JDSH_MainRib_cb2_PosX2 ; JDSH_MainRib_cb2_PosY2 ; JDSH_MainRib_basis_PosZ "  rot=" 0. ;  0. ; -45. "  />
+  <posXYZ  volume="JDSH_MainRib_cutbox2" X_Y_Z="-JDSH_MainRib_cb2_PosX3 ; JDSH_MainRib_cb2_PosY3 ; JDSH_MainRib_cb2_PosZ3 "   rot=" 0. ;  0. ; -45. "  />
+  <posXYZ  volume="JDSH_MainRib_cutbox2" X_Y_Z="-JDSH_MainRib_cb2_PosX4 ; JDSH_MainRib_cb2_PosY4 ; JDSH_MainRib_cb2_PosZ4  "  rot=" 0. ;  -JDSH_MaRiFeata_MainRibFeet_attribangle ; -45. "    />
+  <posXYZ  volume="JDSH_MainRib_cutbox3" X_Y_Z="-JDSH_MainRib_cb3_PosX  ; JDSH_MainRib_cb3_PosY  ; JDSH_MainRib_basis_PosZ "  rot=" 0. ;  0. ; -JDSH_MaRiFeaxy_MainRibFeet_anglexyplane-90. " />
+  <posXYZ  volume="JDSH_MainRib_cutbox4" X_Y_Z="-JDSH_MainRib_cb4_PosX1 ; JDSH_MainRib_cb4_PosY1 ; JDSH_MainRib_basis_PosZ "  rot=" 0. ;  0. ; -JDSH_MaRiFeaxy_MainRibFeet_anglexyplane-90. " />
+  <posXYZ  volume="JDSH_MainRib_cutbox4" X_Y_Z="-JDSH_MainRib_cb4_PosX2 ; JDSH_MainRib_cb4_PosY2 ; JDSH_MainRib_cb4_PosZ2  "  rot=" 0. ;  0. ; -45. "  />
+  <posXYZ  volume="JDSH_MainRib_cutbox5" X_Y_Z="-JDSH_MainRib_cb5_PosX1 ; JDSH_MainRib_cb5_PosY1 ; JDSH_MainRib_basis_PosZ "  rot=" 0. ;  0. ; -45. "  />
+  <posXYZ  volume="JDSH_MainRib_cutbox5" X_Y_Z="-JDSH_MainRib_cb5_PosX2 ; JDSH_MainRib_cb5_PosY2 ; JDSH_MainRib_basis_PosZ "  rot=" 0. ;  0. ; -45. "  />
+</subtraction>
+
+<!-- BEGIN confirmation with atljd___0042-vAC (if no other comment) -->
+<var  name="JDSH_MaRiTPthi_MainRibTP_thickness"      value="   50.  " />
+<var  name="JDSH_MaRiTPful_MainRibTP_fulllength"     value=" 1295.  " />
+<var  name="JDSH_MaRiTPblo_MainRibTP_biglenoff"      value="  985.  " />
+<var  name="JDSH_MaRiTPslo_MainRibTP_smalllenoff"    value="  229.  " />
+<var  name="JDSH_MaRiTPfuw_MainRibTP_fullwidth"      value="  855.  " />
+<var  name="JDSH_MaRiTPwof_MainRibTP_widthoffset"    value="   46.  " />
+<var  name="JDSH_MaRiTPrew_MainRibTP_reducedwidth"   value="  730.  " />
+<var  name="JDSH_MaRiBSPof_MainRibBS_loweroffset"    value="  588.  " />
+<var  name="JDSH_MainRib_Support_PosX"               value=" 2640.  " />  <!-- confirmed atljd___0028-vAC -->
+<var  name="JDSH_MainRib_Support_PosZoffset"         value="  905.  " />
+<!-- END confirmation with atljd___0042-vAC -->
+
+<!-- BEGIN confirmation with atljd___0126-v0 (if no other comment) -->
+<var  name="JDSH_MaRiSPthi_MainRibSP_thickness"      value="   35.  " />
+<var  name="JDSH_MaRiSPfii_MainRibSP_firstincline"   value="  175.  " />
+<var  name="JDSH_MaRiSPsei_MainRibSP_secondincline"  value=" 1346.  " />
+<var  name="JDSH_MaRiBPfhi_MainRibBP_fullheight"     value="  253.  " />
+<var  name="JDSH_MaRiBPmhi_MainRibBP_middleheight"   value="  180.  " />
+<var  name="JDSH_MaRiBPrhi_MainRibBP_reducedheight"  value="  100.  " />
+<var  name="JDSH_MaRiBPhbo_MainRibBP_heightbigoff"   value="   85.  " />
+<var  name="JDSH_MaRiBPhso_MainRibBP_heightsmalloff" value="   40.  " />
+<var  name="JDSH_MaRiBPihs_MainRibBP_interheight1"   value="  160.  " />
+<var  name="JDSH_MaRiBPihb_MainRibBP_interheight2"   value="  166.  " />
+<var  name="JDSH_MaRiBPfii_MainRibBP_firstincline"   value="  149.  " />
+<var  name="JDSH_MaRiBPbso_MainRibBP_beginstepone"   value="  379.  " />
+<var  name="JDSH_MaRiBPeso_MainRibBP_endstepone"     value="  524.  " />
+<var  name="JDSH_MaRiBPbst_MainRibBP_beginsteptwo"   value=" 1011.5 " />
+<var  name="JDSH_MaRiBPest_MainRibBP_endsteptwo"     value=" 1156.5 " />
+<var  name="JDSH_MaRiBPsei_MainRibBP_secondincline"  value=" 1386.5 " />
+<var  name="JDSH_MaRiBPful_MainRibBP_fulllength"     value=" 1536.  " />
+<var  name="JDSH_MaRiBSPid_MainRibBS_interdistance"  value="  356.  " />
+<var  name="JDSH_MaRiIPOle_MainRibIP_length"         value="  325.  " />
+<!-- END confirmation with atljd___0126-v0 -->
+
+<var  name="JDSH_RiAPRadi_RibAirPad_Radius"          value="  350. "/>  <!-- equivalent to AECT_SupWheel_AirPad_Rad -->
+<var  name="JDSH_RiAPHigh_RibAirPad_Hight"           value="  125. "/>  <!-- equivalent to AECT_SupWheel_AirPad_Hight -->
+<var  name="JDSH_RiAPFuDi_RibAirPad_FullDist"        value=" 1880. "/>
+<var  name="JDSH_RiAPSupZ_RibAirPad_SuppDZ"          value="  290." />
+
+<var  name="JDSH_RiAPSupY_RibAirPad_SuppDY"          value="-RAIL_Ypos_aboveJFSH + JDSH_MainRibFeet_PosY - 2.*JDSH_MaRiTPthi_MainRibTP_thickness - JDSH_RiAPHigh_RibAirPad_Hight "/>
+
+<box name="JDSH_MainRib_InterPlateOne"    material="ShieldIron"  X_Y_Z="JDSH_MaRiBSPid_MainRibBS_interdistance; JDSH_MaRiTPthi_MainRibTP_thickness; JDSH_MaRiIPOle_MainRibIP_length"/>
+<box name="JDSH_MainRib_InterPlateTwo"    material="ShieldIron"  X_Y_Z="JDSH_MaRiBSPid_MainRibBS_interdistance; JDSH_MaRiTPthi_MainRibTP_thickness; JDSH_MaRiIPOle_MainRibIP_length-JDSH_MaRiBPful_MainRibBP_fulllength+JDSH_MaRiTPful_MainRibTP_fulllength"/>
+<box name="JDSH_MainRib_InterPlateThree"  material="ShieldIron"  X_Y_Z="JDSH_MaRiBSPid_MainRibBS_interdistance; JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_MaRiBPhso_MainRibBP_heightsmalloff; JDSH_MaRiBPful_MainRibBP_fulllength-JDSH_MaRiTPful_MainRibTP_fulllength"/>
+
+<box  name="JDSH_MainRibSP_APSupp"    material="ShieldIron"     X_Y_Z=" JDSH_MaRiBSPid_MainRibBS_interdistance ; JDSH_RiAPSupY_RibAirPad_SuppDY ; JDSH_RiAPSupZ_RibAirPad_SuppDZ" />
+<tubs name="JDSH_MainRibAP_AirPad"    material="ShieldIron"     Rio_Z=" 0. ; JDSH_RiAPRadi_RibAirPad_Radius ; JDSH_RiAPHigh_RibAirPad_Hight"  />
+
+<gvxy     name="JDSH_MainRib_TopPlate"         material="ShieldIron"   dZ="JDSH_MaRiTPthi_MainRibTP_thickness"  >
+  <gvxy_point  X_Y="                                    0. ;   0.                                  "   />
+  <gvxy_point  X_Y="                                    0. ;   JDSH_MaRiTPblo_MainRibTP_biglenoff  "   />
+  <gvxy_point  X_Y="  JDSH_MaRiTPwof_MainRibTP_widthoffset ;   JDSH_MaRiTPblo_MainRibTP_biglenoff  "   />
+  <gvxy_point  X_Y="  JDSH_MaRiTPwof_MainRibTP_widthoffset ;  JDSH_MaRiTPful_MainRibTP_fulllength  "   />
+  <gvxy_point  X_Y=" JDSH_MaRiTPrew_MainRibTP_reducedwidth ;  JDSH_MaRiTPful_MainRibTP_fulllength  "   />
+  <gvxy_point  X_Y=" JDSH_MaRiTPrew_MainRibTP_reducedwidth ; JDSH_MaRiTPslo_MainRibTP_smalllenoff  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiTPfuw_MainRibTP_fullwidth ; JDSH_MaRiTPslo_MainRibTP_smalllenoff  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiTPfuw_MainRibTP_fullwidth ;   0.                                  "   />
+</gvxy>
+
+<gvxy     name="JDSH_MainRib_LargeSidePlate"         material="ShieldIron"   dZ="JDSH_MaRiTPthi_MainRibTP_thickness"  >
+  <gvxy_point  X_Y="                                     0. ;     0.                                   "   />
+  <gvxy_point  X_Y="                                     0. ;   JDSH_MaRiBPhbo_MainRibBP_heightbigoff  "   />
+  <gvxy_point  X_Y="  JDSH_MaRiBPfii_MainRibBP_firstincline ;   JDSH_MaRiBPihb_MainRibBP_interheight2  "   />
+  <gvxy_point  X_Y="  JDSH_MaRiBPfii_MainRibBP_firstincline ;     JDSH_MaRiBPfhi_MainRibBP_fullheight  "   />
+  <gvxy_point  X_Y="  JDSH_MaRiBPbso_MainRibBP_beginstepone ;     JDSH_MaRiBPfhi_MainRibBP_fullheight  "   />
+  <gvxy_point  X_Y="  JDSH_MaRiBPbso_MainRibBP_beginstepone ;  JDSH_MaRiBPrhi_MainRibBP_reducedheight  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiBPeso_MainRibBP_endstepone ;  JDSH_MaRiBPrhi_MainRibBP_reducedheight  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiBPeso_MainRibBP_endstepone ;   JDSH_MaRiBPmhi_MainRibBP_middleheight  "   />
+  <gvxy_point  X_Y="  JDSH_MaRiBPbst_MainRibBP_beginsteptwo ;   JDSH_MaRiBPmhi_MainRibBP_middleheight  "   />
+  <gvxy_point  X_Y="  JDSH_MaRiBPbst_MainRibBP_beginsteptwo ;  JDSH_MaRiBPrhi_MainRibBP_reducedheight  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiBPest_MainRibBP_endsteptwo ;  JDSH_MaRiBPrhi_MainRibBP_reducedheight  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiBPest_MainRibBP_endsteptwo ;     JDSH_MaRiBPfhi_MainRibBP_fullheight  "   />
+  <gvxy_point  X_Y=" JDSH_MaRiBPsei_MainRibBP_secondincline ;     JDSH_MaRiBPfhi_MainRibBP_fullheight  "   />
+  <gvxy_point  X_Y=" JDSH_MaRiBPsei_MainRibBP_secondincline ;   JDSH_MaRiBPihs_MainRibBP_interheight1  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiBPful_MainRibBP_fulllength ;   JDSH_MaRiBPhbo_MainRibBP_heightbigoff  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiBPful_MainRibBP_fulllength ; JDSH_MaRiBPhso_MainRibBP_heightsmalloff  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiTPful_MainRibTP_fulllength ; JDSH_MaRiBPhso_MainRibBP_heightsmalloff  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiTPful_MainRibTP_fulllength ;     0.                                   "   />
+</gvxy>
+
+<gvxy     name="JDSH_MainRib_SmallSidePlate"         material="ShieldIron"   dZ="JDSH_MaRiSPthi_MainRibSP_thickness"  >
+  <gvxy_point  X_Y="                                     0. ;   0.                                     "   />
+  <gvxy_point  X_Y="                                     0. ;   JDSH_MaRiBPhbo_MainRibBP_heightbigoff  "   />
+  <gvxy_point  X_Y="  JDSH_MaRiSPfii_MainRibSP_firstincline ;   JDSH_MaRiBPmhi_MainRibBP_middleheight  "   />
+  <gvxy_point  X_Y="  JDSH_MaRiBPbso_MainRibBP_beginstepone ;   JDSH_MaRiBPmhi_MainRibBP_middleheight  "   />
+  <gvxy_point  X_Y="  JDSH_MaRiBPbso_MainRibBP_beginstepone ;  JDSH_MaRiBPrhi_MainRibBP_reducedheight  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiBPeso_MainRibBP_endstepone ;  JDSH_MaRiBPrhi_MainRibBP_reducedheight  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiBPeso_MainRibBP_endstepone ;   JDSH_MaRiBPmhi_MainRibBP_middleheight  "   />
+  <gvxy_point  X_Y="  JDSH_MaRiBPbst_MainRibBP_beginsteptwo ;   JDSH_MaRiBPmhi_MainRibBP_middleheight  "   />
+  <gvxy_point  X_Y="  JDSH_MaRiBPbst_MainRibBP_beginsteptwo ;  JDSH_MaRiBPrhi_MainRibBP_reducedheight  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiBPest_MainRibBP_endsteptwo ;  JDSH_MaRiBPrhi_MainRibBP_reducedheight  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiBPest_MainRibBP_endsteptwo ;   JDSH_MaRiBPmhi_MainRibBP_middleheight  "   />
+  <gvxy_point  X_Y=" JDSH_MaRiSPsei_MainRibSP_secondincline ;   JDSH_MaRiBPmhi_MainRibBP_middleheight  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiBPful_MainRibBP_fulllength ;   JDSH_MaRiBPhbo_MainRibBP_heightbigoff  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiBPful_MainRibBP_fulllength ; JDSH_MaRiBPhso_MainRibBP_heightsmalloff  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiTPful_MainRibTP_fulllength ; JDSH_MaRiBPhso_MainRibBP_heightsmalloff  "   />
+  <gvxy_point  X_Y="    JDSH_MaRiTPful_MainRibTP_fulllength ;   0.                                     "   />
+</gvxy>
+
+<composition name="JDSH_MainRib_Support_Right">
+  <posXYZ  volume="JDSH_MainRib_TopPlate"       X_Y_Z="0 ; JDSH_MaRiTPthi_MainRibTP_thickness/2. ; 0"   rot=" -90. ;  0. ; 0. "  />
+  <posXYZ  volume="JDSH_MainRib_InterPlateOne"  X_Y_Z="JDSH_MaRiBSPof_MainRibBS_loweroffset-JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_MaRiBSPid_MainRibBS_interdistance/2.; -JDSH_MaRiTPthi_MainRibTP_thickness/2.; -JDSH_MaRiIPOle_MainRibIP_length/2."/>
+  <posXYZ  volume="JDSH_MainRib_InterPlateTwo"  X_Y_Z="JDSH_MaRiBSPof_MainRibBS_loweroffset-JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_MaRiBSPid_MainRibBS_interdistance/2.; -JDSH_MaRiTPthi_MainRibTP_thickness/2.; (JDSH_MaRiIPOle_MainRibIP_length-JDSH_MaRiBPful_MainRibBP_fulllength-JDSH_MaRiTPful_MainRibTP_fulllength)/2."/>
+  <posXYZ  volume="JDSH_MainRib_InterPlateThree"  X_Y_Z="JDSH_MaRiBSPof_MainRibBS_loweroffset-JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_MaRiBSPid_MainRibBS_interdistance/2.; (-JDSH_MaRiBPhso_MainRibBP_heightsmalloff-JDSH_MaRiTPthi_MainRibTP_thickness)/2.; -(JDSH_MaRiBPful_MainRibBP_fulllength+JDSH_MaRiTPful_MainRibTP_fulllength)/2."/>
+  <posXYZ  volume="JDSH_MainRib_LargeSidePlate" X_Y_Z="JDSH_MaRiBSPof_MainRibBS_loweroffset-JDSH_MaRiTPthi_MainRibTP_thickness/2. ; 0 ; 0"   rot=" 180. ;  90. ; 0. "  />
+  <posXYZ  volume="JDSH_MainRib_SmallSidePlate" X_Y_Z="JDSH_MaRiBSPof_MainRibBS_loweroffset-JDSH_MaRiBSPid_MainRibBS_interdistance-JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_MaRiSPthi_MainRibSP_thickness/2. ; 0 ; 0"   rot=" 180. ;  90. ; 0. "  />
+  <posXYZ  volume="JDSH_MainRibSP_APSupp"  X_Y_Z=" JDSH_MaRiBSPof_MainRibBS_loweroffset-JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_MaRiBSPid_MainRibBS_interdistance/2.; -JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_RiAPSupY_RibAirPad_SuppDY/2.; -JDSH_MaRiBPful_MainRibBP_fulllength/2. + JDSH_RiAPFuDi_RibAirPad_FullDist/2.-JDSH_RiAPRadi_RibAirPad_Radius "/>
+  <posXYZ  volume="JDSH_MainRibSP_APSupp"  X_Y_Z=" JDSH_MaRiBSPof_MainRibBS_loweroffset-JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_MaRiBSPid_MainRibBS_interdistance/2.; -JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_RiAPSupY_RibAirPad_SuppDY/2.; -JDSH_MaRiBPful_MainRibBP_fulllength/2. - JDSH_RiAPFuDi_RibAirPad_FullDist/2.+JDSH_RiAPRadi_RibAirPad_Radius "/>
+  <posXYZ  volume="JDSH_MainRibAP_AirPad"  X_Y_Z=" JDSH_MaRiBSPof_MainRibBS_loweroffset-JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_MaRiBSPid_MainRibBS_interdistance/2.; -JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_RiAPSupY_RibAirPad_SuppDY-JDSH_RiAPHigh_RibAirPad_Hight/2.; -JDSH_MaRiBPful_MainRibBP_fulllength/2. + JDSH_RiAPFuDi_RibAirPad_FullDist/2.-JDSH_RiAPRadi_RibAirPad_Radius"  rot=" 90. ;  0. ; 0. "/>
+  <posXYZ  volume="JDSH_MainRibAP_AirPad"  X_Y_Z=" JDSH_MaRiBSPof_MainRibBS_loweroffset-JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_MaRiBSPid_MainRibBS_interdistance/2.; -JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_RiAPSupY_RibAirPad_SuppDY-JDSH_RiAPHigh_RibAirPad_Hight/2.; -JDSH_MaRiBPful_MainRibBP_fulllength/2. - JDSH_RiAPFuDi_RibAirPad_FullDist/2.+JDSH_RiAPRadi_RibAirPad_Radius"  rot=" 90. ;  0. ; 0. "/>
+</composition>
+
+<composition name="JDSH_MainRib_Support_Left">
+  <posXYZ  volume="JDSH_MainRib_TopPlate"       X_Y_Z="0 ; JDSH_MaRiTPthi_MainRibTP_thickness/2. ; 0"   rot=" -90. ;  0. ; 180. "  />
+  <posXYZ  volume="JDSH_MainRib_InterPlateOne"  X_Y_Z="-JDSH_MaRiBSPof_MainRibBS_loweroffset+JDSH_MaRiTPthi_MainRibTP_thickness+JDSH_MaRiBSPid_MainRibBS_interdistance/2.; -JDSH_MaRiTPthi_MainRibTP_thickness/2.; -JDSH_MaRiIPOle_MainRibIP_length/2."/>
+  <posXYZ  volume="JDSH_MainRib_InterPlateTwo"  X_Y_Z="-JDSH_MaRiBSPof_MainRibBS_loweroffset+JDSH_MaRiTPthi_MainRibTP_thickness+JDSH_MaRiBSPid_MainRibBS_interdistance/2.; -JDSH_MaRiTPthi_MainRibTP_thickness/2.; (JDSH_MaRiIPOle_MainRibIP_length-JDSH_MaRiBPful_MainRibBP_fulllength-JDSH_MaRiTPful_MainRibTP_fulllength)/2."/>
+  <posXYZ  volume="JDSH_MainRib_InterPlateThree"  X_Y_Z="-JDSH_MaRiBSPof_MainRibBS_loweroffset+JDSH_MaRiTPthi_MainRibTP_thickness+JDSH_MaRiBSPid_MainRibBS_interdistance/2.; (-JDSH_MaRiBPhso_MainRibBP_heightsmalloff-JDSH_MaRiTPthi_MainRibTP_thickness)/2.; -(JDSH_MaRiBPful_MainRibBP_fulllength+JDSH_MaRiTPful_MainRibTP_fulllength)/2."/>
+  <posXYZ  volume="JDSH_MainRib_LargeSidePlate" X_Y_Z="-JDSH_MaRiBSPof_MainRibBS_loweroffset+JDSH_MaRiTPthi_MainRibTP_thickness/2. ; 0 ; 0"   rot=" 180. ;  90. ; 0. "  />
+  <posXYZ  volume="JDSH_MainRib_SmallSidePlate" X_Y_Z="-JDSH_MaRiBSPof_MainRibBS_loweroffset+JDSH_MaRiBSPid_MainRibBS_interdistance+JDSH_MaRiTPthi_MainRibTP_thickness+JDSH_MaRiSPthi_MainRibSP_thickness/2. ; 0 ; 0"   rot=" 180. ;  90. ; 0. "  />
+  <posXYZ  volume="JDSH_MainRibSP_APSupp"  X_Y_Z="-JDSH_MaRiBSPof_MainRibBS_loweroffset+JDSH_MaRiTPthi_MainRibTP_thickness+JDSH_MaRiBSPid_MainRibBS_interdistance/2.; -JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_RiAPSupY_RibAirPad_SuppDY/2.; -JDSH_MaRiBPful_MainRibBP_fulllength/2. + JDSH_RiAPFuDi_RibAirPad_FullDist/2.-JDSH_RiAPRadi_RibAirPad_Radius "/>
+  <posXYZ  volume="JDSH_MainRibSP_APSupp"  X_Y_Z="-JDSH_MaRiBSPof_MainRibBS_loweroffset+JDSH_MaRiTPthi_MainRibTP_thickness+JDSH_MaRiBSPid_MainRibBS_interdistance/2.; -JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_RiAPSupY_RibAirPad_SuppDY/2.; -JDSH_MaRiBPful_MainRibBP_fulllength/2. - JDSH_RiAPFuDi_RibAirPad_FullDist/2.+JDSH_RiAPRadi_RibAirPad_Radius "/>
+  <posXYZ  volume="JDSH_MainRibAP_AirPad"  X_Y_Z="-JDSH_MaRiBSPof_MainRibBS_loweroffset+JDSH_MaRiTPthi_MainRibTP_thickness+JDSH_MaRiBSPid_MainRibBS_interdistance/2.; -JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_RiAPSupY_RibAirPad_SuppDY-JDSH_RiAPHigh_RibAirPad_Hight/2.; -JDSH_MaRiBPful_MainRibBP_fulllength/2. + JDSH_RiAPFuDi_RibAirPad_FullDist/2.-JDSH_RiAPRadi_RibAirPad_Radius"  rot=" 90. ;  0. ; 0. "/>
+  <posXYZ  volume="JDSH_MainRibAP_AirPad"  X_Y_Z="-JDSH_MaRiBSPof_MainRibBS_loweroffset+JDSH_MaRiTPthi_MainRibTP_thickness+JDSH_MaRiBSPid_MainRibBS_interdistance/2.; -JDSH_MaRiTPthi_MainRibTP_thickness-JDSH_RiAPSupY_RibAirPad_SuppDY-JDSH_RiAPHigh_RibAirPad_Hight/2.; -JDSH_MaRiBPful_MainRibBP_fulllength/2. - JDSH_RiAPFuDi_RibAirPad_FullDist/2.+JDSH_RiAPRadi_RibAirPad_Radius"  rot=" 90. ;  0. ; 0. "/>
+</composition>
+
+<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+<!--  Additional Shielding installed winter shutdown 2011/2012  -->
+<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<!-- BEGIN confirmation with ATL-MH-ER-0024 (if no other comment) -->
+<var  name="JDSH_AddShield_OutRing_Lead_innerRad"      value="  730. " />
+<var  name="JDSH_AddShield_OutRing_Lead_outerRad"      value="  749.5" />
+<var  name="JDSH_AddShield_OutRing_Poly_innerRad"      value="  630. " />
+<var  name="JDSH_AddShield_OutRing_Iron_innerRad"      value="  445. " />
+<var  name="JDSH_AddShield_Zwidth"                     value="   46. " />
+<!-- END confirmation with ATL-MH-ER-0024 -->
+
+<tubs name="JDSH_AddShield_Lead"    material="Lead"                  Rio_Z=" JDSH_AddShield_OutRing_Lead_innerRad ; JDSH_AddShield_OutRing_Lead_outerRad ; JDSH_AddShield_Zwidth"  />
+<tubs name="JDSH_AddShield_Poly"    material="PolyBoronB4C"          Rio_Z=" JDSH_AddShield_OutRing_Poly_innerRad ; JDSH_AddShield_OutRing_Lead_innerRad - GENV_Eps ; JDSH_AddShield_Zwidth"  />
+<tubs name="JDSH_AddShield_Iron"    material="ShieldIron"            Rio_Z=" JDSH_AddShield_OutRing_Iron_innerRad ; JDSH_AddShield_OutRing_Poly_innerRad - GENV_Eps ; JDSH_AddShield_Zwidth"  />
+
+<!-- ++++++++++++++++++++++++++++++++++++++++++ -->
+<!--  Additional Shielding installed for run 2  -->
+<!-- ++++++++++++++++++++++++++++++++++++++++++ -->
+
+<!-- for documentation also see https://indico.cern.ch/event/299435/session/0/contribution/11/material/slides/1.pdf -->
+<var  name="JDSH_Run2_FrtInnRing_Poly_innerRad"      value="  850. " /> <!-- atujd___0003-v0 -->
+<var  name="JDSH_Run2_FrtInnRing_Poly_outerRad"      value="  950. " /> <!-- atujd___0003-v0 -->
+<var  name="JDSH_Run2_FrtInnRing_Poly_Zwidth"        value="   35. " /> <!-- sum of atujd___0003-v0 and atujd___0012-v0 (merge of 2 rings) -->
+<var  name="JDSH_Run2_FrtOutRing_Lead_Radthick"      value="   10. " /> <!-- atujd___0004-v0 -->
+<var  name="JDSH_Run2_FrtOutRing_Lead_Zwidth"        value="   34. " /> <!-- atujd___0004-v0 -->
+<var  name="JDSH_Run2_FrtCoverRg_Iron_Radthick"      value="    1. " /> <!-- atujd___0010-v0 -->
+<var  name="JDSH_Run2_FrtCoverRg_Iron_TotRadtk"      value="   25. " /> <!-- atujd___0010-v0 -->
+<var  name="JDSH_Run2_FrtZposition"                  value="   47.9" /> <!-- presentation above says 53. however adjusted to calo in sim -->
+
+<tubs name="JDSH_Run2_FrtLeadRing"       material="Lead"          Rio_Z=" JDSH_Run2_FrtInnRing_Poly_outerRad+GENV_Eps ; JDSH_Run2_FrtInnRing_Poly_outerRad+JDSH_Run2_FrtOutRing_Lead_Radthick ; JDSH_Run2_FrtOutRing_Lead_Zwidth"  />
+<tubs name="JDSH_Run2_FrtPolyRing"       material="PolyBoron207HD5"  Rio_Z=" JDSH_Run2_FrtInnRing_Poly_innerRad ; JDSH_Run2_FrtInnRing_Poly_outerRad ; JDSH_Run2_FrtInnRing_Poly_Zwidth"  />
+<pcon name="JDSH_Run2_FrtIronRingCover"  material="ShieldIron"  >
+  <polyplane  Rio_Z="JDSH_Run2_FrtInnRing_Poly_outerRad+JDSH_Run2_FrtOutRing_Lead_Radthick+JDSH_Run2_FrtCoverRg_Iron_Radthick+GENV_Eps-JDSH_Run2_FrtCoverRg_Iron_TotRadtk; JDSH_Run2_FrtInnRing_Poly_outerRad+JDSH_Run2_FrtOutRing_Lead_Radthick+JDSH_Run2_FrtCoverRg_Iron_Radthick+GENV_Eps; 0." />
+  <polyplane  Rio_Z="JDSH_Run2_FrtInnRing_Poly_outerRad+JDSH_Run2_FrtOutRing_Lead_Radthick+JDSH_Run2_FrtCoverRg_Iron_Radthick+GENV_Eps-JDSH_Run2_FrtCoverRg_Iron_TotRadtk; JDSH_Run2_FrtInnRing_Poly_outerRad+JDSH_Run2_FrtOutRing_Lead_Radthick+JDSH_Run2_FrtCoverRg_Iron_Radthick+GENV_Eps; -JDSH_Run2_FrtCoverRg_Iron_Radthick + GENV_Eps" />
+  <polyplane  Rio_Z="JDSH_Run2_FrtInnRing_Poly_outerRad+JDSH_Run2_FrtOutRing_Lead_Radthick+GENV_Eps; JDSH_Run2_FrtInnRing_Poly_outerRad+JDSH_Run2_FrtOutRing_Lead_Radthick+JDSH_Run2_FrtCoverRg_Iron_Radthick+GENV_Eps; - JDSH_Run2_FrtCoverRg_Iron_Radthick + GENV_Eps" />
+  <polyplane  Rio_Z="JDSH_Run2_FrtInnRing_Poly_outerRad+JDSH_Run2_FrtOutRing_Lead_Radthick+GENV_Eps; JDSH_Run2_FrtInnRing_Poly_outerRad+JDSH_Run2_FrtOutRing_Lead_Radthick+JDSH_Run2_FrtCoverRg_Iron_Radthick+GENV_Eps; -JDSH_Run2_FrtOutRing_Lead_Zwidth - JDSH_Run2_FrtCoverRg_Iron_Radthick" />
+</pcon>
+
+<var  name="JDSH_Run2_BckBckRing_Poly_innerRad"      value="  532.5" /> <!-- atujd___0023-v0 -->
+<var  name="JDSH_Run2_BckBckRing_Poly_outerRad"      value="  582.5" /> <!-- atujd___0023-v0 -->
+<var  name="JDSH_Run2_BckBckRing_Poly_Zwidth"        value="  200. " /> <!-- atujd___0023-v0 , 8*25 see presentation -->
+
+<var  name="JDSH_Run2_BckFrtRing_Poly_innerRad"      value="  532.5" /> <!-- atujd___0022-v0 -->
+<var  name="JDSH_Run2_BckFrtRing_Poly_outerRad"      value="  800. " /> <!-- atujd___0022-v0 -->
+<var  name="JDSH_Run2_BckFrtRing_Poly_Zwidth"        value="   40. " /> <!-- sum atujd___0022-v0 and atujd___0021-v0 -->
+
+<tubs name="JDSH_Run2_BckBckRing"       material="PolyBoron207HD5"  Rio_Z=" JDSH_Run2_BckBckRing_Poly_innerRad ; JDSH_Run2_BckBckRing_Poly_outerRad ; JDSH_Run2_BckBckRing_Poly_Zwidth"  />
+<tubs name="JDSH_Run2_BckFrtRing"       material="PolyBoron207HD5"  Rio_Z=" JDSH_Run2_BckFrtRing_Poly_innerRad ; JDSH_Run2_BckFrtRing_Poly_outerRad ; JDSH_Run2_BckFrtRing_Poly_Zwidth"  />
+
+<!--     name       =  JD Return Ring                section name       = "Shielding" -->
+
+<!-- +++++++++++++++++++++++++++++++++++++++++++++++++ -->
+<!--  JD Return Ring                                   -->
+<!-- +++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<!-- BEGIN confirmation with atljd___0146-vAA (if no other comment) -->
+<var name="JDReturnH"                              value="220. " />
+<var name="JDReturnL"                              value="385. " />
+<var name="JDReturnW"                              value=" 25. " />
+<var name="JDReturnT"                              value="680. " />
+<var name="JDReturnS"                              value="604.5" />
+<var name="JDReturnD"                              value="310. " />
+<!-- END confirmation with atljd___0146-vAA -->
+<var name="JDReturnO"                              value="114. " />  <!-- confirmed atljd___0147-vAA -->
+
+
+<box name="JDReturnTra"  material="ShieldIron"     X_Y_Z="JDReturnL;2.*JDReturnW;JDReturnH" />
+<trd name="JDReturntop"  material="ShieldIron"     Xmp_Ymp_Z="JDReturnT  ; JDReturnS ; JDReturnW ;  JDReturnW ; JDReturnL "  />
+<box name="JDReturnSubBox" material="ShieldIron"   X_Y_Z="JDReturnT;JDReturnT; JDReturnT" />
+
+<composition name="JDReturnR1">
+   <posXYZ volume="JDReturnTra"          X_Y_Z=" JDReturnD/2.;Zero;Zero " rot="  0.;  90; 90"/>
+   <posXYZ volume="JDReturnTra"          X_Y_Z="-JDReturnD/2.;Zero;Zero " rot="  0.;  90; 90"/>
+</composition>
+<composition name="JDReturnRing1">
+   <posXYZ volume="JDReturntop"    X_Y_Z="Zero; JDReturnH/2.+JDReturnW/2.;Zero" rot=" 0.;270.; 0." />
+   <posXYZ volume="JDReturntop"    X_Y_Z="Zero;-JDReturnH/2.-JDReturnW/2.;Zero" rot=" 0.;270.; 0." />
+   <posXYZ volume="JDReturnR1"     X_Y_Z="Zero;Zero;Zero" rot=" 0.; 270.;0."/>
+</composition>
+<composition name="JDReturnRing0">
+  <posXYZ volume="JDReturnRing1"     X_Y_Z="JDSH_BDRRouRa_RetrunRing_outerRadius-JDReturnL/2. ; 0 ; -(JDReturnH+2.*JDReturnW)/2. " rot=" 90.; 0.; 0."/>
+</composition>
+
+<subtraction name="JDReturntopS"  >
+  <posXYZ  volume="JDReturntop"       X_Y_Z="0 ; 0. ; 0"   rot=" 0. ;  0. ; 0. "  />
+  <posXYZ  volume="JDReturnSubBox"    X_Y_Z="JDReturnT*(GENV_Si225+GENV_Co225)/2.-JDReturnT/2.+JDReturnO ; 0. ; JDReturnT*(-GENV_Si225+GENV_Co225)/2.+JDReturnL/2. " rot=" 0. ;  22.5 ; 0. " />
+</subtraction>
+<subtraction name="JDReturnR1S1">
+  <posXYZ  volume="JDReturnTra"       X_Y_Z="JDReturnD/2.;Zero; Zero" rot="  0.;  90; 90."/>
+  <posXYZ  volume="JDReturnSubBox"    X_Y_Z="JDReturnT*(GENV_Si225+GENV_Co225)/2.-JDReturnT/2.+JDReturnO ; 0. ; JDReturnT*(-GENV_Si225+GENV_Co225)/2.+JDReturnL/2. " rot=" 0. ;  22.5 ; 0. " />
+</subtraction>
+<subtraction name="JDReturnR1S2">
+  <posXYZ  volume="JDReturnTra"       X_Y_Z="-JDReturnD/2.;Zero; Zero" rot="  0.;  90; 90."/>
+  <posXYZ  volume="JDReturnSubBox"    X_Y_Z="JDReturnT*(GENV_Si225+GENV_Co225)/2.-JDReturnT/2.+JDReturnO ; 0. ; JDReturnT*(-GENV_Si225+GENV_Co225)/2.+JDReturnL/2. " rot=" 0. ;  22.5 ; 0. " />
+</subtraction>
+<composition name="JDReturnRing1S">
+   <posXYZ volume="JDReturntopS"    X_Y_Z="Zero; JDReturnH/2.+JDReturnW/2.;Zero" rot=" 0.;270.; 0."/>
+   <posXYZ volume="JDReturntopS"    X_Y_Z="Zero;-JDReturnH/2.-JDReturnW/2.;Zero" rot=" 0.;270.; 0."/>
+   <posXYZ volume="JDReturnR1S1"     X_Y_Z="Zero;Zero;Zero" rot=" 0.;270.; 0."/>
+   <posXYZ volume="JDReturnR1S2"     X_Y_Z="Zero;Zero;Zero" rot=" 0.;270.; 0."/>
+</composition>
+<composition name="JDReturnRing0S">
+  <posXYZ volume="JDReturnRing1S"     X_Y_Z="JDSH_BDRRouRa_RetrunRing_outerRadius-JDReturnL/2. ; 0 ; -(JDReturnH+2.*JDReturnW)/2. " rot=" 90.; 0.; 0."/>
+</composition>
+
+<composition name="JDReturnRing">
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.;   0.  "/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.;  11.25"/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.;  22.5 "/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.;  33.75"/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.;  45.  "/>
+  <posXYZ volume="JDReturnRing0S" X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.;  67.5 "/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.;  78.75"/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.;  90.  "/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 101.25"/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 112.5 "/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 123.75"/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 135.  "/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 146.25"/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 157.5 "/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 168.75"/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 180.  "/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 191.25"/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 202.5 "/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 213.75"/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 225.  "/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 236.25"/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 247.5 "/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 258.75"/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 270.  "/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 281.25"/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 292.5 "/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 303.75"/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 315.  "/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 326.25"/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 337.5 "/>
+  <posXYZ volume="JDReturnRing0"  X_Y_Z=" 0.; 0.;0" rot=" 0.; 0.; 348.75"/>
+</composition>
+
+<!-- +++++++++++++++++++++++++++++++++++++++++++++++++ -->
+<!--  JD Shield Composition of volumes                 -->
+<!-- +++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<composition  name="JDSH_ShieldAssembly_ASide_Base" >
+  <posXYZ  volume="JDSH_FrontDisk"                       X_Y_Z="0.;0.;JDSH_FDzposit_FrontDisk_Z"     rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_BackDisk"                        X_Y_Z="0.;0.;JDSH_BDzposit_BackDisk_Z"      rot="0.;180.;0." />
+  <posXYZ  volume="JDSH_Tube"                            X_Y_Z="0.;0.;JDSH_TUBEzpos_Tube_Z"          rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_Plug"                            X_Y_Z="0.;0.;JDSH_PLUGzpos_Plug_Z"          rot="0.;0.;0." />
+  <posXYZ  volume="JDReturnRing"                         X_Y_Z="0.;0.;JDSH_BDzposit_BackDisk_Z-JDSH_BDthickn_BackDisk_thickness/2.-2.*JDReturnW-JDReturnH"   rot="0.;180.;0." />
+  <posXYZ  volume="JDSH_MainRib_Support_Left"            X_Y_Z=" -JDSH_MainRib_Support_PosX ; JDSH_MainRibFeet_PosY-JDSH_MaRiTPthi_MainRibTP_thickness ; JDSH_CAzposit_ConeAssembly_Z+JDSH_MainRib_Support_PosZoffset "   />
+  <posXYZ  volume="JDSH_MainRib_Support_Right"           X_Y_Z="  JDSH_MainRib_Support_PosX ; JDSH_MainRibFeet_PosY-JDSH_MaRiTPthi_MainRibTP_thickness ; JDSH_CAzposit_ConeAssembly_Z+JDSH_MainRib_Support_PosZoffset "   />  
+</composition>
+
+<composition  name="JDSH_ShieldAssembly_ASide_2011" >
+  <posXYZ  volume="JDSH_MainRib_Left"                    X_Y_Z=" -JDSH_MainRibFeet_PosX ; JDSH_MainRibFeet_PosY ; JDSH_CAzposit_ConeAssembly_Z "   />
+  <posXYZ  volume="JDSH_MainRib_Right"                   X_Y_Z="  JDSH_MainRibFeet_PosX ; JDSH_MainRibFeet_PosY ; JDSH_CAzposit_ConeAssembly_Z "   />
+  <posXYZ  volume="JDSH_ConeAssembly"                    X_Y_Z="0.;0.;JDSH_CAzposit_ConeAssembly_Z" />
+  <posXYZ  volume="JDSH_SmallWheelHub"                   X_Y_Z="0.;0.;JDSH_SWHzposi_SmallWheelHub_Z" rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_SmallWheelHubPoly"               X_Y_Z="0.;0.;JDSH_SWHzposi_SmallWheelHub_Z" rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_SmallWheelHubLead"               X_Y_Z="0.;0.;JDSH_SWHzposi_SmallWheelHub_Z" rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_ShieldAssembly_ASide_Base"       X_Y_Z="0.;0.; 0."  />
+</composition>
+
+<composition  name="JDSH_ShieldAssembly_ASide_2012" >
+  <posXYZ  volume="JDSH_AddShield_Lead"                  X_Y_Z="0.;0.; - JDSH_AddShield_Zwidth/2. - GENV_Eps"  />
+  <posXYZ  volume="JDSH_AddShield_Poly"                  X_Y_Z="0.;0.; - JDSH_AddShield_Zwidth/2. - GENV_Eps"  />
+  <posXYZ  volume="JDSH_AddShield_Iron"                  X_Y_Z="0.;0.; - JDSH_AddShield_Zwidth/2. - GENV_Eps"  />
+  <posXYZ  volume="JDSH_ShieldAssembly_ASide_2011"       X_Y_Z="0.;0.; 0."  />
+</composition>
+
+<composition  name="JDSH_ShieldAssembly_ASide" >
+  <posXYZ  volume="JDSH_Run2_BckFrtRing"                 X_Y_Z="0.; 0.; JDSH_SWHzposi_SmallWheelHub_Z + JDSH_SWHlengt_SmallWheelHub_length + JDSH_Run2_BckFrtRing_Poly_Zwidth/2. + GENV_Eps"  />
+  <posXYZ  volume="JDSH_Run2_BckBckRing"                 X_Y_Z="0.; 0.; JDSH_SWHzposi_SmallWheelHub_Z + JDSH_SWHlengt_SmallWheelHub_length + JDSH_Run2_BckFrtRing_Poly_Zwidth + JDSH_Run2_BckBckRing_Poly_Zwidth/2. + 2.*GENV_Eps"  />
+  <posXYZ  volume="JDSH_Run2_FrtIronRingCover"           X_Y_Z="0.;0.; -JDSH_Run2_FrtZposition+JDSH_Run2_FrtOutRing_Lead_Zwidth + 2.*JDSH_Run2_FrtCoverRg_Iron_Radthick"  />
+  <posXYZ  volume="JDSH_Run2_FrtPolyRing"                X_Y_Z="0.;0.; -JDSH_Run2_FrtZposition+JDSH_Run2_FrtInnRing_Poly_Zwidth/2."  />
+  <posXYZ  volume="JDSH_Run2_FrtLeadRing"                X_Y_Z="0.;0.; -JDSH_Run2_FrtZposition-JDSH_Run2_FrtOutRing_Lead_Zwidth/2.+JDSH_Run2_FrtInnRing_Poly_Zwidth"  />
+  <posXYZ  volume="JDSH_ShieldAssembly_ASide_2012"       X_Y_Z="0.;0.; 0."  />
+</composition>
+
+<composition  name="JDSH_ShieldAssembly_CSide_Base" >
+  <posXYZ  volume="JDSH_FrontDisk"                       X_Y_Z="0.;0.;JDSH_FDzposit_FrontDisk_Z"     rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_BackDisk"                        X_Y_Z="0.;0.;JDSH_BDzposit_BackDisk_Z"      rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_Tube"                            X_Y_Z="0.;0.;JDSH_TUBEzpos_Tube_Z"          rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_Plug"                            X_Y_Z="0.;0.;JDSH_PLUGzpos_Plug_Z"          rot="0.;0.;0." />
+  <posXYZ  volume="JDReturnRing"                         X_Y_Z="0.;0.;JDSH_BDzposit_BackDisk_Z-JDSH_BDthickn_BackDisk_thickness/2."   rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_MainRib_Support_Left"            X_Y_Z=" -JDSH_MainRib_Support_PosX ; JDSH_MainRibFeet_PosY-JDSH_MaRiTPthi_MainRibTP_thickness ; JDSH_CAzposit_ConeAssembly_Z+JDSH_MainRib_Support_PosZoffset "   />
+  <posXYZ  volume="JDSH_MainRib_Support_Right"           X_Y_Z="  JDSH_MainRib_Support_PosX ; JDSH_MainRibFeet_PosY-JDSH_MaRiTPthi_MainRibTP_thickness ; JDSH_CAzposit_ConeAssembly_Z+JDSH_MainRib_Support_PosZoffset "   />  
+</composition>
+
+<composition  name="JDSH_ShieldAssembly_CSide_2011" >
+  <posXYZ  volume="JDSH_MainRib_Left"                    X_Y_Z=" -JDSH_MainRibFeet_PosX ; JDSH_MainRibFeet_PosY ; JDSH_CAzposit_ConeAssembly_Z "   />
+  <posXYZ  volume="JDSH_MainRib_Right"                   X_Y_Z="  JDSH_MainRibFeet_PosX ; JDSH_MainRibFeet_PosY ; JDSH_CAzposit_ConeAssembly_Z "   />
+  <posXYZ  volume="JDSH_ConeAssembly"                    X_Y_Z="0.;0.;JDSH_CAzposit_ConeAssembly_Z"  rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_SmallWheelHub"                   X_Y_Z="0.;0.;JDSH_SWHzposi_SmallWheelHub_Z" rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_SmallWheelHubPoly"               X_Y_Z="0.;0.;JDSH_SWHzposi_SmallWheelHub_Z" rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_SmallWheelHubLead"               X_Y_Z="0.;0.;JDSH_SWHzposi_SmallWheelHub_Z" rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_ShieldAssembly_CSide_Base"       X_Y_Z="0.;0.; 0."  />
+</composition>
+
+<composition  name="JDSH_ShieldAssembly_CSide_2012" >
+  <posXYZ  volume="JDSH_AddShield_Lead"                  X_Y_Z="0.;0.; - JDSH_AddShield_Zwidth/2. - GENV_Eps"  />
+  <posXYZ  volume="JDSH_AddShield_Poly"                  X_Y_Z="0.;0.; - JDSH_AddShield_Zwidth/2. - GENV_Eps"  />
+  <posXYZ  volume="JDSH_AddShield_Iron"                  X_Y_Z="0.;0.; - JDSH_AddShield_Zwidth/2. - GENV_Eps"  />
+  <posXYZ  volume="JDSH_ShieldAssembly_CSide_2011"       X_Y_Z="0.;0.; 0."  />
+</composition>
+
+<composition  name="JDSH_ShieldAssembly_CSide" >
+  <posXYZ  volume="JDSH_Run2_BckFrtRing"                 X_Y_Z="0.; 0.; JDSH_SWHzposi_SmallWheelHub_Z + JDSH_SWHlengt_SmallWheelHub_length + JDSH_Run2_BckFrtRing_Poly_Zwidth/2. + GENV_Eps"  />
+  <posXYZ  volume="JDSH_Run2_BckBckRing"                 X_Y_Z="0.; 0.; JDSH_SWHzposi_SmallWheelHub_Z + JDSH_SWHlengt_SmallWheelHub_length + JDSH_Run2_BckFrtRing_Poly_Zwidth + JDSH_Run2_BckBckRing_Poly_Zwidth/2. + 2.*GENV_Eps"  />
+  <posXYZ  volume="JDSH_Run2_FrtIronRingCover"           X_Y_Z="0.;0.; -JDSH_Run2_FrtZposition+JDSH_Run2_FrtOutRing_Lead_Zwidth + 2.*JDSH_Run2_FrtCoverRg_Iron_Radthick"  />
+  <posXYZ  volume="JDSH_Run2_FrtPolyRing"                X_Y_Z="0.;0.; -JDSH_Run2_FrtZposition+JDSH_Run2_FrtInnRing_Poly_Zwidth/2."  />
+  <posXYZ  volume="JDSH_Run2_FrtLeadRing"                X_Y_Z="0.;0.; -JDSH_Run2_FrtZposition-JDSH_Run2_FrtOutRing_Lead_Zwidth/2.+JDSH_Run2_FrtInnRing_Poly_Zwidth"  />
+  <posXYZ  volume="JDSH_ShieldAssembly_CSide_2012"       X_Y_Z="0.;0.; 0."  />
+</composition>
+
+<composition  name="JDSH_Shield" >
+  <posXYZ  volume="JDSH_ShieldAssembly_ASide"            X_Y_Z="0.;0.; JDSH_NomiZpos_Nominal_zpos"     rot="0.;0.;0." />
+  <posXYZ  volume="JDSH_ShieldAssembly_CSide"            X_Y_Z="0.;0.;-JDSH_NomiZpos_Nominal_zpos"     rot="0.;JDSH_rota180d_180degRotation;0." />
+</composition>
+
+<!--     name       =  JT Toroid Shielding           section name       = "Shielding" -->
+<!--  Primary variables  -->
+<var  name="JTSH_OPlength_OuterPlugs_length"                        value=" 4736. " />  <!-- confirmed atljt___0055-vAC -->
+<!-- BEGIN confirmation with atljt___0059-vAB (if no other comment) -->
+<var  name="JTSH_OPinnRad_OuterPlugs_innerRadius"                   value="  600. " />
+<var  name="JTSH_OPinnRad_OuterPlugs_innerRadiusSmall"              value="  562.5" /> <!-- confirmed atljt___0056-vAC -->
+<var  name="JTSH_OPoutRad_OuterPlugs_outerRadius"                   value="  802. " />
+<var  name="JTSH_IPlength_InnerPlugs_length"                        value=" 3686. " />  <!-- confirmed atljt___0055-vAC -->
+<var  name="JTSH_IPinnRa1_InnerPlugs_innerRadius1"                  value="  170.8" />
+<var  name="JTSH_IPtiltAn_InnerPlugs_tiltAngle"                     value="    1.1" />
+<var  name="JTSH_IPzoffse_InnerPlugs_zoffset"                       value=" 1000. " />
+<var  name="JTSH_PRlenoff_PolyRings_lengthoffset"                   value="   67. " />  <!-- confirmed atljt___0055-vAC -->
+<!-- END confirmation with atljt___0059-vAB -->
+<!-- BEGIN confirmation with atljt___0052-vAA (if no other comment) -->
+<var  name="JTSH_PRinnRad_PolyRings_innerRadius"                    value="  802. " />
+<var  name="JTSH_PRinRaof_PolyRings_innerRadoff"                    value="   15. " />
+<var  name="JTSH_PRoutRad_PolyRings_outerRadius"                    value="  857. " />
+<var  name="JTSH_PRexttAn_PolyRings_extension_tiltAngle"            value="   18. " />
+<!-- END confirmation with atljt___0052-vAA -->
+<var  name="JTSH_PRipexle_PolyRings_IPextension_length"             value="  205. " />  <!-- confirmed atljt___0059-vAB -->
+<var  name="JTSH_zpositio_Shield_Z"                                 value=" 7917. " />  <!-- atljt___0055-vAC says 7941. , TC says wrong by 3cm -->
+<var  name="JTSH_yrotatio_Shield_rotY"                              value="  180. " />  <!-- NO CONFIRMATION NEEDED -->
+
+<var  name="JTSH_IPinnRa2_InnerPlugs_innerRadius2" value="JTSH_IPinnRa1_InnerPlugs_innerRadius1 + JTSH_IPlength_InnerPlugs_length *tan(JTSH_IPtiltAn_InnerPlugs_tiltAngle*GENV_PiS180)"/> <!-- changed by Sven.Menke@CERN.CH Jul 2020 from JTSH_OPlength_OuterPlugs_length to JTSH_IPlength_InnerPlugs_length -->
+<var  name="JTSH_PRextzpo_PolyRings_extension_z"   value="(JTSH_PRoutRad_PolyRings_outerRadius-JTSH_PRinnRad_PolyRings_innerRadius-JTSH_PRinRaof_PolyRings_innerRadoff)/tan(JTSH_PRexttAn_PolyRings_extension_tiltAngle*GENV_PiS180)"/>
+
+<var  name="JTSH_OPzposi1_OuterPlugs_z1"    value="JTSH_PRipexle_PolyRings_IPextension_length" />
+<var  name="JTSH_OPzposi2_OuterPlugs_z2"    value="JTSH_OPzposi1_OuterPlugs_z1+JTSH_OPlength_OuterPlugs_length" />
+
+<var  name="JTSH_IPzposi1_InnerPlugs_z1"    value="JTSH_IPzoffse_InnerPlugs_zoffset" />
+<var  name="JTSH_IPzposi2_InnerPlugs_z2"    value="JTSH_IPzposi1_InnerPlugs_z1+JTSH_IPlength_InnerPlugs_length" />
+
+<var  name="JTSH_PRzposi1_PolyRings_z1"     value="JTSH_OPzposi2_OuterPlugs_z2-JTSH_OPlength_OuterPlugs_length+JTSH_PRlenoff_PolyRings_lengthoffset" />
+<var  name="JTSH_PRzposi2_PolyRings_z2"     value="JTSH_OPzposi2_OuterPlugs_z2-JTSH_OPlength_OuterPlugs_length+JTSH_PRlenoff_PolyRings_lengthoffset+JTSH_PRextzpo_PolyRings_extension_z" />
+<var  name="JTSH_PRzposi3_PolyRings_z3"     value="JTSH_OPzposi2_OuterPlugs_z2" />
+
+<!-- Modelization of JT Plugs (outer and inner combined) -->
+<pcon   name="JTSH_Plugs"          material="ShieldIron"  >
+  <polyplane  Rio_Z="JTSH_OPinnRad_OuterPlugs_innerRadius;JTSH_OPoutRad_OuterPlugs_outerRadius;JTSH_OPzposi1_OuterPlugs_z1" />
+  <polyplane  Rio_Z="JTSH_OPinnRad_OuterPlugs_innerRadius;JTSH_OPoutRad_OuterPlugs_outerRadius;JTSH_IPzposi1_InnerPlugs_z1" />
+  <polyplane Rio_Z="JTSH_IPinnRa1_InnerPlugs_innerRadius1;JTSH_OPoutRad_OuterPlugs_outerRadius;JTSH_IPzposi1_InnerPlugs_z1" />
+  <polyplane Rio_Z="JTSH_IPinnRa2_InnerPlugs_innerRadius2;JTSH_OPoutRad_OuterPlugs_outerRadius;JTSH_IPzposi2_InnerPlugs_z2" />
+  <polyplane  Rio_Z="JTSH_OPinnRad_OuterPlugs_innerRadiusSmall;JTSH_OPoutRad_OuterPlugs_outerRadius;JTSH_IPzposi2_InnerPlugs_z2" />
+  <polyplane  Rio_Z="JTSH_OPinnRad_OuterPlugs_innerRadiusSmall;JTSH_OPoutRad_OuterPlugs_outerRadius;JTSH_OPzposi2_OuterPlugs_z2" />
+</pcon>
+
+<pcon name="JTSH_PolyRings" material="PolyBoronB2O3" >
+  <polyplane Rio_Z="JTSH_PRinnRad_PolyRings_innerRadius;JTSH_PRinnRad_PolyRings_innerRadius+JTSH_PRinRaof_PolyRings_innerRadoff;JTSH_PRzposi1_PolyRings_z1" />
+  <polyplane Rio_Z="JTSH_PRinnRad_PolyRings_innerRadius;JTSH_PRoutRad_PolyRings_outerRadius;JTSH_PRzposi2_PolyRings_z2" />
+  <polyplane Rio_Z="JTSH_PRinnRad_PolyRings_innerRadius;JTSH_PRoutRad_PolyRings_outerRadius;JTSH_PRzposi3_PolyRings_z3" />
+</pcon>
+
+<!--  **************************************************************
+      ***                   Installed for Run2                  ****
+      **************************************************************  -->
+
+<var name="JTC_JTCC_JTCCommonAngle"           value="     66. " /> <!-- atujt___0020-v0 -->
+<var name="JTC_JTCB_JTCBottomRadYOffset"      value="    177. " /> <!-- atujt___0020-v0 -->
+<var name="JTC_JTCB_JTCBottomCenterCutX"      value="    300. " /> <!-- atujt___0020-v0 -->
+<var name="JTC_JTCB_JTCBottomCenterCutY"      value="JTC_JTCB_JTCBottomCenterCutX" /> <!-- atujt___0020-v0 -->
+<var name="JTC_JTCB_JTCBottomSideCutY"        value="    400. " /> <!-- atujt___0020-v0 -->
+<var name="JTC_JTCB_JTCBottomBigRad"          value="   1500. " /> <!-- atujt___0020-v0 -->
+<var name="JTC_JTCB_JTCBottomBigX"            value="   1220. " /> <!-- atujt___0020-v0 -->
+<var name="JTC_JTCB_JTCBottomBigZ"            value="     25. + 13. " /> <!-- atujt___0020-v0 , adjustments discussed with TC-->
+<var name="JTC_JTCB_JTCBottomSmallRad"        value="    864.9" /> <!-- atujt___0022-v0 says 865. but overlaps with ECT_EV_CentralTube -->
+<var name="JTC_JTCB_JTCBottomSmallX"          value="    610. " /> <!-- atujt___0022-v0 -->
+<var name="JTC_JTCB_JTCBottomSmallZ"          value="     36. - 13. " /> <!-- atujt___0022-v0 , TC says distance to JF is 4cm, it's mounted on ECT -->
+
+<var name="JTC_JTCT_JTCTopInnerRad"           value="    522.5" /> <!-- atujt___0018-v0 -->
+<var name="JTC_JTCT_JTCTopMediumRad"          value="   1050. " /> <!-- atujt___0029-v0 -->
+<var name="JTC_JTCT_JTCTopOuterRad"           value="   1500. " /> <!-- atujt___0018-v0 -->
+<var name="JTC_JTCT_JTCTopFullZ"              value="     65. + 10. " /> <!-- atujt___0018-v0 , adding 1cm to close gap to ECT, agreed with TC -->
+<var name="JTC_JTCT_JTCTopThickZ"             value="     45. +  5. " /> <!-- atujt___0018-v0 , adding 5mm just to be a bit closer, agreed with TC-->
+<var name="JTC_JTCT_JTCTopCenterXCut"         value="    374. " /> <!-- atujt___0026-v0 -->
+<var name="JTC_JTCT_JTCTopSideCutY"           value="    395. " /> <!-- atujt___0026-v0 -->
+<var name="JTC_JTCT_JTCTopRadYOff"            value="    161. " /> <!-- atujt___0026-v0 -->
+
+<var name="JTC_JTCB_BottomTiltedXOffset" value="tan(JTC_JTCC_JTCCommonAngle*GENV_PiS180)*(JTC_JTCB_JTCBottomSideCutY-JTC_JTCB_JTCBottomRadYOffset)"/>
+<var name="JTC_JTCT_TopTiltedXOffset"    value="tan(JTC_JTCC_JTCCommonAngle*GENV_PiS180)*(JTC_JTCT_JTCTopSideCutY-JTC_JTCT_JTCTopRadYOff)"/>
+
+<tubs name="JTC_JTCB_BottomBigTubeBase" material="PolyBoron207HD5"  Rio_Z=" 0.; JTC_JTCB_JTCBottomBigRad; JTC_JTCB_JTCBottomBigZ" nbPhi="20" profile="180.; 180."/>
+<tubs name="JTC_JTCB_BottomSmallTubeBase" material="PolyBoron207HD5"  Rio_Z=" 0.; JTC_JTCB_JTCBottomSmallRad; JTC_JTCB_JTCBottomSmallZ" nbPhi="20" profile="180.; 180."/>
+<tubs name="JTC_JTCB_BottomAuxCutTube" material="PolyBoron207HD5"  Rio_Z=" 0.; JFSH_PLUGouRa_Plug_outerRadius+GENV_Eps; JTC_JTCT_JTCTopFullZ" />
+
+<!-- not required since approximations in JFSH
+box name="JTC_JTCB_BottomCentralCut" material="PolyBoron207HD5" X_Y_Z=" 2.*(JTC_JTCB_JTCBottomCenterCutX+GENV_Eps); JTC_JTCB_JTCBottomCenterCutY+2.*GENV_Eps; JTC_JTCB_JTCBottomBigZ+2.*GENV_Eps"/>
+-->
+<box name="JTC_JTCB_SideCut" material="PolyBoron207HD5" X_Y_Z=" 2.*JTC_JTCB_JTCBottomCenterCutX; JTC_JTCB_JTCBottomSideCutY+2.*GENV_Eps; JTC_JTCB_JTCBottomBigZ+4.*GENV_Eps"/>
+<box name="JTC_JTCB_EndCut" material="PolyBoron207HD5" X_Y_Z=" JTC_JTCB_JTCBottomBigX; JTC_JTCB_JTCBottomBigRad+2.*GENV_Eps; JTC_JTCB_JTCBottomBigZ+6.*GENV_Eps"/>
+<box name="JTC_JTCB_TiltCut" material="PolyBoron207HD5" X_Y_Z=" JTC_JTCB_JTCBottomBigRad; JTC_JTCB_JTCBottomBigRad; JTC_JTCT_JTCTopFullZ+8.*GENV_Eps"/>
+
+<subtraction name="JTC_JTCB_BottomBigTube">
+  <posXYZ volume="JTC_JTCB_BottomBigTubeBase"  X_Y_Z=" 0.; 0.; 0. " />
+  <posXYZ volume="JTC_JTCB_BottomAuxCutTube"   X_Y_Z=" 0.; 0.; 0. " />
+<!--  <posXYZ volume="JTC_JTCB_BottomCentralCut"   X_Y_Z=" 0.; -JTC_JTCB_JTCBottomCenterCutY/2.+GENV_Eps; 0." /> -->
+  <posXYZ volume="JTC_JTCB_SideCut"       X_Y_Z="  2.*JTC_JTCB_JTCBottomCenterCutX; -JTC_JTCB_JTCBottomSideCutY/2.+GENV_Eps; 0." />
+  <posXYZ volume="JTC_JTCB_SideCut"       X_Y_Z=" -2.*JTC_JTCB_JTCBottomCenterCutX; -JTC_JTCB_JTCBottomSideCutY/2.+GENV_Eps; 0." />
+  <posXYZ volume="JTC_JTCB_EndCut"   X_Y_Z="  1.5*JTC_JTCB_JTCBottomBigX; -JTC_JTCB_JTCBottomBigRad/2.; 0." />
+  <posXYZ volume="JTC_JTCB_EndCut"   X_Y_Z=" -1.5*JTC_JTCB_JTCBottomBigX; -JTC_JTCB_JTCBottomBigRad/2.; 0." />
+  <posXYZ volume="JTC_JTCB_TiltCut"   X_Y_Z=" -JTC_JTCB_BottomTiltedXOffset-cos((45.-(90-JTC_JTCC_JTCCommonAngle))*GENV_PiS180)*JTC_JTCB_JTCBottomBigRad/sqrt(2.); -JTC_JTCB_JTCBottomSideCutY+sin((45.-(90-JTC_JTCC_JTCCommonAngle))*GENV_PiS180)*JTC_JTCB_JTCBottomBigRad/sqrt(2.); 0." rot="0.; 0.; 90.-JTC_JTCC_JTCCommonAngle"/>
+  <posXYZ volume="JTC_JTCB_TiltCut"   X_Y_Z=" JTC_JTCB_BottomTiltedXOffset+cos((45.-(90-JTC_JTCC_JTCCommonAngle))*GENV_PiS180)*JTC_JTCB_JTCBottomBigRad/sqrt(2.); -JTC_JTCB_JTCBottomSideCutY+sin((45.-(90-JTC_JTCC_JTCCommonAngle))*GENV_PiS180)*JTC_JTCB_JTCBottomBigRad/sqrt(2.); 0." rot="0.; 0.; -90.+JTC_JTCC_JTCCommonAngle"/>
+</subtraction>
+
+<subtraction name="JTC_JTCB_BottomSmallTube">
+  <posXYZ volume="JTC_JTCB_BottomSmallTubeBase"  X_Y_Z=" 0.; 0.; 0. " />
+  <posXYZ volume="JTC_JTCB_BottomAuxCutTube"   X_Y_Z=" 0.; 0.; 0. " />
+<!--  <posXYZ volume="JTC_JTCB_BottomCentralCut"   X_Y_Z=" 0.; -JTC_JTCB_JTCBottomCenterCutY/2.+GENV_Eps; 0." /> -->
+  <posXYZ volume="JTC_JTCB_SideCut"       X_Y_Z="  2.*JTC_JTCB_JTCBottomCenterCutX; -JTC_JTCB_JTCBottomSideCutY/2.+GENV_Eps; 0." />
+  <posXYZ volume="JTC_JTCB_SideCut"       X_Y_Z=" -2.*JTC_JTCB_JTCBottomCenterCutX; -JTC_JTCB_JTCBottomSideCutY/2.+GENV_Eps; 0." />
+  <posXYZ volume="JTC_JTCB_EndCut"   X_Y_Z="  0.5*JTC_JTCB_JTCBottomBigX+JTC_JTCB_JTCBottomSmallX; -JTC_JTCB_JTCBottomBigRad/2.; 0." />
+  <posXYZ volume="JTC_JTCB_EndCut"   X_Y_Z=" -0.5*JTC_JTCB_JTCBottomBigX-JTC_JTCB_JTCBottomSmallX; -JTC_JTCB_JTCBottomBigRad/2.; 0." />
+  <posXYZ volume="JTC_JTCB_TiltCut"   X_Y_Z=" -JTC_JTCB_BottomTiltedXOffset-cos((45.-(90-JTC_JTCC_JTCCommonAngle))*GENV_PiS180)*JTC_JTCB_JTCBottomBigRad/sqrt(2.); -JTC_JTCB_JTCBottomSideCutY+sin((45.-(90-JTC_JTCC_JTCCommonAngle))*GENV_PiS180)*JTC_JTCB_JTCBottomBigRad/sqrt(2.); 0." rot="0.; 0.; 90.-JTC_JTCC_JTCCommonAngle"/>
+  <posXYZ volume="JTC_JTCB_TiltCut"   X_Y_Z=" JTC_JTCB_BottomTiltedXOffset+cos((45.-(90-JTC_JTCC_JTCCommonAngle))*GENV_PiS180)*JTC_JTCB_JTCBottomBigRad/sqrt(2.); -JTC_JTCB_JTCBottomSideCutY+sin((45.-(90-JTC_JTCC_JTCCommonAngle))*GENV_PiS180)*JTC_JTCB_JTCBottomBigRad/sqrt(2.); 0." rot="0.; 0.; -90.+JTC_JTCC_JTCCommonAngle"/>
+</subtraction>
+
+<tubs name="JTC_JTCT_TopTubeBase" material="PolyBoron207HD5"  Rio_Z=" JTC_JTCT_JTCTopInnerRad; JTC_JTCT_JTCTopOuterRad; JTC_JTCT_JTCTopFullZ" nbPhi="25" />
+<tubs name="JTC_JTCT_TopCutTube" material="PolyBoron207HD5"  Rio_Z=" 0.; JTC_JTCT_JTCTopMediumRad; JTC_JTCT_JTCTopFullZ-JTC_JTCT_JTCTopThickZ+GENV_Eps" nbPhi="25"/>
+
+<box name="JTC_JTCT_TopCentralCut" material="PolyBoron207HD5" X_Y_Z=" 2.*JTC_JTCT_JTCTopCenterXCut; JTC_JTCT_JTCTopOuterRad+2.*GENV_Eps; JTC_JTCT_JTCTopFullZ+4.*GENV_Eps"/>
+<box name="JTC_JTCT_SideCut" material="PolyBoron207HD5" X_Y_Z=" 2.*JTC_JTCT_TopTiltedXOffset; JTC_JTCT_JTCTopOuterRad; JTC_JTCT_JTCTopFullZ+6.*GENV_Eps"/>
+
+<subtraction name="JTC_JTCT_TopTube">
+  <posXYZ volume="JTC_JTCT_TopTubeBase"     X_Y_Z=" 0.; 0.; 0. " />
+  <posXYZ volume="JTC_JTCT_TopCutTube"      X_Y_Z=" 0.; 0.; JTC_JTCT_JTCTopThickZ/2.+GENV_Eps" />
+  <posXYZ volume="JTC_JTCT_TopCentralCut"   X_Y_Z=" 0.; -JTC_JTCT_JTCTopOuterRad/2.-GENV_Eps; 0." />
+  <posXYZ volume="JTC_JTCT_SideCut"         X_Y_Z=" 0.; -JTC_JTCT_JTCTopOuterRad/2.-JTC_JTCT_JTCTopSideCutY; 0." />
+  <posXYZ volume="JTC_JTCB_TiltCut"   X_Y_Z=" JTC_JTCT_TopTiltedXOffset+sin((45.-(90-JTC_JTCC_JTCCommonAngle))*GENV_PiS180)*JTC_JTCB_JTCBottomBigRad/sqrt(2.); -JTC_JTCT_JTCTopSideCutY-cos((45.-(90-JTC_JTCC_JTCCommonAngle))*GENV_PiS180)*JTC_JTCB_JTCBottomBigRad/sqrt(2.); 0." rot="0.; 0.; JTC_JTCC_JTCCommonAngle"/>
+  <posXYZ volume="JTC_JTCB_TiltCut"   X_Y_Z=" -JTC_JTCT_TopTiltedXOffset-sin((45.-(90-JTC_JTCC_JTCCommonAngle))*GENV_PiS180)*JTC_JTCB_JTCBottomBigRad/sqrt(2.); -JTC_JTCT_JTCTopSideCutY-cos((45.-(90-JTC_JTCC_JTCCommonAngle))*GENV_PiS180)*JTC_JTCB_JTCBottomBigRad/sqrt(2.); 0." rot="0.; 0.; -JTC_JTCC_JTCCommonAngle"/>
+</subtraction>
+
+<!-- Composition of JT Shields  -->
+<composition  name="JTSH_ShieldElements" >
+  <posXYZ  volume="JTSH_Plugs"        X_Y_Z="0.;0.;0."      rot="0.;0.;0." />
+  <posXYZ  volume="JTSH_PolyRings"    X_Y_Z="0.;0.;0."      rot="0.;0.;0." />
+</composition>
+
+<composition  name="JTSH_Shield" >
+ <posXYZ  volume="JTSH_ShieldElements"   X_Y_Z="0.;0.; JTSH_zpositio_Shield_Z"      rot="0.;0.;0." /> 
+ <posXYZ  volume="JTSH_ShieldElements"   X_Y_Z="0.;0.;-JTSH_zpositio_Shield_Z"      rot="0.;JTSH_yrotatio_Shield_rotY;0." /> 
+ <posXYZ  volume="JTC_JTCT_TopTube"      X_Y_Z="0.;0.; JFSH_ECTnomiz_ECT_Nominal_zpos+JFSH_JFCMCzof_JFCMainCylinder_zoffset-JTC_JTCT_JTCTopFullZ/2.-GENV_Eps"      rot="0.;JTSH_yrotatio_Shield_rotY;0." />
+ <posXYZ  volume="JTC_JTCT_TopTube"      X_Y_Z="0.;0.;-JFSH_ECTnomiz_ECT_Nominal_zpos-JFSH_JFCMCzof_JFCMainCylinder_zoffset+JTC_JTCT_JTCTopFullZ/2.+GENV_Eps"      rot="0.;0.;0." />
+ <posXYZ  volume="JTC_JTCB_BottomSmallTube" X_Y_Z="0.;0.;JTSH_OPzposi2_OuterPlugs_z2+JTSH_zpositio_Shield_Z+JTC_JTCB_JTCBottomSmallZ/2.+GENV_Eps" /> 
+ <posXYZ  volume="JTC_JTCB_BottomBigTube" X_Y_Z="0.;0.;JTSH_OPzposi2_OuterPlugs_z2+JTSH_zpositio_Shield_Z+JTC_JTCB_JTCBottomSmallZ+JTC_JTCB_JTCBottomBigZ/2.+2.*GENV_Eps"/>
+ <posXYZ  volume="JTC_JTCB_BottomSmallTube" X_Y_Z="0.;0.;-(JTSH_OPzposi2_OuterPlugs_z2+JTSH_zpositio_Shield_Z+JTC_JTCB_JTCBottomSmallZ/2.+GENV_Eps)" /> 
+ <posXYZ  volume="JTC_JTCB_BottomBigTube" X_Y_Z="0.;0.;-(JTSH_OPzposi2_OuterPlugs_z2+JTSH_zpositio_Shield_Z+JTC_JTCB_JTCBottomSmallZ+JTC_JTCB_JTCBottomBigZ/2.+2.*GENV_Eps)"/> 
+</composition>
+
+</section>
+
+
+<section name       = "pp2"
+         version    = "7.0"
+         date       = "01-04-2010"
+         author     = "new simplified pp2 by Jochen - old versions by Laurent, Andrea Dell'Acqua and Daniel Pomarede removed"
+         top_volume = "pp2">
+
+
+<!--     name       =  pp2                           section name       = "Services"  -->
+<!--  **************************************************************
+      **************************************************************
+      ***                                                       ****
+      ***        ATLAS Services : ID Patch Panels PP2           ****
+      ***                                                       ****
+      **************************************************************
+      **************************************************************  -->
+
+<!-- New Simplified PP2 - subboxes merged by Jochen Meyer-->
+
+<!-- variables for semi simplified boxes -->
+<!-- sector 13 - one -->
+<var  name="IPP2_Sec13_Box1_z"      value=" 520. " />
+<var  name="IPP2_Sec13_Box1_x"      value="1300. " />
+<var  name="IPP2_Sec13_Box1_y"      value=" 420. " />
+
+<var  name="IPP2_Sec13_Box2_z"      value="IPP2_Sec13_Box1_z"    />
+<var  name="IPP2_Sec13_Box2_x"      value="IPP2_Sec13_Box1_x/2." />
+<var  name="IPP2_Sec13_Box2_y"      value=" 450. " />
+
+<!-- sector 13 - two -->
+<var  name="IPP2_Sec13_Box3_z"      value=" 380. " />
+<var  name="IPP2_Sec13_Box3_x"      value=" 420. " />
+<var  name="IPP2_Sec13_Box3_y"      value=" 440. " />
+
+<var  name="IPP2_Sec13_Box4_z"      value=" 700. " />
+<var  name="IPP2_Sec13_Box4_x"      value=" 400. " />
+<var  name="IPP2_Sec13_Box4_y"      value="IPP2_Sec13_Box3_y" />
+
+<var  name="IPP2_Sec13_Box5_z"      value=" 590. " />
+<var  name="IPP2_Sec13_Box5_x"      value=" 540. " />
+<var  name="IPP2_Sec13_Box5_y"      value=" 170. " />
+
+<var  name="IPP2_Sec13_Box6_z"      value=" 500. " />
+<var  name="IPP2_Sec13_Box6_x"      value=" 150. " />
+<var  name="IPP2_Sec13_Box6_y"      value=" 100. " />
+
+<var  name="IPP2_Sec13_xspace"      value="   37.5" />
+
+<!-- sector 3 & 7 -->
+<var  name="IPP2_Sec37_Box1_z"      value=" 610. " />
+<var  name="IPP2_Sec37_Box1_x"      value=" 520. " />
+<var  name="IPP2_Sec37_Box1_y"      value=" 850. " />
+
+<var  name="IPP2_Sec37_Box2_z"      value=" 300. " />
+<var  name="IPP2_Sec37_Box2_x"      value="IPP2_Sec37_Box1_x" />
+<var  name="IPP2_Sec37_Box2_y"      value=" 420. " />
+
+<var  name="IPP2_Sec37_Box3_z"      value=" 300. " />
+<var  name="IPP2_Sec37_Box3_x"      value=" 260. " />
+<var  name="IPP2_Sec37_Box3_y"      value=" 360. " />
+
+<var  name="IPP2_Sec37_Box4_z"      value=" 360. " />
+<var  name="IPP2_Sec37_Box4_x"      value=" 560. " />
+<var  name="IPP2_Sec37_Box4_y"      value="IPP2_Sec37_Box3_y" />
+
+<var  name="IPP2_Sec37_Box5_z"      value=" 120. " />
+<var  name="IPP2_Sec37_Box5_x"      value=" 320. " />
+<var  name="IPP2_Sec37_Box5_y"      value=" 120. " />
+
+<var  name="IPP2_Sec37_Box6_z"      value=" 200. " />
+<var  name="IPP2_Sec37_Box6_x"      value=" 120. " />
+<var  name="IPP2_Sec37_Box6_y"      value=" 120. " />
+
+<var  name="IPP2_Sec37_xoffset"     value="  40. " />
+
+<!-- sector 1 & 9 -->
+<var  name="IPP2_Sec19_Box1_z"      value=" 610. " />
+<var  name="IPP2_Sec19_Box1_x"      value=" 520. " />
+<var  name="IPP2_Sec19_Box1_y"      value="1260. " />
+
+<var  name="IPP2_Sec19_Box2_z"      value=" 300." />
+<var  name="IPP2_Sec19_Box2_x"      value=" 520." />
+<var  name="IPP2_Sec19_Box2_y"      value=" 850." />
+
+<var  name="IPP2_Sec19_Box3_z"      value=" 420." />
+<var  name="IPP2_Sec19_Box3_x"      value=" 380." />
+<var  name="IPP2_Sec19_Box3_y"      value=" 710." />
+
+<var  name="IPP2_Sec19_Box4_z"      value=" 400." />
+<var  name="IPP2_Sec19_Box4_x"      value=" 700." />
+<var  name="IPP2_Sec19_Box4_y"      value="IPP2_Sec19_Box3_y" />
+
+<var  name="IPP2_Sec19_Box5_z"      value=" 110." />
+<var  name="IPP2_Sec19_Box5_x"      value=" 400." />
+<var  name="IPP2_Sec19_Box5_y"      value=" 100." />
+
+<var  name="IPP2_Sec19_Box2_yoffset" value=" 300." />
+<var  name="IPP2_Sec19_xoffset"      value="IPP2_Sec37_xoffset" />
+
+<!-- universal floor -->
+<var  name="IPP2_UniFloor_x"        value=" 900. "/>
+<var  name="IPP2_UniFloor_y"        value="  15. "/>
+<var  name="IPP2_UniFloor_z"        value="1770. "/>
+
+<var  name="IPP2_UniFl_Sec13Zshift" value="  40. "/>
+
+<!-- coordinates -->
+<var  name="IPP2_xpos19"       value="+5880. "/>
+<var  name="IPP2_ypos19"       value="-1100. "/>
+<var  name="IPP2_zpos19"       value="+2560. "/>
+<var  name="IPP2_xpos37"       value="+4710. "/>
+<var  name="IPP2_ypos37"       value="+3340. "/>
+<var  name="IPP2_zpos37"       value="+2710. "/>
+<var  name="IPP2_xpos13_one"   value="  650. "/>
+<var  name="IPP2_ypos13_one"   value="-6380. "/>
+<var  name="IPP2_zpos13_one"   value="+3820. "/>
+<var  name="IPP2_xpos13_two"   value=" +890. "/>
+<var  name="IPP2_ypos13_two"   value="-6380. "/>
+<var  name="IPP2_zpos13_two"   value="+2460. "/>
+
+<box  name="IPP2_UniFloor"   material="Aluminium4"  X_Y_Z="IPP2_UniFloor_x; IPP2_UniFloor_y; IPP2_UniFloor_z" />
+
+<box  name="IPP2_Sec13_Box1" material="Aluminium1"  X_Y_Z="IPP2_Sec13_Box1_x; IPP2_Sec13_Box1_y; IPP2_Sec13_Box1_z" />
+<box  name="IPP2_Sec13_Box2" material="Aluminium1"  X_Y_Z="IPP2_Sec13_Box2_x; IPP2_Sec13_Box2_y; IPP2_Sec13_Box2_z" />
+<box  name="IPP2_Sec13_Box3" material="Aluminium1"  X_Y_Z="IPP2_Sec13_Box3_x; IPP2_Sec13_Box3_y; IPP2_Sec13_Box3_z" />
+<box  name="IPP2_Sec13_Box4" material="Aluminium1"  X_Y_Z="IPP2_Sec13_Box4_x; IPP2_Sec13_Box4_y; IPP2_Sec13_Box4_z" />
+<box  name="IPP2_Sec13_Box5" material="Aluminium1"  X_Y_Z="IPP2_Sec13_Box5_x; IPP2_Sec13_Box5_y; IPP2_Sec13_Box5_z" />
+<box  name="IPP2_Sec13_Box6" material="Aluminium1"  X_Y_Z="IPP2_Sec13_Box6_x; IPP2_Sec13_Box6_y; IPP2_Sec13_Box6_z" />
+
+<box  name="IPP2_Sec37_Box1" material="Aluminium1"  X_Y_Z="IPP2_Sec37_Box1_x; IPP2_Sec37_Box1_y; IPP2_Sec37_Box1_z" />
+<box  name="IPP2_Sec37_Box2" material="Aluminium1"  X_Y_Z="IPP2_Sec37_Box2_x; IPP2_Sec37_Box2_y; IPP2_Sec37_Box2_z" />
+<box  name="IPP2_Sec37_Box3" material="Aluminium1"  X_Y_Z="IPP2_Sec37_Box3_x; IPP2_Sec37_Box3_y; IPP2_Sec37_Box3_z" />
+<box  name="IPP2_Sec37_Box4" material="Aluminium1"  X_Y_Z="IPP2_Sec37_Box4_x; IPP2_Sec37_Box4_y; IPP2_Sec37_Box4_z" />
+<box  name="IPP2_Sec37_Box5" material="Aluminium1"  X_Y_Z="IPP2_Sec37_Box5_x; IPP2_Sec37_Box5_y; IPP2_Sec37_Box5_z" />
+<box  name="IPP2_Sec37_Box6" material="Aluminium1"  X_Y_Z="IPP2_Sec37_Box6_x; IPP2_Sec37_Box6_y; IPP2_Sec37_Box6_z" />
+
+<box  name="IPP2_Sec19_Box1" material="Aluminium1"  X_Y_Z="IPP2_Sec19_Box1_x; IPP2_Sec19_Box1_y; IPP2_Sec19_Box1_z" />
+<box  name="IPP2_Sec19_Box2" material="Aluminium1"  X_Y_Z="IPP2_Sec19_Box2_x; IPP2_Sec19_Box2_y; IPP2_Sec19_Box2_z" />
+<box  name="IPP2_Sec19_Box3" material="Aluminium1"  X_Y_Z="IPP2_Sec19_Box3_x; IPP2_Sec19_Box3_y; IPP2_Sec19_Box3_z" />
+<box  name="IPP2_Sec19_Box4" material="Aluminium1"  X_Y_Z="IPP2_Sec19_Box4_x; IPP2_Sec19_Box4_y; IPP2_Sec19_Box4_z" />
+<box  name="IPP2_Sec19_Box5" material="Aluminium1"  X_Y_Z="IPP2_Sec19_Box5_x; IPP2_Sec19_Box5_y; IPP2_Sec19_Box5_z" />
+
+<composition name="IPP2_Sec13_single_one">
+  <posXYZ  volume="IPP2_UniFloor"     X_Y_Z="0.; -IPP2_UniFloor_y/2.; IPP2_UniFl_Sec13Zshift"  rot="0.; 90.; 0." />
+  <posXYZ  volume="IPP2_Sec13_Box1"   X_Y_Z="0.;  IPP2_Sec13_Box1_y/2. + GENV_Eps; 0." />
+  <posXYZ  volume="IPP2_Sec13_Box2"   X_Y_Z="0.;  IPP2_Sec13_Box2_y/2. + IPP2_Sec13_Box1_y + 2.*GENV_Eps; 0." />
+</composition>
+
+<var name="IPP2_Sec13_length"  value="(IPP2_Sec13_Box3_x + IPP2_Sec13_Box4_x + IPP2_Sec13_xspace)*2."/>
+
+<composition name="IPP2_Sec13_single_two_Cside">
+  <posXYZ  volume="IPP2_UniFloor"        X_Y_Z="0.; -IPP2_UniFloor_y/2.; -IPP2_UniFl_Sec13Zshift"  rot="0.; 90.; 0." />
+  <posXYZ  volume="IPP2_Sec13_Box3"      X_Y_Z=" IPP2_Sec13_Box4_x + IPP2_Sec13_Box3_x/2. + IPP2_Sec13_xspace + GENV_Eps; IPP2_Sec13_Box3_y/2. + GENV_Eps; (IPP2_Sec13_Box3_z - IPP2_Sec13_Box4_z)/2." />
+  <posXYZ  volume="IPP2_Sec13_Box4"      X_Y_Z=" IPP2_Sec13_Box4_x/2. + IPP2_Sec13_xspace; IPP2_Sec13_Box4_y/2. + GENV_Eps; 0." />
+  <posXYZ  volume="IPP2_Sec13_Box3"      X_Y_Z="-IPP2_Sec13_Box3_x/2. - IPP2_Sec13_xspace; IPP2_Sec13_Box3_y/2. + GENV_Eps; (IPP2_Sec13_Box3_z - IPP2_Sec13_Box4_z)/2." />
+  <posXYZ  volume="IPP2_Sec13_Box4"      X_Y_Z="-IPP2_Sec13_Box3_x - IPP2_Sec13_Box4_x/2. - IPP2_Sec13_xspace - GENV_Eps; IPP2_Sec13_Box4_y/2. + GENV_Eps; 0." />
+  <posXYZ  volume="IPP2_Sec13_Box5"      X_Y_Z=" IPP2_Sec13_Box5_x/2. + IPP2_Sec13_xspace; IPP2_Sec13_Box3_y + IPP2_Sec13_Box5_y/2. + 2.*GENV_Eps; (IPP2_Sec13_Box5_z - IPP2_Sec13_Box4_z)/2." />
+  <posXYZ  volume="IPP2_Sec13_Box6"      X_Y_Z="-IPP2_Sec13_Box6_x/2. - IPP2_Sec13_xspace; IPP2_Sec13_Box3_y + IPP2_Sec13_Box6_y/2. + 2.*GENV_Eps; (IPP2_Sec13_Box6_z - IPP2_Sec13_Box4_z)/2." />
+</composition>
+
+<composition name="IPP2_Sec13_single_two_Aside">
+  <posXYZ  volume="IPP2_UniFloor"        X_Y_Z="0.; -IPP2_UniFloor_y/2.; -IPP2_UniFl_Sec13Zshift"  rot="0.; 90.; 0." />
+  <posXYZ  volume="IPP2_Sec13_Box3"      X_Y_Z=" IPP2_Sec13_Box4_x + IPP2_Sec13_Box3_x/2. + IPP2_Sec13_xspace + GENV_Eps; IPP2_Sec13_Box3_y/2. + GENV_Eps; (IPP2_Sec13_Box3_z - IPP2_Sec13_Box4_z)/2." />
+  <posXYZ  volume="IPP2_Sec13_Box4"      X_Y_Z=" IPP2_Sec13_Box4_x/2. + IPP2_Sec13_xspace; IPP2_Sec13_Box4_y/2. + GENV_Eps; 0." />
+  <posXYZ  volume="IPP2_Sec13_Box3"      X_Y_Z="-IPP2_Sec13_Box3_x/2. - IPP2_Sec13_xspace; IPP2_Sec13_Box3_y/2. + GENV_Eps; (IPP2_Sec13_Box3_z - IPP2_Sec13_Box4_z)/2." />
+  <posXYZ  volume="IPP2_Sec13_Box4"      X_Y_Z="-IPP2_Sec13_Box3_x - IPP2_Sec13_Box4_x/2. - IPP2_Sec13_xspace - GENV_Eps; IPP2_Sec13_Box4_y/2. + GENV_Eps; 0." />
+  <posXYZ  volume="IPP2_Sec13_Box5"      X_Y_Z="-IPP2_Sec13_Box5_x/2. - IPP2_Sec13_xspace; IPP2_Sec13_Box3_y + IPP2_Sec13_Box5_y/2. + 2.*GENV_Eps; (IPP2_Sec13_Box5_z - IPP2_Sec13_Box4_z)/2." />
+  <posXYZ  volume="IPP2_Sec13_Box6"      X_Y_Z=" IPP2_Sec13_Box6_x/2. + IPP2_Sec13_xspace; IPP2_Sec13_Box3_y + IPP2_Sec13_Box6_y/2. + 2.*GENV_Eps; (IPP2_Sec13_Box6_z - IPP2_Sec13_Box4_z)/2." />
+</composition>
+
+<var name="IPP_Sec37_length"  value="IPP2_Sec37_Box1_z + IPP2_Sec37_Box2_z + IPP2_Sec13_Box3_x + IPP2_Sec13_Box4_x"/>
+
+<composition name="IPP2_Sec37_single">
+  <posXYZ  volume="IPP2_UniFloor"   X_Y_Z="0.; -IPP2_UniFloor_y/2.; 0."  rot="0.; 0.; 0." />
+  <posXYZ  volume="IPP2_Sec37_Box1" X_Y_Z="0.; IPP2_Sec37_Box1_y/2. + GENV_Eps; - IPP_Sec37_length/2. - 2.*GENV_Eps + IPP2_Sec37_Box1_z/2." />
+  <posXYZ  volume="IPP2_Sec37_Box2" X_Y_Z="0.; IPP2_Sec37_Box2_y/2. + GENV_Eps; - IPP_Sec37_length/2. - GENV_Eps + IPP2_Sec37_Box1_z + IPP2_Sec37_Box2_z/2." />
+  <posXYZ  volume="IPP2_Sec13_Box3" X_Y_Z="IPP2_Sec37_xoffset + (IPP2_Sec13_Box3_z-IPP2_Sec13_Box4_z)/2.; IPP2_Sec13_Box3_y/2. + GENV_Eps; IPP_Sec37_length/2. + 2.*GENV_Eps - IPP2_Sec13_Box3_x/2." rot="0.; 90.; 0."/>
+  <posXYZ  volume="IPP2_Sec13_Box4" X_Y_Z="IPP2_Sec37_xoffset ; IPP2_Sec13_Box4_y/2. + GENV_Eps; IPP_Sec37_length/2. + GENV_Eps - IPP2_Sec13_Box3_x - IPP2_Sec13_Box4_x/2." rot="0.; 90.; 0."/>
+  <posXYZ  volume="IPP2_Sec37_Box3" X_Y_Z="IPP2_Sec37_xoffset + (-IPP2_Sec13_Box4_z + IPP2_Sec37_Box3_x)/2.; IPP2_Sec13_Box3_y + IPP2_Sec37_Box3_y/2. + 2.*GENV_Eps; IPP_Sec37_length/2. - IPP2_Sec13_Box3_x - IPP2_Sec13_Box4_x + IPP2_Sec37_Box4_z + IPP2_Sec37_Box3_z/2. + 2.*GENV_Eps" />
+  <posXYZ  volume="IPP2_Sec37_Box4" X_Y_Z="IPP2_Sec37_xoffset + (-IPP2_Sec13_Box4_z + IPP2_Sec37_Box4_x)/2.; IPP2_Sec13_Box4_y + IPP2_Sec37_Box4_y/2. + 2.*GENV_Eps; IPP_Sec37_length/2. - IPP2_Sec13_Box3_x - IPP2_Sec13_Box4_x + IPP2_Sec37_Box4_z/2. + GENV_Eps" />
+  <posXYZ  volume="IPP2_Sec37_Box5" X_Y_Z="IPP2_Sec37_xoffset - IPP2_Sec13_Box4_z/2. + IPP2_Sec37_Box3_x - IPP2_Sec37_Box6_x + IPP2_Sec37_Box5_x/2.; IPP2_Sec37_Box4_y + IPP2_Sec13_Box4_y + IPP2_Sec37_Box5_y/2. + 3.*GENV_Eps; IPP_Sec37_length/2. - IPP2_Sec13_Box3_x - IPP2_Sec13_Box4_x + IPP2_Sec37_Box4_z - IPP2_Sec37_Box5_z/2. + GENV_Eps" />
+  <posXYZ  volume="IPP2_Sec37_Box6" X_Y_Z="IPP2_Sec37_xoffset - IPP2_Sec13_Box4_z/2. + IPP2_Sec37_Box3_x - IPP2_Sec37_Box6_x/2.; IPP2_Sec37_Box4_y + IPP2_Sec13_Box4_y + IPP2_Sec37_Box5_y/2. + 3.*GENV_Eps; IPP_Sec37_length/2. - IPP2_Sec13_Box3_x - IPP2_Sec13_Box4_x + IPP2_Sec37_Box4_z + IPP2_Sec37_Box6_z/2. + 2.*GENV_Eps" />
+</composition>
+
+<var name="IPP_Sec19_length"  value="IPP2_Sec19_Box1_z + IPP2_Sec19_Box2_z + IPP2_Sec19_Box3_z + IPP2_Sec19_Box4_z"/>
+
+<composition name="IPP2_Sec19_single">
+  <posXYZ  volume="IPP2_UniFloor"   X_Y_Z="0.; -IPP2_UniFloor_y/2.; 0."  rot="0.; 0.; 0." />
+  <posXYZ  volume="IPP2_Sec19_Box1" X_Y_Z="0.; IPP2_Sec19_Box1_y/2. + GENV_Eps; - IPP_Sec19_length/2. - 2.*GENV_Eps + IPP2_Sec19_Box1_z/2." />
+  <posXYZ  volume="IPP2_Sec19_Box2" X_Y_Z="0.; IPP2_Sec19_Box2_y/2. + IPP2_Sec19_Box2_yoffset; - IPP_Sec19_length/2. - GENV_Eps + IPP2_Sec19_Box1_z + IPP2_Sec19_Box2_z/2." />
+  <posXYZ  volume="IPP2_Sec19_Box3" X_Y_Z="IPP2_Sec19_xoffset + (IPP2_Sec19_Box3_x - IPP2_Sec19_Box4_x)/2.; IPP2_Sec37_Box4_y + IPP2_Sec19_Box3_y/2. + 2.*GENV_Eps; IPP_Sec19_length/2. + 2.*GENV_Eps - IPP2_Sec19_Box3_z/2." />
+  <posXYZ  volume="IPP2_Sec19_Box4" X_Y_Z="IPP2_Sec19_xoffset; IPP2_Sec37_Box3_y + IPP2_Sec19_Box4_y/2. + 2.*GENV_Eps; IPP_Sec19_length/2. + GENV_Eps  - IPP2_Sec19_Box3_z - IPP2_Sec19_Box4_z/2." />
+  <posXYZ  volume="IPP2_Sec37_Box3" X_Y_Z="IPP2_Sec19_xoffset + (-IPP2_Sec19_Box4_x + IPP2_Sec37_Box3_x)/2.; IPP2_Sec37_Box3_y/2. + GENV_Eps; IPP_Sec19_length/2. - IPP2_Sec19_Box3_z - IPP2_Sec19_Box4_z + IPP2_Sec37_Box4_z + IPP2_Sec37_Box3_z/2. + 2.*GENV_Eps" />
+  <posXYZ  volume="IPP2_Sec37_Box4" X_Y_Z="IPP2_Sec19_xoffset + (-IPP2_Sec19_Box4_x + IPP2_Sec37_Box4_x)/2.; IPP2_Sec37_Box4_y/2. + GENV_Eps; IPP_Sec19_length/2. - IPP2_Sec19_Box3_z - IPP2_Sec19_Box4_z + IPP2_Sec37_Box4_z/2. + GENV_Eps" />
+  <posXYZ  volume="IPP2_Sec37_Box5" X_Y_Z="IPP2_Sec19_xoffset - IPP2_Sec19_Box4_x/2. + IPP2_Sec37_Box3_x - IPP2_Sec37_Box6_x + IPP2_Sec37_Box5_x/2.; IPP2_Sec37_Box4_y + IPP2_Sec19_Box4_y + IPP2_Sec37_Box5_y/2. + 3.*GENV_Eps; IPP_Sec19_length/2. - IPP2_Sec19_Box3_z - IPP2_Sec19_Box4_z + IPP2_Sec37_Box4_z - IPP2_Sec37_Box5_z/2. + GENV_Eps" />
+  <posXYZ  volume="IPP2_Sec37_Box6" X_Y_Z="IPP2_Sec19_xoffset - IPP2_Sec19_Box4_x/2. + IPP2_Sec37_Box3_x - IPP2_Sec37_Box6_x/2.; IPP2_Sec37_Box4_y + IPP2_Sec19_Box4_y + IPP2_Sec37_Box5_y/2. + 3.*GENV_Eps; IPP_Sec19_length/2. - IPP2_Sec19_Box3_z - IPP2_Sec19_Box4_z + IPP2_Sec37_Box4_z + IPP2_Sec37_Box6_z/2. + 2.*GENV_Eps" />
+  <posXYZ  volume="IPP2_Sec19_Box5" X_Y_Z="0.; IPP2_Sec37_Box4_y + IPP2_Sec19_Box4_y + IPP2_Sec19_Box5_y/2. + 3.*GENV_Eps; 3.*IPP2_Sec19_Box5_z/2." />
+</composition>
+
+<composition name="pp2">
+  <posXYZ  volume="IPP2_Sec13_single_one"       X_Y_Z="IPP2_xpos13_one - IPP2_Sec13_Box1_x/2.; IPP2_ypos13_one; IPP2_zpos13_one + IPP2_Sec13_Box1_z/2."/>
+  <posXYZ  volume="IPP2_Sec13_single_one"       X_Y_Z="IPP2_xpos13_one - IPP2_Sec13_Box1_x/2.; IPP2_ypos13_one; -IPP2_zpos13_one - IPP2_Sec13_Box1_z/2." rot="0.; 180.; 0."/>
+  <posXYZ  volume="IPP2_Sec13_single_two_Aside" X_Y_Z="IPP2_xpos13_two - IPP2_Sec13_length/2.; IPP2_ypos13_two; IPP2_zpos13_two + IPP2_Sec13_Box4_z/2."/>
+  <posXYZ  volume="IPP2_Sec13_single_two_Cside" X_Y_Z="IPP2_xpos13_two - IPP2_Sec13_length/2.; IPP2_ypos13_two; -IPP2_zpos13_two - IPP2_Sec13_Box4_z/2." rot="0.; 180.; 0."/>
+  <posXYZ  volume="IPP2_Sec37_single"           X_Y_Z=" IPP2_xpos37 + IPP2_Sec13_Box4_z/2. - IPP2_Sec37_xoffset; IPP2_ypos37;  IPP2_zpos37 - IPP_Sec37_length/2. + IPP2_Sec37_Box1_z + IPP2_Sec37_Box2_z + IPP2_Sec13_Box3_x + IPP2_Sec13_Box4_x"/>
+  <posXYZ  volume="IPP2_Sec37_single"           X_Y_Z=" IPP2_xpos37 + IPP2_Sec13_Box4_z/2. - IPP2_Sec37_xoffset; IPP2_ypos37; -IPP2_zpos37 + IPP_Sec37_length/2. - IPP2_Sec37_Box1_z - IPP2_Sec37_Box2_z - IPP2_Sec13_Box3_x - IPP2_Sec13_Box4_x"/>
+  <posXYZ  volume="IPP2_Sec37_single"           X_Y_Z="-IPP2_xpos37 - IPP2_Sec13_Box4_z/2. + IPP2_Sec37_xoffset; IPP2_ypos37;  IPP2_zpos37 - IPP_Sec37_length/2. + IPP2_Sec37_Box1_z + IPP2_Sec37_Box2_z + IPP2_Sec13_Box3_x + IPP2_Sec13_Box4_x" rot="0.; 180.; 0."/>
+  <posXYZ  volume="IPP2_Sec37_single"           X_Y_Z="-IPP2_xpos37 - IPP2_Sec13_Box4_z/2. + IPP2_Sec37_xoffset; IPP2_ypos37; -IPP2_zpos37 + IPP_Sec37_length/2. - IPP2_Sec37_Box1_z - IPP2_Sec37_Box2_z - IPP2_Sec13_Box3_x - IPP2_Sec13_Box4_x" rot="0.; 180.; 0."/>
+  <posXYZ  volume="IPP2_Sec19_single"           X_Y_Z=" IPP2_xpos19 + IPP2_Sec19_Box4_x/2. - IPP2_Sec37_xoffset; IPP2_ypos19;  IPP2_zpos19 - IPP_Sec19_length/2. + IPP2_Sec19_Box1_z + IPP2_Sec19_Box2_z + IPP2_Sec19_Box3_z + IPP2_Sec19_Box4_z"/>
+  <posXYZ  volume="IPP2_Sec19_single"           X_Y_Z=" IPP2_xpos19 + IPP2_Sec19_Box4_x/2. - IPP2_Sec37_xoffset; IPP2_ypos19; -IPP2_zpos19 + IPP_Sec19_length/2. - IPP2_Sec19_Box1_z - IPP2_Sec19_Box2_z - IPP2_Sec37_Box4_z - IPP2_Sec37_Box3_z"/>
+  <posXYZ  volume="IPP2_Sec19_single"           X_Y_Z="-IPP2_xpos19 - IPP2_Sec19_Box4_x/2. + IPP2_Sec37_xoffset; IPP2_ypos19;  IPP2_zpos19 - IPP_Sec19_length/2. + IPP2_Sec19_Box1_z + IPP2_Sec19_Box2_z + IPP2_Sec37_Box4_z + IPP2_Sec37_Box3_z" rot="0.; 180.; 0."/>
+  <posXYZ  volume="IPP2_Sec19_single"           X_Y_Z="-IPP2_xpos19 - IPP2_Sec19_Box4_x/2. + IPP2_Sec37_xoffset; IPP2_ypos19; -IPP2_zpos19 + IPP_Sec19_length/2. - IPP2_Sec19_Box1_z - IPP2_Sec19_Box2_z - IPP2_Sec19_Box3_z - IPP2_Sec19_Box4_z" rot="0.; 180.; 0."/>
+</composition>
+
+</section>
+
+<section name       = "Eta0Services"
+         version    = "7.0"
+         date       = "29 Mar 2010"
+         author     = "Laurent Chevalier"
+         top_volume = "servicesAtZ0">
+
+<!--     name       =  Eta0Services                  section name       = "Services"  -->
+<!--  
+      **************************************************************
+      ***                                                       ****
+      ***                  Services                             ****
+      ***                                                       ****
+      **************************************************************
+-->
+<tubs  name="EMCaloPipeI"   material="Iron1"       Rio_Z=" 310 ; 320; 5500"    nbPhi="20" />
+<tubs  name="EMCaloPipeO"   material="Iron1"       Rio_Z=" 190 ; 200; 1400"    nbPhi="20" />
+<tubs  name="CuivreCable"   material="Aluminium2"  Rio_Z="   0.; 170; 5500"    nbPhi="20" />
+<tubs  name="CuivreCabl0"   material="Aluminium2"  Rio_Z="   0.; 170; 5000"    nbPhi="20" />
+<var  name="SerStart" value="7500"/>
+<var  name="SerZ"     value="-100"/>
+
+<composition  name="services0" > <!-- modified positions to avoid overlap -->	
+    <posXYZ  volume="CuivreCable"    X_Y_Z="    0; 541 ;SerZ"  rot="  0.;90.;0." />
+    <posXYZ  volume="CuivreCable"    X_Y_Z="    0; 181 ;SerZ"  rot="  0.;90.;0." />
+    <posXYZ  volume="CuivreCable"    X_Y_Z="    0;-181 ;SerZ"  rot="  0.;90.;0." />
+    <posXYZ  volume="CuivreCable"    X_Y_Z="    0;-541 ;SerZ"  rot="  0.;90.;0." />
+</composition>
+
+<composition  name="services1" >	
+    <posRPhiZ  volume="services0"    R_Phi_Z=" SerStart; Zero ; Zero"   />
+</composition>
+
+<composition  name="services2" > <!-- modified positions to avoid overlap -->	
+    <posXYZ  volume="CuivreCabl0"    X_Y_Z="  300; 541 ;SerZ"  rot="  0.;90.;0." />
+    <posXYZ  volume="CuivreCabl0"    X_Y_Z="  300; 181 ;SerZ"  rot="  0.;90.;0." />
+    <posXYZ  volume="CuivreCable"    X_Y_Z="    0;-181 ;SerZ"  rot="  0.;90.;0." />
+    <posXYZ  volume="CuivreCable"    X_Y_Z="    0;-541 ;SerZ"  rot="  0.;90.;0." />
+</composition>
+
+<composition  name="services3" >	
+    <posRPhiZ  volume="services2"    R_Phi_Z=" SerStart; Zero ; Zero"   />
+</composition>
+
+<var  name="FlChx"    value="200"/>
+<var  name="FlChy"    value="1000"/>
+<var  name="FlChz"    value="3200"/>
+<box  name="Flexible" material="Aluminium1"     X_Y_Z="FlChx;FlChy;FlChz"  />
+<tubs name="Virage"   material="Aluminium1"     Rio_Z="800;1000;1000"  profile="0;90"    />
+
+<composition name="FlexibleChain2"> 
+   <posXYZ volume="Flexible"  X_Y_Z="   FlChy-FlChx/2.; 0.; 0."  />
+   <posXYZ volume="Flexible"  X_Y_Z="  -FlChz/2.      ; 0.;FlChz/2.+FlChy-FlChx/2." rot=" 0.; 90.; 0." />
+   <posXYZ volume="Flexible"  X_Y_Z="-3*FlChz/2.      ; 0.;FlChz/2.+FlChy-FlChx/2." rot=" 0.; 90.; 0." />
+   <posXYZ volume="Virage"    X_Y_Z="               0.; 0.;FlChz/2."                rot="90.;  0.; 0." />
+</composition>
+
+<composition  name="servicesAtZ0" >	
+   <posXYZ    volume="EMCaloPipeI"    X_Y_Z="  Zero;  7000 ; Zero"  rot=" 90.; 0.;0." />
+   <posXYZ    volume="EMCaloPipeO"    X_Y_Z="  Zero; -5000 ;  100"  rot=" 90.; 0.;0." />
+   <posXYZ    volume="services1"      X_Y_Z="  Zero;  Zero ; Zero"  rot="  0.; 0.;0." />
+   <posRPhiZ  volume="services1"      R_Phi_Z="Zero;    45 ; Zero"  rot="  0.; 0.;0." />
+   <posRPhiZ  volume="services1"      R_Phi_Z="Zero;   135 ; Zero"  rot="  0.; 0.;0." />
+   <posRPhiZ  volume="services3"      R_Phi_Z="Zero;   225 ; Zero"  rot="  0.; 0.;0." />
+   <posRPhiZ  volume="services3"      R_Phi_Z="Zero;   315 ; Zero"  rot="180.; 0.;0." />
+   <posXYZ volume="FlexibleChain2"  X_Y_Z=" -5440.;0.;-2750."  />
+   <posXYZ volume="FlexibleChain2"  X_Y_Z=" -5440.;0.;+2750."   rot="180.; 0.; 0."/>
+</composition>
+</section>
+
+<section name       = "AccessPlatforms"
+         version    = "7.0"
+         date       = "21 Mar 2005"
+         author     = "Laurent Chevalier, Daniel Pomarede"
+         top_volume = "MBAP_AccessPlatform">
+
+
+<!--     name       =  AccessPlatforms               section name       = "Services"  -->
+<!--  **************************************************************
+      **************************************************************
+      ***                                                       ****
+      ***     ATLAS Access : Muon Barrel Access Platforms       ****
+      ***                                                       ****
+      **************************************************************
+      **************************************************************  -->
+<!--  Design from ATLHXT__0001 -->
+
+<!--  Platform 1-2 positioned between Strut 1 and Strut 2  -->
+<!--  Platform 2-3 positioned between Strut 2 and Strut 3  -->
+<!--  Platform 3-4 positioned between Strut 3 and Strut 4  -->
+
+<!--  Platform dimensions  -->
+<var  name="MBAP_P12s1dz1"  value="3000." />
+<var  name="MBAP_P12s1dz2"  value="2500." />
+<var  name="MBAP_P23s1dz1"  value="2700." />
+<var  name="MBAP_P23s1dz2"  value="2200." />
+<var  name="MBAP_P34s1dz1"  value="2200." />
+<var  name="MBAP_P34s1dz2"  value="1700." />
+
+<var  name="MBAP_P14s3dz"   value="8600." />
+<var  name="MBAP_P14s3dx"   value=" 540." />
+
+<var  name="MBAP_PLAs1dx1"  value="1225." />
+<var  name="MBAP_PLAs1dx2"  value=" 600." />
+<var  name="MBAP_PFLhe"     value="  1.5" />
+
+<!--  Platform positions  -->
+<!--  sector 1 & 9  -->
+<var  name="MBAP_Ps01posx"  value=" 7800." />
+<var  name="MBAP_Ps01posy"  value="-1200." />
+<!--  sector 11 & 15  -->
+<var  name="MBAP_Ps11posx"  value=" 5000." />
+<var  name="MBAP_Ps11posy"  value="-6500." />
+<!--  sector 3 & 7  -->
+<var  name="MBAP_Ps14posx"  value=" 6730." />
+<var  name="MBAP_Ps14posy"  value=" 5300." />
+<var  name="MBAP_Ps14angz"  value="   45." />
+
+<var  name="MBAP_P12posz"   value=" 3425."   />  <!-- ??? could use (ABRT_Zvouss(5)+ABRT_Zvouss(6))/2. ??? -->
+<var  name="MBAP_P23posz"   value=" 6691.25" />  <!-- ??? could use (ABRT_Zvouss(6)+ABRT_Zvouss(7))/2. ??? -->
+<var  name="MBAP_P34posz"   value=" 9545."   />  <!-- ??? could use (ABRT_Zvouss(7)+ABRT_Zvouss(8))/2. ??? -->
+
+<!--  Useful variables  -->
+<var  name="MBAP_xyzref"    value="    0.  " />
+
+<!--  Modelization of floor of Platform -->
+
+<var  name="MBAP_PFL12xa" value="MBAP_P12s1dz1/2." />
+<var  name="MBAP_PFL23xa" value="MBAP_P23s1dz1/2." />
+<var  name="MBAP_PFL34xa" value="MBAP_P34s1dz1/2." />
+<var  name="MBAP_PFLya"   value="MBAP_xyzref" />
+
+<var  name="MBAP_PFL12xb" value="MBAP_PFL12xa" />
+<var  name="MBAP_PFL23xb" value="MBAP_PFL23xa" />
+<var  name="MBAP_PFL34xb" value="MBAP_PFL34xa" />
+<var  name="MBAP_PFLyb"   value="MBAP_PLAs1dx2" />
+
+<var  name="MBAP_PFL12xc" value="MBAP_P12s1dz2/2." />
+<var  name="MBAP_PFL23xc" value="MBAP_P23s1dz2/2." />
+<var  name="MBAP_PFL34xc" value="MBAP_P34s1dz2/2." />
+<var  name="MBAP_PFLyc"   value="MBAP_PFLyb" />
+
+<var  name="MBAP_PFL12xd" value="MBAP_PFL12xc" />
+<var  name="MBAP_PFL23xd" value="MBAP_PFL23xc" />
+<var  name="MBAP_PFL34xd" value="MBAP_PFL34xc" />
+<var  name="MBAP_PFLyd"   value="MBAP_PLAs1dx1-GENV_Eps" />
+
+<!--  sector 1 & 9  -->
+
+<gvxysx name="MBAP_PlatformFloor12s1s9"    material="Aluminium4"   dZ="MBAP_PFLhe"  >
+  <gvxy_point X_Y="MBAP_PFL12xa;MBAP_PFLya"/>
+  <gvxy_point X_Y="MBAP_PFL12xb;MBAP_PFLyb"/>
+  <gvxy_point X_Y="MBAP_PFL12xc;MBAP_PFLyc"/>
+  <gvxy_point X_Y="MBAP_PFL12xd;MBAP_PFLyd"/>
+</gvxysx>
+
+<gvxysx name="MBAP_PlatformFloor23s1s9"    material="Aluminium4"   dZ="MBAP_PFLhe"  >
+  <gvxy_point X_Y="MBAP_PFL23xa;MBAP_PFLya"/>
+  <gvxy_point X_Y="MBAP_PFL23xb;MBAP_PFLyb"/>
+  <gvxy_point X_Y="MBAP_PFL23xc;MBAP_PFLyc"/>
+  <gvxy_point X_Y="MBAP_PFL23xd;MBAP_PFLyd"/>
+</gvxysx>
+
+<gvxysx name="MBAP_PlatformFloor34s1s9"    material="Aluminium4"   dZ="MBAP_PFLhe"  >
+  <gvxy_point X_Y="MBAP_PFL34xa;MBAP_PFLya"/>
+  <gvxy_point X_Y="MBAP_PFL34xb;MBAP_PFLyb"/>
+  <gvxy_point X_Y="MBAP_PFL34xc;MBAP_PFLyc"/>
+  <gvxy_point X_Y="MBAP_PFL34xd;MBAP_PFLyd"/>
+</gvxysx>
+
+<!--  sector 11 & 15  -->
+
+<gvxysx name="MBAP_PlatformFloor12s11s15"  material="Aluminium4"   dZ="MBAP_PFLhe"  >
+  <gvxy_point X_Y="MBAP_PFL12xa;MBAP_PFLya"/>
+  <gvxy_point X_Y="MBAP_PFL12xa;MBAP_PFLyd"/>
+</gvxysx>
+
+<gvxysx name="MBAP_PlatformFloor23s11s15"  material="Aluminium4"   dZ="MBAP_PFLhe"  >
+  <gvxy_point X_Y="MBAP_PFL23xa;MBAP_PFLya"/>
+  <gvxy_point X_Y="MBAP_PFL23xa;MBAP_PFLyd"/>
+</gvxysx>
+
+<gvxysx name="MBAP_PlatformFloor34s11s15"  material="Aluminium4"   dZ="MBAP_PFLhe"  >
+  <gvxy_point X_Y="MBAP_PFL34xa;MBAP_PFLya"/>
+  <gvxy_point X_Y="MBAP_PFL34xa;MBAP_PFLyd"/>
+</gvxysx>
+
+<!--  sector 3 & 7  -->
+
+<box name="MBAP_PlatformFloor14s3s7"  material="Aluminium4"   X_Y_Z="MBAP_P14s3dx;MBAP_PFLhe;MBAP_P14s3dz"  />
+     
+<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+<!--  Modelization of rambarde of Platforms 1-2, 2-3, 3-4 -->
+
+<!--  Primary variables -->
+
+<!-- Tubes radii -->
+<var  name="MBAP_PlatRaRo"   value="  17." />
+
+<!--  Slanted Support for Platform 1-4 sector 3 & 7   -->
+<!--  dimensions  -->
+<var  name="MBAP_PSSs3dy1"   value=" 242.5"/>
+<var  name="MBAP_PSSs3dy2"   value=" 393." />
+<var  name="MBAP_PSSs3dx1"   value=" 393." />
+
+<!--  absolute positions  -->
+<var  name="MBAP_PSSs3zp1"   value=" 1975. " /> <!-- could use ABRT_Zvouss(5) + 200 + 62.5 , see ATLHXT__0001 -->
+<var  name="MBAP_PSSs3zp6"   value="10582.5" /> <!-- could use ABRT_Zvouss(8) - 200 - 62.5 , see ATLHXT__0001 -->
+
+<!--  Relative positions of Slanted Supports  -->
+<var  name="MBAP_PSSzrp6"    value="MBAP_PSSs3zp6-MBAP_PSSs3zp1" />
+
+<!-- Bottom Frame Tube angle -->
+<var  name="MBAP_P14s3BFa"   value="-atan(MBAP_PSSs3dy2/MBAP_PSSs3dx1)/GENV_PiS180" />
+
+<!-- Floor Position, angle w.r.t Frame -->
+<var  name="MBAP_P14s3Fla"   value="MBAP_P14s3BFa" />
+<var  name="MBAP_P14s3Flx"   value="-(MBAP_PSSs3dy1+MBAP_PSSs3dy2/2.)+(MBAP_PlatRaRo+MBAP_PFLhe/2.)*cos(MBAP_P14s3Fla*GENV_PiS180)" />
+<var  name="MBAP_P14s3Fly"   value="MBAP_PSSs3dx1/2.+(MBAP_PlatRaRo+MBAP_PFLhe/2.)*cos(MBAP_P14s3Fla*GENV_PiS180)" />
+<var  name="MBAP_P14s3Flz"   value="MBAP_PSSzrp6/2." />
+
+<!--  Primary variables -->
+
+<!--  Supporting Frame  -->
+<!--  longitudinal and transverse beams  -->
+
+<var  name="AP13_SFBeamTh"   value="  8."/>  <!--  Thickness  -->
+<var  name="AP13_SFBeamHe"   value=" 50."/>  <!--  Height  -->
+<var  name="AP13_SFBeamDx"   value="100."/>  <!--  Transverse Size (X-wise) -->
+ 
+<!--  Frame 12 (connect BT strut 1 - strut 2) -->
+
+<!-- Longitudinal and Transverse beam length / cf ATLHXT__0032  -->
+<var  name="AP13_Fr34Llen"   value="2400."/>
+
+<!--  Longitudinal and Transverse Positions -->
+<var  name="AP13_Fr23xsp1"   value="2160."/> <!--  separation of longitudinal beams along x -->
+<var  name="AP13_Fr34Tzof"   value=" 615."/> <!--  offset transverse beams along z -->
+<var  name="AP13_Fr34Tzsp"   value=" 840."/> <!--  separation of transverse beams along z -->
+
+<!--  Y-position -->
+<var  name="AP13_Fr12y"      value="-9190."/>
+
+<!--  Modelization of beam -->
+<var  name="AP13_SFBeamXa"   value="AP13_SFBeamDx/2."/>
+<var  name="AP13_SFBeamYa"   value="0."/>
+<var  name="AP13_SFBeamXb"   value="AP13_SFBeamXa"/>
+<var  name="AP13_SFBeamYb"   value="AP13_SFBeamHe"/>
+<var  name="AP13_SFBeamXc"   value="AP13_SFBeamXa-AP13_SFBeamTh"/>
+<var  name="AP13_SFBeamYc"   value="AP13_SFBeamYb"/>
+<var  name="AP13_SFBeamXd"   value="AP13_SFBeamXc"/>
+<var  name="AP13_SFBeamYd"   value="AP13_SFBeamYa+AP13_SFBeamTh"/>
+
+<!--  Positions of beams -->
+<var  name="AP13_Fr23x1"   value="AP13_Fr23xsp1/2.+AP13_SFBeamDx/2."/>
+<var  name="AP13_Fr12Typ"  value="-AP13_SFBeamHe"/> <!--  Transversal beam y position --> 
+<var  name="AP13_Fr34Tz1"  value="-AP13_Fr34Llen/2.+ AP13_Fr34Tzof +AP13_SFBeamDx/2."/> <!--  Transversal beam z position --> 
+<var  name="AP13_Fr34Tz2"  value="AP13_Fr34Tz1  + AP13_Fr34Tzsp -AP13_SFBeamDx"/> <!--  Transversal beam z position --> 
+
+<var  name="PL05"   value="2200."/>
+<var  name="DZS5"   value="3000."/>
+
+<gvxysx name="MBAP_Sector05_Beam12Transversal" material="Aluminium" dZ="DZS5">
+  <gvxy_point X_Y="AP13_SFBeamXa;AP13_SFBeamYa"/>
+  <gvxy_point X_Y="AP13_SFBeamXb;AP13_SFBeamYb"/>
+  <gvxy_point X_Y="AP13_SFBeamXc;AP13_SFBeamYc"/>
+  <gvxy_point X_Y="AP13_SFBeamXd;AP13_SFBeamYd"/>
+</gvxysx>
+
+<gvxysx name="MBAP_Sector05_Beam34Longitudinal" material="Aluminium" dZ="PL05">
+  <gvxy_point X_Y="AP13_SFBeamXa;AP13_SFBeamYa"/>
+  <gvxy_point X_Y="AP13_SFBeamXb;AP13_SFBeamYb"/>
+  <gvxy_point X_Y="AP13_SFBeamXc;AP13_SFBeamYc"/>
+  <gvxy_point X_Y="AP13_SFBeamXd;AP13_SFBeamYd"/>
+</gvxysx>
+
+<!-- NEw simplify Platforms lc 24-03-10 -->
+
+<!--  sector 3 & 7  -->
+<composition name="MBAP_AccessPlatform14s3s7AssemblyS">
+  <posXYZ volume="MBAP_PlatformFloor14s3s7" X_Y_Z="MBAP_P14s3Flx;MBAP_P14s3Fly;MBAP_P14s3Flz" rot="0.;0.;MBAP_P14s3Fla"/>
+</composition>
+<composition name="MBAP_AccessPlatform14s3s7AssemblySymS">
+  <posXYZ volume="MBAP_PlatformFloor14s3s7" X_Y_Z="MBAP_P14s3Flx;MBAP_P14s3Fly;-MBAP_P14s3Flz" rot="0.;0.;MBAP_P14s3Fla"/>
+</composition>
+<composition name="MBAP_AccessPlatform14s3s7_zplusS">
+  <posXYZ volume="MBAP_AccessPlatform14s3s7AssemblyS"   X_Y_Z=" MBAP_Ps14posx;MBAP_Ps14posy; MBAP_PSSs3zp1" rot="0.;  0.; MBAP_Ps14angz"/>
+</composition>
+<composition name="MBAP_AccessPlatform14s3s7Sym_zplusS">
+  <posXYZ volume="MBAP_AccessPlatform14s3s7AssemblySymS"   X_Y_Z=" MBAP_Ps14posx;MBAP_Ps14posy; -MBAP_PSSs3zp1" rot="0.;  0.; MBAP_Ps14angz"/>
+</composition>
+<composition name="MBAP_AccessPlatform14s3s7_zminusS">
+  <posXYZ volume="MBAP_AccessPlatform14s3s7AssemblyS"   X_Y_Z="-MBAP_Ps14posx;MBAP_Ps14posy;-MBAP_PSSs3zp1" rot="0.;180.;-MBAP_Ps14angz"/>
+</composition>
+<composition name="MBAP_AccessPlatform14s3s7Sym_zminusS">
+  <posXYZ volume="MBAP_AccessPlatform14s3s7AssemblySymS"   X_Y_Z="-MBAP_Ps14posx;MBAP_Ps14posy;MBAP_PSSs3zp1" rot="0.;180.;-MBAP_Ps14angz"/>
+</composition>
+
+
+<box name="MBAP_PlatformFloorS"  material="Aluminium4"   X_Y_Z="DZS5;MBAP_PFLhe;2*AP13_Fr23x1-65"  />
+<composition name="MBAP_Sector05_Platform2">
+  <posXYZ volume="MBAP_Sector05_Beam34Longitudinal" X_Y_Z=" AP13_Fr23x1;2.*MBAP_PFLhe;0." />
+  <posXYZ volume="MBAP_Sector05_Beam34Longitudinal" X_Y_Z="-AP13_Fr23x1;2.*MBAP_PFLhe;0." />
+  <posXYZ volume="MBAP_Sector05_Beam12Transversal" X_Y_Z="0.;AP13_Fr12Typ; AP13_Fr34Tz1" rot="0.;90.;0." />
+  <posXYZ volume="MBAP_Sector05_Beam12Transversal" X_Y_Z="0.;AP13_Fr12Typ; AP13_Fr34Tz2" rot="0.;90.;0." />
+   <posXYZ volume="MBAP_PlatformFloorS"  X_Y_Z="0.;MBAP_PFLhe+0.1;0."  />
+</composition>
+
+<var  name="AP05"   value="5370."/>
+
+<composition name="MBAP_Sector05S">
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP05; +5900"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP05; +1500."/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP05; +3700"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP05; -5900"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP05; -1500"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP05; -3700"/>
+</composition>
+
+<var  name="AP05_MS"   value="7650.1"/>
+<composition name="MBAP_Sector05_MediumS">
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP05_MS; +8100"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP05_MS; +5900"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP05_MS; +1500."/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP05_MS; +3700"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP05_MS; -5900"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP05_MS; -8100"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP05_MS; -1500"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP05_MS; -3700"/>
+</composition>
+
+<var  name="AP13_MS"   value="-6700."/>
+<composition name="MBAP_Sector13_MediumS">
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP13_MS; +8100"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP13_MS; +5900"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP13_MS; +1500."/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP13_MS; +3700"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP13_MS; -5900"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP13_MS; -8100"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP13_MS; -1500"/>
+  <posXYZ volume="MBAP_Sector05_Platform2" X_Y_Z="0.;AP13_MS; -3700"/>
+</composition>
+
+<gvxysx name="MBAP_Sector13_Beam12Transversal2" material="Aluminium" dZ="5000.">
+  <gvxy_point X_Y="AP13_SFBeamXa;AP13_SFBeamYa"/>
+  <gvxy_point X_Y="AP13_SFBeamXb;AP13_SFBeamYb"/>
+  <gvxy_point X_Y="AP13_SFBeamXc;AP13_SFBeamYc"/>
+  <gvxy_point X_Y="AP13_SFBeamXd;AP13_SFBeamYd"/>
+</gvxysx>
+<gvxysx name="MBAP_Sector13_Beam34Longitudinal2" material="Aluminium" dZ="5000">
+  <gvxy_point X_Y="AP13_SFBeamXa;AP13_SFBeamYa"/>
+  <gvxy_point X_Y="AP13_SFBeamXb;AP13_SFBeamYb"/>
+  <gvxy_point X_Y="AP13_SFBeamXc;AP13_SFBeamYc"/>
+  <gvxy_point X_Y="AP13_SFBeamXd;AP13_SFBeamYd"/>
+</gvxysx>
+<gvxysx name="MBAP_Sector13_Beam34Longitudinal3" material="Aluminium" dZ="6000">
+  <gvxy_point X_Y="AP13_SFBeamXa;AP13_SFBeamYa"/>
+  <gvxy_point X_Y="AP13_SFBeamXb;AP13_SFBeamYb"/>
+  <gvxy_point X_Y="AP13_SFBeamXc;AP13_SFBeamYc"/>
+  <gvxy_point X_Y="AP13_SFBeamXd;AP13_SFBeamYd"/>
+</gvxysx>
+<box name="MBAP_PlatformFloorS2"  material="Aluminium4"   X_Y_Z="DZS5+1700;MBAP_PFLhe; 6000."  />
+<composition name="MBAP_Sector13_Platform3">
+  <posXYZ volume="MBAP_Sector13_Beam34Longitudinal3" X_Y_Z=" AP13_Fr23x1;2.*MBAP_PFLhe;0." />
+  <posXYZ volume="MBAP_Sector13_Beam34Longitudinal3" X_Y_Z="-AP13_Fr23x1;2.*MBAP_PFLhe;0." />
+  <posXYZ volume="MBAP_Sector13_Beam12Transversal2" X_Y_Z="0.;AP13_Fr12Typ; AP13_Fr34Tz1" rot="0.;90.;0." />
+  <posXYZ volume="MBAP_Sector13_Beam12Transversal2" X_Y_Z="0.;AP13_Fr12Typ; AP13_Fr34Tz2" rot="0.;90.;0." />
+   <posXYZ volume="MBAP_PlatformFloorS2"  X_Y_Z="0.;MBAP_PFLhe;0."  />
+</composition>
+<box name="MBAP_PlatformFloorS3"  material="Aluminium4"   X_Y_Z="DZS5+1700;MBAP_PFLhe; 4900."  />
+<composition name="MBAP_Sector13_Platform2">
+  <posXYZ volume="MBAP_Sector13_Beam34Longitudinal2" X_Y_Z=" AP13_Fr23x1;2.*MBAP_PFLhe;0." />
+  <posXYZ volume="MBAP_Sector13_Beam34Longitudinal2" X_Y_Z="-AP13_Fr23x1;2.*MBAP_PFLhe;0." />
+  <posXYZ volume="MBAP_Sector13_Beam12Transversal2" X_Y_Z="0.;AP13_Fr12Typ; AP13_Fr34Tz1" rot="0.;90.;0." />
+  <posXYZ volume="MBAP_Sector13_Beam12Transversal2" X_Y_Z="0.;AP13_Fr12Typ; AP13_Fr34Tz2" rot="0.;90.;0." />
+   <posXYZ volume="MBAP_PlatformFloorS3"  X_Y_Z="0.;MBAP_PFLhe;0."  />
+</composition>
+
+<composition name="MBAP_Sector13S">
+  <posXYZ volume="MBAP_Sector13_Platform3" X_Y_Z="0.;AP13_Fr12y; +9300"/>
+  <posXYZ volume="MBAP_Sector13_Platform2" X_Y_Z="0.;AP13_Fr12y; +3000"/>
+  <posXYZ volume="MBAP_Sector13_Platform2" X_Y_Z="0.;AP13_Fr12y; -2650"/>
+  <posXYZ volume="MBAP_Sector13_Platform3" X_Y_Z="0.;AP13_Fr12y; -9300"/>
+</composition>
+
+
+<composition name="MBAP_AccessPlatform">
+
+<!--  sector 1 & 9  -->
+
+  <posXYZ volume="MBAP_PlatformFloor12s1s9" X_Y_Z=" MBAP_Ps01posx;MBAP_Ps01posy; MBAP_P12posz" rot="90.; 90.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor23s1s9" X_Y_Z=" MBAP_Ps01posx;MBAP_Ps01posy; MBAP_P23posz" rot="90.; 90.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor34s1s9" X_Y_Z=" MBAP_Ps01posx;MBAP_Ps01posy; MBAP_P34posz" rot="90.; 90.;0."/>
+
+  <posXYZ volume="MBAP_PlatformFloor12s1s9" X_Y_Z=" MBAP_Ps01posx;MBAP_Ps01posy;-MBAP_P12posz" rot="90.; 90.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor23s1s9" X_Y_Z=" MBAP_Ps01posx;MBAP_Ps01posy;-MBAP_P23posz" rot="90.; 90.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor34s1s9" X_Y_Z=" MBAP_Ps01posx;MBAP_Ps01posy;-MBAP_P34posz" rot="90.; 90.;0."/>
+
+  <posXYZ volume="MBAP_PlatformFloor12s1s9" X_Y_Z="-MBAP_Ps01posx;MBAP_Ps01posy; MBAP_P12posz" rot="90.;270.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor23s1s9" X_Y_Z="-MBAP_Ps01posx;MBAP_Ps01posy; MBAP_P23posz" rot="90.;270.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor34s1s9" X_Y_Z="-MBAP_Ps01posx;MBAP_Ps01posy; MBAP_P34posz" rot="90.;270.;0."/>
+
+  <posXYZ volume="MBAP_PlatformFloor12s1s9" X_Y_Z="-MBAP_Ps01posx;MBAP_Ps01posy;-MBAP_P12posz" rot="90.;270.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor23s1s9" X_Y_Z="-MBAP_Ps01posx;MBAP_Ps01posy;-MBAP_P23posz" rot="90.;270.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor34s1s9" X_Y_Z="-MBAP_Ps01posx;MBAP_Ps01posy;-MBAP_P34posz" rot="90.;270.;0."/>
+
+<!--  sector 11 & 15  -->
+
+  <posXYZ volume="MBAP_PlatformFloor12s11s15" X_Y_Z=" MBAP_Ps11posx;MBAP_Ps11posy; MBAP_P12posz" rot="90.; 90.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor23s11s15" X_Y_Z=" MBAP_Ps11posx;MBAP_Ps11posy; MBAP_P23posz" rot="90.; 90.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor34s11s15" X_Y_Z=" MBAP_Ps11posx;MBAP_Ps11posy; MBAP_P34posz" rot="90.; 90.;0."/>
+
+  <posXYZ volume="MBAP_PlatformFloor12s11s15" X_Y_Z=" MBAP_Ps11posx;MBAP_Ps11posy;-MBAP_P12posz" rot="90.; 90.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor23s11s15" X_Y_Z=" MBAP_Ps11posx;MBAP_Ps11posy;-MBAP_P23posz" rot="90.; 90.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor34s11s15" X_Y_Z=" MBAP_Ps11posx;MBAP_Ps11posy;-MBAP_P34posz" rot="90.; 90.;0."/>
+
+  <posXYZ volume="MBAP_PlatformFloor12s11s15" X_Y_Z="-MBAP_Ps11posx;MBAP_Ps11posy; MBAP_P12posz" rot="90.;270.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor23s11s15" X_Y_Z="-MBAP_Ps11posx;MBAP_Ps11posy; MBAP_P23posz" rot="90.;270.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor34s11s15" X_Y_Z="-MBAP_Ps11posx;MBAP_Ps11posy; MBAP_P34posz" rot="90.;270.;0."/>
+
+  <posXYZ volume="MBAP_PlatformFloor12s11s15" X_Y_Z="-MBAP_Ps11posx;MBAP_Ps11posy;-MBAP_P12posz" rot="90.;270.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor23s11s15" X_Y_Z="-MBAP_Ps11posx;MBAP_Ps11posy;-MBAP_P23posz" rot="90.;270.;0."/>
+  <posXYZ volume="MBAP_PlatformFloor34s11s15" X_Y_Z="-MBAP_Ps11posx;MBAP_Ps11posy;-MBAP_P34posz" rot="90.;270.;0."/>
+
+<!--  sector 3 & 7  -->
+  <posXYZ volume="MBAP_AccessPlatform14s3s7_zplusS"           />
+  <posXYZ volume="MBAP_AccessPlatform14s3s7Sym_zplusS"        />
+  <posXYZ volume="MBAP_AccessPlatform14s3s7_zminusS"          />
+  <posXYZ volume="MBAP_AccessPlatform14s3s7Sym_zminusS"       />
+
+
+<!--  Access Platform Sector 13 Bottom Level -->
+  <posXYZ volume="MBAP_Sector13S"           />
+  <posXYZ volume="MBAP_Sector13_MediumS"    />
+<!--  Access Platform Sector 05 Top    Level -->
+  <posXYZ volume="MBAP_Sector05S"           />
+  <posXYZ volume="MBAP_Sector05_MediumS"    />
+  
+</composition>
+
+</section>
+<section name       = "MDT Big Wheel"
+         version    = "7.0"
+         date       = "11 Oct 2005"
+         author     = "Daniel Pomarede"
+         top_volume = "MBWH_BigWheels">
+
+
+<!--     name       =  MDT Big Wheel                 section name       = "Supports"  -->
+<!--  **************************************************************
+      **************************************************************
+      ***                                                       ****
+      ***                      MDT Big Wheel                    ****
+      ***                                                       ****
+      **************************************************************
+      **************************************************************  -->
+
+
+
+
+<var  name="MBWH_zposL" value="13950" />
+
+
+
+
+<!--  
+      **************************************************************
+      ***                                                       ****
+      ***                    common items                       ****
+      ***                                                       ****
+      **************************************************************
+-->
+
+
+<!--  Cut profiles cross bracing large and small sector -->
+<!--  ATLMHHBM0091 & ATLMHHBM0100-->
+<var  name="MBWH_CBext" value="200"/>
+<var  name="MBWH_CBhei" value="60"/>
+
+<!--  Spokes U profile -->
+
+<!--  ATLMHHBM0130 & ATLMHHBM0085 & ATLMHHBM0086 & ATLMHHBM0087 -->
+
+<var  name="MBWH_SUPthi"  value="   5." />
+<var  name="MBWH_SUPext"  value=" 230." />
+<var  name="MBWH_SUPhei"  value="  55." />
+
+<!--  Spokes Reinforcing bar -->
+
+<!--  ATLMHHBM0082A & ATLMHHBM0051A & ATLMHHBM0154A  -->
+
+<!--  Slate -->
+<var  name="MBWH_RBSlen" value="1080"/>
+<var  name="MBWH_RBSwid" value="100"/>
+<var  name="MBWH_RBSthi" value="25"/>
+<!--  Bracket -->
+<var  name="MBWH_RBBlen" value="200"/>
+<var  name="MBWH_RBBsiz" value="60"/>
+<var  name="MBWH_RBBthi" value="10"/>
+
+<!--  holes spacing for clamping Reinforcing bar on spokes -->
+<!--  ATLMHHBM0130 & ATLMHHBM0085 -->
+<var name="MBWH_SRBhos" value="160" />
+
+<!--  Plates of Cross Bracings --> 
+<var  name="MBWH_CBPth" value="8"/>    <!-- thickness -->
+
+<!--  Derived variables -->
+<var  name="MBWH_RBBxa" value="0"/>
+<var  name="MBWH_RBBya" value="0"/>
+<var  name="MBWH_RBBxb" value="MBWH_RBBsiz"/>
+<var  name="MBWH_RBByb" value="MBWH_RBBya"/>
+<var  name="MBWH_RBBxc" value="MBWH_RBBxb"/>
+<var  name="MBWH_RBByc" value="MBWH_RBBsiz"/>
+<var  name="MBWH_RBBxd" value="MBWH_RBBxc-MBWH_RBBthi"/>
+<var  name="MBWH_RBByd" value="MBWH_RBByc"/>
+<var  name="MBWH_RBBxe" value="MBWH_RBBxd"/>
+<var  name="MBWH_RBBye" value="MBWH_RBBthi"/>
+<var  name="MBWH_RBBxf" value="MBWH_RBBxa"/>
+<var  name="MBWH_RBByf" value="MBWH_RBBye"/>
+
+<var  name="MBWH_RBBxp"  value="-MBWH_RBSlen/2.+MBWH_RBBsiz"/>
+<var  name="MBWH_RBByp1" value="-MBWH_RBSthi/2.-MBWH_RBBsiz"/>
+<var  name="MBWH_RBByp2" value="MBWH_RBSthi/2."/>
+
+<box name="MBWH_ReinforcingBarSlate" material="Aluminium1" X_Y_Z="MBWH_RBSlen;MBWH_RBSthi;MBWH_RBSwid"/>
+
+<gvxy name="MBWH_ReinforcingBarBracket" material="Aluminium2" dZ="MBWH_RBBlen">
+  <gvxy_point X_Y="MBWH_RBBxa;MBWH_RBBya"/>
+  <gvxy_point X_Y="MBWH_RBBxb;MBWH_RBByb"/>
+  <gvxy_point X_Y="MBWH_RBBxc;MBWH_RBByc"/>
+  <gvxy_point X_Y="MBWH_RBBxd;MBWH_RBByd"/>
+  <gvxy_point X_Y="MBWH_RBBxe;MBWH_RBBye"/>
+  <gvxy_point X_Y="MBWH_RBBxf;MBWH_RBByf"/>
+</gvxy>
+
+<composition name="MBWH_ReinforcingBar">
+  <posXYZ volume="MBWH_ReinforcingBarSlate"/>
+  <posXYZ volume="MBWH_ReinforcingBarBracket" X_Y_Z=" MBWH_RBBxp;MBWH_RBByp1;0" rot="0;0;90"/>
+  <posXYZ volume="MBWH_ReinforcingBarBracket" X_Y_Z="-MBWH_RBBxp;MBWH_RBByp2;0"/>
+</composition>
+
+<!--  positions of reinforcing bars -->
+<var name="MBWH_SRBpx" value="MBWH_SUPext/2.+MBWH_RBSthi/2.+MBWH_RBBthi"/>
+<var name="MBWH_SRBpy" value="-MBWH_RBSlen/2.+MBWH_SUPhei+MBWH_RBBthi"/>
+
+<!--  Spokes -->
+<!--  Derived variables -->
+<var  name="MBWH_SUPxa"  value="MBWH_SUPext/2." />
+<var  name="MBWH_SUPya"  value="0." />
+<var  name="MBWH_SUPxb"  value="MBWH_SUPxa" />
+<var  name="MBWH_SUPyb"  value="MBWH_SUPhei" />
+<var  name="MBWH_SUPxc"  value="MBWH_SUPxb-MBWH_SUPthi" />
+<var  name="MBWH_SUPyc"  value="MBWH_SUPyb" />
+<var  name="MBWH_SUPxd"  value="MBWH_SUPxc" />
+<var  name="MBWH_SUPyd"  value="MBWH_SUPthi" />
+
+<!--  Plates of Cross Bracings --> 
+<var  name="MBWH_CBPx"  value="(MBWH_CBext+MBWH_CBPth)/2." />   <!-- x pos -->
+
+
+
+
+<!--  
+      **************************************************************
+      ***                                                       ****
+      ***                      Large Sector                     ****
+      ***                                                       ****
+      **************************************************************
+-->
+
+<!--  ATLMHHBM0091 -->
+<!--  Cut profiles cross bracing large sector -->
+<var  name="MBWH_CBLthi" value="5"/>
+
+<!--  Contreventements lengths -->
+<!--  item numbering in ATLMHHBM0002 -->
+<var  name="MBWH_CBLl11"  value="3690." />  <!--  item 11 -->
+<var  name="MBWH_CBLl17"  value="2700." />  <!--  item 17 -->
+<var  name="MBWH_CBLl22"  value="1740." />  <!--  item 22 -->
+<var  name="MBWH_CBLl26"  value=" 750." />  <!--  item 26 -->
+
+<!--  Contreventements positions (...to be confirmed...) -->
+<var  name="MBWH_CBLy11"  value="9700." />  <!--  item 11 -->
+<var  name="MBWH_CBLy17"  value="7750." />  <!--  item 17 -->
+<var  name="MBWH_CBLy22"  value="5800." />  <!--  item 22 -->
+<var  name="MBWH_CBLy26"  value="3850." />  <!--  item 26 -->
+
+
+<!--  item numbering in ATLMHHBM0002 -->
+<!--  Cross bracing, bay 1 large sector -->
+<var  name="MBWH_CBLl10"  value="4260." />  <!--  item 10 --> <!--  drawing ATLMHHBM0066 -->
+<!--  Cross bracing, bay 2 large sector -->
+<var  name="MBWH_CBLl15"  value="3590." />  <!--  item 15 --> <!--  drawing ATLMHHBM0068 -->
+<!--  Cross bracing, bay 3 large sector -->
+<var  name="MBWH_CBLl21"  value="2830." />  <!--  item 21 --> <!--  drawing ATLMHHBM0070 -->
+<!--  Cross bracing, bay 4 large sector -->
+<var  name="MBWH_CBLl25"  value="2130." />  <!--  item 25 --> <!--  drawing ATLMHHBM0073 -->
+
+<!--  item numbering in ATLMHHBM0002 -->
+<!--  Contreventements, bay 1 large sector -->
+<var  name="MBWH_CBLl8"  value="1780."/>  <!--  item 8 --> <!--  drawing ATLMHHBM0091 -->
+<var  name="MBWH_CBLl9"  value="2310."/>  <!--  item 9 --> <!--  drawing ATLMHHBM0091 -->
+
+<!--  Contreventements, bay 2 large sector -->
+<var  name="MBWH_CBLl14" value="1450."/>  <!--  item 14 --> <!--  drawing ATLMHHBM0091 -->
+<var  name="MBWH_CBLl13" value="2005."/>  <!--  item 13 --> <!--  drawing ATLMHHBM0091 -->
+
+<!--  Contreventements, bay 3 large sector -->
+<var  name="MBWH_CBLl20" value="1055."/>  <!--  item 20 --> <!--  drawing ATLMHHBM0091 -->
+<var  name="MBWH_CBLl18" value="1685."/>  <!--  item 18 --> <!--  drawing ATLMHHBM0091 -->
+
+<!--  Contreventements, bay 4 large sector -->
+<var  name="MBWH_CBLl24" value="590."/>   <!--  item 24 --> <!--  drawing ATLMHHBM0091 -->
+<var  name="MBWH_CBLl23" value="1430."/>  <!--  item 23 --> <!--  drawing ATLMHHBM0091 -->
+
+
+<!--  Plates --> 
+ <!--  item 10 for Bay 1 --> <!--  drawing ATLMHHBM0066 -->
+<var  name="MBWH_CBPL10le" value="419"/>  <!-- length -->
+<var  name="MBWH_CBPL10wi" value="216"/>  <!-- width -->
+<var  name="MBWH_CBPL10cu" value="40"/>   <!-- cut -->
+<var  name="MBWH_CBPL10ti" value="22"/>   <!-- tilt -->
+<var  name="MBWH_CBPL10za" value="2174"/> <!-- Plate offset -->
+<var  name="MBWH_CBPL10ya" value="14"/>   <!-- Plate offset -->
+ <!--  item 15 for Bay 2 --> <!--  drawing ATLMHHBM0068 -->
+<var  name="MBWH_CBPL15le" value="345"/>  <!-- length -->
+<var  name="MBWH_CBPL15wi" value="224"/>  <!-- width -->
+<var  name="MBWH_CBPL15cu" value="30"/>   <!-- cut -->
+<var  name="MBWH_CBPL15ti" value="30"/>   <!-- tilt -->
+<var  name="MBWH_CBPL15za" value="1322"/> <!-- Plate offset -->
+<var  name="MBWH_CBPL15ya" value="9"/>    <!-- Plate offset -->
+ <!--  item 21 for Bay 3 --> <!--  drawing ATLMHHBM0070 -->
+<var  name="MBWH_CBPL21le" value="269"/>  <!-- length -->
+<var  name="MBWH_CBPL21wi" value="230"/>  <!-- width -->
+<var  name="MBWH_CBPL21cu" value="20"/>   <!-- cut -->
+<var  name="MBWH_CBPL21ti" value="40"/>   <!-- tilt -->
+<var  name="MBWH_CBPL21za" value="938"/>  <!-- Plate offset -->
+<var  name="MBWH_CBPL21ya" value="13"/>   <!-- Plate offset -->
+ <!--  item 25 for Bay 4 --> <!--  drawing ATLMHHBM0073 -->
+<var  name="MBWH_CBPL25le" value="300"/>  <!-- length -->
+<var  name="MBWH_CBPL25wi" value="222"/>  <!-- width -->
+<var  name="MBWH_CBPL25cu" value="20"/>   <!-- cut -->
+<var  name="MBWH_CBPL25ti" value="33"/>   <!-- tilt -->   <!-- ==> to be confirmed <== -->
+<var  name="MBWH_CBPL25za" value="470"/>  <!-- Plate offset -->
+<var  name="MBWH_CBPL25ya" value="21"/>   <!-- Plate offset -->
+
+
+<!--  positions (...to be confirmed...) -->
+<var  name="MBWH_Croily10" value="10500"/> <!--  item 10 --> 
+<var  name="MBWH_Croily15" value="8600"/>  <!--  item 15 --> 
+<var  name="MBWH_Croily21" value="6600"/>  <!--  item 21 --> 
+<var  name="MBWH_Croily25" value="4450"/>  <!--  item 25 --> 
+
+
+<!--  ATLMHHBM0002 -->
+<!--  Spokes Opening angle large sector -->
+<var  name="MBWH_SLangle"  value="14." />
+
+<!--  Spoke large sector -->
+<!--  Inner spoke large sector  ATLMHHBM0130 -->
+<!--  External spoke large sector  ATLMHHBM0128 -->
+
+<!--  ATLMHHBM0130 -->
+<!--  U profile length -->
+<var  name="MBWH_SlsUPlen"  value="8465" />   <!-- ??? to be confirmed for both -->
+
+<!--  relative positions of reinforcing bars -->
+<var name="MBWH_SlsRBdz1" value="1317" />
+<var name="MBWH_SlsRBdz2" value="1787" />
+<var name="MBWH_SlsRBdz3" value="2030" />
+<var name="MBWH_SlsRBdz4" value="1740" />
+
+  
+<!--  External Spokes supports -->
+
+<!--  ATLMHHBM0128 -->
+<!--  position along the spoke of 1st support -->
+<var  name="MBWH_SlsSup1" value=" 414" />
+<!--  size of support -->
+<var  name="MBWH_SlsSSize" value=" 220" />   <!-- as measured on drawing, to be confirmed in atlmhhbm0123 ? -->
+
+<!--  Transversal beam, central support -->
+
+<!--  ATLMHHBM0080 -->
+<var  name="MBWH_TBCSlen1" value="2396." />
+<var  name="MBWH_TBCSlen2" value="2526.6"/>
+<var  name="MBWH_TBCSext"  value="  87." />
+<var  name="MBWH_TBCShei"  value=" 180." />
+<var  name="MBWH_TBCSthi1" value="  15." />
+<var  name="MBWH_TBCSthi2" value="  10." />
+<var  name="MBWH_TBCSoffs" value=" 135." />
+<var  name="MBWH_TBCSang1" value="  14." />
+<var  name="MBWH_TBCSang2" value="22.5"/>
+
+
+<!--  Connection beam / extremity plate -->
+
+<!--  ATLMHHBM0076 -->
+<!--  thickness, assumed constant -->
+<var  name="MBWH_CBEPthic" value="15."/>
+<!--  dimensions and angles -->
+<var  name="MBWH_CBEPl1" value="195.8"/>
+<var  name="MBWH_CBEPl2" value="230."/>
+<var  name="MBWH_CBEPl3" value="263."/>
+
+<var  name="MBWH_CBEPh1" value="89.5"/>
+<var  name="MBWH_CBEPh2" value="169.2"/>
+<var  name="MBWH_CBEPh3" value="72.8"/>
+<var  name="MBWH_CBEPh4" value="81.2"/>
+<var  name="MBWH_CBEPh5" value="125"/>
+
+<var  name="MBWH_CBEPa1" value="22.5"/>
+<var  name="MBWH_CBEPa2" value="67.5"/>
+<var  name="MBWH_CBEPa3" value="82."/>
+<var  name="MBWH_CBEPa4" value="15."/>
+
+
+<!--  Extremity plate -->
+
+<!--  ATLMHHBM0075 -->
+<!--  thickness, assumed constant -->
+<var  name="MBWH_EPthic" value="15."/>
+<!--  dimensions and angles -->
+<var  name="MBWH_EPl1" value="227.8"/>
+<var  name="MBWH_EPl2" value="423"/>
+<var  name="MBWH_EPl3" value="193.7"/>
+
+<var  name="MBWH_EPh1" value="250.7"/>
+<var  name="MBWH_EPh2" value="170.3"/>
+<var  name="MBWH_EPh3" value="383"/>
+<var  name="MBWH_EPh4" value="76.1"/>
+
+
+<!--  Central Reinforcing bar -->
+
+<!--  ATLMHHBM0113 -->
+
+<var  name="MBWH_CRBLPwid" value="180"/>
+<var  name="MBWH_CRBPL1pi" value="643"/>
+<var  name="MBWH_CRBPL1po" value="647"/>
+<var  name="MBWH_CRBSHIof" value="4"/>
+
+<!--  L Profile -->
+<var  name="MBWH_CRBLPthi" value="12"/>
+<var  name="MBWH_CRBLPle1" value="910"/>
+<var  name="MBWH_CRBLPhe1" value="60"/>
+<var  name="MBWH_CRBLPle2" value="145"/>
+<var  name="MBWH_CRBLPhe2" value="39"/>
+
+<!--  Plate 1 -->
+<var  name="MBWH_CRBPL1th" value="12"/>
+<var  name="MBWH_CRBPL1le" value="340"/>
+<var  name="MBWH_CRBPL1wi" value="156"/>
+
+<!--  Plate 2 -->
+<var  name="MBWH_CRBPL2th" value="12"/>
+<var  name="MBWH_CRBPL2le" value="210"/>
+<var  name="MBWH_CRBPL2wi" value="156"/>
+
+<!--  Shim -->
+<var  name="MBWH_CRBSHIth" value="12"/>
+<var  name="MBWH_CRBSHIle" value="165"/>
+<var  name="MBWH_CRBSHIwi" value="156"/>
+
+<!--  position of Reinforcing Bar relative to extremity plate ... pifometric, to be confirmed -->
+<var  name="MBWH_CRBxoff" value="-200"/>
+<var  name="MBWH_CRByoff" value="-400"/>
+<var  name="MBWH_CRBzoff" value="-300"/>
+
+
+<!--  ATLMHHBM0002 -->
+<!--  position of 1st support in atlas ref system -->
+<var  name="MBWH_SlsSuy1"   value=" 3612.7" />
+<var  name="MBWH_SlsSux1"   value=" 1305." />
+<!--  ATLMHHBM0128 -->
+<!--  x extension -->
+<var  name="MBWH_SlsSxext"  value=" 139.3" />
+
+<!--  Derived variables -->
+<!--  Positions -->
+<var  name="MBWH_Slsypos" value="MBWH_SlsSuy1+(.5*MBWH_SlsUPlen-MBWH_SlsSup1)*cos(MBWH_SLangle*GENV_PiS180)"/>
+<var  name="MBWH_Slsxp1"  value="MBWH_SlsSux1+(MBWH_SlsSxext-.5*MBWH_SUPhei)/cos(MBWH_SLangle*GENV_PiS180)-.5*MBWH_SlsSSize*sin(MBWH_SLangle*GENV_PiS180) " />
+<!--  external spokes -->
+<var  name="MBWH_SlsExref" value="MBWH_Slsxp1 +(.5*MBWH_SlsUPlen-MBWH_SlsSup1)*sin(MBWH_SLangle*GENV_PiS180) "/>
+<!--  inner spokes -->
+<var  name="MBWH_SlsIxref" value="MBWH_SlsExref - (MBWH_RBSlen-MBWH_RBBsiz)/cos(MBWH_SLangle*GENV_PiS180) "/>
+
+<!--  Connection beam / extremity plate -->
+<!--  Derived variables -->
+<var  name="MBWH_CBEPxa" value="0"/>
+<var  name="MBWH_CBEPya" value="0"/>
+<var  name="MBWH_CBEPxb" value="MBWH_CBEPxa"/>
+<var  name="MBWH_CBEPyb" value="MBWH_CBEPh1"/>
+<var  name="MBWH_CBEPxc" value="MBWH_CBEPl2-MBWH_CBEPl3"/>
+<var  name="MBWH_CBEPyc" value="MBWH_CBEPh2"/>
+<var  name="MBWH_CBEPxd" value="MBWH_CBEPxc+MBWH_CBEPl1"/>
+<var  name="MBWH_CBEPyd" value="MBWH_CBEPyc"/>
+<var  name="MBWH_CBEPxe" value="MBWH_CBEPxd+(MBWH_CBEPh2-MBWH_CBEPh5)/tan(MBWH_CBEPa2*GENV_PiS180)"/>
+<var  name="MBWH_CBEPye" value="MBWH_CBEPh5"/>
+<var  name="MBWH_CBEPxf" value="MBWH_CBEPxe+(MBWH_CBEPh5-MBWH_CBEPh4)/tan(MBWH_CBEPa3*GENV_PiS180)"/>
+<var  name="MBWH_CBEPyf" value="MBWH_CBEPh4"/>
+<var  name="MBWH_CBEPxg" value="MBWH_CBEPxf+(MBWH_CBEPh4-MBWH_CBEPh3)/tan(MBWH_CBEPa4*GENV_PiS180)"/>
+<var  name="MBWH_CBEPyg" value="MBWH_CBEPh3"/>
+<var  name="MBWH_CBEPxh" value="MBWH_CBEPl2"/>
+<var  name="MBWH_CBEPyh" value="MBWH_CBEPya"/>
+
+<!--  Modelization -->
+<gvxy name="MBWH_ConnectionBeamExtremityPlate" material="Aluminium2" dZ="MBWH_CBEPthic">
+  <gvxy_point X_Y="MBWH_CBEPxa;MBWH_CBEPya"/>
+  <gvxy_point X_Y="MBWH_CBEPxb;MBWH_CBEPyb"/>
+  <gvxy_point X_Y="MBWH_CBEPxc;MBWH_CBEPyc"/>
+  <gvxy_point X_Y="MBWH_CBEPxd;MBWH_CBEPyd"/>
+  <gvxy_point X_Y="MBWH_CBEPxe;MBWH_CBEPye"/>
+  <gvxy_point X_Y="MBWH_CBEPxf;MBWH_CBEPyf"/>
+  <gvxy_point X_Y="MBWH_CBEPxg;MBWH_CBEPyg"/>
+  <gvxy_point X_Y="MBWH_CBEPxh;MBWH_CBEPyh"/>
+</gvxy>
+
+<!--  Extremity plate -->
+<!--  Derived variables -->
+<var  name="MBWH_EPxa" value="0"/>
+<var  name="MBWH_EPya" value="0"/>
+<var  name="MBWH_EPxb" value="MBWH_EPxa"/>
+<var  name="MBWH_EPyb" value="MBWH_EPh1"/>
+<var  name="MBWH_EPxc" value="MBWH_EPl2-MBWH_EPl3"/>
+<var  name="MBWH_EPyc" value="MBWH_EPh3"/>
+<var  name="MBWH_EPxd" value="MBWH_EPl2"/>
+<var  name="MBWH_EPyd" value="MBWH_EPyc"/>
+<var  name="MBWH_EPxe" value="MBWH_EPxd"/>
+<var  name="MBWH_EPye" value="MBWH_EPyd-MBWH_EPh2"/>
+<var  name="MBWH_EPxf" value="MBWH_EPl1"/>
+<var  name="MBWH_EPyf" value="MBWH_EPh4"/>
+<var  name="MBWH_EPxg" value="MBWH_EPxf"/>
+<var  name="MBWH_EPyg" value="MBWH_EPya"/>
+
+<!--  Modelization -->
+<gvxy name="MBWH_ExtremityPlate" material="Aluminium1" dZ="MBWH_EPthic">
+  <gvxy_point X_Y="MBWH_EPxa;MBWH_EPya"/>
+  <gvxy_point X_Y="MBWH_EPxb;MBWH_EPyb"/>
+  <gvxy_point X_Y="MBWH_EPxc;MBWH_EPyc"/>
+  <gvxy_point X_Y="MBWH_EPxd;MBWH_EPyd"/>
+  <gvxy_point X_Y="MBWH_EPxe;MBWH_EPye"/>
+  <gvxy_point X_Y="MBWH_EPxf;MBWH_EPyf"/>
+  <gvxy_point X_Y="MBWH_EPxg;MBWH_EPyg"/>
+</gvxy>
+
+
+<!-- Central Reinforcing bar  -->
+<!--  L Profile -->
+<!--  Derived variables -->
+<!--  piece 1 -->
+<var  name="MBWH_CRBLP1xa" value="0"/>
+<var  name="MBWH_CRBLP1ya" value="0"/>
+<var  name="MBWH_CRBLP1xb" value="MBWH_CRBLPle1"/>
+<var  name="MBWH_CRBLP1yb" value="MBWH_CRBLP1ya"/>
+<var  name="MBWH_CRBLP1xc" value="MBWH_CRBLP1xb"/>
+<var  name="MBWH_CRBLP1yc" value="MBWH_CRBLPhe2"/>
+<var  name="MBWH_CRBLP1xd" value="MBWH_CRBLPle1-MBWH_CRBLPle2"/>
+<var  name="MBWH_CRBLP1yd" value="MBWH_CRBLPhe1"/>
+<var  name="MBWH_CRBLP1xe" value="MBWH_CRBLP1xa"/>
+<var  name="MBWH_CRBLP1ye" value="MBWH_CRBLP1yd"/>
+
+<!--  piece 2 -->
+<var  name="MBWH_CRBLP2dy" value="MBWH_CRBLPhe1-MBWH_CRBLPthi"/>
+
+
+<!--  Modelization -->
+<gvxy name="MBWH_CRB-LProfile1" material="Aluminium1" dZ="MBWH_CRBLPthi">
+  <gvxy_point X_Y="MBWH_CRBLP1xa;MBWH_CRBLP1ya"/>
+  <gvxy_point X_Y="MBWH_CRBLP1xb;MBWH_CRBLP1yb"/>
+  <gvxy_point X_Y="MBWH_CRBLP1xc;MBWH_CRBLP1yc"/>
+  <gvxy_point X_Y="MBWH_CRBLP1xd;MBWH_CRBLP1yd"/>
+  <gvxy_point X_Y="MBWH_CRBLP1xe;MBWH_CRBLP1ye"/>
+</gvxy>
+
+<var  name="MBWH_CRBLP1z" value="-MBWH_CRBLPwid/2.+MBWH_CRBLPthi/2"/>
+
+<box name="MBWH_CRB-LProfile2" material="Aluminium1" X_Y_Z="MBWH_CRBLPle1;MBWH_CRBLP2dy;MBWH_CRBLPthi"/>
+<var name="MBWH_CRBLP2x" value="MBWH_CRBLPle1/2"/>
+<var name="MBWH_CRBLP2y" value="MBWH_CRBLPthi/2"/>
+<var name="MBWH_CRBLP2z" value="MBWH_CRBLP1z+(MBWH_CRBLPthi+MBWH_CRBLP2dy)/2"/>
+
+<box name="MBWH_CRB-Plate2" material="Aluminium1" X_Y_Z="MBWH_CRBPL2le;MBWH_CRBPL2th;MBWH_CRBPL2wi"/>
+<var name="MBWH_CRBPL2xp" value="MBWH_CRBLPle1/2"/>
+<var name="MBWH_CRBPL2yp" value="MBWH_CRBLPthi+MBWH_CRBPL2th/2"/>
+
+<box name="MBWH_CRB-Plate1" material="Aluminium1" X_Y_Z="MBWH_CRBPL1le;MBWH_CRBPL1th;MBWH_CRBPL1wi"/>
+<var name="MBWH_CRBPL1x1" value="MBWH_CRBLPle1/2+MBWH_CRBPL1pi-MBWH_CRBPL1le/2"/>
+<var name="MBWH_CRBPL1x2" value="MBWH_CRBLPle1/2-MBWH_CRBPL1po+MBWH_CRBPL1le/2"/>
+<var name="MBWH_CRBPL1yp" value="-MBWH_CRBPL1th/2."/>
+
+<box name="MBWH_CRB-Shim" material="Aluminium1" X_Y_Z="MBWH_CRBSHIle;MBWH_CRBSHIth;MBWH_CRBSHIwi"/>
+<var name="MBWH_CRBSHIx1" value="MBWH_CRBPL1x1+MBWH_CRBPL1le/2.-MBWH_CRBSHIle/2.-MBWH_CRBSHIof"/>
+<var name="MBWH_CRBSHIx2" value="MBWH_CRBPL1x2-MBWH_CRBPL1le/2.+MBWH_CRBSHIle/2.+MBWH_CRBSHIof"/>
+<var name="MBWH_CRBSHIyp" value="MBWH_CRBPL1yp-MBWH_CRBPL1th/2.-MBWH_CRBSHIth/2."/>
+
+
+<composition name="MBWH_CRB-LProfile_1">
+  <posXYZ volume="MBWH_CRB-LProfile1" X_Y_Z="0;0;MBWH_CRBLP1z"/>
+  <posXYZ volume="MBWH_CRB-LProfile2" X_Y_Z="MBWH_CRBLP2x;MBWH_CRBLP2y;MBWH_CRBLP2z" rot="90;0;0"/>
+</composition>
+
+<composition name="MBWH_CRB-LProfile_2">
+  <posXYZ volume="MBWH_CRB-LProfile1" X_Y_Z="0;0;-MBWH_CRBLP1z"/>
+  <posXYZ volume="MBWH_CRB-LProfile2" X_Y_Z="MBWH_CRBLP2x;MBWH_CRBLP2y;-MBWH_CRBLP2z" rot="90;0;0"/>
+</composition>
+
+
+<composition name="MBWH_CentralReinforcingbar">
+  <posXYZ volume="MBWH_CRB-LProfile_1"/>
+  <posXYZ volume="MBWH_CRB-LProfile_2"/>
+  <posXYZ volume="MBWH_CRB-Plate2"   X_Y_Z="MBWH_CRBPL2xp;MBWH_CRBPL2yp;0"/>
+  <posXYZ volume="MBWH_CRB-Plate1"   X_Y_Z="MBWH_CRBPL1x1;MBWH_CRBPL1yp;0"/>
+  <posXYZ volume="MBWH_CRB-Plate1"   X_Y_Z="MBWH_CRBPL1x2;MBWH_CRBPL1yp;0"/>
+  <posXYZ volume="MBWH_CRB-Shim"     X_Y_Z="MBWH_CRBSHIx1;MBWH_CRBSHIyp;0"/>
+  <posXYZ volume="MBWH_CRB-Shim"     X_Y_Z="MBWH_CRBSHIx2;MBWH_CRBSHIyp;0"/>
+</composition>
+
+<!--  Cut profiles cross bracing large sector -->
+<!--  Derived variables -->
+<var  name="MBWH_CBLxa"  value="MBWH_CBext/2." />
+<var  name="MBWH_CBLya"  value="0." />
+<var  name="MBWH_CBLxb"  value="MBWH_CBLxa" />
+<var  name="MBWH_CBLyb"  value="MBWH_CBhei" />
+<var  name="MBWH_CBLxc"  value="MBWH_CBLxb-MBWH_CBLthi" />
+<var  name="MBWH_CBLyc"  value="MBWH_CBLyb" />
+<var  name="MBWH_CBLxd"  value="MBWH_CBLxc" />
+<var  name="MBWH_CBLyd"  value="MBWH_CBLthi" />
+
+<!--  Modelization -->
+
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem11" material="Aluminium1" dZ="MBWH_CBLl11">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem17" material="Aluminium1" dZ="MBWH_CBLl17">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem22" material="Aluminium1" dZ="MBWH_CBLl22">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem26" material="Aluminium1" dZ="MBWH_CBLl26">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem10" material="Aluminium1" dZ="MBWH_CBLl10">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem15" material="Aluminium1" dZ="MBWH_CBLl15">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem21" material="Aluminium1" dZ="MBWH_CBLl21">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem25" material="Aluminium1" dZ="MBWH_CBLl25">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+
+
+<!--  Contreventements, bay 1 large sector -->
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem8" material="Aluminium1" dZ="MBWH_CBLl8">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem9" material="Aluminium1" dZ="MBWH_CBLl9">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+
+<!--  Contreventements, bay 2 large sector -->
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem14" material="Aluminium1" dZ="MBWH_CBLl14">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem13" material="Aluminium1" dZ="MBWH_CBLl13">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+
+<!--  Contreventements, bay 3 large sector -->
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem20" material="Aluminium1" dZ="MBWH_CBLl20">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem18" material="Aluminium1" dZ="MBWH_CBLl18">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+
+<!--  Contreventements, bay 4 large sector -->
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem24" material="Aluminium1" dZ="MBWH_CBLl24">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingLargeSectorItem23" material="Aluminium1" dZ="MBWH_CBLl23">
+  <gvxy_point X_Y="MBWH_CBLxa;MBWH_CBLya"/>
+  <gvxy_point X_Y="MBWH_CBLxb;MBWH_CBLyb"/>
+  <gvxy_point X_Y="MBWH_CBLxc;MBWH_CBLyc"/>
+  <gvxy_point X_Y="MBWH_CBLxd;MBWH_CBLyd"/>
+</gvxysx>
+
+
+<!--  cross bracing Plates large sector -->
+
+<!--  Bay 1 -->
+<var  name="MBWH_CBPL10x1"  value="MBWH_CBPL10le/2." />
+<var  name="MBWH_CBPL10y1"  value="MBWH_CBPL10wi/2.-MBWH_CBPL10cu" />
+<var  name="MBWH_CBPL10x2"  value="MBWH_CBPL10x1-MBWH_CBPL10cu" />
+<var  name="MBWH_CBPL10y2"  value="MBWH_CBPL10wi/2." />
+<gvxysxy name="MBWH_CrossBracingPlateLargeSectorItem10" material="Aluminium1" dZ="MBWH_CBPth">
+  <gvxy_point X_Y="MBWH_CBPL10x1;MBWH_CBPL10y1"/>
+  <gvxy_point X_Y="MBWH_CBPL10x2;MBWH_CBPL10y2"/>
+</gvxysxy>
+
+<!--  Bay 2 -->
+<var  name="MBWH_CBPL15x1"  value="MBWH_CBPL15le/2." />
+<var  name="MBWH_CBPL15y1"  value="MBWH_CBPL15wi/2.-MBWH_CBPL15cu" />
+<var  name="MBWH_CBPL15x2"  value="MBWH_CBPL15x1-MBWH_CBPL15cu" />
+<var  name="MBWH_CBPL15y2"  value="MBWH_CBPL15wi/2." />
+<gvxysxy name="MBWH_CrossBracingPlateLargeSectorItem15" material="Aluminium1" dZ="MBWH_CBPth">
+  <gvxy_point X_Y="MBWH_CBPL15x1;MBWH_CBPL15y1"/>
+  <gvxy_point X_Y="MBWH_CBPL15x2;MBWH_CBPL15y2"/>
+</gvxysxy>
+
+<!--  Bay 3 -->
+<var  name="MBWH_CBPL21x1"  value="MBWH_CBPL21le/2." />
+<var  name="MBWH_CBPL21y1"  value="MBWH_CBPL21wi/2.-MBWH_CBPL21cu" />
+<var  name="MBWH_CBPL21x2"  value="MBWH_CBPL21x1-MBWH_CBPL21cu" />
+<var  name="MBWH_CBPL21y2"  value="MBWH_CBPL21wi/2." />
+<gvxysxy name="MBWH_CrossBracingPlateLargeSectorItem21" material="Aluminium1" dZ="MBWH_CBPth">
+  <gvxy_point X_Y="MBWH_CBPL21x1;MBWH_CBPL21y1"/>
+  <gvxy_point X_Y="MBWH_CBPL21x2;MBWH_CBPL21y2"/>
+</gvxysxy>
+
+<!--  Bay 4 -->
+<var  name="MBWH_CBPL25x1"  value="MBWH_CBPL25le/2." />
+<var  name="MBWH_CBPL25y1"  value="MBWH_CBPL25wi/2.-MBWH_CBPL25cu" />
+<var  name="MBWH_CBPL25x2"  value="MBWH_CBPL25x1-MBWH_CBPL25cu" />
+<var  name="MBWH_CBPL25y2"  value="MBWH_CBPL25wi/2." />
+<gvxysxy name="MBWH_CrossBracingPlateLargeSectorItem25" material="Aluminium1" dZ="MBWH_CBPth">
+  <gvxy_point X_Y="MBWH_CBPL25x1;MBWH_CBPL25y1"/>
+  <gvxy_point X_Y="MBWH_CBPL25x2;MBWH_CBPL25y2"/>
+</gvxysxy>
+
+
+<!-- Bay 1 -->
+<var  name="MBWH_CBL10z" value="MBWH_CBLl10/2." />
+<var  name="MBWH_CBPL10d"  value="MBWH_CBPL10wi-2.*MBWH_CBPL10cu" />
+<var  name="MBWH_CBPL10zb" value="MBWH_CBPL10za+sin(MBWH_CBPL10ti*GENV_PiS180)*MBWH_CBPL10d/2." />
+<var  name="MBWH_CBPL10yb" value="MBWH_CBPL10ya-cos(MBWH_CBPL10ti*GENV_PiS180)*MBWH_CBPL10d/2." />
+<var  name="MBWH_CBPL10zc" value="MBWH_CBPL10zb+cos(MBWH_CBPL10ti*GENV_PiS180)*MBWH_CBPL10le/2" />
+<var  name="MBWH_CBPL10yc" value="MBWH_CBPL10yb+sin(MBWH_CBPL10ti*GENV_PiS180)*MBWH_CBPL10le/2" />
+  <!-- get positions of contreventements 8,9 using locations of item 10 extremities -->
+<var  name="MBWH_cvl10xo" value="-MBWH_CBPL10zc*cos(MBWH_CBPL10ti*GENV_PiS180)-0.5*(MBWH_CBhei)*sin(MBWH_CBPL10ti*GENV_PiS180)" />
+<var  name="MBWH_cvl10yo" value=" MBWH_CBPL10zc*sin(MBWH_CBPL10ti*GENV_PiS180)-0.5*(MBWH_CBhei)*cos(MBWH_CBPL10ti*GENV_PiS180)" />
+<var  name="MBWH_cvl10xu" value="MBWH_cvl10xo+MBWH_CBLl10*cos(MBWH_CBPL10ti*GENV_PiS180)" />
+<var  name="MBWH_cvl10yu" value="MBWH_cvl10yo-MBWH_CBLl10*sin(MBWH_CBPL10ti*GENV_PiS180)" />
+<var  name="MBWH_cvlx8"   value="-MBWH_cvl10xu+cos(MBWH_CBPL10ti*GENV_PiS180)*MBWH_CBLl8/2." />
+<var  name="MBWH_cvly8"   value=" MBWH_cvl10yu+sin(MBWH_CBPL10ti*GENV_PiS180)*MBWH_CBLl8/2." />
+<var  name="MBWH_cvlx9"   value="-MBWH_cvl10xo-cos(MBWH_CBPL10ti*GENV_PiS180)*MBWH_CBLl9/2." />
+<var  name="MBWH_cvly9"   value=" MBWH_cvl10yo-sin(MBWH_CBPL10ti*GENV_PiS180)*MBWH_CBLl9/2." />
+
+<composition name="MBWH_CrossBracingPlateLargeSectorItem10Rot">
+  <posXYZ volume="MBWH_CrossBracingPlateLargeSectorItem10" rot="0.;90.;0" />
+</composition>
+<composition name="MBWH_CrossBracingBay1LargeSector">
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem10" X_Y_Z="0;0;MBWH_CBL10z" />
+  <posXYZ volume="MBWH_CrossBracingPlateLargeSectorItem10Rot" X_Y_Z="-MBWH_CBPx;MBWH_CBPL10yc;MBWH_CBPL10zc" rot="-MBWH_CBPL10ti;0;0" />
+  <posXYZ volume="MBWH_CrossBracingPlateLargeSectorItem10Rot" X_Y_Z=" MBWH_CBPx;MBWH_CBPL10yc;MBWH_CBPL10zc" rot="-MBWH_CBPL10ti;0;0"/>
+</composition>
+<composition name="MBWH_CroisillonBay1LargeSector">
+  <posXYZ volume="MBWH_CrossBracingBay1LargeSector" X_Y_Z="0;-MBWH_CBPL10yc;-MBWH_CBPL10zc"  />
+</composition>
+<composition name="MBWH_CroisillonBay1LargeSectorRot">
+  <posXYZ volume="MBWH_CroisillonBay1LargeSector" rot="MBWH_CBPL10ti;90;0" />
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem8" X_Y_Z="MBWH_cvlx8;MBWH_cvly8;0" rot="-MBWH_CBPL10ti;90;0" />
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem9" X_Y_Z="MBWH_cvlx9;MBWH_cvly9;0" rot="-MBWH_CBPL10ti;90;0" />
+</composition>
+
+<!-- Bay 2 -->
+<var  name="MBWH_CBL15z" value="MBWH_CBLl15/2." />
+<var  name="MBWH_CBPL15d"  value="MBWH_CBPL15wi-2.*MBWH_CBPL15cu" />
+<var  name="MBWH_CBPL15zb" value="MBWH_CBPL15za+sin(MBWH_CBPL15ti*GENV_PiS180)*MBWH_CBPL15d/2." />
+<var  name="MBWH_CBPL15yb" value="MBWH_CBPL15ya-cos(MBWH_CBPL15ti*GENV_PiS180)*MBWH_CBPL15d/2." />
+<var  name="MBWH_CBPL15zi" value="MBWH_CBPL15zb+cos(MBWH_CBPL15ti*GENV_PiS180)*MBWH_CBPL15le/2" />
+<var  name="MBWH_CBPL15yi" value="MBWH_CBPL15yb+sin(MBWH_CBPL15ti*GENV_PiS180)*MBWH_CBPL15le/2" />
+<var  name="MBWH_CBPL15zc" value="MBWH_CBLl15-MBWH_CBPL15zi" />
+<var  name="MBWH_CBPL15yc" value="MBWH_CBhei-MBWH_CBPL15yi" />
+  <!-- get positions of contreventements 14, 13 using locations of item 15 extremities -->
+<var  name="MBWH_cvl15xo" value="-MBWH_CBPL15zc*cos(MBWH_CBPL15ti*GENV_PiS180)-0.5*(MBWH_CBhei+MBWH_CBPL15ya)*sin(MBWH_CBPL15ti*GENV_PiS180)"/>
+<var  name="MBWH_cvl15yo" value=" MBWH_CBPL15zc*sin(MBWH_CBPL15ti*GENV_PiS180)-0.5*(MBWH_CBhei+MBWH_CBPL15ya)*cos(MBWH_CBPL15ti*GENV_PiS180)"/>
+<var  name="MBWH_cvl15xu" value="MBWH_cvl15xo+MBWH_CBLl15*cos(MBWH_CBPL15ti*GENV_PiS180)" />
+<var  name="MBWH_cvl15yu" value="MBWH_cvl15yo-MBWH_CBLl15*sin(MBWH_CBPL15ti*GENV_PiS180)" />
+<var  name="MBWH_cvlx14"  value="-MBWH_cvl15xu+cos(MBWH_CBPL15ti*GENV_PiS180)*MBWH_CBLl14/2." />
+<var  name="MBWH_cvly14"  value=" MBWH_cvl15yu+sin(MBWH_CBPL15ti*GENV_PiS180)*MBWH_CBLl14/2." />
+<var  name="MBWH_cvlx13"  value="-MBWH_cvl15xo-cos(MBWH_CBPL15ti*GENV_PiS180)*MBWH_CBLl13/2." />
+<var  name="MBWH_cvly13"  value=" MBWH_cvl15yo-sin(MBWH_CBPL15ti*GENV_PiS180)*MBWH_CBLl13/2." />
+
+
+<composition name="MBWH_CrossBracingPlateLargeSectorItem15Rot">
+  <posXYZ volume="MBWH_CrossBracingPlateLargeSectorItem15" rot="0.;90.;0" />
+</composition>
+<composition name="MBWH_CrossBracingBay2LargeSector">
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem15" X_Y_Z="0;0;MBWH_CBL15z" />
+  <posXYZ volume="MBWH_CrossBracingPlateLargeSectorItem15Rot" X_Y_Z="-MBWH_CBPx;MBWH_CBPL15yc;MBWH_CBPL15zc" rot="-MBWH_CBPL15ti;0;0" />
+  <posXYZ volume="MBWH_CrossBracingPlateLargeSectorItem15Rot" X_Y_Z=" MBWH_CBPx;MBWH_CBPL15yc;MBWH_CBPL15zc" rot="-MBWH_CBPL15ti;0;0"/>
+</composition>
+<composition name="MBWH_CroisillonBay2LargeSector">
+  <posXYZ volume="MBWH_CrossBracingBay2LargeSector" X_Y_Z="0;-MBWH_CBPL15yc;-MBWH_CBPL15zc"  />
+</composition>
+<composition name="MBWH_CroisillonBay2LargeSectorRot">
+  <posXYZ volume="MBWH_CroisillonBay2LargeSector" rot="MBWH_CBPL15ti;90;0" />
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem14" X_Y_Z="MBWH_cvlx14;MBWH_cvly14;0" rot="-MBWH_CBPL15ti;90;0" />
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem13" X_Y_Z="MBWH_cvlx13;MBWH_cvly13;0" rot="-MBWH_CBPL15ti;90;0" />
+</composition>
+
+
+<!-- Bay 3 -->
+<var  name="MBWH_CBL21z" value="MBWH_CBLl21/2." />
+<var  name="MBWH_CBPL21d"  value="MBWH_CBPL21wi-2.*MBWH_CBPL21cu" />
+<var  name="MBWH_CBPL21zb" value="MBWH_CBPL21za+sin(MBWH_CBPL21ti*GENV_PiS180)*MBWH_CBPL21d/2." />
+<var  name="MBWH_CBPL21yb" value="MBWH_CBPL21ya-cos(MBWH_CBPL21ti*GENV_PiS180)*MBWH_CBPL21d/2." />
+<var  name="MBWH_CBPL21z" value="MBWH_CBPL21zb+cos(MBWH_CBPL21ti*GENV_PiS180)*MBWH_CBPL21le/2" />
+<var  name="MBWH_CBPL21yi" value="MBWH_CBPL21yb+sin(MBWH_CBPL21ti*GENV_PiS180)*MBWH_CBPL21le/2" />
+<var  name="MBWH_CBPL21zc" value="MBWH_CBLl21-MBWH_CBPL21z" />
+<var  name="MBWH_CBPL21yc" value="MBWH_CBhei-MBWH_CBPL21yi" />
+  <!-- get positions of contreventements 14, 13 using locations of item 21 extremities -->
+<var  name="MBWH_cvl21xo" value="-MBWH_CBPL21zc*cos(MBWH_CBPL21ti*GENV_PiS180)-0.5*(MBWH_CBhei+MBWH_CBPL21ya)*sin(MBWH_CBPL21ti*GENV_PiS180)"/>
+<var  name="MBWH_cvl21yo" value=" MBWH_CBPL21zc*sin(MBWH_CBPL21ti*GENV_PiS180)-0.5*(MBWH_CBhei+MBWH_CBPL21ya)*cos(MBWH_CBPL21ti*GENV_PiS180)"/>
+<var  name="MBWH_cvl21xu" value="MBWH_cvl21xo+MBWH_CBLl21*cos(MBWH_CBPL21ti*GENV_PiS180)" />
+<var  name="MBWH_cvl21yu" value="MBWH_cvl21yo-MBWH_CBLl21*sin(MBWH_CBPL21ti*GENV_PiS180)" />
+<var  name="MBWH_cvlx20"  value="-MBWH_cvl21xu+cos(MBWH_CBPL21ti*GENV_PiS180)*MBWH_CBLl20/2." />
+<var  name="MBWH_cvly20"  value=" MBWH_cvl21yu+sin(MBWH_CBPL21ti*GENV_PiS180)*MBWH_CBLl20/2." />
+<var  name="MBWH_cvlx18"  value="-MBWH_cvl21xo-cos(MBWH_CBPL21ti*GENV_PiS180)*MBWH_CBLl18/2." />
+<var  name="MBWH_cvly18"  value=" MBWH_cvl21yo-sin(MBWH_CBPL21ti*GENV_PiS180)*MBWH_CBLl18/2." />
+
+<composition name="MBWH_CrossBracingPlateLargeSectorItem21Rot">
+  <posXYZ volume="MBWH_CrossBracingPlateLargeSectorItem21" rot="0.;90.;0" />
+</composition>
+<composition name="MBWH_CrossBracingBay3LargeSector">
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem21" X_Y_Z="0;0;MBWH_CBL21z" />
+  <posXYZ volume="MBWH_CrossBracingPlateLargeSectorItem21Rot" X_Y_Z="-MBWH_CBPx;MBWH_CBPL21yc;MBWH_CBPL21zc" rot="-MBWH_CBPL21ti;0;0" />
+  <posXYZ volume="MBWH_CrossBracingPlateLargeSectorItem21Rot" X_Y_Z=" MBWH_CBPx;MBWH_CBPL21yc;MBWH_CBPL21zc" rot="-MBWH_CBPL21ti;0;0"/>
+</composition>
+<composition name="MBWH_CroisillonBay3LargeSector">
+  <posXYZ volume="MBWH_CrossBracingBay3LargeSector" X_Y_Z="0;-MBWH_CBPL21yc;-MBWH_CBPL21zc"  />
+</composition>
+<composition name="MBWH_CroisillonBay3LargeSectorRot">
+  <posXYZ volume="MBWH_CroisillonBay3LargeSector" rot="MBWH_CBPL21ti;90;0" />
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem20" X_Y_Z="MBWH_cvlx20;MBWH_cvly20;0" rot="-MBWH_CBPL21ti;90;0" />
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem18" X_Y_Z="MBWH_cvlx18;MBWH_cvly18;0" rot="-MBWH_CBPL21ti;90;0" />
+</composition>
+
+
+
+<!-- Bay 4 -->
+<var  name="MBWH_CBPL25tii" value="90-MBWH_CBPL25ti" />
+<var  name="MBWH_CBL25z" value="-MBWH_CBLl25/2." />
+<var  name="MBWH_CBPL25d"  value="MBWH_CBPL25wi-2.*MBWH_CBPL25cu" />
+<var  name="MBWH_CBPL25zb" value="-MBWH_CBPL25za-sin(MBWH_CBPL25ti*GENV_PiS180)*MBWH_CBPL25d/2." />
+<var  name="MBWH_CBPL25yb" value="MBWH_CBPL25ya-cos(MBWH_CBPL25ti*GENV_PiS180)*MBWH_CBPL25d/2." />
+<var  name="MBWH_CBPL25zc" value="MBWH_CBPL25zb-cos(MBWH_CBPL25ti*GENV_PiS180)*MBWH_CBPL25le/2" />
+<var  name="MBWH_CBPL25yc" value="MBWH_CBPL25yb+sin(MBWH_CBPL25ti*GENV_PiS180)*MBWH_CBPL25le/2" />
+  <!-- get positions of contreventements 14, 13 using locations of item 25 extremities -->
+<var  name="MBWH_cvl25xo" value="-MBWH_CBPL25zc*cos(MBWH_CBPL25tii*GENV_PiS180)-0.5*(MBWH_CBhei+MBWH_CBPL25ya)*sin(MBWH_CBPL25ti*GENV_PiS180)"/>
+<var  name="MBWH_cvl25yo" value=" MBWH_CBPL25zc*sin(MBWH_CBPL25tii*GENV_PiS180)-0.5*(MBWH_CBhei+MBWH_CBPL25ya)*cos(MBWH_CBPL25ti*GENV_PiS180)"/>
+<var  name="MBWH_cvl25xo" value="-MBWH_CBPL25zc*cos(MBWH_CBPL25tii*GENV_PiS180)-0.5*(MBWH_CBhei)*cos(MBWH_CBPL25ti*GENV_PiS180)"/>
+<var  name="MBWH_cvl25yo" value=" MBWH_CBPL25zc*sin(MBWH_CBPL25tii*GENV_PiS180)-0.5*(MBWH_CBhei)*sin(MBWH_CBPL25ti*GENV_PiS180)"/>
+<var  name="MBWH_cvl25xu" value="MBWH_cvl25xo-MBWH_CBLl25*cos(MBWH_CBPL25tii*GENV_PiS180)" />
+<var  name="MBWH_cvl25yu" value="MBWH_cvl25yo+MBWH_CBLl25*sin(MBWH_CBPL25tii*GENV_PiS180)" />
+<var  name="MBWH_cvlx24"  value="-MBWH_cvl25xo+cos(MBWH_CBPL25tii*GENV_PiS180)*MBWH_CBLl24/2." />
+<var  name="MBWH_cvly24"  value=" MBWH_cvl25yo+sin(MBWH_CBPL25tii*GENV_PiS180)*MBWH_CBLl24/2." />
+<var  name="MBWH_cvlx23"  value="-MBWH_cvl25xu-cos(MBWH_CBPL25tii*GENV_PiS180)*MBWH_CBLl23/2." />
+<var  name="MBWH_cvly23"  value=" MBWH_cvl25yu-sin(MBWH_CBPL25tii*GENV_PiS180)*MBWH_CBLl23/2." />
+
+<composition name="MBWH_CrossBracingPlateLargeSectorItem25Rot">
+  <posXYZ volume="MBWH_CrossBracingPlateLargeSectorItem25" rot="0.;90.;0" />
+</composition>
+<composition name="MBWH_CrossBracingBay4LargeSector">
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem25" X_Y_Z="0;0;MBWH_CBL25z" />
+  <posXYZ volume="MBWH_CrossBracingPlateLargeSectorItem25Rot" X_Y_Z="-MBWH_CBPx;MBWH_CBPL25yc;MBWH_CBPL25zc" rot="MBWH_CBPL25ti;0;0" />
+  <posXYZ volume="MBWH_CrossBracingPlateLargeSectorItem25Rot" X_Y_Z=" MBWH_CBPx;MBWH_CBPL25yc;MBWH_CBPL25zc" rot="MBWH_CBPL25ti;0;0"/>
+</composition>
+<composition name="MBWH_CroisillonBay4LargeSector">
+  <posXYZ volume="MBWH_CrossBracingBay4LargeSector" X_Y_Z="0;-MBWH_CBPL25yc;-MBWH_CBPL25zc"  />
+</composition>
+<composition name="MBWH_CroisillonBay4LargeSectorRot">
+  <posXYZ volume="MBWH_CroisillonBay4LargeSector" rot="90-MBWH_CBPL25ti;90;0" />
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem24" X_Y_Z="MBWH_cvlx24;MBWH_cvly24;0" rot="MBWH_CBPL25ti-90;90;0" />
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem23" X_Y_Z="MBWH_cvlx23;MBWH_cvly23;0" rot="MBWH_CBPL25ti-90;90;0" />
+</composition>
+
+
+
+<!--  Inner and Outer spoke large sector -->
+
+<gvxysx name="MBWH_SpokeLargeSectorUprofile" material="Aluminium1" dZ="MBWH_SlsUPlen">
+  <gvxy_point X_Y="MBWH_SUPxa;MBWH_SUPya"/>
+  <gvxy_point X_Y="MBWH_SUPxb;MBWH_SUPyb"/>
+  <gvxy_point X_Y="MBWH_SUPxc;MBWH_SUPyc"/>
+  <gvxy_point X_Y="MBWH_SUPxd;MBWH_SUPyd"/>
+</gvxysx>
+
+<!--  Derived variables -->
+<!--  positions of reinforcing bars -->
+<var name="MBWH_SlsRBpz1" value="MBWH_SlsUPlen/2.-MBWH_SlsRBdz1-MBWH_SRBhos/2."/>
+<var name="MBWH_SlsRBpz2" value="MBWH_SlsRBpz1-MBWH_SlsRBdz2"/>
+<var name="MBWH_SlsRBpz3" value="MBWH_SlsRBpz2-MBWH_SlsRBdz3"/>
+<var name="MBWH_SlsRBpz4" value="MBWH_SlsRBpz3-MBWH_SlsRBdz4"/>
+
+<!--  Relative positions of spokes -->
+<var  name="MBWH_SlsIxpos"  value="MBWH_SRBpx+MBWH_SUPext/2.+MBWH_RBBthi+MBWH_RBSthi/2." />
+<var  name="MBWH_SlsIypos"  value="-MBWH_RBSlen+MBWH_RBBsiz" />
+<var  name="MBWH_SlsIzpos"  value="-MBWH_SlsIypos*tan(MBWH_SLangle*GENV_PiS180)" />
+
+
+<!--  Transversal beam, central support -->
+<!--  Derived variables -->
+<var  name="MBWH_TBCSxa" value="MBWH_TBCSlen1/2." />
+<var  name="MBWH_TBCSya" value="0." />
+<var  name="MBWH_TBCSxc" value="MBWH_TBCSlen2/2.-MBWH_TBCSext" />
+<var  name="MBWH_TBCSyc" value="MBWH_TBCShei" />
+<var  name="MBWH_TBCSxb" value="MBWH_TBCSlen2/2." />
+<var  name="MBWH_TBCSyb" value="MBWH_TBCSyc-MBWH_TBCSext*tan(MBWH_TBCSang1*GENV_PiS180)" />
+
+<var  name="MBWH_TBCSxa1" value="MBWH_TBCSxa-MBWH_TBCSoffs/cos(MBWH_TBCSang1*GENV_PiS180)" />
+<var  name="MBWH_TBCSya1" value="0." />
+<var  name="MBWH_TBCSxb1" value="MBWH_TBCSxa1+MBWH_TBCShei*tan(MBWH_TBCSang2*GENV_PiS180)" />
+<var  name="MBWH_TBCSyb1" value="MBWH_TBCShei" />
+
+<var  name="MBWH_TBCSxoff" value="(MBWH_TBCSthi1+MBWH_TBCSthi2)/2." />
+
+<!--  Transversal beam, central support Position -->
+<var  name="MBWH_TBCSypos" value="MBWH_Slsypos-(.5*MBWH_SlsUPlen)*cos(MBWH_SLangle*GENV_PiS180)-MBWH_TBCShei"/>
+<var  name="MBWH_TBCSzpos" value="-MBWH_SlsIzpos/2.-MBWH_TBCSxoff"/>
+<!--  Connection beam / extremity plate position relative to Transversal beam, central support -->
+<var  name="MBWH_CBEPxpos" value="MBWH_TBCSxa1+MBWH_CBEPyb*cos(MBWH_CBEPa1*GENV_PiS180)+(MBWH_CBEPyc-MBWH_CBEPyb)/cos(MBWH_CBEPa1*GENV_PiS180)"/>
+<var  name="MBWH_CBEPypos" value="-MBWH_CBEPyb*sin(MBWH_CBEPa1*GENV_PiS180)-GENV_Eps"/>
+<var  name="MBWH_CBEPzpos" value="MBWH_TBCSthi1/2+MBWH_CBEPthic/2+GENV_Eps"/>
+<!--  extremity plate position relative to Transversal beam, central support -->
+<var  name="MBWH_EPxpos" value="MBWH_CBEPxpos+MBWH_EPl1*sin(MBWH_CBEPa1*GENV_PiS180)-0.5*MBWH_EPthic*cos(MBWH_CBEPa1*GENV_PiS180)"/>
+<var  name="MBWH_EPypos" value="MBWH_CBEPypos+MBWH_EPl1*cos(MBWH_CBEPa1*GENV_PiS180)+0.5*MBWH_EPthic*sin(MBWH_CBEPa1*GENV_PiS180)"/>
+<var  name="MBWH_EPzpos" value="MBWH_CBEPzpos-MBWH_CBEPthic/2"/>
+<!--  Reinforcing Bar relative to extremity plate position -->
+<var  name="MBWH_RBxpos" value="MBWH_EPxpos+MBWH_CRBxoff"/>
+<var  name="MBWH_RBypos" value="MBWH_EPypos+MBWH_CRByoff"/>
+<var  name="MBWH_RBzpos" value="MBWH_EPzpos+MBWH_CRBzoff"/>
+
+
+<gvxysx name="MBWH_TransvBeamCSupLargeSect1" material="Aluminium1" dZ="MBWH_TBCSthi1">
+  <gvxy_point X_Y="MBWH_TBCSxa;MBWH_TBCSya"/>
+  <gvxy_point X_Y="MBWH_TBCSxb;MBWH_TBCSyb"/>
+  <gvxy_point X_Y="MBWH_TBCSxc;MBWH_TBCSyc"/>
+</gvxysx>
+<gvxysx name="MBWH_TransvBeamCSupLargeSect2" material="Aluminium1" dZ="MBWH_TBCSthi2">
+  <gvxy_point X_Y="MBWH_TBCSxa1;MBWH_TBCSya1"/>
+  <gvxy_point X_Y="MBWH_TBCSxb1;MBWH_TBCSyb1"/>
+</gvxysx>
+
+<composition name="MBWH_TransvBeamCSupLargeSect">
+  <posXYZ volume="MBWH_TransvBeamCSupLargeSect1" />
+  <posXYZ volume="MBWH_TransvBeamCSupLargeSect2" X_Y_Z="0;0;MBWH_TBCSxoff"/>
+</composition>
+
+
+<composition name="MBWH_SpokesLargeSectorAssembly1">
+  <posXYZ volume="MBWH_SpokeLargeSectorUprofile"/>
+  <posXYZ volume="MBWH_ReinforcingBar" X_Y_Z=" MBWH_SRBpx;MBWH_SRBpy;MBWH_SlsRBpz1" rot="0.;0.;90."/>
+  <posXYZ volume="MBWH_ReinforcingBar" X_Y_Z=" MBWH_SRBpx;MBWH_SRBpy;MBWH_SlsRBpz2" rot="0.;0.;90."/>
+  <posXYZ volume="MBWH_ReinforcingBar" X_Y_Z=" MBWH_SRBpx;MBWH_SRBpy;MBWH_SlsRBpz3" rot="0.;0.;90."/>
+  <posXYZ volume="MBWH_ReinforcingBar" X_Y_Z=" MBWH_SRBpx;MBWH_SRBpy;MBWH_SlsRBpz4" rot="0.;0.;90."/>
+  <posXYZ volume="MBWH_SpokeLargeSectorUprofile"  X_Y_Z=" MBWH_SlsIxpos;MBWH_SlsIypos;MBWH_SlsIzpos"/>
+</composition>
+
+<composition name="MBWH_SpokesLargeSectorAssembly2">
+  <posXYZ volume="MBWH_SpokeLargeSectorUprofile"/>
+  <posXYZ volume="MBWH_ReinforcingBar" X_Y_Z=" MBWH_SRBpx;MBWH_SRBpy;-MBWH_SlsRBpz1" rot="0.;0.;90."/>
+  <posXYZ volume="MBWH_ReinforcingBar" X_Y_Z=" MBWH_SRBpx;MBWH_SRBpy;-MBWH_SlsRBpz2" rot="0.;0.;90."/>
+  <posXYZ volume="MBWH_ReinforcingBar" X_Y_Z=" MBWH_SRBpx;MBWH_SRBpy;-MBWH_SlsRBpz3" rot="0.;0.;90."/>
+  <posXYZ volume="MBWH_ReinforcingBar" X_Y_Z=" MBWH_SRBpx;MBWH_SRBpy;-MBWH_SlsRBpz4" rot="0.;0.;90."/>
+  <posXYZ volume="MBWH_SpokeLargeSectorUprofile"  X_Y_Z=" MBWH_SlsIxpos;MBWH_SlsIypos;-MBWH_SlsIzpos"/>
+</composition>
+
+
+<composition name="MBWH_SpokesLargeSectorAssemblyTemp1">
+  <posXYZ volume="MBWH_SpokesLargeSectorAssembly1" X_Y_Z="MBWH_SlsIxref;MBWH_Slsypos;0" rot="0.; 90.;90-MBWH_SLangle" />
+</composition>
+
+<composition name="MBWH_SpokesLargeSectorAssemblyTemp2">
+  <posXYZ volume="MBWH_SpokesLargeSectorAssembly2" X_Y_Z="-MBWH_SlsIxref;MBWH_Slsypos;0" rot="180.; 90.;90+MBWH_SLangle" />
+</composition>
+
+<composition name="MBWH_InnerAssemblyTemp1">
+  <posXYZ volume="MBWH_ConnectionBeamExtremityPlate" X_Y_Z="MBWH_CBEPxpos;MBWH_CBEPypos;MBWH_CBEPzpos" rot="0;0;90-MBWH_CBEPa1"  />
+  <posXYZ volume="MBWH_ExtremityPlate" X_Y_Z="MBWH_EPxpos;MBWH_EPypos;MBWH_EPzpos" rot="-90.; 0.;-90-MBWH_CBEPa1"  />
+  <posXYZ volume="MBWH_CentralReinforcingbar" X_Y_Z="MBWH_RBxpos;MBWH_RBypos;MBWH_RBzpos" rot="180.; 0.;-90-MBWH_CBEPa1"  />
+</composition>
+
+<composition name="MBWH_InnerAssemblyTemp2">
+  <posXYZ volume="MBWH_ConnectionBeamExtremityPlate" X_Y_Z="-MBWH_CBEPxpos;MBWH_CBEPypos;MBWH_CBEPzpos" rot="180;0;90+MBWH_CBEPa1"  />
+  <posXYZ volume="MBWH_ExtremityPlate" X_Y_Z="-MBWH_EPxpos;MBWH_EPypos;MBWH_EPzpos" rot="-90.; 0.;-90+MBWH_CBEPa1"  />
+  <posXYZ volume="MBWH_CentralReinforcingbar" X_Y_Z="-MBWH_RBxpos;MBWH_RBypos;MBWH_RBzpos" rot="0.; 0.;-90+MBWH_CBEPa1"  />
+</composition>
+
+<composition name="MBWH_InnerAssembly">
+  <posXYZ volume="MBWH_TransvBeamCSupLargeSect" X_Y_Z="0;0;0"  />
+  <posXYZ volume="MBWH_InnerAssemblyTemp1"  />
+  <posXYZ volume="MBWH_InnerAssemblyTemp2"  />
+</composition>
+
+
+
+<composition name="MBWH_LargeSector">
+  <posXYZ volume="MBWH_SpokesLargeSectorAssemblyTemp1" />
+  <posXYZ volume="MBWH_SpokesLargeSectorAssemblyTemp2" /> 
+  <posXYZ volume="MBWH_InnerAssembly" X_Y_Z="0;MBWH_TBCSypos;MBWH_TBCSzpos"/> 
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem11" X_Y_Z=" 0.;MBWH_CBLy11;0" rot="0.;90.;0."/>
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem17" X_Y_Z=" 0.;MBWH_CBLy17;0" rot="0.;90.;0."/>
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem22" X_Y_Z=" 0.;MBWH_CBLy22;0" rot="0.;90.;0."/>
+  <posXYZ volume="MBWH_CutProfilesCrossBracingLargeSectorItem26" X_Y_Z=" 0.;MBWH_CBLy26;0" rot="0.;90.;0."/>
+  
+  <posXYZ volume="MBWH_CroisillonBay1LargeSectorRot" X_Y_Z=" 0.;MBWH_Croily10;0" rot="0.;0.;0."/>
+  <posXYZ volume="MBWH_CroisillonBay2LargeSectorRot" X_Y_Z=" 0.;MBWH_Croily15;0" rot="0.;0.;0."/>
+  <posXYZ volume="MBWH_CroisillonBay3LargeSectorRot" X_Y_Z=" 0.;MBWH_Croily21;0" rot="0.;0.;0."/>
+  <posXYZ volume="MBWH_CroisillonBay4LargeSectorRot" X_Y_Z=" 0.;MBWH_Croily25+20;0" rot="0.;0.;0."/>
+</composition>
+
+
+
+<!--  
+      **************************************************************
+      ***                                                       ****
+      ***                      Small Sector                     ****
+      ***                                                       ****
+      **************************************************************
+-->
+
+<!--  ATLMHHBM0100 -->
+<!--  Cut profiles Cross Bracing small sector -->
+<var  name="MBWH_CBSthi" value="6"/>
+
+<!--  Contreventements lengths -->
+<!--  item numbering in ATLMHHBM0003 -->
+<var  name="MBWH_CBSl10"  value="1650" />  <!-- item 10 -->
+<var  name="MBWH_CBSl14"  value="1050" />  <!-- item 14 -->
+<var  name="MBWH_CBSl18a" value="533" />   <!-- item 18 -->
+<var  name="MBWH_CBSl18b" value="510" />   <!-- item 18 -->
+
+<!--  Contreventements positions (...to be confirmed...) -->
+<var  name="MBWH_CBSy10"  value="9730" />  <!-- item 10 -->
+<var  name="MBWH_CBSy14"  value="7760" />  <!-- item 14 -->
+<var  name="MBWH_CBSy18"  value="5820" />  <!-- item 18 -->
+
+<!--  item numbering in ATLMHHBM0003 -->
+<!--  Cross bracing, bay 1 small sector -->
+<var  name="MBWH_CBSl9"   value="2625"/>  <!-- item  9 --> <!-- drawing ATLMHHBM0047 -->
+<!--  Cross bracing, bay 2 small sector -->
+<var  name="MBWH_CBSl11"  value="2360"/>  <!-- item 11 --> <!-- drawing ATLMHHBM0049 -->
+<!--  Cross bracing, bay 3 small sector -->
+<var  name="MBWH_CBSl15"  value="2025"/>  <!-- item 15 --> <!-- drawing ATLMHHBM0052 -->
+
+<!--  item numbering in ATLMHHBM0003 -->
+<!--  Contreventements, bay 1 small sector -->
+<var  name="MBWH_CBSl7"   value="1430"/>  <!--  item  7 --> <!-- drawing ATLMHHBM0100 -->
+<var  name="MBWH_CBSl8"   value="1120"/>  <!--  item  8 --> <!-- drawing ATLMHHBM0100 -->
+<var  name="MBWH_CBSb1xof" value="6"/>  <!--  x offset item  7 & 8 , to be confirmed - see drawing ATLMHHBM0003 -->
+<var  name="MBWH_CBSb1yof" value="2"/>  <!--  y offset item  7 & 8 , to be confirmed - see drawing ATLMHHBM0003 -->
+
+<!--  Contreventements, bay 2 small sector -->
+<var  name="MBWH_CBSl12"  value="1360"/>  <!--  item 12 --> <!-- drawing ATLMHHBM0100 -->
+<var  name="MBWH_CBSl13"  value="890"/>   <!--  item 13 --> <!-- drawing ATLMHHBM0100 -->
+
+<!--  Contreventements, bay 3 small sector -->
+<var  name="MBWH_CBSl16"  value="1260"/>  <!--  item 16 --> <!-- drawing ATLMHHBM0100 -->
+<var  name="MBWH_CBSl17"  value="600"/>   <!--  item 17 --> <!-- drawing ATLMHHBM0100 -->
+<var  name="MBWH_CBSb3xof" value="8"/>  <!--  x offset item 16 & 17, to be confirmed - see drawing ATLMHHBM0003 -->
+<var  name="MBWH_CBSb3yof" value="2"/>  <!--  y offset item 16 & 17, to be confirmed - see drawing ATLMHHBM0003 -->
+
+<!--  Plates --> 
+ <!--  item 9 for Bay 1 --> <!--  drawing ATLMHHBM0057 -->
+<var  name="MBWH_CBPS9le" value="300"/>    <!-- length -->
+<var  name="MBWH_CBPS9wi" value="270"/>    <!-- width -->
+<var  name="MBWH_CBPS9cu" value="60"/>     <!-- cut -->
+<var  name="MBWH_CBPS9ti" value="41.2"/>   <!-- tilt -->       <!-- ????????????? -->
+<var  name="MBWH_CBPS9za" value="1311"/>   <!-- Plate offset -->
+<var  name="MBWH_CBPS9ya" value="-13.3"/>   <!-- Plate offset -->
+ <!--  item 11 for Bay 2 --> <!--  drawing ATLMHHBM0049 -->
+<var  name="MBWH_CBPS11le" value="260"/>   <!-- length -->
+<var  name="MBWH_CBPS11wi" value="300"/>   <!-- width -->
+<var  name="MBWH_CBPS11cu" value="20"/>    <!-- cut -->
+<var  name="MBWH_CBPS11ti" value="52.9"/>  <!-- tilt -->       <!-- ????????????? -->
+<var  name="MBWH_CBPS11za" value="764.9"/> <!-- Plate offset -->
+<var  name="MBWH_CBPS11ya" value="32.1"/>  <!-- Plate offset w.r.t base -->
+ <!--  item 15 for Bay 3 --> <!--  drawing ATLMHHBM0052 -->
+<var  name="MBWH_CBPS15le" value="200"/>   <!-- length -->
+<var  name="MBWH_CBPS15wi" value="380"/>   <!-- width -->
+<var  name="MBWH_CBPS15cu" value="20"/>    <!-- cut -->
+<var  name="MBWH_CBPS15ti" value="65.5"/>  <!-- tilt -->       <!-- ????????????? -->
+<var  name="MBWH_CBPS15za" value="473.8"/> <!-- Plate offset -->
+<var  name="MBWH_CBPS15ya" value="26"/>    <!-- Plate offset -->
+
+<!--  positions (... measured on ATLMHHBM003 ... to be confirmed ...) -->
+<var  name="MBWH_Croisy9" value="10550"/> <!--  item 9 --> 
+<var  name="MBWH_Croisy11" value="8580"/>  <!--  item 11 --> 
+<var  name="MBWH_Croisy15" value="6520"/>  <!--  item 15 --> 
+
+<!--  Special Cut profiles cross bracing small sector item 18-->
+<!--  ATLMHHBM0067-->
+<var  name="MBWH_CBext18" value="138"/>
+<var  name="MBWH_CBhei18" value="35"/>
+<var  name="MBWH_CBSthi18" value="5"/>
+
+
+<!--  ATLMHHBM0003B -->
+<!--  Spokes Opening angle small sector -->
+<var  name="MBWH_SSangle" value="8.5"/>
+<!--  Y-ref -->
+<var  name="MBWH_yref"   value="1682.7"/>
+<!--  Inner spoke y position wrt ref -->
+<var  name="MBWH_SIypos" value="2252.8"/>
+<!--  External spoke y position wrt ref -->
+<var  name="MBWH_SEypos" value="280.7"/>
+
+<!--  Spoke small sector -->
+<!--  Inner spoke small sector  ATLMHHBM0085 -->
+<!--  External spoke small sector  ATLMHHBM0086 & ATLMHHBM0087 -->
+
+<!--  ATLMHHBM0085 ... --> 
+<!--  U profile length Inner spoke -->
+<var  name="MBWH_SsiUPlen"  value="7680"/>   
+<!--  U profile length External spoke -->
+<var  name="MBWH_SseUPlen"  value="9530"/>   
+<!--  U profile Inner spoke extremity cut height -->
+<var  name="MBWH_SsiUPhcu"  value="12"/>   
+
+
+<!--  ATLMHHBM0085 -->
+<!--  relative positions of reinforcing bars -->
+<var name="MBWH_SssRBdz1" value="2575"/>
+<var name="MBWH_SssRBdz2" value="2055"/>
+<var name="MBWH_SssRBdz3" value="2250"/>
+
+<!--  Spoke Reinforcing Bar 1 and 2 -->
+<var name="MBWH_SRBthi" value="25"/>
+
+<!--  ATLMHHBM0054 -->
+<!--  Spoke Reinforcing Bar 1 -->
+<var name="MBWH_SRB1dx1" value="962"/>
+<var name="MBWH_SRB1dx2" value="1765"/>
+<var name="MBWH_SRB1dx3" value="81"/>
+<var name="MBWH_SRB1dx4" value="1712"/>
+<var name="MBWH_SRB1dy1" value="150"/>
+<var name="MBWH_SRB1dy2" value="440"/>
+<var name="MBWH_SRB1dy3" value="180"/>
+<var name="MBWH_SRB1alph" value="39"/>
+<var name="MBWH_SRB1ypos" value="2910"/>
+
+<!--  ATLMHHBM0058 -->
+<!--  Spoke Reinforcing Bar 2 -->
+<var name="MBWH_SRB2dx1" value="2474"/>
+<var name="MBWH_SRB2dx2" value="2429"/>
+<var name="MBWH_SRB2dy"  value="152"/>
+<var name="MBWH_SRB2ypos" value="5020"/>
+
+
+<!--  Cut profiles cross bracing small sector -->
+<!--  Derived variables -->
+<var  name="MBWH_CBSxa"  value="MBWH_CBext/2." />
+<var  name="MBWH_CBSya"  value="0." />
+<var  name="MBWH_CBSxb"  value="MBWH_CBSxa" />
+<var  name="MBWH_CBSyb"  value="MBWH_CBhei" />
+<var  name="MBWH_CBSxc"  value="MBWH_CBSxb-MBWH_CBSthi" />
+<var  name="MBWH_CBSyc"  value="MBWH_CBSyb" />
+<var  name="MBWH_CBSxd"  value="MBWH_CBSxc" />
+<var  name="MBWH_CBSyd"  value="MBWH_CBSthi" />
+<!--  Derived variables for special item 18 -->
+<var  name="MBWH_CBS18xa"  value="MBWH_CBext18/2." />
+<var  name="MBWH_CBS18ya"  value="0." />
+<var  name="MBWH_CBS18xb"  value="MBWH_CBS18xa" />
+<var  name="MBWH_CBS18yb"  value="MBWH_CBhei18" />
+<var  name="MBWH_CBS18xc"  value="MBWH_CBS18xb-MBWH_CBSthi18" />
+<var  name="MBWH_CBS18yc"  value="MBWH_CBS18yb" />
+<var  name="MBWH_CBS18xd"  value="MBWH_CBS18xc" />
+<var  name="MBWH_CBS18yd"  value="MBWH_CBSthi18" />
+
+<var  name="MBWH_CBSy18b"  value="MBWH_CBSy18-MBWH_CBhei18" />
+
+<!--  Modelization -->
+
+<gvxysx name="MBWH_CutProfilesCrossBracingSmallSectorItem10" material="Aluminium1" dZ="MBWH_CBSl10">
+  <gvxy_point X_Y="MBWH_CBSxa;MBWH_CBSya"/>
+  <gvxy_point X_Y="MBWH_CBSxb;MBWH_CBSyb"/>
+  <gvxy_point X_Y="MBWH_CBSxc;MBWH_CBSyc"/>
+  <gvxy_point X_Y="MBWH_CBSxd;MBWH_CBSyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingSmallSectorItem14" material="Aluminium1" dZ="MBWH_CBSl14">
+  <gvxy_point X_Y="MBWH_CBSxa;MBWH_CBSya"/>
+  <gvxy_point X_Y="MBWH_CBSxb;MBWH_CBSyb"/>
+  <gvxy_point X_Y="MBWH_CBSxc;MBWH_CBSyc"/>
+  <gvxy_point X_Y="MBWH_CBSxd;MBWH_CBSyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingSmallSectorItem18a" material="Aluminium1" dZ="MBWH_CBSl18a">
+  <gvxy_point X_Y="MBWH_CBSxa;MBWH_CBSya"/>
+  <gvxy_point X_Y="MBWH_CBSxb;MBWH_CBSyb"/>
+  <gvxy_point X_Y="MBWH_CBSxc;MBWH_CBSyc"/>
+  <gvxy_point X_Y="MBWH_CBSxd;MBWH_CBSyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingSmallSectorItem18b" material="Aluminium1" dZ="MBWH_CBSl18b">
+  <gvxy_point X_Y="MBWH_CBS18xa;MBWH_CBS18ya"/>
+  <gvxy_point X_Y="MBWH_CBS18xb;MBWH_CBS18yb"/>
+  <gvxy_point X_Y="MBWH_CBS18xc;MBWH_CBS18yc"/>
+  <gvxy_point X_Y="MBWH_CBS18xd;MBWH_CBS18yd"/>
+</gvxysx>
+
+<gvxysx name="MBWH_CutProfilesCrossBracingSmallSectorItem9" material="Aluminium1" dZ="MBWH_CBSl9">
+  <gvxy_point X_Y="MBWH_CBSxa;MBWH_CBSya"/>
+  <gvxy_point X_Y="MBWH_CBSxb;MBWH_CBSyb"/>
+  <gvxy_point X_Y="MBWH_CBSxc;MBWH_CBSyc"/>
+  <gvxy_point X_Y="MBWH_CBSxd;MBWH_CBSyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingSmallSectorItem11" material="Aluminium1" dZ="MBWH_CBSl11">
+  <gvxy_point X_Y="MBWH_CBSxa;MBWH_CBSya"/>
+  <gvxy_point X_Y="MBWH_CBSxb;MBWH_CBSyb"/>
+  <gvxy_point X_Y="MBWH_CBSxc;MBWH_CBSyc"/>
+  <gvxy_point X_Y="MBWH_CBSxd;MBWH_CBSyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingSmallSectorItem15" material="Aluminium1" dZ="MBWH_CBSl15">
+  <gvxy_point X_Y="MBWH_CBSxa;MBWH_CBSya"/>
+  <gvxy_point X_Y="MBWH_CBSxb;MBWH_CBSyb"/>
+  <gvxy_point X_Y="MBWH_CBSxc;MBWH_CBSyc"/>
+  <gvxy_point X_Y="MBWH_CBSxd;MBWH_CBSyd"/>
+</gvxysx>
+
+
+<!--  Contreventements, bay 1 small sector -->
+<gvxysx name="MBWH_CutProfilesCrossBracingSmallSectorItem7" material="Aluminium1" dZ="MBWH_CBSl7">
+  <gvxy_point X_Y="MBWH_CBSxa;MBWH_CBSya"/>
+  <gvxy_point X_Y="MBWH_CBSxb;MBWH_CBSyb"/>
+  <gvxy_point X_Y="MBWH_CBSxc;MBWH_CBSyc"/>
+  <gvxy_point X_Y="MBWH_CBSxd;MBWH_CBSyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingSmallSectorItem8" material="Aluminium1" dZ="MBWH_CBSl8">
+  <gvxy_point X_Y="MBWH_CBSxa;MBWH_CBSya"/>
+  <gvxy_point X_Y="MBWH_CBSxb;MBWH_CBSyb"/>
+  <gvxy_point X_Y="MBWH_CBSxc;MBWH_CBSyc"/>
+  <gvxy_point X_Y="MBWH_CBSxd;MBWH_CBSyd"/>
+</gvxysx>
+
+<!--  Contreventements, bay 2 small sector -->
+<gvxysx name="MBWH_CutProfilesCrossBracingSmallSectorItem12" material="Aluminium1" dZ="MBWH_CBSl12">
+  <gvxy_point X_Y="MBWH_CBSxa;MBWH_CBSya"/>
+  <gvxy_point X_Y="MBWH_CBSxb;MBWH_CBSyb"/>
+  <gvxy_point X_Y="MBWH_CBSxc;MBWH_CBSyc"/>
+  <gvxy_point X_Y="MBWH_CBSxd;MBWH_CBSyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingSmallSectorItem13" material="Aluminium1" dZ="MBWH_CBSl13">
+  <gvxy_point X_Y="MBWH_CBSxa;MBWH_CBSya"/>
+  <gvxy_point X_Y="MBWH_CBSxb;MBWH_CBSyb"/>
+  <gvxy_point X_Y="MBWH_CBSxc;MBWH_CBSyc"/>
+  <gvxy_point X_Y="MBWH_CBSxd;MBWH_CBSyd"/>
+</gvxysx>
+
+<!--  Contreventements, bay 3 small sector -->
+<gvxysx name="MBWH_CutProfilesCrossBracingSmallSectorItem16" material="Aluminium1" dZ="MBWH_CBSl16">
+  <gvxy_point X_Y="MBWH_CBSxa;MBWH_CBSya"/>
+  <gvxy_point X_Y="MBWH_CBSxb;MBWH_CBSyb"/>
+  <gvxy_point X_Y="MBWH_CBSxc;MBWH_CBSyc"/>
+  <gvxy_point X_Y="MBWH_CBSxd;MBWH_CBSyd"/>
+</gvxysx>
+<gvxysx name="MBWH_CutProfilesCrossBracingSmallSectorItem17" material="Aluminium1" dZ="MBWH_CBSl17">
+  <gvxy_point X_Y="MBWH_CBSxa;MBWH_CBSya"/>
+  <gvxy_point X_Y="MBWH_CBSxb;MBWH_CBSyb"/>
+  <gvxy_point X_Y="MBWH_CBSxc;MBWH_CBSyc"/>
+  <gvxy_point X_Y="MBWH_CBSxd;MBWH_CBSyd"/>
+</gvxysx>
+
+
+
+<!--  cross bracing Plates small sector -->
+
+<!--  Bay 1 -->
+<var  name="MBWH_CBPS9x1"  value="MBWH_CBPS9le/2." />
+<var  name="MBWH_CBPS9y1"  value="MBWH_CBPS9wi/2.-MBWH_CBPS9cu" />
+<var  name="MBWH_CBPS9x2"  value="MBWH_CBPS9x1-MBWH_CBPS9cu" />
+<var  name="MBWH_CBPS9y2"  value="MBWH_CBPS9wi/2." />
+<gvxysxy name="MBWH_CrossBracingPlateSmallSectorItem9" material="Aluminium1" dZ="MBWH_CBPth">
+  <gvxy_point X_Y="MBWH_CBPS9x1;MBWH_CBPS9y1"/>
+  <gvxy_point X_Y="MBWH_CBPS9x2;MBWH_CBPS9y2"/>
+</gvxysxy>
+
+<!--  Bay 2 -->
+<var  name="MBWH_CBPS11x1"  value="MBWH_CBPS11le/2." />
+<var  name="MBWH_CBPS11y1"  value="MBWH_CBPS11wi/2.-MBWH_CBPS11cu" />
+<var  name="MBWH_CBPS11x2"  value="MBWH_CBPS11x1-MBWH_CBPS11cu" />
+<var  name="MBWH_CBPS11y2"  value="MBWH_CBPS11wi/2." />
+<gvxysxy name="MBWH_CrossBracingPlateSmallSectorItem11" material="Aluminium1" dZ="MBWH_CBPth">
+  <gvxy_point X_Y="MBWH_CBPS11x1;MBWH_CBPS11y1"/>
+  <gvxy_point X_Y="MBWH_CBPS11x2;MBWH_CBPS11y2"/>
+</gvxysxy>
+
+<!--  Bay 3 -->
+<var  name="MBWH_CBPS15x1"  value="MBWH_CBPS15le/2." />
+<var  name="MBWH_CBPS15y1"  value="MBWH_CBPS15wi/2.-MBWH_CBPS15cu" />
+<var  name="MBWH_CBPS15x2"  value="MBWH_CBPS15x1-MBWH_CBPS15cu" />
+<var  name="MBWH_CBPS15y2"  value="MBWH_CBPS15wi/2." />
+<gvxysxy name="MBWH_CrossBracingPlateSmallSectorItem15" material="Aluminium1" dZ="MBWH_CBPth">
+  <gvxy_point X_Y="MBWH_CBPS15x1;MBWH_CBPS15y1"/>
+  <gvxy_point X_Y="MBWH_CBPS15x2;MBWH_CBPS15y2"/>
+</gvxysxy>
+
+
+<!-- Bay 1 -->
+<var  name="MBWH_CBS9z" value="MBWH_CBSl9/2." />
+<var  name="MBWH_CBPS9d"  value="MBWH_CBPS9wi-2.*MBWH_CBPS9cu" />
+<var  name="MBWH_CBPS9zb" value="MBWH_CBPS9za+sin(MBWH_CBPS9ti*GENV_PiS180)*MBWH_CBPS9d/2." />
+<var  name="MBWH_CBPS9ya" value="MBWH_CBPS9cu*sqrt(2.)*cos((45-MBWH_CBPS9ti)*GENV_PiS180)  -MBWH_CBhei+MBWH_CBPS9ya" />
+<var  name="MBWH_CBPS9yb" value="-MBWH_CBPS9ya-cos(MBWH_CBPS9ti*GENV_PiS180)*MBWH_CBPS9d/2." />
+<var  name="MBWH_CBPS9zc" value="MBWH_CBPS9zb+cos(MBWH_CBPS9ti*GENV_PiS180)*MBWH_CBPS9le/2" />
+<var  name="MBWH_CBPS9yc" value="MBWH_CBPS9yb+sin(MBWH_CBPS9ti*GENV_PiS180)*MBWH_CBPS9le/2" />
+  <!-- get positions of contreventements 7,8 using locations of item 9 extremities -->
+<var  name="MBWH_cvs9xo" value="-MBWH_CBPS9zc*cos(MBWH_CBPS9ti*GENV_PiS180)-0.5*(MBWH_CBhei)*sin(MBWH_CBPS9ti*GENV_PiS180)" />
+<var  name="MBWH_cvs9yo" value=" MBWH_CBPS9zc*sin(MBWH_CBPS9ti*GENV_PiS180)-0.5*(MBWH_CBhei)*cos(MBWH_CBPS9ti*GENV_PiS180)" />
+<var  name="MBWH_cvs9xu" value="MBWH_cvs9xo+MBWH_CBSl9*cos(MBWH_CBPS9ti*GENV_PiS180)" />
+<var  name="MBWH_cvs9yu" value="MBWH_cvs9yo-MBWH_CBSl9*sin(MBWH_CBPS9ti*GENV_PiS180)" />
+<var  name="MBWH_cvsx8"   value="-MBWH_cvs9xu+cos(MBWH_CBPS9ti*GENV_PiS180)*MBWH_CBSl8/2.-MBWH_CBSb1xof" />
+<var  name="MBWH_cvsy8"   value=" MBWH_cvs9yu+sin(MBWH_CBPS9ti*GENV_PiS180)*MBWH_CBSl8/2.-MBWH_CBSb1yof" />
+<var  name="MBWH_cvsx7"   value="-MBWH_cvs9xo-cos(MBWH_CBPS9ti*GENV_PiS180)*MBWH_CBSl7/2.-MBWH_CBSb1xof" />
+<var  name="MBWH_cvsy7"   value=" MBWH_cvs9yo-sin(MBWH_CBPS9ti*GENV_PiS180)*MBWH_CBSl7/2.-MBWH_CBSb1yof" />
+
+<composition name="MBWH_CrossBracingPlateSmallSectorItem9Rot">
+  <posXYZ volume="MBWH_CrossBracingPlateSmallSectorItem9" rot="0.;90.;0" />
+</composition>
+<composition name="MBWH_CrossBracingBay1SmallSector">
+  <posXYZ volume="MBWH_CutProfilesCrossBracingSmallSectorItem9" X_Y_Z="0;0;MBWH_CBS9z" />
+  <posXYZ volume="MBWH_CrossBracingPlateSmallSectorItem9Rot" X_Y_Z="-MBWH_CBPx;MBWH_CBPS9yc;MBWH_CBPS9zc" rot="-MBWH_CBPS9ti;0;0" />
+  <posXYZ volume="MBWH_CrossBracingPlateSmallSectorItem9Rot" X_Y_Z=" MBWH_CBPx;MBWH_CBPS9yc;MBWH_CBPS9zc" rot="-MBWH_CBPS9ti;0;0"/>
+</composition>
+<composition name="MBWH_CroisillonBay1SmallSector">
+ <posXYZ volume="MBWH_CrossBracingBay1SmallSector" X_Y_Z="0;-MBWH_CBPS9yc;-MBWH_CBPS9zc"  /> 
+</composition>
+<composition name="MBWH_CroisillonBay1SmallSectorRot">
+  <posXYZ volume="MBWH_CroisillonBay1SmallSector" rot="MBWH_CBPS9ti;90;0" />
+  <posXYZ volume="MBWH_CutProfilesCrossBracingSmallSectorItem7" X_Y_Z="MBWH_cvsx7;MBWH_cvsy7;0" rot="-MBWH_CBPS9ti;90;0" />
+  <posXYZ volume="MBWH_CutProfilesCrossBracingSmallSectorItem8" X_Y_Z="MBWH_cvsx8;MBWH_cvsy8;0" rot="-MBWH_CBPS9ti;90;0" />
+</composition>
+
+<!-- Bay 2 -->
+<var  name="MBWH_CBS11z" value="MBWH_CBSl11/2." />
+<var  name="MBWH_CBPS11d"  value="MBWH_CBPS11le-2.*MBWH_CBPS11cu" />
+<var  name="MBWH_CBPS11zb" value="MBWH_CBPS11za+cos(MBWH_CBPS11ti*GENV_PiS180)*MBWH_CBPS11d/2." />
+<var  name="MBWH_CBPS11yb" value="MBWH_CBPS11ya+sin(MBWH_CBPS11ti*GENV_PiS180)*MBWH_CBPS11d/2." />
+<var  name="MBWH_CBPS11zc" value="MBWH_CBPS11zb+sin(MBWH_CBPS11ti*GENV_PiS180)*MBWH_CBPS11wi/2" />
+<var  name="MBWH_CBPS11yc" value="MBWH_CBPS11yb-cos(MBWH_CBPS11ti*GENV_PiS180)*MBWH_CBPS11wi/2" />
+  <!-- get positions of contreventements 13, 12 using locations of item 11 extremities -->
+<var  name="MBWH_cvs11xo" value="-(MBWH_CBSl11-MBWH_CBPS11zc)*cos(MBWH_CBPS11ti*GENV_PiS180)-(MBWH_CBhei-MBWH_CBPS11yc)*sin(MBWH_CBPS11ti*GENV_PiS180)"/>
+<var  name="MBWH_cvs11yo" value=" (MBWH_CBSl11-MBWH_CBPS11zc)*sin(MBWH_CBPS11ti*GENV_PiS180)-(MBWH_CBhei-MBWH_CBPS11yc)*cos(MBWH_CBPS11ti*GENV_PiS180)"/>
+<var  name="MBWH_cvs11xu" value="MBWH_cvs11xo+MBWH_CBSl11*cos(MBWH_CBPS11ti*GENV_PiS180)" />
+<var  name="MBWH_cvs11yu" value="MBWH_cvs11yo-MBWH_CBSl11*sin(MBWH_CBPS11ti*GENV_PiS180)" />
+<var  name="MBWH_cvsx13"  value="-MBWH_cvs11xu+cos(MBWH_CBPS11ti*GENV_PiS180)*MBWH_CBSl13/2." />
+<var  name="MBWH_cvsy13"  value=" MBWH_cvs11yu+sin(MBWH_CBPS11ti*GENV_PiS180)*MBWH_CBSl13/2." />
+<var  name="MBWH_cvsx12"  value="-MBWH_cvs11xo-cos(MBWH_CBPS11ti*GENV_PiS180)*MBWH_CBSl12/2." />
+<var  name="MBWH_cvsy12"  value=" MBWH_cvs11yo-sin(MBWH_CBPS11ti*GENV_PiS180)*MBWH_CBSl12/2." />
+
+<composition name="MBWH_CrossBracingPlateSmallSectorItem11Rot">
+  <posXYZ volume="MBWH_CrossBracingPlateSmallSectorItem11" rot="0.;90.;0" />
+</composition>
+<composition name="MBWH_CrossBracingBay2SmallSector">
+  <posXYZ volume="MBWH_CutProfilesCrossBracingSmallSectorItem11" X_Y_Z="0;MBWH_CBhei;MBWH_CBS11z"  rot="0.;0.;180" />
+  <posXYZ volume="MBWH_CrossBracingPlateSmallSectorItem11Rot" X_Y_Z="-MBWH_CBPx;MBWH_CBPS11yc;MBWH_CBPS11zc" rot="-MBWH_CBPS11ti;0;0" />
+  <posXYZ volume="MBWH_CrossBracingPlateSmallSectorItem11Rot" X_Y_Z=" MBWH_CBPx;MBWH_CBPS11yc;MBWH_CBPS11zc" rot="-MBWH_CBPS11ti;0;0"/>
+</composition>
+
+<composition name="MBWH_CroisillonBay2SmallSector">
+  <posXYZ volume="MBWH_CrossBracingBay2SmallSector" X_Y_Z="0;-MBWH_CBPS11yc;-MBWH_CBPS11zc"  />
+</composition>
+<composition name="MBWH_CroisillonBay2SmallSectorRot">
+  <posXYZ volume="MBWH_CroisillonBay2SmallSector" rot="MBWH_CBPS11ti;90;180" />
+  <posXYZ volume="MBWH_CutProfilesCrossBracingSmallSectorItem13" X_Y_Z="MBWH_cvsx13;MBWH_cvsy13;0" rot="-MBWH_CBPS11ti;90;0" />
+  <posXYZ volume="MBWH_CutProfilesCrossBracingSmallSectorItem12" X_Y_Z="MBWH_cvsx12;MBWH_cvsy12;0" rot="-MBWH_CBPS11ti;90;0" />
+</composition>
+
+
+
+<!-- Bay 3 -->
+<var  name="MBWH_CBS15z" value="MBWH_CBSl15/2." />
+<var  name="MBWH_CBPS15d"  value="MBWH_CBPS15le-2.*MBWH_CBPS15cu" />
+<var  name="MBWH_CBPS15zb" value="MBWH_CBPS15za+cos(MBWH_CBPS15ti*GENV_PiS180)*MBWH_CBPS15d/2." />
+<var  name="MBWH_CBPS15yb" value="MBWH_CBPS15ya+sin(MBWH_CBPS15ti*GENV_PiS180)*MBWH_CBPS15d/2." />
+<var  name="MBWH_CBPS15zc" value="MBWH_CBPS15zb+sin(MBWH_CBPS15ti*GENV_PiS180)*MBWH_CBPS15wi/2" />
+<var  name="MBWH_CBPS15yc" value="MBWH_CBPS15yb-cos(MBWH_CBPS15ti*GENV_PiS180)*MBWH_CBPS15wi/2" />
+  <!-- get positions of contreventements 16, 17 using locations of item 15 extremities -->
+<var  name="MBWH_cvs15xo" value="-(MBWH_CBSl15-MBWH_CBPS15zc)*cos(MBWH_CBPS15ti*GENV_PiS180)-(MBWH_CBhei-MBWH_CBPS15yc)*sin(MBWH_CBPS15ti*GENV_PiS180)"/>
+<var  name="MBWH_cvs15yo" value=" (MBWH_CBSl15-MBWH_CBPS15zc)*sin(MBWH_CBPS15ti*GENV_PiS180)-(MBWH_CBhei-MBWH_CBPS15yc)*cos(MBWH_CBPS15ti*GENV_PiS180)"/>
+<var  name="MBWH_cvs15xu" value="MBWH_cvs15xo+MBWH_CBSl15*cos(MBWH_CBPS15ti*GENV_PiS180)" />
+<var  name="MBWH_cvs15yu" value="MBWH_cvs15yo-MBWH_CBSl15*sin(MBWH_CBPS15ti*GENV_PiS180)" />
+<var  name="MBWH_cvsx17"  value="-MBWH_cvs15xu+cos(MBWH_CBPS15ti*GENV_PiS180)*MBWH_CBSl17/2.-MBWH_CBSb3xof" />
+<var  name="MBWH_cvsy17"  value=" MBWH_cvs15yu+sin(MBWH_CBPS15ti*GENV_PiS180)*MBWH_CBSl17/2.-MBWH_CBSb3yof" />
+<var  name="MBWH_cvsx16"  value="-MBWH_cvs15xo-cos(MBWH_CBPS15ti*GENV_PiS180)*MBWH_CBSl16/2.-MBWH_CBSb3xof" />
+<var  name="MBWH_cvsy16"  value=" MBWH_cvs15yo-sin(MBWH_CBPS15ti*GENV_PiS180)*MBWH_CBSl16/2.-MBWH_CBSb3yof" />
+
+<composition name="MBWH_CrossBracingPlateSmallSectorItem15Rot">
+  <posXYZ volume="MBWH_CrossBracingPlateSmallSectorItem15" rot="0.;90.;0" />
+</composition>
+<composition name="MBWH_CrossBracingBay3SmallSector">
+  <posXYZ volume="MBWH_CutProfilesCrossBracingSmallSectorItem15" X_Y_Z="0;MBWH_CBhei;MBWH_CBS15z"  rot="0.;0.;180" />
+  <posXYZ volume="MBWH_CrossBracingPlateSmallSectorItem15Rot" X_Y_Z="-MBWH_CBPx;MBWH_CBPS15yc;MBWH_CBPS15zc" rot="-MBWH_CBPS15ti;0;0" />
+  <posXYZ volume="MBWH_CrossBracingPlateSmallSectorItem15Rot" X_Y_Z=" MBWH_CBPx;MBWH_CBPS15yc;MBWH_CBPS15zc" rot="-MBWH_CBPS15ti;0;0"/>
+</composition>
+
+<composition name="MBWH_CroisillonBay3SmallSector">
+  <posXYZ volume="MBWH_CrossBracingBay3SmallSector" X_Y_Z="0;-MBWH_CBPS15yc;-MBWH_CBPS15zc"  />
+</composition>
+<composition name="MBWH_CroisillonBay3SmallSectorRot">
+  <posXYZ volume="MBWH_CroisillonBay3SmallSector" rot="MBWH_CBPS15ti;90;180" />
+  <posXYZ volume="MBWH_CutProfilesCrossBracingSmallSectorItem16" X_Y_Z="MBWH_cvsx16;MBWH_cvsy16;0" rot="-MBWH_CBPS15ti;90;0" />
+  <posXYZ volume="MBWH_CutProfilesCrossBracingSmallSectorItem17" X_Y_Z="MBWH_cvsx17;MBWH_cvsy17;0" rot="-MBWH_CBPS15ti;90;0" />
+</composition>
+
+
+
+
+
+
+<!--  Derived variables -->
+<!--  positions of reinforcing bars -->
+<var name="MBWH_SssRBpz1" value="MBWH_SsiUPlen/2.-MBWH_SssRBdz1-MBWH_SRBhos/2."/>
+<var name="MBWH_SssRBpz2" value="MBWH_SssRBpz1-MBWH_SssRBdz2"/>
+<var name="MBWH_SssRBpz3" value="MBWH_SssRBpz2-MBWH_SssRBdz3"/>
+
+<!--  Relative positions of spokes -->
+<var  name="MBWH_SssIxpos" value="MBWH_SRBpx+MBWH_SUPext/2.+MBWH_RBBthi+MBWH_RBSthi/2." />
+<var  name="MBWH_SssIypos" value="-MBWH_RBSlen+MBWH_RBBsiz" />
+<var  name="MBWH_SssIzof1" value="-(MBWH_SseUPlen-MBWH_SsiUPlen)/2." />
+<var  name="MBWH_SssIzof2" value=" MBWH_SssIypos*tan(MBWH_SSangle*GENV_PiS180)+(MBWH_SIypos-MBWH_SEypos)/cos(MBWH_SSangle*GENV_PiS180)" />
+<var  name="MBWH_SssIzpos" value="MBWH_SssIzof1+MBWH_SssIzof2" />
+
+<!--  inner spokes position -->
+<var  name="MBWH_SssIxref" value="0.5*MBWH_SsiUPlen*sin(MBWH_SSangle*GENV_PiS180)+(MBWH_SUPhei-MBWH_SsiUPhcu)*cos(MBWH_SSangle*GENV_PiS180)"/>
+<var  name="MBWH_Sssypos" value="MBWH_yref+MBWH_SIypos+0.5*MBWH_SsiUPlen*cos(MBWH_SSangle*GENV_PiS180) "/>
+
+<!--  Inner spoke small sector -->
+
+<gvxysx name="MBWH_InnerSpokeSmallSectorUprofile" material="Aluminium4" dZ="MBWH_SsiUPlen-180">
+  <gvxy_point X_Y="MBWH_SUPxa;MBWH_SUPya"/>
+  <gvxy_point X_Y="MBWH_SUPxb;MBWH_SUPyb"/>
+  <gvxy_point X_Y="MBWH_SUPxc;MBWH_SUPyc"/>
+  <gvxy_point X_Y="MBWH_SUPxd;MBWH_SUPyd"/>
+</gvxysx>
+
+<!--  External spoke small sector -->
+
+<gvxysx name="MBWH_ExternalSpokeSmallSectorUprofile" material="Aluminium4" dZ="MBWH_SseUPlen">
+  <gvxy_point X_Y="MBWH_SUPxa;MBWH_SUPya"/>
+  <gvxy_point X_Y="MBWH_SUPxb;MBWH_SUPyb"/>
+  <gvxy_point X_Y="MBWH_SUPxc;MBWH_SUPyc"/>
+  <gvxy_point X_Y="MBWH_SUPxd;MBWH_SUPyd"/>
+</gvxysx>
+
+<!--  Spoke Reinforcing Bar 1 -->
+<var  name="MBWH_SRB1x1" value="MBWH_SRB1dx1/2"/>
+<var  name="MBWH_SRB1y1" value="0"/>
+<var  name="MBWH_SRB1x3" value="MBWH_SRB1dx2/2"/>
+<var  name="MBWH_SRB1y3" value="MBWH_SRB1dy3-MBWH_SRB1dy2"/>
+<var  name="MBWH_SRB1x2" value="MBWH_SRB1x3-MBWH_SRB1dx3"/>
+<var  name="MBWH_SRB1y2" value="MBWH_SRB1y3"/>
+<var  name="MBWH_SRB1x4" value="MBWH_SRB1dx4/2"/>
+<var  name="MBWH_SRB1y4" value="-MBWH_SRB1dy2"/>
+<var  name="MBWH_SRB1x6" value="MBWH_SRB1x1-MBWH_SRB1dy1*tan(0.5*MBWH_SRB1alph*GENV_PiS180)"/>
+<var  name="MBWH_SRB1y6" value="-MBWH_SRB1dy1"/>
+<var  name="MBWH_SRB1x5" value="MBWH_SRB1x6+(MBWH_SRB1dy2-MBWH_SRB1dy1)/tan(MBWH_SRB1alph*GENV_PiS180)"/>
+<var  name="MBWH_SRB1y5" value="MBWH_SRB1y4"/>
+
+<var  name="MBWH_SRB1zpos" value="MBWH_SssIxpos-MBWH_CBext/2.-MBWH_SRBthi"/>
+
+<gvxysx name="MBWH_SpokeReinforcingBar1SmallSector" material="Aluminium1" dZ="MBWH_SRBthi">
+  <gvxy_point X_Y="MBWH_SRB1x1;MBWH_SRB1y1"/>
+  <gvxy_point X_Y="MBWH_SRB1x2;MBWH_SRB1y2"/>
+  <gvxy_point X_Y="MBWH_SRB1x3;MBWH_SRB1y3"/>
+  <gvxy_point X_Y="MBWH_SRB1x4;MBWH_SRB1y4"/>
+  <gvxy_point X_Y="MBWH_SRB1x5;MBWH_SRB1y5"/>
+  <gvxy_point X_Y="MBWH_SRB1x6;MBWH_SRB1y6"/>
+</gvxysx>
+
+<!--  Spoke Reinforcing Bar 1 -->
+<var  name="MBWH_SRB2x1" value="MBWH_SRB2dx1/2"/>
+<var  name="MBWH_SRB2y1" value="0"/>
+<var  name="MBWH_SRB2x2" value="MBWH_SRB2dx2/2"/>
+<var  name="MBWH_SRB2y2" value="-MBWH_SRB2dy"/>
+
+<var  name="MBWH_SRB2zpos" value="MBWH_SssIxpos-MBWH_CBext/2.-MBWH_SRBthi"/>
+
+<gvxysx name="MBWH_SpokeReinforcingBar2SmallSector" material="Aluminium1" dZ="MBWH_SRBthi">
+  <gvxy_point X_Y="MBWH_SRB2x1;MBWH_SRB2y1"/>
+  <gvxy_point X_Y="MBWH_SRB2x2;MBWH_SRB2y2"/>
+</gvxysx>
+
+
+<composition name="MBWH_SpokesSmallSectorAssembly1">
+  <posXYZ volume="MBWH_InnerSpokeSmallSectorUprofile"/>
+  <posXYZ volume="MBWH_ReinforcingBar" X_Y_Z=" MBWH_SRBpx;MBWH_SRBpy;MBWH_SssRBpz1" rot="0;0;90"/>
+  <posXYZ volume="MBWH_ReinforcingBar" X_Y_Z=" MBWH_SRBpx;MBWH_SRBpy;MBWH_SssRBpz2" rot="0;0;90"/>
+  <posXYZ volume="MBWH_ReinforcingBar" X_Y_Z=" MBWH_SRBpx;MBWH_SRBpy;MBWH_SssRBpz3" rot="0;0;90"/>
+  <posXYZ volume="MBWH_ExternalSpokeSmallSectorUprofile"  X_Y_Z=" MBWH_SssIxpos;MBWH_SssIypos;MBWH_SssIzpos"/>
+</composition>
+
+<composition name="MBWH_SpokesSmallSectorAssembly2">
+  <posXYZ volume="MBWH_InnerSpokeSmallSectorUprofile"/>
+  <posXYZ volume="MBWH_ReinforcingBar" X_Y_Z=" MBWH_SRBpx;MBWH_SRBpy;-MBWH_SssRBpz1" rot="0;0;90"/>
+  <posXYZ volume="MBWH_ReinforcingBar" X_Y_Z=" MBWH_SRBpx;MBWH_SRBpy;-MBWH_SssRBpz2" rot="0;0;90"/>
+  <posXYZ volume="MBWH_ReinforcingBar" X_Y_Z=" MBWH_SRBpx;MBWH_SRBpy;-MBWH_SssRBpz3" rot="0;0;90"/>
+  <posXYZ volume="MBWH_ExternalSpokeSmallSectorUprofile"  X_Y_Z=" MBWH_SssIxpos;MBWH_SssIypos;-MBWH_SssIzpos"/>
+</composition>
+
+<composition name="MBWH_SpokesSmallSectorAssemblyTemp1">
+  <posXYZ volume="MBWH_SpokesSmallSectorAssembly1" X_Y_Z="MBWH_SssIxref;MBWH_Sssypos;0" rot="0.; -90.;90-MBWH_SSangle" />
+</composition>
+
+<composition name="MBWH_SpokesSmallSectorAssemblyTemp2">
+  <posXYZ volume="MBWH_SpokesSmallSectorAssembly2" X_Y_Z="-MBWH_SssIxref;MBWH_Sssypos;0" rot="180.; -90.;90+MBWH_SSangle" />
+</composition>
+
+<composition name="MBWH_SmallSector">
+  <posXYZ volume="MBWH_SpokesSmallSectorAssemblyTemp1" />
+  <posXYZ volume="MBWH_SpokesSmallSectorAssemblyTemp2" /> 
+  <posXYZ volume="MBWH_CutProfilesCrossBracingSmallSectorItem10"  X_Y_Z="0;MBWH_CBSy10-5.;0" rot="0;90;0"/>
+  <posXYZ volume="MBWH_CutProfilesCrossBracingSmallSectorItem14"  X_Y_Z="0;MBWH_CBSy14;0" rot="0;90;0"/>
+  <posXYZ volume="MBWH_CutProfilesCrossBracingSmallSectorItem18a" X_Y_Z="0;MBWH_CBSy18;0" rot="0;90;0"/>
+  <posXYZ volume="MBWH_CutProfilesCrossBracingSmallSectorItem18b" X_Y_Z="0;MBWH_CBSy18b;0" rot="0;90;0"/>
+  <posXYZ volume="MBWH_CroisillonBay1SmallSectorRot" X_Y_Z="0;MBWH_Croisy9;0"/>
+  <posXYZ volume="MBWH_CroisillonBay2SmallSectorRot" X_Y_Z="0;MBWH_Croisy11;0" rot="0;180;0"/>
+  <posXYZ volume="MBWH_CroisillonBay3SmallSectorRot" X_Y_Z="0;MBWH_Croisy15;0"/>
+  <posXYZ volume="MBWH_SpokeReinforcingBar1SmallSector" X_Y_Z="0;MBWH_SRB1ypos;MBWH_SRB1zpos-2.6"/>
+  <posXYZ volume="MBWH_SpokeReinforcingBar2SmallSector" X_Y_Z="0;MBWH_SRB2ypos;MBWH_SRB2zpos-2.6"/> 
+</composition>
+
+
+<!--  
+      **************************************************************
+      ***                                                       ****
+      ***                  Big Wheel Assembly                   ****
+      ***                                                       ****
+      **************************************************************
+-->
+
+<var  name="MBWH_zposS" value="MBWH_zposL+MBWH_SlsIxpos" />
+
+<composition name="MBWH_BigWheelOctant">
+  <posXYZ volume="MBWH_SmallSector" X_Y_Z=" 0.;0.;MBWH_zposS" rot="0.;180.;22.5"/>
+  <posXYZ volume="MBWH_LargeSector" X_Y_Z=" 0.;0.;MBWH_zposL" rot="0.;180.;0."/>
+</composition>
+
+<array name="MBWH_BWOA" values="-90;-45;0;45;90;135;180;225" /> <!--  octant angles -->
+
+<composition name="MBWH_BigWheel">
+  <foreach  index="I"  begin="0"  loops="8" >
+   <posXYZ volume="MBWH_BigWheelOctant" rot="0.;0.;MBWH_BWOA[I]"/>
+  </foreach>
+</composition>
+
+<composition name="MBWH_BigWheels">
+  <posXYZ volume="MBWH_BigWheel"/>
+  <posXYZ volume="MBWH_BigWheel" rot="0.;180.;0."/>
+</composition>
+
+</section>
+
+<section name       = "Calorimeter Saddle"
+         version    = "7.0"
+         date       = "9 May 2006"
+         author     = "Daniel Pomarede"
+         top_volume = "SADL_CalorimeterSaddle">
+
+<!--     name       =  Calorimeter Saddle            section name       = "Supports"  -->
+<!--  **************************************************************
+      **************************************************************
+      ***                                                       ****
+      ***                  Calorimeter Saddle                   ****
+      ***                                                       ****
+      **************************************************************
+      **************************************************************  -->
+
+
+
+<!--  Andrei Table need for the structure missing in Oracle table -->
+<var  name="SADL_numboxes"      value="12"/>
+<var  name="SADL_numbreps"      value="1"/>
+<var  name="SADL_numtubes"      value="4"/>
+<var  name="SADL_NumEmTubesBrep"      value="1"/>
+<var  name="SADL_Gusset_tubecut"      value="0"/>
+<var  name="SADL_num_Gusset_vol"      value="12"/>
+<var  name="SADL_numbreppoint"      value="10"/>
+<var  name="SADL_SymX"   value="1"/>
+<var  name="SADL_SymY"   value="0"/>
+<var  name="SADL_SymZ"   value="1"/>
+<var name="PiDegOver4"       value=" 45"/>
+<var name="PiDegOver2"       value=" 90"/>
+<var name="Pideg"            value="180"/>
+<var name="2Pideg"            value="360"/>
+<var name="SADL_Stzrot"    value="45"/>
+<var name="SADL_Stzrotmoins"    value="-45"/>
+<!--SaddleBOVN -->
+<var name="SADL_BoxBeam_numHPlateVol"	value="1"/>
+<var name="SADL_BoxBeam_numVPlateVol"   value="2"/>
+<var name="SADL_numConnGussetBBeamVol"  value="4"/>
+<var name="SADL_numStiffenerVol"	value="4"/>
+<var name="SADL_numBarrelBlocking_JackVol"   value="4"/>
+<array name="SADL_SymBoxBeam"           values="1;0;0"/>
+<array name="SADL_SymExtendedBoxBeam"   values="1;0;1"/>
+<array name="SADL_SymConnGussetBBeam"   values="1;0;1"/>
+<array name="SADL_SymStiffener"         values="1;0;1"/>
+<array name="SADL_SymBarrel_Blocking_Jack"   values="1;0;1"/>
+<array name="SADL_Material"	        values="1;2"/> <!-- 1=Iron, 2=Aluminium-->
+<array name="SADL_EmptyVolBoxBeam"           values="0;0;0"/> <!--values="NUMEMBO(number empty boxes);NUMEMTU(tubes);NUMEMBR(breps)"-->
+<array name="SADL_EmptyVolExtendedBoxBeam"           values="0;0;0"/>
+<array name="SADL_EmptyVolConnGussetBBeam"           values="0;0;0"/>
+<array name="SADL_EmptyVolStiffener"         	     values="0;0;0"/>
+<array name="SADL_EmptyVolBarrel_Blocking_Jack"      values="0;0;0"/>
+<!--SaddleTUVN -->
+<var name="SADL_RoundedSupport"	value="2"/>
+<var name="SAD_Barrel_Blocking_Jack_Cylinder"  		 value="4"/>
+<array name="SADL_SymRoundedSupport"          		 values="1;0;1"/>
+<array name="SADL_SymBarrel_Blocking_Jack_Cylinder"      values="1;0;1"/>
+<array name="SADL_EmptyVolRoundedSupport"         	 values="0;0;0"/>
+<array name="SADL_EmptyVolBarrel_Blocking_Jack_Cylinder" values="0;0;0"/>
+
+
+
+<!-- for box -->
+<var  name="SADL_BoxBeam_HPlate_vol"      value="1"/>
+<var  name="SADL_BoxBeam_VPlate_vol"      value="2"/>
+<var  name="SADL_ConnGussetBBeam_vol"      value="4"/>
+<var  name="SADL_ConnGussetBBeam_VPlate_vol"      value="2"/>
+
+<!--  END -->
+
+<!--  ATLLBUS_0019 -->
+<var  name="SADL_BxBLen"   value="6200"/>
+<var  name="SADL_BxBWid"   value="520"/>
+<var  name="SADL_BxBHei"   value="360"/>
+<var  name="SADL_BxBHThi1" value="90"/>
+<var  name="SADL_BxBHThi2" value="40"/>
+<var  name="SADL_BxBVThi"  value="60"/>
+<!--  ATLLBUS_0003 -->
+<var  name="SADL_BxBxref"  value="2740"/>
+<var  name="SADL_BxByref"  value="4000"/>
+
+<!--  Extended Barrel Box Beam -->
+
+<!--  ATLLEUS_0002 -->
+<var  name="SADL_BxBELen"  value="3355"/>
+<var  name="SADL_EBxBzpos" value="4832.5"/>
+
+<!--  Rounded Support -->
+
+<!--  ATLLBUS_0006 & ATLLBUS_0009 & ATLLBUS_0012 & ATLLBUS_0015 -->
+<var  name="SADL_RSprof1"  value="301.8"/>
+<var  name="SADL_RSprof2"  value="32"/>
+<var  name="SADL_RSLenAC"  value="731"/>
+<var  name="SADL_RSLenBD"  value="746"/>
+<var  name="SADL_RSrin"    value="4240"/>
+<var  name="SADL_RSrout"   value="4310"/>
+
+<!--  Gusset -->
+
+<!--  ATLLBUS_0005 -->
+<var  name="SADL_GudZ"     value="70"/>
+<var  name="SADL_GualphA"  value="31"/>
+<var  name="SADL_GualphE"  value="22.5"/>
+<var  name="SADL_GuthicAB" value="61"/>
+<var  name="SADL_GuthicBC" value="63.6"/>
+<var  name="SADL_GudyAF"   value="252"/>
+<var  name="SADL_GudxAF"   value="443.8"/>
+<var  name="SADL_GudxEF"   value="55"/>
+<var  name="SADL_GudxFJ"   value="1087.7"/>
+<var  name="SADL_GudyAJ"   value="1634.3"/>
+<var  name="SADL_GudyFG"   value="430"/>
+<var  name="SADL_GudxGH"   value="510"/>
+<var  name="SADL_GudxFI"   value="1125.5"/>
+<var  name="SADL_GudyHI"   value="1440.6"/>
+
+<!--  ATLLBUS_0006 -->
+<var  name="SADL_Guposxg"  value="2715"/>
+<var  name="SADL_Guposyg"  value="-3485"/>
+
+<!--  ATLLBUS_0006  -->
+<var  name="SADL_Gussdz1"  value="265"/>
+<var  name="SADL_Gussdz2"  value="280"/>
+
+<!--  Connection Gusset / Box Beam -->
+<!--  ATLLBUS_0006 & ATLLBUS_0007 -->
+<var name="SADL_CGBBthi"   value="25"/>
+<var name="SADL_CGBBlen"   value="870"/>
+<var name="SADL_CGBBHwid"  value="545"/>
+<var name="SADL_CGBBVwid"  value="400"/>
+
+<!--  Stiffener -->
+<!--  ATLLBUS_0018 & ATLLEUS_0021 -->
+
+<var name="SADL_StifLen"   value="1149"/>
+<!--  extremity plate -->
+<var name="SADL_StEPwid"   value="152"/>
+<var name="SADL_StEPthi"   value="15"/>
+<!--  tube-square -->
+<var name="SADL_StTUthi"   value="10"/>
+<var name="SADL_StTUext"   value="100"/>
+
+<!--  Doublet -->
+<!--  ATLLBUS_0003 -->
+<var name="SADL_SaddZmax"  value="2820"/> <!--  Gusset surface is in this plane -->
+<!--  ATLLEUS_0002 -->
+<var name="SADL_ESadZmax"  value="6150"/> <!--  Gusset surface is in this plane -->
+
+<!--  stiffener position -->
+<!--  ATLLBUS_0008 -->
+<var name="SADL_Stxpos"    value=" 3362"/>
+<var name="SADL_Stypos"    value="-2910"/>
+
+<!--  Barrel Blocking Jacks -->
+<!--  Barrel Blocking Jacks positions -->
+<array name="SADL_BlJazpos" values="529;2369;3989;5789" /> 
+<var  name="SADL_BlJaypos" value="-4390+50"/> <!-- added 50 for the modification of SADL_BBJSCthi (few lines below)-->
+<var  name="SADL_BlJaxpos" value="3000"/>
+
+<var  name="SADL_BBJPlen"  value="520"/>
+<var  name="SADL_BBJPwid"  value="360"/>
+<var  name="SADL_BBJPthi"  value="45"/>
+
+<var  name="SADL_BBJBCthi" value="290"/>
+<var  name="SADL_BBJBCrad" value="152"/>
+<var  name="SADL_BBJSCthi" value="5"/> <!-- modified from 55 to 5 to avoid overlap -->
+<var  name="SADL_BBJSCrad" value="98"/>
+
+
+
+<!--  Derived variables -->
+
+<!--  Box Beam -->
+
+<var  name="SADL_BxBHyp1" value="-SADL_BxBHei/2.-SADL_BxBHThi1/2."/>
+<var  name="SADL_BxBHyp2" value="SADL_BxBHei/2.+SADL_BxBHThi2/2."/>
+<var  name="SADL_BxBVxpos" value="SADL_BxBWid/2.-SADL_BxBVThi/2."/>
+
+<!--  Gusset -->
+
+<var  name="SADL_Guxa" value="0"/>
+<var  name="SADL_Guya" value="0"/>
+<var  name="SADL_Guxb" value="SADL_Guxa+SADL_GuthicAB*sin(SADL_GualphA*GENV_PiS180)"/>
+<var  name="SADL_Guyb" value="SADL_Guya-SADL_GuthicAB*cos(SADL_GualphA*GENV_PiS180)"/>
+<var  name="SADL_Guxc" value="SADL_Guxb+SADL_GuthicBC/tan(SADL_GualphA*GENV_PiS180)"/>
+<var  name="SADL_Guyc" value="SADL_Guyb+SADL_GuthicBC"/>
+
+<var  name="SADL_Guxf" value="SADL_Guxa+SADL_GudxAF"/>
+<var  name="SADL_Guyf" value="SADL_Guya-SADL_GudyAF"/>
+<var  name="SADL_Guxe" value="SADL_Guxf-SADL_GudxEF"/>
+<var  name="SADL_Guye" value="SADL_Guyf"/>
+<var  name="SADL_Guyd" value="SADL_Guyc"/>
+<var  name="SADL_Guxd" value="SADL_Guxe-(SADL_Guyd-SADL_Guye)*tan(SADL_GualphE*GENV_PiS180)"/>
+<var  name="SADL_Guxg" value="SADL_Guxf"/>
+<var  name="SADL_Guyg" value="SADL_Guyf+SADL_GudyFG"/>
+<var  name="SADL_Guxh" value="SADL_Guxg+SADL_GudxGH"/>
+<var  name="SADL_Guyh" value="SADL_Guyg"/>
+
+<var  name="SADL_Guxi" value="SADL_Guxf+SADL_GudxFI"/>
+<var  name="SADL_Guyi" value="SADL_Guyh+SADL_GudyHI"/>
+<var  name="SADL_Guxj" value="SADL_Guxf+SADL_GudxFJ"/>
+<var  name="SADL_Guyj" value="SADL_Guya+SADL_GudyAJ"/>
+
+<var  name="SADL_Guposxa" value="SADL_Guposxg-SADL_Guxg"/>
+<var  name="SADL_Guposya" value="SADL_Guposyg-SADL_Guyg"/>
+
+<var  name="SADL_Gusspz2" value="SADL_Gussdz2+SADL_GudZ"/>
+<var  name="SADL_Gusspz1" value="SADL_Gussdz1+SADL_GudZ"/>
+
+<!--  Box beam positions -->
+
+<var  name="SADL_BxBxpos" value="SADL_BxBxref+SADL_BxBWid/2"/>
+<var  name="SADL_BxBypos" value="-SADL_BxByref+SADL_BxBHei/2+SADL_BxBHThi1"/>
+
+<!--  Connection Gusset / Box Beam -->
+
+<var  name="SADL_CGBBHPx"   value="SADL_Guposxg+SADL_CGBBHwid/2"/>
+<var  name="SADL_CGBBHPy"   value="SADL_Guposyg-SADL_CGBBthi/2"/>
+<var  name="SADL_CGBBVPx"   value="SADL_Guposxg+SADL_CGBBthi/2"/>
+<var  name="SADL_CGBBVPy"   value="SADL_Guposyg-SADL_CGBBVwid/2-SADL_CGBBthi"/>
+
+<!--  Stiffener -->
+
+<!--  height of flange -->
+<var name="SADL_StTFlhei" value="SADL_StTUext-2*SADL_StTUthi"/>
+<!--  x/y pos of flange/plate -->
+<var name="SADL_StTFlpos" value="SADL_StTUext/2-SADL_StTUthi/2"/>
+<!--  length -->
+<var name="SADL_StifLen0" value="SADL_StifLen-2*SADL_StEPthi"/>
+<!--  z pos of extremity plate -->
+<var name="SADL_StEPzpos" value="SADL_StifLen/2-SADL_StEPthi/2"/>
+
+<!--  Barrel Doublet -->
+<!--  ATLLBUS_0003 -->
+<var  name="SADL_SaddZ2"  value="SADL_SaddZmax-SADL_Gussdz1-1.5*SADL_GudZ"/>
+<!--  position of first unit is inferred from stiffener length -->
+<var  name="SADL_SaddZ1"  value="SADL_SaddZ2-3.*SADL_GudZ-2.*SADL_Gussdz2-SADL_StifLen"/>
+
+<!--  stiffener position -->
+<var name="SADL_Stzpos" value="(SADL_SaddZ1+SADL_SaddZ2)/2"/>
+
+<!--  Extended Barrel Doublet -->
+<!--  ATLLEUS_0002 -->
+<var name="SADL_ESaddZ2"  value="SADL_ESadZmax-SADL_Gussdz1-1.5*SADL_GudZ"/>
+<!--  position of first unit is inferred from stiffener length -->
+<var name="SADL_ESaddZ1"  value="SADL_ESaddZ2-3.*SADL_GudZ-2.*SADL_Gussdz2-SADL_StifLen"/>
+
+<!--  stiffener position -->
+<var name="SADL_EStzpos" value="(SADL_ESaddZ1+SADL_ESaddZ2)/2"/>
+
+<!--  Barrel Blocking Jacks -->
+
+<var  name="SADL_BBJSCyp" value="SADL_BBJSCthi/2"/>
+<var  name="SADL_BBJBCyp" value="SADL_BBJSCthi+SADL_BBJBCthi/2"/>
+<var  name="SADL_BBJPyp"  value="SADL_BBJSCthi+SADL_BBJBCthi+SADL_BBJPthi/2"/>
+
+<!--  Andrei Table need for the structure missing in Oracle table -->
+<var  name="SADL_Gusset_Plate_Zmoins"  value="-SADL_Gusspz2"/>
+<var  name="SADL_BxBVxposmoins"	value="-SADL_BxBVxpos"/>
+<var  name="SADL_StEPzposmoins" value="-SADL_StEPzpos"/>
+<var  name="SADL_StTFlposRot"   value="SADL_StTFlpos*sin(SADL_Stzrot*GENV_PiS180)"/>
+<var  name="SADL_StTFlposRotmoins" value="-SADL_StTFlposRot"/>
+<!--  Andrei Table need for the structure missing in Oracle table -->
+
+<!--  Modelization -->
+
+<!--  Box Beam -->
+<box name="SADL_BoxBeam_HPlate_Lower" material="Iron1" X_Y_Z="SADL_BxBWid ;SADL_BxBHThi1;SADL_BxBLen"/>
+<box name="SADL_BoxBeam_HPlate_Upper" material="Iron1" X_Y_Z="SADL_BxBWid ;SADL_BxBHThi2;SADL_BxBLen"/>
+<box name="SADL_BoxBeam_VPlate"       material="Iron1" X_Y_Z="SADL_BxBVThi;SADL_BxBHei  ;SADL_BxBLen"/>
+
+<!--  Extended Barrel Box Beam -->
+<box name="SADL_Extended_BoxBeam_HPlate_Lower" material="Iron1" X_Y_Z="SADL_BxBWid ;SADL_BxBHThi1;SADL_BxBELen"/>
+<box name="SADL_Extended_BoxBeam_HPlate_Upper" material="Iron1" X_Y_Z="SADL_BxBWid ;SADL_BxBHThi2;SADL_BxBELen"/>
+<box name="SADL_Extended_BoxBeam_VPlate"       material="Iron1" X_Y_Z="SADL_BxBVThi;SADL_BxBHei  ;SADL_BxBELen"/>
+
+<composition name="SADL_BoxBeam">
+  <posXYZ volume="SADL_BoxBeam_HPlate_Lower" X_Y_Z="0;SADL_BxBHyp1;0" />
+  <posXYZ volume="SADL_BoxBeam_HPlate_Upper" X_Y_Z="0;SADL_BxBHyp2;0" />
+  <posXYZ volume="SADL_BoxBeam_VPlate" X_Y_Z=" SADL_BxBVxpos;0;0" />
+  <posXYZ volume="SADL_BoxBeam_VPlate" X_Y_Z="-SADL_BxBVxpos;0;0" />
+</composition>
+
+<composition name="SADL_Extended_BoxBeam">
+  <posXYZ volume="SADL_Extended_BoxBeam_HPlate_Lower" X_Y_Z="0;SADL_BxBHyp1;0" />
+  <posXYZ volume="SADL_Extended_BoxBeam_HPlate_Upper" X_Y_Z="0;SADL_BxBHyp2;0" />
+  <posXYZ volume="SADL_Extended_BoxBeam_VPlate" X_Y_Z=" SADL_BxBVxpos;0;0" />
+  <posXYZ volume="SADL_Extended_BoxBeam_VPlate" X_Y_Z="-SADL_BxBVxpos;0;0" />
+</composition>
+
+<!--  Rounded Support -->
+<tubs name="SADL_RoundedSupportAC" material="Iron2" Rio_Z="SADL_RSrin;SADL_RSrout;SADL_RSLenAC" profile="SADL_RSprof1;SADL_RSprof2"/>
+<tubs name="SADL_RoundedSupportBD" material="Iron2" Rio_Z="SADL_RSrin;SADL_RSrout;SADL_RSLenBD" profile="SADL_RSprof1;SADL_RSprof2"/>
+
+<!--  Gusset -->
+<gvxy name="SADL_Gusset_Core" material="Iron" dZ="SADL_GudZ">
+  <gvxy_point X_Y="SADL_Guxa;SADL_Guya"/>
+  <gvxy_point X_Y="SADL_Guxb;SADL_Guyb"/>
+  <gvxy_point X_Y="SADL_Guxc;SADL_Guyc"/>
+  <gvxy_point X_Y="SADL_Guxd;SADL_Guyd"/>
+  <gvxy_point X_Y="SADL_Guxe;SADL_Guye"/>
+  <gvxy_point X_Y="SADL_Guxf;SADL_Guyf"/>
+  <gvxy_point X_Y="SADL_Guxg;SADL_Guyg"/>
+  <gvxy_point X_Y="SADL_Guxh;SADL_Guyh"/>
+  <gvxy_point X_Y="SADL_Guxi;SADL_Guyi"/>
+  <gvxy_point X_Y="SADL_Guxj;SADL_Guyj"/>
+</gvxy>
+
+<tubs name="SADL_Gusset_Cut" material="Aluminium4" Rio_Z="0;SADL_RSrout;SADL_RSLenBD"  profile="SADL_RSprof1;SADL_RSprof2"    />
+
+<subtraction  name="SADL_Gusset_Plate"  >
+  <posXYZ volume="SADL_Gusset_Core" X_Y_Z="SADL_Guposxa;SADL_Guposya;0"/>
+  <posXYZ volume="SADL_Gusset_Cut"/>
+</subtraction>
+
+<!--  Connection Gusset / Box Beam -->
+
+<box name="SADL_ConnGussetBBeam_HPlate" material="Iron4" X_Y_Z="SADL_CGBBHwid;SADL_CGBBthi;SADL_CGBBlen"/>
+<box name="SADL_ConnGussetBBeam_VPlate" material="Iron4" X_Y_Z="SADL_CGBBthi;SADL_CGBBVwid;SADL_CGBBlen"/>
+
+<composition name="SADL_Saddle_UnitA">
+  <posXYZ volume="SADL_RoundedSupportAC"  />
+  <posXYZ volume="SADL_Gusset_Plate" />
+  <posXYZ volume="SADL_Gusset_Plate" X_Y_Z="Zero;Zero;SADL_Gusspz1" />
+  <posXYZ volume="SADL_Gusset_Plate" X_Y_Z="Zero;Zero;SADL_Gusset_Plate_Zmoins" />
+  <posXYZ volume="SADL_ConnGussetBBeam_HPlate" X_Y_Z="SADL_CGBBHPx;SADL_CGBBHPy;0" />
+  <posXYZ volume="SADL_ConnGussetBBeam_VPlate" X_Y_Z="SADL_CGBBVPx;SADL_CGBBVPy;0" />
+</composition>
+
+<composition name="SADL_Saddle_UnitB">
+  <posXYZ volume="SADL_RoundedSupportBD"  />
+  <posXYZ volume="SADL_Gusset_Plate" />
+  <posXYZ volume="SADL_Gusset_Plate" X_Y_Z="0;0;SADL_Gusspz2" />
+  <posXYZ volume="SADL_Gusset_Plate" X_Y_Z="0;0;-SADL_Gusspz2" />
+  <posXYZ volume="SADL_ConnGussetBBeam_HPlate" X_Y_Z="SADL_CGBBHPx;SADL_CGBBHPy;0" />
+  <posXYZ volume="SADL_ConnGussetBBeam_VPlate" X_Y_Z="SADL_CGBBVPx;SADL_CGBBVPy;0" />
+</composition>
+
+<!--  Stiffener -->
+
+<box name="SADL_Stiffener_Plate" material="Iron1" X_Y_Z="SADL_StEPwid;SADL_StEPwid;SADL_StEPthi"/>
+<box name="SADL_Stiffener_Tube_Plate"  material="Iron1" X_Y_Z="SADL_StTUext;SADL_StTUthi; SADL_StifLen0"/>
+<box name="SADL_Stiffener_Tube_Flange" material="Iron1" X_Y_Z="SADL_StTUthi;SADL_StTFlhei;SADL_StifLen0"/>
+
+<composition name="SADL_Stiffener">
+  <posXYZ volume="SADL_Stiffener_Tube_Flange" X_Y_Z=" SADL_StTFlpos;0;0" />
+  <posXYZ volume="SADL_Stiffener_Tube_Flange" X_Y_Z="-SADL_StTFlpos;0;0" />
+  <posXYZ volume="SADL_Stiffener_Tube_Plate"  X_Y_Z="0; SADL_StTFlpos;0;0" />
+  <posXYZ volume="SADL_Stiffener_Tube_Plate"  X_Y_Z="0;-SADL_StTFlpos;0;0" />
+  <posXYZ volume="SADL_Stiffener_Plate" X_Y_Z="0;0; SADL_StEPzpos" />
+  <posXYZ volume="SADL_Stiffener_Plate" X_Y_Z="0;0;-SADL_StEPzpos" />
+</composition>
+
+<composition name="SADL_Saddle_Doublet">
+  <posXYZ volume="SADL_Saddle_UnitB" X_Y_Z="0;0;SADL_SaddZ1"  />
+  <posXYZ volume="SADL_Saddle_UnitA" X_Y_Z="0;0;SADL_SaddZ2"  />
+  <posXYZ volume="SADL_Stiffener" X_Y_Z="SADL_Stxpos;SADL_Stypos;SADL_Stzpos" rot="Zero;Zero;SADL_Stzrot" />
+</composition>
+
+<composition name="SADL_Extended_Saddle_Doublet">
+  <posXYZ volume="SADL_Extended_BoxBeam" X_Y_Z="SADL_BxBxpos;SADL_BxBypos;SADL_EBxBzpos"  />
+  <posXYZ volume="SADL_Saddle_UnitB" X_Y_Z="0;0;SADL_ESaddZ1"  />
+  <posXYZ volume="SADL_Saddle_UnitA" X_Y_Z="0;0;SADL_ESaddZ2"  />
+  <posXYZ volume="SADL_Stiffener" X_Y_Z="SADL_Stxpos;SADL_Stypos;SADL_EStzpos" rot="Zero;Zero;SADL_Stzrot" />
+</composition>
+
+<composition name="SADL_Saddle_Quadruplet">
+  <posXYZ volume="SADL_Saddle_Doublet" />
+  <posXYZ volume="SADL_Saddle_Doublet" rot="0;180;0" X_Y_Z="0.;0.;2*SADL_Stzpos"/>
+</composition>
+
+<composition name="SADL_Extended_Saddle_Quadruplet">
+  <posXYZ volume="SADL_Extended_Saddle_Doublet" />
+  <posXYZ volume="SADL_Extended_Saddle_Doublet" rot="0;180;0" X_Y_Z="0.;0.;2*SADL_EStzpos" />
+</composition>
+
+<!--  Barrel Blocking Jacks -->
+
+<box name="SADL_Barrel_Blocking_Jack_Plate" material="Iron1" X_Y_Z="SADL_BBJPlen;SADL_BBJPwid;SADL_BBJPthi"/>
+
+<tubs name="SADL_Barrel_Blocking_Jack_BigCylinder" material="Iron2" Rio_Z="0;SADL_BBJBCrad;SADL_BBJBCthi" />
+<tubs name="SADL_Barrel_Blocking_Jack_SmallCylinder" material="Iron2" Rio_Z="0;SADL_BBJSCrad;SADL_BBJSCthi" />
+
+<composition name="SADL_Barrel_Blocking_Jack_Unit">
+  <posXYZ volume="SADL_Barrel_Blocking_Jack_SmallCylinder" X_Y_Z="0;SADL_BBJSCyp;0" rot="PiDegOver2;Zero;Zero"/>
+  <posXYZ volume="SADL_Barrel_Blocking_Jack_BigCylinder" X_Y_Z="0;SADL_BBJBCyp;0"   rot="PiDegOver2;Zero;Zero"/>
+  <posXYZ volume="SADL_Barrel_Blocking_Jack_Plate" X_Y_Z="0;SADL_BBJPyp;0"          rot="PiDegOver2;Zero;Zero"/>
+</composition>
+
+<composition name="SADL_Barrel_Blocking_Jacks">
+  <foreach  index="I"  begin="0"  loops="4" >
+   <posXYZ volume="SADL_Barrel_Blocking_Jack_Unit" X_Y_Z=" SADL_BlJaxpos;SADL_BlJaypos; SADL_BlJazpos[I]"/>
+   <posXYZ volume="SADL_Barrel_Blocking_Jack_Unit" X_Y_Z="-SADL_BlJaxpos;SADL_BlJaypos; SADL_BlJazpos[I]"/>
+   <posXYZ volume="SADL_Barrel_Blocking_Jack_Unit" X_Y_Z=" SADL_BlJaxpos;SADL_BlJaypos;-SADL_BlJazpos[I]"/>
+   <posXYZ volume="SADL_Barrel_Blocking_Jack_Unit" X_Y_Z="-SADL_BlJaxpos;SADL_BlJaypos;-SADL_BlJazpos[I]"/>
+  </foreach>
+</composition>
+
+<composition name="SADL_CalorimeterSaddle1">
+  <posXYZ volume="SADL_BoxBeam" X_Y_Z=" SADL_BxBxpos;SADL_BxBypos;0" />
+  <posXYZ volume="SADL_BoxBeam" X_Y_Z="-SADL_BxBxpos;SADL_BxBypos;0" />
+  <posXYZ volume="SADL_Saddle_Quadruplet" />
+  <posXYZ volume="SADL_Saddle_Quadruplet" rot="0;180.;0" />
+  <posXYZ volume="SADL_Extended_Saddle_Quadruplet" />
+  <posXYZ volume="SADL_Extended_Saddle_Quadruplet" rot="0;180.;0" />
+  <posXYZ volume="SADL_Barrel_Blocking_Jacks" />
+</composition>
+
+<composition name="SADL_CalorimeterSaddle">
+  <posXYZ volume="SADL_CalorimeterSaddle1" X_Y_Z=" 0.;-50.;0" />
+</composition>
+
+</section>
+
+
+<section name       = "TGC Big Wheel"
+         version    = "7.0"
+         date       = "14 04 2008, redone 20 08 2013"
+         author     = "laurent+andrea, jochen - initial implementation removed "
+         top_volume = "useless">
+
+<!-- general parameters for surrounding boxes -->
+
+<var name="TGC_BigWheel_SurBoxWallThick"    value="    12.  " />
+<var name="TGC_BigWheel_SurBoxSideLength"   value="   250.  " />
+<var name="TGC_BigWheel_SurBoxDistance"     value="    50.  " />
+<var name="TGC_BigWheel_SurBoxSpcLength"    value="   200.  " />
+<var name="TGC_BigWheel_SurBoxSpcHeight"    value="    80.  " />
+<var name="TGC_BigWheel_SurBoxSpcWall"      value="     5.  " />
+
+<!--     name       =  TGC2 Big Wheel                section name       = "Supports"  -->
+<!--  **************************************************************
+      **************************************************************
+      ***                                                       ****
+      ***                      TGC Big Wheel                    ****
+      ***                                                       ****
+      **************************************************************
+      **************************************************************  -->
+<var name="TBWH_BigWheel_ZPosL"             value=" 14730.  "/>
+
+<var name="TBWH_BigWheel_RadDist00"         value="  2445.  "/>
+<var name="TBWH_BigWheel_RadDist01"         value="  3700.  - TBWH_BigWheel_RadDist00"/>
+<var name="TBWH_BigWheel_RadDist02"         value="  4562.  - TBWH_BigWheel_RadDist00"/>
+<var name="TBWH_BigWheel_RadDist03"         value="  5946.  - TBWH_BigWheel_RadDist00"/>
+<var name="TBWH_BigWheel_RadDist04"         value="  6974.  - TBWH_BigWheel_RadDist00"/>
+<var name="TBWH_BigWheel_RadDist05"         value="  8134.  - TBWH_BigWheel_RadDist00"/>
+<var name="TBWH_BigWheel_RadDist06"         value="  9161.  - TBWH_BigWheel_RadDist00"/>
+<var name="TBWH_BigWheel_RadDist07"         value=" 10527.  - TBWH_BigWheel_RadDist00"/>
+<var name="TBWH_BigWheel_RadDist08"         value=" 11348.  - TBWH_BigWheel_RadDist00"/>
+<var name="TBWH_BigWheel_RadDist09"         value=" 12230.  "/>
+<var name="TBWH_BigWheel_RadDistOutPlate"   value="  4195.  "/>
+<var name="TBWH_BigWheel_RadDistPlate02"    value="  4140.  - TBWH_BigWheel_RadDist00  +  170. + 30. "/> <!-- two different values on same blueprint -->
+<var name="TBWH_BigWheel_PhiDistRPlate1"    value="   388.  "/>
+
+<var name="TBWH_BigWheel_ZThickPhiPlate"    value="    30.  "/>
+<var name="TBWH_BigWheel_WallThickPhiPlate" value="    16.  "/>
+<var name="TBWH_BigWheel_RThickPhiPlate1"   value="   200.  "/>
+<var name="TBWH_BigWheel_RThickPhiPlate2"   value="   150.  "/>
+<var name="TBWH_BigWheel_RThickPhiPlate3"   value="   100.  "/>
+<var name="TBWH_BigWheel_ZThickRPlate"      value="   150.  "/>
+<var name="TBWH_BigWheel_PhiThickRPlate"    value="    50.  "/>
+<var name="TBWH_BigWheel_WallThickRPlate"   value="     5.  "/>
+
+<var name="TBWH_BigWheel_PhiPlaDelEvenOdd"  value="TBWH_BigWheel_RThickPhiPlate2 + TBWH_BigWheel_PhiThickRPlate/2."/>
+
+<var name="TBWH_BigWheel_PhiStepAngle1"     value="     7.5 * GENV_PiS180 "/>
+<var name="TBWH_BigWheel_PhiStepAngle2"     value="    15.  * GENV_PiS180  "/>
+
+<var name="TBWH_BigWheel_PhiStep1toP1"      value="   -88.  "/> <!-- estimate -->
+<var name="TBWH_BigWheel_PhiStepP1toP2"     value="   372.  "/> <!-- estimate -->
+
+<var name="TBWH_BigWheel_PhiStep2toP1"      value="   459.  "/>
+<var name="TBWH_BigWheel_PhiStepP2toP2"     value="   780. + TBWH_BigWheel_PhiThickRPlate"/> <!-- estimate -->
+
+<var name="TBWH_BigWheel_TubeInnerR"        value="  2335.  "/>
+<var name="TBWH_BigWheel_TubeOuterR"        value="  TBWH_BigWheel_TubeInnerR + 405. "/>
+
+<!-- lowest phi plate - plate 1 -->
+<gvxysx name="TBWH_PhiPlate1" material="Aluminium" dZ="TBWH_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y=" (TBWH_BigWheel_RadDist00+TBWH_BigWheel_RadDist01+TBWH_BigWheel_RThickPhiPlate1)*sin(TBWH_BigWheel_PhiStepAngle2); TBWH_BigWheel_RadDist01+TBWH_BigWheel_RThickPhiPlate1"/>
+  <gvxy_point X_Y=" (TBWH_BigWheel_RadDist00+TBWH_BigWheel_RadDist01)*sin(TBWH_BigWheel_PhiStepAngle2); TBWH_BigWheel_RadDist01"/>
+</gvxysx>
+
+<!-- first phi plate with kink - plate 2 -->
+<var name="TBWH_PhiPlate2_XPos1"  value="tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RadDist02-TBWH_BigWheel_PhiStep1toP1/cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/cos(TBWH_BigWheel_PhiStepAngle2)/2." />
+<var name="TBWH_PhiPlate2_XPos3"  value="tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RadDist02-TBWH_BigWheel_PhiStep1toP1/cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/cos(TBWH_BigWheel_PhiStepAngle2)/2.+tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RThickPhiPlate2" />
+<var name="TBWH_PhiPlate2_XPos2"  value="TBWH_PhiPlate2_XPos1+(TBWH_BigWheel_RadDist02*tan(TBWH_BigWheel_PhiStepAngle2)-TBWH_PhiPlate2_XPos1)*cos(TBWH_BigWheel_PhiStepAngle2)*cos(TBWH_BigWheel_PhiStepAngle2)" />
+<var name="TBWH_PhiPlate2_YPos2"  value="TBWH_BigWheel_RadDist02-(TBWH_BigWheel_RadDist02*tan(TBWH_BigWheel_PhiStepAngle2)-TBWH_PhiPlate2_XPos1)*cos(TBWH_BigWheel_PhiStepAngle2)*sin(TBWH_BigWheel_PhiStepAngle2)" />
+
+<gvxysx name="TBWH_PhiPlate2_Even" material="Aluminium" dZ="TBWH_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TBWH_PhiPlate2_XPos3; TBWH_BigWheel_RadDist02+TBWH_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate2_XPos2+TBWH_BigWheel_RThickPhiPlate2*sin(TBWH_BigWheel_PhiStepAngle2)+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2); TBWH_PhiPlate2_YPos2+TBWH_BigWheel_RThickPhiPlate2*cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate2_XPos2+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2); TBWH_PhiPlate2_YPos2-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate2_XPos1; TBWH_BigWheel_RadDist02"/>
+</gvxysx>
+
+<gvxysx name="TBWH_PhiPlate2_Odd" material="Aluminium" dZ="TBWH_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TBWH_PhiPlate2_XPos3-tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_BigWheel_RadDist02+TBWH_BigWheel_RThickPhiPlate2-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate2_XPos2+TBWH_BigWheel_RThickPhiPlate2*sin(TBWH_BigWheel_PhiStepAngle2)+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2)-tan(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_PhiPlate2_YPos2+TBWH_BigWheel_RThickPhiPlate2*cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate2_XPos2+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2)-tan(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_PhiPlate2_YPos2-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate2_XPos1-tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_BigWheel_RadDist02-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+</gvxysx>
+
+<!-- second phi plate with kink - plate 3 -->
+<var name="TBWH_PhiPlate3_XPos1"  value="tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RadDist03-TBWH_BigWheel_PhiStep1toP1/cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/cos(TBWH_BigWheel_PhiStepAngle2)/2." />
+<var name="TBWH_PhiPlate3_XPos3"  value="tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RadDist03-TBWH_BigWheel_PhiStep1toP1/cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/cos(TBWH_BigWheel_PhiStepAngle2)/2.+tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RThickPhiPlate3" />
+<var name="TBWH_PhiPlate3_XPos2"  value="TBWH_PhiPlate3_XPos1+(TBWH_BigWheel_RadDist03*tan(TBWH_BigWheel_PhiStepAngle2)-TBWH_PhiPlate3_XPos1)*cos(TBWH_BigWheel_PhiStepAngle2)*cos(TBWH_BigWheel_PhiStepAngle2)-cos(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiThickRPlate" />
+<var name="TBWH_PhiPlate3_YPos2"  value="TBWH_BigWheel_RadDist03-(TBWH_BigWheel_RadDist03*tan(TBWH_BigWheel_PhiStepAngle2)-TBWH_PhiPlate3_XPos1)*cos(TBWH_BigWheel_PhiStepAngle2)*sin(TBWH_BigWheel_PhiStepAngle2)+sin(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiThickRPlate" />
+
+<gvxysx name="TBWH_PhiPlate3" material="Aluminium" dZ="TBWH_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TBWH_PhiPlate3_XPos3; TBWH_BigWheel_RadDist03+TBWH_BigWheel_RThickPhiPlate3"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate3_XPos2+TBWH_BigWheel_RThickPhiPlate3*sin(TBWH_BigWheel_PhiStepAngle2)+(TBWH_BigWheel_PhiStepP2toP2-TBWH_BigWheel_PhiStep2toP1)*cos(TBWH_BigWheel_PhiStepAngle2); TBWH_PhiPlate3_YPos2+TBWH_BigWheel_RThickPhiPlate3*cos(TBWH_BigWheel_PhiStepAngle2)-(TBWH_BigWheel_PhiStepP2toP2-TBWH_BigWheel_PhiStep2toP1)*sin(TBWH_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate3_XPos2+(TBWH_BigWheel_PhiStepP2toP2-TBWH_BigWheel_PhiStep2toP1)*cos(TBWH_BigWheel_PhiStepAngle2); TBWH_PhiPlate3_YPos2-(TBWH_BigWheel_PhiStepP2toP2-TBWH_BigWheel_PhiStep2toP1)*sin(TBWH_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate3_XPos1; TBWH_BigWheel_RadDist03"/>
+</gvxysx>
+
+<!-- third phi plate with kink - plate 4 -->
+<var name="TBWH_PhiPlate4_XPos1"  value="tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RadDist04-TBWH_BigWheel_PhiStep1toP1/cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/cos(TBWH_BigWheel_PhiStepAngle2)/2." />
+<var name="TBWH_PhiPlate4_XPos3"  value="tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RadDist04-TBWH_BigWheel_PhiStep1toP1/cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/cos(TBWH_BigWheel_PhiStepAngle2)/2.+tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RThickPhiPlate2" />
+<var name="TBWH_PhiPlate4_XPos2"  value="TBWH_PhiPlate4_XPos1+(TBWH_BigWheel_RadDist04*tan(TBWH_BigWheel_PhiStepAngle2)-TBWH_PhiPlate4_XPos1)*cos(TBWH_BigWheel_PhiStepAngle2)*cos(TBWH_BigWheel_PhiStepAngle2)" />
+<var name="TBWH_PhiPlate4_YPos2"  value="TBWH_BigWheel_RadDist04-(TBWH_BigWheel_RadDist04*tan(TBWH_BigWheel_PhiStepAngle2)-TBWH_PhiPlate4_XPos1)*cos(TBWH_BigWheel_PhiStepAngle2)*sin(TBWH_BigWheel_PhiStepAngle2)" />
+
+<gvxysx name="TBWH_PhiPlate4_Even" material="Aluminium" dZ="TBWH_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TBWH_PhiPlate4_XPos3; TBWH_BigWheel_RadDist04+TBWH_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate4_XPos2+TBWH_BigWheel_RThickPhiPlate2*sin(TBWH_BigWheel_PhiStepAngle2)+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2); TBWH_PhiPlate4_YPos2+TBWH_BigWheel_RThickPhiPlate2*cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate4_XPos2+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2); TBWH_PhiPlate4_YPos2-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate4_XPos1; TBWH_BigWheel_RadDist04"/>
+</gvxysx>
+
+<gvxysx name="TBWH_PhiPlate4_Odd" material="Aluminium" dZ="TBWH_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TBWH_PhiPlate4_XPos3-tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_BigWheel_RadDist04+TBWH_BigWheel_RThickPhiPlate2-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate4_XPos2+TBWH_BigWheel_RThickPhiPlate2*sin(TBWH_BigWheel_PhiStepAngle2)+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2)-tan(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_PhiPlate4_YPos2+TBWH_BigWheel_RThickPhiPlate2*cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate4_XPos2+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2)-tan(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_PhiPlate4_YPos2-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate4_XPos1-tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_BigWheel_RadDist04-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+</gvxysx>
+
+<!-- forth phi plate with kink - plate 5 -->
+<var name="TBWH_PhiPlate5_XPos1"  value="tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RadDist05-TBWH_BigWheel_PhiStep1toP1/cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/cos(TBWH_BigWheel_PhiStepAngle2)/2." />
+<var name="TBWH_PhiPlate5_XPos3"  value="tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RadDist05-TBWH_BigWheel_PhiStep1toP1/cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/cos(TBWH_BigWheel_PhiStepAngle2)/2.+tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RThickPhiPlate3" />
+<var name="TBWH_PhiPlate5_XPos2"  value="TBWH_PhiPlate5_XPos1+(TBWH_BigWheel_RadDist05*tan(TBWH_BigWheel_PhiStepAngle2)-TBWH_PhiPlate5_XPos1)*cos(TBWH_BigWheel_PhiStepAngle2)*cos(TBWH_BigWheel_PhiStepAngle2)-cos(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiThickRPlate" />
+<var name="TBWH_PhiPlate5_YPos2"  value="TBWH_BigWheel_RadDist05-(TBWH_BigWheel_RadDist05*tan(TBWH_BigWheel_PhiStepAngle2)-TBWH_PhiPlate5_XPos1)*cos(TBWH_BigWheel_PhiStepAngle2)*sin(TBWH_BigWheel_PhiStepAngle2)+sin(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiThickRPlate" />
+
+<gvxysx name="TBWH_PhiPlate5" material="Aluminium" dZ="TBWH_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TBWH_PhiPlate5_XPos3; TBWH_BigWheel_RadDist05+TBWH_BigWheel_RThickPhiPlate3"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate5_XPos2+TBWH_BigWheel_RThickPhiPlate3*sin(TBWH_BigWheel_PhiStepAngle2)+(TBWH_BigWheel_PhiStepP2toP2-TBWH_BigWheel_PhiStep2toP1)*cos(TBWH_BigWheel_PhiStepAngle2); TBWH_PhiPlate5_YPos2+TBWH_BigWheel_RThickPhiPlate3*cos(TBWH_BigWheel_PhiStepAngle2)-(TBWH_BigWheel_PhiStepP2toP2-TBWH_BigWheel_PhiStep2toP1)*sin(TBWH_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate5_XPos2+(TBWH_BigWheel_PhiStepP2toP2-TBWH_BigWheel_PhiStep2toP1)*cos(TBWH_BigWheel_PhiStepAngle2); TBWH_PhiPlate5_YPos2-(TBWH_BigWheel_PhiStepP2toP2-TBWH_BigWheel_PhiStep2toP1)*sin(TBWH_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate5_XPos1; TBWH_BigWheel_RadDist05"/>
+</gvxysx>
+
+<!-- fifth phi plate with kink - plate 6 -->
+<var name="TBWH_PhiPlate6_XPos1"  value="tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RadDist06-TBWH_BigWheel_PhiStep1toP1/cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/cos(TBWH_BigWheel_PhiStepAngle2)/2." />
+<var name="TBWH_PhiPlate6_XPos3"  value="tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RadDist06-TBWH_BigWheel_PhiStep1toP1/cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/cos(TBWH_BigWheel_PhiStepAngle2)/2.+tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RThickPhiPlate2" />
+<var name="TBWH_PhiPlate6_XPos2"  value="TBWH_PhiPlate6_XPos1+(TBWH_BigWheel_RadDist06*tan(TBWH_BigWheel_PhiStepAngle2)-TBWH_PhiPlate6_XPos1)*cos(TBWH_BigWheel_PhiStepAngle2)*cos(TBWH_BigWheel_PhiStepAngle2)" />
+<var name="TBWH_PhiPlate6_YPos2"  value="TBWH_BigWheel_RadDist06-(TBWH_BigWheel_RadDist06*tan(TBWH_BigWheel_PhiStepAngle2)-TBWH_PhiPlate6_XPos1)*cos(TBWH_BigWheel_PhiStepAngle2)*sin(TBWH_BigWheel_PhiStepAngle2)" />
+
+<gvxysx name="TBWH_PhiPlate6_Even" material="Aluminium" dZ="TBWH_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TBWH_PhiPlate6_XPos3; TBWH_BigWheel_RadDist06+TBWH_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate6_XPos2+TBWH_BigWheel_RThickPhiPlate2*sin(TBWH_BigWheel_PhiStepAngle2)+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2); TBWH_PhiPlate6_YPos2+TBWH_BigWheel_RThickPhiPlate2*cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate6_XPos2+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2); TBWH_PhiPlate6_YPos2-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate6_XPos1; TBWH_BigWheel_RadDist06"/>
+</gvxysx>
+
+<gvxysx name="TBWH_PhiPlate6_Odd" material="Aluminium" dZ="TBWH_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TBWH_PhiPlate6_XPos3-tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_BigWheel_RadDist06+TBWH_BigWheel_RThickPhiPlate2-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate6_XPos2+TBWH_BigWheel_RThickPhiPlate2*sin(TBWH_BigWheel_PhiStepAngle2)+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2)-tan(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_PhiPlate6_YPos2+TBWH_BigWheel_RThickPhiPlate2*cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate6_XPos2+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2)-tan(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_PhiPlate6_YPos2-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate6_XPos1-tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_BigWheel_RadDist06-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+</gvxysx>
+
+<!-- sixth phi plate with kink - plate 7 -->
+<var name="TBWH_PhiPlate7_XPos1"  value="tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RadDist07-TBWH_BigWheel_PhiStep1toP1/cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/cos(TBWH_BigWheel_PhiStepAngle2)/2." />
+<var name="TBWH_PhiPlate7_XPos3"  value="tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RadDist07-TBWH_BigWheel_PhiStep1toP1/cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/cos(TBWH_BigWheel_PhiStepAngle2)/2.+tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RThickPhiPlate3" />
+<var name="TBWH_PhiPlate7_XPos2"  value="TBWH_PhiPlate7_XPos1+(TBWH_BigWheel_RadDist07*tan(TBWH_BigWheel_PhiStepAngle2)-TBWH_PhiPlate7_XPos1)*cos(TBWH_BigWheel_PhiStepAngle2)*cos(TBWH_BigWheel_PhiStepAngle2)-cos(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiThickRPlate" />
+<var name="TBWH_PhiPlate7_YPos2"  value="TBWH_BigWheel_RadDist07-(TBWH_BigWheel_RadDist07*tan(TBWH_BigWheel_PhiStepAngle2)-TBWH_PhiPlate7_XPos1)*cos(TBWH_BigWheel_PhiStepAngle2)*sin(TBWH_BigWheel_PhiStepAngle2)+sin(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiThickRPlate" />
+
+<gvxysx name="TBWH_PhiPlate7" material="Aluminium" dZ="TBWH_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TBWH_PhiPlate7_XPos3; TBWH_BigWheel_RadDist07+TBWH_BigWheel_RThickPhiPlate3"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate7_XPos2+TBWH_BigWheel_RThickPhiPlate3*sin(TBWH_BigWheel_PhiStepAngle2)+(TBWH_BigWheel_PhiStepP2toP2-TBWH_BigWheel_PhiStep2toP1)*cos(TBWH_BigWheel_PhiStepAngle2); TBWH_PhiPlate7_YPos2+TBWH_BigWheel_RThickPhiPlate3*cos(TBWH_BigWheel_PhiStepAngle2)-(TBWH_BigWheel_PhiStepP2toP2-TBWH_BigWheel_PhiStep2toP1)*sin(TBWH_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate7_XPos2+(TBWH_BigWheel_PhiStepP2toP2-TBWH_BigWheel_PhiStep2toP1)*cos(TBWH_BigWheel_PhiStepAngle2); TBWH_PhiPlate7_YPos2-(TBWH_BigWheel_PhiStepP2toP2-TBWH_BigWheel_PhiStep2toP1)*sin(TBWH_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate7_XPos1; TBWH_BigWheel_RadDist07"/>
+</gvxysx>
+
+<!-- seventh phi plate with kink - plate 8 -->
+<var name="TBWH_PhiPlate8_XPos1"  value="tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RadDist08-TBWH_BigWheel_PhiStep1toP1/cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/cos(TBWH_BigWheel_PhiStepAngle2)/2." />
+<var name="TBWH_PhiPlate8_XPos3"  value="tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RadDist08-TBWH_BigWheel_PhiStep1toP1/cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/cos(TBWH_BigWheel_PhiStepAngle2)/2.+tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_RThickPhiPlate2" />
+<var name="TBWH_PhiPlate8_XPos2"  value="TBWH_PhiPlate8_XPos1+(TBWH_BigWheel_RadDist08*tan(TBWH_BigWheel_PhiStepAngle2)-TBWH_PhiPlate8_XPos1)*cos(TBWH_BigWheel_PhiStepAngle2)*cos(TBWH_BigWheel_PhiStepAngle2)" />
+<var name="TBWH_PhiPlate8_YPos2"  value="TBWH_BigWheel_RadDist08-(TBWH_BigWheel_RadDist08*tan(TBWH_BigWheel_PhiStepAngle2)-TBWH_PhiPlate8_XPos1)*cos(TBWH_BigWheel_PhiStepAngle2)*sin(TBWH_BigWheel_PhiStepAngle2)" />
+
+<gvxysx name="TBWH_PhiPlate8_Even" material="Aluminium" dZ="TBWH_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TBWH_PhiPlate8_XPos3; TBWH_BigWheel_RadDist08+TBWH_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate8_XPos2+TBWH_BigWheel_RThickPhiPlate2*sin(TBWH_BigWheel_PhiStepAngle2)+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2); TBWH_PhiPlate8_YPos2+TBWH_BigWheel_RThickPhiPlate2*cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate8_XPos2+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2); TBWH_PhiPlate8_YPos2-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate8_XPos1; TBWH_BigWheel_RadDist08"/>
+</gvxysx>
+
+<gvxysx name="TBWH_PhiPlate8_Odd" material="Aluminium" dZ="TBWH_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TBWH_PhiPlate8_XPos3-tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_BigWheel_RadDist08+TBWH_BigWheel_RThickPhiPlate2-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate8_XPos2+TBWH_BigWheel_RThickPhiPlate2*sin(TBWH_BigWheel_PhiStepAngle2)+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2)-tan(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_PhiPlate8_YPos2+TBWH_BigWheel_RThickPhiPlate2*cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate8_XPos2+TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2)-tan(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_PhiPlate8_YPos2-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TBWH_PhiPlate8_XPos1-tan(TBWH_BigWheel_PhiStepAngle1)*TBWH_BigWheel_PhiPlaDelEvenOdd; TBWH_BigWheel_RadDist08-TBWH_BigWheel_PhiPlaDelEvenOdd"/>
+</gvxysx>
+
+<!-- first R plate - center -->
+<box name="TBWH_RPlate1_base" material="Aluminium"   X_Y_Z=" TBWH_BigWheel_PhiThickRPlate; TBWH_BigWheel_RadDist09-TBWH_BigWheel_RadDistPlate02-TBWH_BigWheel_RadDist00; TBWH_BigWheel_ZThickRPlate" />
+<box name="TBWH_RPlate1_sub"  material="Aluminium"   X_Y_Z=" TBWH_BigWheel_PhiThickRPlate; TBWH_BigWheel_RadDist09-TBWH_BigWheel_RadDistPlate02-TBWH_BigWheel_RadDist00+TBWH_BigWheel_WallThickRPlate; TBWH_BigWheel_ZThickRPlate-2.*TBWH_BigWheel_WallThickRPlate" />
+
+<subtraction name="TBWH_RPlate1">
+  <posXYZ volume="TBWH_RPlate1_base" X_Y_Z=" TBWH_BigWheel_PhiDistRPlate1/2.+TBWH_BigWheel_PhiThickRPlate/2.; (TBWH_BigWheel_RadDist09+TBWH_BigWheel_RadDistPlate02-TBWH_BigWheel_RadDist00)/2.; 0." />
+  <posXYZ volume="TBWH_RPlate1_sub"  X_Y_Z=" TBWH_BigWheel_PhiDistRPlate1/2.+TBWH_BigWheel_PhiThickRPlate/2.+TBWH_BigWheel_WallThickRPlate; (TBWH_BigWheel_RadDist09+TBWH_BigWheel_RadDistPlate02-TBWH_BigWheel_RadDist00)/2.; 0." />
+</subtraction>
+
+<!-- second R plate - 7.5 degrees -->
+<box name="TBWH_RPlate2_base" material="Aluminium"   X_Y_Z=" TBWH_BigWheel_PhiThickRPlate; (TBWH_BigWheel_RadDist09-TBWH_BigWheel_RadDistPlate02-TBWH_BigWheel_RadDist00)/cos(TBWH_BigWheel_PhiStepAngle1); TBWH_BigWheel_ZThickRPlate" />
+<box name="TBWH_RPlate2_sub"  material="Aluminium"   X_Y_Z=" TBWH_BigWheel_PhiThickRPlate; (TBWH_BigWheel_RadDist09-TBWH_BigWheel_RadDistPlate02-TBWH_BigWheel_RadDist00+TBWH_BigWheel_WallThickRPlate)/cos(TBWH_BigWheel_PhiStepAngle1); TBWH_BigWheel_ZThickRPlate-2.*TBWH_BigWheel_WallThickRPlate" />
+
+<subtraction name="TBWH_RPlate2">
+  <posXYZ volume="TBWH_RPlate2_base" X_Y_Z=" TBWH_PhiPlate2_XPos1+(TBWH_BigWheel_RadDist09+TBWH_BigWheel_RadDistPlate02-TBWH_BigWheel_RadDist00-2.*TBWH_BigWheel_RadDist02)*tan(TBWH_BigWheel_PhiStepAngle1)/2.; (TBWH_BigWheel_RadDist09+TBWH_BigWheel_RadDistPlate02-TBWH_BigWheel_RadDist00)/2.; 0." rot=" 0.;   0.; -TBWH_BigWheel_PhiStepAngle1/GENV_PiS180" />
+  <posXYZ volume="TBWH_RPlate2_sub"  X_Y_Z=" TBWH_PhiPlate2_XPos1+(TBWH_BigWheel_RadDist09+TBWH_BigWheel_RadDistPlate02-TBWH_BigWheel_RadDist00-2.*TBWH_BigWheel_RadDist02)*tan(TBWH_BigWheel_PhiStepAngle1)/2.-TBWH_BigWheel_WallThickRPlate; (TBWH_BigWheel_RadDist09+TBWH_BigWheel_RadDistPlate02-TBWH_BigWheel_RadDist00)/2.; 0." rot=" 0.;   0.; -TBWH_BigWheel_PhiStepAngle1/GENV_PiS180" />
+</subtraction>
+
+<!-- third R plate - 7.5 degrees TBWH_BigWheel_PhiThickRPlate-->
+<var name="TBWH_RPlate3_length"  value="(TBWH_BigWheel_RadDist09 - TBWH_BigWheel_RadDist00 - (TBWH_PhiPlate2_YPos2-TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)) - (TBWH_BigWheel_PhiStep2toP1 + TBWH_BigWheel_PhiThickRPlate) * sin(TBWH_BigWheel_PhiStepAngle2) ) / cos(TBWH_BigWheel_PhiStepAngle1)" />
+
+<box name="TBWH_RPlate3_base" material="Aluminium"   X_Y_Z=" TBWH_BigWheel_PhiThickRPlate; TBWH_RPlate3_length; TBWH_BigWheel_ZThickRPlate" />
+<box name="TBWH_RPlate3_sub1"  material="Aluminium"   X_Y_Z=" TBWH_BigWheel_PhiThickRPlate; TBWH_RPlate3_length + TBWH_BigWheel_WallThickRPlate/cos(TBWH_BigWheel_PhiStepAngle1); TBWH_BigWheel_ZThickRPlate-2.*TBWH_BigWheel_WallThickRPlate" />
+<box name="TBWH_RPlate3_sub2"  material="Aluminium"   X_Y_Z=" TBWH_BigWheel_PhiThickRPlate; TBWH_RPlate3_length; TBWH_BigWheel_ZThickRPlate+2.*TBWH_BigWheel_WallThickRPlate" />
+
+<subtraction name="TBWH_RPlate3_tmp">
+  <posXYZ volume="TBWH_RPlate3_base" X_Y_Z=" TBWH_RPlate3_length/2.*sin(TBWH_BigWheel_PhiStepAngle1); TBWH_RPlate3_length/2.*cos(TBWH_BigWheel_PhiStepAngle1); 0." rot=" 0.;   0.; -TBWH_BigWheel_PhiStepAngle1/GENV_PiS180" />
+  <posXYZ volume="TBWH_RPlate3_sub1"  X_Y_Z=" TBWH_RPlate3_length/2.*sin(TBWH_BigWheel_PhiStepAngle1)-TBWH_BigWheel_WallThickRPlate; TBWH_RPlate3_length/2.*cos(TBWH_BigWheel_PhiStepAngle1); 0." rot=" 0.; 0.; -TBWH_BigWheel_PhiStepAngle1/GENV_PiS180" />
+  <posXYZ volume="TBWH_RPlate3_sub2" X_Y_Z="TBWH_RPlate3_length/2.*sin(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/2*(cos(TBWH_BigWheel_PhiStepAngle1)-cos(TBWH_BigWheel_PhiStepAngle2));TBWH_RPlate3_length/2.*cos(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_PhiThickRPlate/2*(sin(TBWH_BigWheel_PhiStepAngle2)-sin(TBWH_BigWheel_PhiStepAngle1)); 0." rot=" 0.; 0.; -TBWH_BigWheel_PhiStepAngle2/GENV_PiS180" />
+</subtraction>
+
+<var name="TBWH_RPlate3_PosX" value="TBWH_PhiPlate2_XPos2+(TBWH_BigWheel_PhiStepP2toP2-TBWH_BigWheel_PhiStep2toP1)*cos(TBWH_BigWheel_PhiStepAngle2)+TBWH_BigWheel_PhiThickRPlate*(0.5*cos(TBWH_BigWheel_PhiStepAngle1)-cos(TBWH_BigWheel_PhiStepAngle2))-cos(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiThickRPlate" />
+
+<var name="TBWH_RPlate3_PosY" value="TBWH_PhiPlate2_YPos2+(TBWH_BigWheel_PhiStep2toP1-TBWH_BigWheel_PhiStepP2toP2)*sin(TBWH_BigWheel_PhiStepAngle2)+TBWH_BigWheel_PhiThickRPlate*(sin(TBWH_BigWheel_PhiStepAngle2)-0.5*sin(TBWH_BigWheel_PhiStepAngle1))+sin(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiThickRPlate" />
+
+<composition name="TBWH_RPlate3" >
+  <posXYZ  volume="TBWH_RPlate3_tmp" X_Y_Z=" TBWH_RPlate3_PosX-GENV_Eps; TBWH_RPlate3_PosY ; 0." />
+</composition>
+
+<!-- first R plate - 15 degrees -->
+<box name="TBWH_RPlate4_base" material="Aluminium"   X_Y_Z=" TBWH_BigWheel_PhiThickRPlate; (TBWH_BigWheel_RadDist09-TBWH_BigWheel_RadDist00)/cos(TBWH_BigWheel_PhiStepAngle2); TBWH_BigWheel_ZThickRPlate" />
+<box name="TBWH_RPlate4_sub"  material="Aluminium"   X_Y_Z=" TBWH_BigWheel_PhiThickRPlate; (TBWH_BigWheel_RadDist09-TBWH_BigWheel_RadDist00+TBWH_BigWheel_WallThickRPlate)/cos(TBWH_BigWheel_PhiStepAngle2); TBWH_BigWheel_ZThickRPlate-2.*TBWH_BigWheel_WallThickRPlate" />
+
+<subtraction name="TBWH_RPlate4">
+  <posXYZ volume="TBWH_RPlate4_base" X_Y_Z=" (TBWH_BigWheel_RadDist09-TBWH_BigWheel_RadDist00)*tan(TBWH_BigWheel_PhiStepAngle2)/2.+(TBWH_BigWheel_PhiStepP2toP2-TBWH_BigWheel_PhiStep2toP1-1.5*TBWH_BigWheel_PhiThickRPlate)/cos(TBWH_BigWheel_PhiStepAngle2); (TBWH_BigWheel_RadDist09-TBWH_BigWheel_RadDist00)/2.; 0." rot=" 0.;   0.; -TBWH_BigWheel_PhiStepAngle2/GENV_PiS180" />
+  <posXYZ volume="TBWH_RPlate4_sub"  X_Y_Z=" (TBWH_BigWheel_RadDist09-TBWH_BigWheel_RadDist00)*tan(TBWH_BigWheel_PhiStepAngle2)/2.-TBWH_BigWheel_WallThickRPlate+(TBWH_BigWheel_PhiStepP2toP2-TBWH_BigWheel_PhiStep2toP1-1.5*TBWH_BigWheel_PhiThickRPlate)/cos(TBWH_BigWheel_PhiStepAngle2); (TBWH_BigWheel_RadDist09-TBWH_BigWheel_RadDist00)/2.; 0." rot=" 0.;   0.; -TBWH_BigWheel_PhiStepAngle2/GENV_PiS180" />
+</subtraction>
+
+<!-- second R plate - 15 degrees -->
+<box name="TBWH_RPlate5_base" material="Aluminium"   X_Y_Z=" TBWH_BigWheel_PhiThickRPlate; (TBWH_BigWheel_RadDist09-cos(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_RadDistOutPlate)/cos(TBWH_BigWheel_PhiStepAngle2); TBWH_BigWheel_ZThickRPlate" />
+<box name="TBWH_RPlate5_sub"  material="Aluminium"   X_Y_Z=" TBWH_BigWheel_PhiThickRPlate; (TBWH_BigWheel_RadDist09-cos(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_RadDistOutPlate)/cos(TBWH_BigWheel_PhiStepAngle2)+TBWH_BigWheel_WallThickRPlate; TBWH_BigWheel_ZThickRPlate-2.*TBWH_BigWheel_WallThickRPlate" />
+
+<var name="TBWH_RPlate5_PosX" value="sin(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_RadDistOutPlate/2. +TBWH_PhiPlate2_XPos2 +TBWH_BigWheel_PhiStepP2toP2*cos(TBWH_BigWheel_PhiStepAngle2) +tan(TBWH_BigWheel_PhiStepAngle2)*(TBWH_BigWheel_RadDist09/2.-TBWH_PhiPlate2_YPos2+TBWH_BigWheel_PhiStepP2toP2*sin(TBWH_BigWheel_PhiStepAngle2)-TBWH_BigWheel_RadDist00)"/>
+
+<subtraction name="TBWH_RPlate5">
+  <posXYZ volume="TBWH_RPlate5_base" X_Y_Z=" TBWH_RPlate5_PosX - cos(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiThickRPlate/2.; (TBWH_BigWheel_RadDist09+cos(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_RadDistOutPlate)/2. - TBWH_BigWheel_RadDist00 + sin(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiThickRPlate/2.; 0." rot=" 0.;   0.; -TBWH_BigWheel_PhiStepAngle2/GENV_PiS180" />
+  <posXYZ volume="TBWH_RPlate5_sub"  X_Y_Z=" TBWH_RPlate5_PosX - cos(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiThickRPlate/2.+TBWH_BigWheel_WallThickRPlate; (TBWH_BigWheel_RadDist09+cos(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_RadDistOutPlate)/2.- TBWH_BigWheel_RadDist00 + sin(TBWH_BigWheel_PhiStepAngle2)*TBWH_BigWheel_PhiThickRPlate/2.; 0." rot=" 0.;   0.; -TBWH_BigWheel_PhiStepAngle2/GENV_PiS180" />
+</subtraction>
+
+<composition name="TBWH_Support_EvenSector_ASide">
+  <posXYZ volume="TBWH_PhiPlate1"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate2_Even"  X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate3"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate4_Even"  X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate5"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate6_Even"  X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate7"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate8_Even"  X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_RPlate1"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate1"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate2"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate2"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate3"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate3"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate4"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate4"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate5"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate5"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+</composition>
+
+<composition name="TBWH_Support_OddSector_ASide">
+  <posXYZ volume="TBWH_PhiPlate1"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate2_Odd"   X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate3"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate4_Odd"   X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate5"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate6_Odd"   X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate7"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate8_Odd"   X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_RPlate1"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate1"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate2"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate2"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate3"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate3"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate4"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate4"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate5"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate5"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+</composition>
+
+<composition name="TBWH_Support_EvenSector_CSide">
+  <posXYZ volume="TBWH_PhiPlate1"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate2_Even"  X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate3"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate4_Even"  X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate5"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate6_Even"  X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate7"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate8_Even"  X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_RPlate1"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate1"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate2"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate2"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate3"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate3"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate4"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate4"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate5"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate5"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+</composition>
+
+<composition name="TBWH_Support_OddSector_CSide">
+  <posXYZ volume="TBWH_PhiPlate1"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate2_Odd"   X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate3"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate4_Odd"   X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate5"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate6_Odd"   X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate7"       X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_PhiPlate8_Odd"   X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TBWH_RPlate1"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate1"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate2"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate2"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate3"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate3"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate4"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate4"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TBWH_RPlate5"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00; -TBWH_BigWheel_ZThickPhiPlate-TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TBWH_RPlate5"         X_Y_Z=" 0.; TBWH_BigWheel_RadDist00;  TBWH_BigWheel_ZThickPhiPlate+TBWH_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+</composition>
+
+<!-- tube and boxes are rather rouhg approximated here - should be okay though - Cavern Background only -->
+
+<tubs name="TBWH_CentralTube" material="Aluminium" Rio_Z="TBWH_BigWheel_TubeInnerR; TBWH_BigWheel_TubeOuterR; TBWH_BigWheel_WallThickPhiPlate" nbPhi="20" />
+
+<box name="TBWH_SurBox_base" material="Aluminium" X_Y_Z=" 2.*TBWH_BigWheel_RadDist09*tan(TBWH_BigWheel_PhiStepAngle2); TGC_BigWheel_SurBoxSideLength; TGC_BigWheel_SurBoxSideLength" />
+<box name="TBWH_SurBox_inner" material="Aluminium" X_Y_Z=" 2.*TBWH_BigWheel_RadDist09*tan(TBWH_BigWheel_PhiStepAngle2)+2.*GENV_Eps; TGC_BigWheel_SurBoxSideLength-2.*TGC_BigWheel_SurBoxSpcWall; TGC_BigWheel_SurBoxSideLength-2.*TGC_BigWheel_SurBoxSpcWall" />
+
+<subtraction name="TBWH_SurBox_default" >
+  <posXYZ volume="TBWH_SurBox_base"  X_Y_Z=" 0.; TBWH_BigWheel_RadDist09+TGC_BigWheel_SurBoxSideLength; 0." />
+  <posXYZ volume="TBWH_SurBox_inner"  X_Y_Z=" 0.; TBWH_BigWheel_RadDist09+TGC_BigWheel_SurBoxSideLength; 0." />
+</subtraction>
+
+<box name="TBWH_SurBoxSpc_base" material="Aluminium" X_Y_Z=" 2.*TBWH_BigWheel_RadDist09*tan(TBWH_BigWheel_PhiStepAngle2); TGC_BigWheel_SurBoxSpcLength; TGC_BigWheel_SurBoxSpcHeight" />
+<box name="TBWH_SurBoxSpc_inner" material="Aluminium" X_Y_Z="  2.*TBWH_BigWheel_RadDist09*tan(TBWH_BigWheel_PhiStepAngle2)+2.*GENV_Eps; TGC_BigWheel_SurBoxSpcLength-2.*TGC_BigWheel_SurBoxSpcWall; TGC_BigWheel_SurBoxSpcHeight" />
+
+<subtraction name="TBWH_SurBoxSpc" >
+  <posXYZ volume="TBWH_SurBoxSpc_base"   X_Y_Z=" 0.; TBWH_BigWheel_RadDist09+1.5*TGC_BigWheel_SurBoxSideLength+TGC_BigWheel_SurBoxDistance/2.; TGC_BigWheel_SurBoxSideLength/2.+TGC_BigWheel_SurBoxSpcHeight/2." />
+  <posXYZ volume="TBWH_SurBoxSpc_inner"  X_Y_Z=" 0.; TBWH_BigWheel_RadDist09+1.5*TGC_BigWheel_SurBoxSideLength+TGC_BigWheel_SurBoxDistance/2.; TGC_BigWheel_SurBoxSideLength/2.+TGC_BigWheel_SurBoxSpcHeight/2.-TGC_BigWheel_SurBoxSpcWall" />
+</subtraction>
+
+<composition name="TBWH_SurBox_extended" >
+  <posXYZ volume="TBWH_SurBox_default"  X_Y_Z=" 0.; TGC_BigWheel_SurBoxSideLength + TGC_BigWheel_SurBoxDistance; 0." />
+  <posXYZ volume="TBWH_SurBoxSpc"       X_Y_Z=" 0.; 0.;  GENV_Eps" />
+  <posXYZ volume="TBWH_SurBoxSpc"       X_Y_Z=" 0.; 0.; -GENV_Eps" rot=" 0.; 180.; 0."/>
+</composition>
+
+<composition name="TBWH_BigWheel_ASide">
+  <foreach  index="counter"  begin="0"  loops="6" >
+    <posXYZ volume="TBWH_Support_EvenSector_ASide"  X_Y_Z=" 0.; 0.; TBWH_BigWheel_ZPosL" rot="0.; 0.; counter*60." />
+    <posXYZ volume="TBWH_Support_OddSector_ASide"   X_Y_Z=" 0.; 0.; TBWH_BigWheel_ZPosL" rot="0.; 0.; 30.+(counter)*60." />
+  </foreach>
+  <foreach  index="counter"  begin="0"  loops="12" >
+    <posXYZ volume="TBWH_SurBox_default"   X_Y_Z=" 0.; 0.; TBWH_BigWheel_ZPosL" rot="0.; 0.; counter*30." />
+  </foreach>
+  <foreach  index="counter"  begin="0"  loops="7" >
+    <posXYZ volume="TBWH_SurBox_extended"  X_Y_Z=" 0.; 0.; TBWH_BigWheel_ZPosL" rot="0.; 0.; -90.+counter*30." />
+  </foreach>
+  <posXYZ volume="TBWH_CentralTube"   X_Y_Z=" 0.; 0.; TBWH_BigWheel_ZPosL" />
+</composition>
+
+<composition name="TBWH_BigWheel_CSide">
+  <foreach  index="counter"  begin="0"  loops="6" >
+    <posXYZ volume="TBWH_Support_EvenSector_CSide"  X_Y_Z=" 0.; 0.; -TBWH_BigWheel_ZPosL" rot="0.; 0.; counter*60." />
+    <posXYZ volume="TBWH_Support_OddSector_CSide"   X_Y_Z=" 0.; 0.; -TBWH_BigWheel_ZPosL" rot="0.; 0.; 30.+(counter)*60." />
+  </foreach>
+  <foreach  index="counter"  begin="0"  loops="12" >
+    <posXYZ volume="TBWH_SurBox_default"   X_Y_Z=" 0.; 0.; -TBWH_BigWheel_ZPosL" rot="0.; 0.; counter*30." />
+  </foreach>
+  <foreach  index="counter"  begin="0"  loops="7" >
+    <posXYZ volume="TBWH_SurBox_extended"  X_Y_Z=" 0.; 0.; -TBWH_BigWheel_ZPosL" rot="0.; 0.; -90.+counter*30." />
+  </foreach>
+  <posXYZ volume="TBWH_CentralTube"   X_Y_Z=" 0.; 0.; -TBWH_BigWheel_ZPosL" />
+</composition>
+
+<composition name="TBWH_BigWheels">
+  <posXYZ volume="TBWH_BigWheel_ASide" X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="TBWH_BigWheel_CSide" X_Y_Z=" 0.; 0.; 0." />
+</composition>
+
+<!--     name       =  TGC3 Big Wheel                section name       = "Supports"  -->
+<var name="TGC3_BigWheel_ZPosL"             value=" 15150.  "/>
+
+<var name="TGC3_BigWheel_RadDist00"         value="  2445.  "/>
+<var name="TGC3_BigWheel_RadDist01"         value="   970.  "/>
+<var name="TGC3_BigWheel_RadDist02"         value="  2528.  "/>
+<var name="TGC3_BigWheel_RadDist03"         value="  3560.  "/>
+<var name="TGC3_BigWheel_RadDist04"         value="  4767.  "/>
+<var name="TGC3_BigWheel_RadDist05"         value="  5800.  "/>
+<var name="TGC3_BigWheel_RadDist06"         value="  7005.  "/>
+<var name="TGC3_BigWheel_RadDist07"         value="  8037.  "/>
+<var name="TGC3_BigWheel_RadDist08"         value="  9243.  "/>
+<var name="TGC3_BigWheel_RadDist09"         value=" 12230.  "/>
+<var name="TGC3_BigWheel_RadDistOutPlate"   value="  4150.  "/>
+<var name="TGC3_BigWheel_RadDistPlate02"    value="  2353.  "/>
+<var name="TGC3_BigWheel_PhiDistRPlate1"    value="   390.  "/>
+
+<var name="TGC3_BigWheel_ZThickPhiPlate"    value="    30.  "/>
+<var name="TGC3_BigWheel_WallThickPhiPlate" value="    16.  "/>
+<var name="TGC3_BigWheel_RThickPhiPlate1"   value="   200.  "/>
+<var name="TGC3_BigWheel_RThickPhiPlate2"   value="   130.  "/> <!-- estimated -->
+<var name="TGC3_BigWheel_ZThickRPlate"      value="   150.  "/>
+<var name="TGC3_BigWheel_PhiThickRPlate"    value="    50.  "/>
+<var name="TGC3_BigWheel_WallThickRPlate"   value="     5.  "/>
+
+<var name="TGC3_BigWheel_PhiPlaDelEvenOdd"  value="TGC3_BigWheel_RThickPhiPlate2 + TGC3_BigWheel_PhiThickRPlate"/>
+
+<var name="TGC3_BigWheel_PhiStepAngle1"     value="     7.5 * GENV_PiS180 "/>
+<var name="TGC3_BigWheel_PhiStepAngle2"     value="    15.  * GENV_PiS180  "/>
+
+<var name="TGC3_BigWheel_PhiStep1toP1"      value="   -28.  "/> <!-- estimate -->
+<var name="TGC3_BigWheel_PhiStepP1toP2"     value="   456.  "/>
+
+<var name="TGC3_BigWheel_PhiStep2toP1"      value="   468.  "/>
+<var name="TGC3_BigWheel_PhiStepP2toP2"     value="   765. + TGC3_BigWheel_PhiThickRPlate"/> <!-- estimate -->
+
+<var name="TGC3_BigWheel_TubeInnerR"        value="  2335.  "/>
+<var name="TGC3_BigWheel_TubeOuterR"        value="  TGC3_BigWheel_TubeInnerR + 405. "/>
+
+<!-- lowest phi plate - plate 1 -->
+<gvxysx name="TGC3_PhiPlate1" material="Aluminium" dZ="TGC3_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y=" (TGC3_BigWheel_RadDist00+TGC3_BigWheel_RadDist01+TGC3_BigWheel_RThickPhiPlate1)*sin(TGC3_BigWheel_PhiStepAngle2); TGC3_BigWheel_RadDist01+TGC3_BigWheel_RThickPhiPlate1"/>
+  <gvxy_point X_Y=" (TGC3_BigWheel_RadDist00+TGC3_BigWheel_RadDist01)*sin(TGC3_BigWheel_PhiStepAngle2); TGC3_BigWheel_RadDist01"/>
+</gvxysx>
+
+<!-- first phi plate with kink - plate 2 -->
+<var name="TGC3_PhiPlate2_XPos1"  value="tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RadDist02-TGC3_BigWheel_PhiStep1toP1/cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/cos(TGC3_BigWheel_PhiStepAngle2)/2." />
+<var name="TGC3_PhiPlate2_XPos3"  value="tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RadDist02-TGC3_BigWheel_PhiStep1toP1/cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/cos(TGC3_BigWheel_PhiStepAngle2)/2.+tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RThickPhiPlate2" />
+<var name="TGC3_PhiPlate2_XPos2"  value="TGC3_PhiPlate2_XPos1+(TGC3_BigWheel_RadDist02*tan(TGC3_BigWheel_PhiStepAngle2)-TGC3_PhiPlate2_XPos1)*cos(TGC3_BigWheel_PhiStepAngle2)*cos(TGC3_BigWheel_PhiStepAngle2)" />
+<var name="TGC3_PhiPlate2_YPos2"  value="TGC3_BigWheel_RadDist02-(TGC3_BigWheel_RadDist02*tan(TGC3_BigWheel_PhiStepAngle2)-TGC3_PhiPlate2_XPos1)*cos(TGC3_BigWheel_PhiStepAngle2)*sin(TGC3_BigWheel_PhiStepAngle2)" />
+
+<gvxysx name="TGC3_PhiPlate2_Even" material="Aluminium" dZ="TGC3_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC3_PhiPlate2_XPos3; TGC3_BigWheel_RadDist02+TGC3_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate2_XPos2+TGC3_BigWheel_RThickPhiPlate2*sin(TGC3_BigWheel_PhiStepAngle2)+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2); TGC3_PhiPlate2_YPos2+TGC3_BigWheel_RThickPhiPlate2*cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate2_XPos2+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2); TGC3_PhiPlate2_YPos2-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate2_XPos1; TGC3_BigWheel_RadDist02"/>
+</gvxysx>
+
+<gvxysx name="TGC3_PhiPlate2_Odd" material="Aluminium" dZ="TGC3_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC3_PhiPlate2_XPos3-tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_BigWheel_RadDist02+TGC3_BigWheel_RThickPhiPlate2-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate2_XPos2+TGC3_BigWheel_RThickPhiPlate2*sin(TGC3_BigWheel_PhiStepAngle2)+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2)-tan(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_PhiPlate2_YPos2+TGC3_BigWheel_RThickPhiPlate2*cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate2_XPos2+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2)-tan(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_PhiPlate2_YPos2-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate2_XPos1-tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_BigWheel_RadDist02-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+</gvxysx>
+
+<!-- second phi plate with kink - plate 3 -->
+<var name="TGC3_PhiPlate3_XPos1"  value="tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RadDist03-TGC3_BigWheel_PhiStep1toP1/cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/cos(TGC3_BigWheel_PhiStepAngle2)/2." />
+<var name="TGC3_PhiPlate3_XPos3"  value="tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RadDist03-TGC3_BigWheel_PhiStep1toP1/cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/cos(TGC3_BigWheel_PhiStepAngle2)/2.+tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RThickPhiPlate2" />
+<var name="TGC3_PhiPlate3_XPos2"  value="TGC3_PhiPlate3_XPos1+(TGC3_BigWheel_RadDist03*tan(TGC3_BigWheel_PhiStepAngle2)-TGC3_PhiPlate3_XPos1)*cos(TGC3_BigWheel_PhiStepAngle2)*cos(TGC3_BigWheel_PhiStepAngle2)-cos(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiThickRPlate" />
+<var name="TGC3_PhiPlate3_YPos2"  value="TGC3_BigWheel_RadDist03-(TGC3_BigWheel_RadDist03*tan(TGC3_BigWheel_PhiStepAngle2)-TGC3_PhiPlate3_XPos1)*cos(TGC3_BigWheel_PhiStepAngle2)*sin(TGC3_BigWheel_PhiStepAngle2)+sin(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiThickRPlate" />
+
+<gvxysx name="TGC3_PhiPlate3" material="Aluminium" dZ="TGC3_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC3_PhiPlate3_XPos3; TGC3_BigWheel_RadDist03+TGC3_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate3_XPos2+TGC3_BigWheel_RThickPhiPlate2*sin(TGC3_BigWheel_PhiStepAngle2)+(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*cos(TGC3_BigWheel_PhiStepAngle2); TGC3_PhiPlate3_YPos2+TGC3_BigWheel_RThickPhiPlate2*cos(TGC3_BigWheel_PhiStepAngle2)-(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*sin(TGC3_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate3_XPos2+(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*cos(TGC3_BigWheel_PhiStepAngle2); TGC3_PhiPlate3_YPos2-(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*sin(TGC3_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate3_XPos1; TGC3_BigWheel_RadDist03"/>
+</gvxysx>
+
+<!-- third phi plate with kink - plate 4 -->
+<var name="TGC3_PhiPlate4_XPos1"  value="tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RadDist04-TGC3_BigWheel_PhiStep1toP1/cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/cos(TGC3_BigWheel_PhiStepAngle2)/2." />
+<var name="TGC3_PhiPlate4_XPos3"  value="tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RadDist04-TGC3_BigWheel_PhiStep1toP1/cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/cos(TGC3_BigWheel_PhiStepAngle2)/2.+tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RThickPhiPlate2" />
+<var name="TGC3_PhiPlate4_XPos2"  value="TGC3_PhiPlate4_XPos1+(TGC3_BigWheel_RadDist04*tan(TGC3_BigWheel_PhiStepAngle2)-TGC3_PhiPlate4_XPos1)*cos(TGC3_BigWheel_PhiStepAngle2)*cos(TGC3_BigWheel_PhiStepAngle2)" />
+<var name="TGC3_PhiPlate4_YPos2"  value="TGC3_BigWheel_RadDist04-(TGC3_BigWheel_RadDist04*tan(TGC3_BigWheel_PhiStepAngle2)-TGC3_PhiPlate4_XPos1)*cos(TGC3_BigWheel_PhiStepAngle2)*sin(TGC3_BigWheel_PhiStepAngle2)" />
+
+<gvxysx name="TGC3_PhiPlate4_Even" material="Aluminium" dZ="TGC3_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC3_PhiPlate4_XPos3; TGC3_BigWheel_RadDist04+TGC3_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate4_XPos2+TGC3_BigWheel_RThickPhiPlate2*sin(TGC3_BigWheel_PhiStepAngle2)+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2); TGC3_PhiPlate4_YPos2+TGC3_BigWheel_RThickPhiPlate2*cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate4_XPos2+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2); TGC3_PhiPlate4_YPos2-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate4_XPos1; TGC3_BigWheel_RadDist04"/>
+</gvxysx>
+
+<gvxysx name="TGC3_PhiPlate4_Odd" material="Aluminium" dZ="TGC3_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC3_PhiPlate4_XPos3-tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_BigWheel_RadDist04+TGC3_BigWheel_RThickPhiPlate2-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate4_XPos2+TGC3_BigWheel_RThickPhiPlate2*sin(TGC3_BigWheel_PhiStepAngle2)+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2)-tan(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_PhiPlate4_YPos2+TGC3_BigWheel_RThickPhiPlate2*cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate4_XPos2+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2)-tan(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_PhiPlate4_YPos2-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate4_XPos1-tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_BigWheel_RadDist04-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+</gvxysx>
+
+<!-- forth phi plate with kink - plate 5 -->
+<var name="TGC3_PhiPlate5_XPos1"  value="tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RadDist05-TGC3_BigWheel_PhiStep1toP1/cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/cos(TGC3_BigWheel_PhiStepAngle2)/2." />
+<var name="TGC3_PhiPlate5_XPos3"  value="tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RadDist05-TGC3_BigWheel_PhiStep1toP1/cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/cos(TGC3_BigWheel_PhiStepAngle2)/2.+tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RThickPhiPlate2" />
+<var name="TGC3_PhiPlate5_XPos2"  value="TGC3_PhiPlate5_XPos1+(TGC3_BigWheel_RadDist05*tan(TGC3_BigWheel_PhiStepAngle2)-TGC3_PhiPlate5_XPos1)*cos(TGC3_BigWheel_PhiStepAngle2)*cos(TGC3_BigWheel_PhiStepAngle2)-cos(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiThickRPlate" />
+<var name="TGC3_PhiPlate5_YPos2"  value="TGC3_BigWheel_RadDist05-(TGC3_BigWheel_RadDist05*tan(TGC3_BigWheel_PhiStepAngle2)-TGC3_PhiPlate5_XPos1)*cos(TGC3_BigWheel_PhiStepAngle2)*sin(TGC3_BigWheel_PhiStepAngle2)+sin(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiThickRPlate" />
+
+<gvxysx name="TGC3_PhiPlate5" material="Aluminium" dZ="TGC3_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC3_PhiPlate5_XPos3; TGC3_BigWheel_RadDist05+TGC3_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate5_XPos2+TGC3_BigWheel_RThickPhiPlate2*sin(TGC3_BigWheel_PhiStepAngle2)+(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*cos(TGC3_BigWheel_PhiStepAngle2); TGC3_PhiPlate5_YPos2+TGC3_BigWheel_RThickPhiPlate2*cos(TGC3_BigWheel_PhiStepAngle2)-(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*sin(TGC3_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate5_XPos2+(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*cos(TGC3_BigWheel_PhiStepAngle2); TGC3_PhiPlate5_YPos2-(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*sin(TGC3_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate5_XPos1; TGC3_BigWheel_RadDist05"/>
+</gvxysx>
+
+<!-- fifth phi plate with kink - plate 6 -->
+<var name="TGC3_PhiPlate6_XPos1"  value="tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RadDist06-TGC3_BigWheel_PhiStep1toP1/cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/cos(TGC3_BigWheel_PhiStepAngle2)/2." />
+<var name="TGC3_PhiPlate6_XPos3"  value="tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RadDist06-TGC3_BigWheel_PhiStep1toP1/cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/cos(TGC3_BigWheel_PhiStepAngle2)/2.+tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RThickPhiPlate2" />
+<var name="TGC3_PhiPlate6_XPos2"  value="TGC3_PhiPlate6_XPos1+(TGC3_BigWheel_RadDist06*tan(TGC3_BigWheel_PhiStepAngle2)-TGC3_PhiPlate6_XPos1)*cos(TGC3_BigWheel_PhiStepAngle2)*cos(TGC3_BigWheel_PhiStepAngle2)" />
+<var name="TGC3_PhiPlate6_YPos2"  value="TGC3_BigWheel_RadDist06-(TGC3_BigWheel_RadDist06*tan(TGC3_BigWheel_PhiStepAngle2)-TGC3_PhiPlate6_XPos1)*cos(TGC3_BigWheel_PhiStepAngle2)*sin(TGC3_BigWheel_PhiStepAngle2)" />
+
+<gvxysx name="TGC3_PhiPlate6_Even" material="Aluminium" dZ="TGC3_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC3_PhiPlate6_XPos3; TGC3_BigWheel_RadDist06+TGC3_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate6_XPos2+TGC3_BigWheel_RThickPhiPlate2*sin(TGC3_BigWheel_PhiStepAngle2)+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2); TGC3_PhiPlate6_YPos2+TGC3_BigWheel_RThickPhiPlate2*cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate6_XPos2+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2); TGC3_PhiPlate6_YPos2-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate6_XPos1; TGC3_BigWheel_RadDist06"/>
+</gvxysx>
+
+<gvxysx name="TGC3_PhiPlate6_Odd" material="Aluminium" dZ="TGC3_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC3_PhiPlate6_XPos3-tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_BigWheel_RadDist06+TGC3_BigWheel_RThickPhiPlate2-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate6_XPos2+TGC3_BigWheel_RThickPhiPlate2*sin(TGC3_BigWheel_PhiStepAngle2)+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2)-tan(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_PhiPlate6_YPos2+TGC3_BigWheel_RThickPhiPlate2*cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate6_XPos2+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2)-tan(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_PhiPlate6_YPos2-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate6_XPos1-tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_BigWheel_RadDist06-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+</gvxysx>
+
+<!-- sixth phi plate with kink - plate 7 -->
+<var name="TGC3_PhiPlate7_XPos1"  value="tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RadDist07-TGC3_BigWheel_PhiStep1toP1/cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/cos(TGC3_BigWheel_PhiStepAngle2)/2." />
+<var name="TGC3_PhiPlate7_XPos3"  value="tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RadDist07-TGC3_BigWheel_PhiStep1toP1/cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/cos(TGC3_BigWheel_PhiStepAngle2)/2.+tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RThickPhiPlate2" />
+<var name="TGC3_PhiPlate7_XPos2"  value="TGC3_PhiPlate7_XPos1+(TGC3_BigWheel_RadDist07*tan(TGC3_BigWheel_PhiStepAngle2)-TGC3_PhiPlate7_XPos1)*cos(TGC3_BigWheel_PhiStepAngle2)*cos(TGC3_BigWheel_PhiStepAngle2)-cos(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiThickRPlate" />
+<var name="TGC3_PhiPlate7_YPos2"  value="TGC3_BigWheel_RadDist07-(TGC3_BigWheel_RadDist07*tan(TGC3_BigWheel_PhiStepAngle2)-TGC3_PhiPlate7_XPos1)*cos(TGC3_BigWheel_PhiStepAngle2)*sin(TGC3_BigWheel_PhiStepAngle2)+sin(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiThickRPlate" />
+
+<gvxysx name="TGC3_PhiPlate7" material="Aluminium" dZ="TGC3_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC3_PhiPlate7_XPos3; TGC3_BigWheel_RadDist07+TGC3_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate7_XPos2+TGC3_BigWheel_RThickPhiPlate2*sin(TGC3_BigWheel_PhiStepAngle2)+(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*cos(TGC3_BigWheel_PhiStepAngle2); TGC3_PhiPlate7_YPos2+TGC3_BigWheel_RThickPhiPlate2*cos(TGC3_BigWheel_PhiStepAngle2)-(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*sin(TGC3_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate7_XPos2+(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*cos(TGC3_BigWheel_PhiStepAngle2); TGC3_PhiPlate7_YPos2-(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*sin(TGC3_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate7_XPos1; TGC3_BigWheel_RadDist07"/>
+</gvxysx>
+
+<!-- seventh phi plate with kink - plate 8 -->
+<var name="TGC3_PhiPlate8_XPos1"  value="tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RadDist08-TGC3_BigWheel_PhiStep1toP1/cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/cos(TGC3_BigWheel_PhiStepAngle2)/2." />
+<var name="TGC3_PhiPlate8_XPos3"  value="tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RadDist08-TGC3_BigWheel_PhiStep1toP1/cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/cos(TGC3_BigWheel_PhiStepAngle2)/2.+tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_RThickPhiPlate2" />
+<var name="TGC3_PhiPlate8_XPos2"  value="TGC3_PhiPlate8_XPos1+(TGC3_BigWheel_RadDist08*tan(TGC3_BigWheel_PhiStepAngle2)-TGC3_PhiPlate8_XPos1)*cos(TGC3_BigWheel_PhiStepAngle2)*cos(TGC3_BigWheel_PhiStepAngle2)" />
+<var name="TGC3_PhiPlate8_YPos2"  value="TGC3_BigWheel_RadDist08-(TGC3_BigWheel_RadDist08*tan(TGC3_BigWheel_PhiStepAngle2)-TGC3_PhiPlate8_XPos1)*cos(TGC3_BigWheel_PhiStepAngle2)*sin(TGC3_BigWheel_PhiStepAngle2)" />
+
+<gvxysx name="TGC3_PhiPlate8_Even" material="Aluminium" dZ="TGC3_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC3_PhiPlate8_XPos3; TGC3_BigWheel_RadDist08+TGC3_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate8_XPos2+TGC3_BigWheel_RThickPhiPlate2*sin(TGC3_BigWheel_PhiStepAngle2)+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2); TGC3_PhiPlate8_YPos2+TGC3_BigWheel_RThickPhiPlate2*cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate8_XPos2+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2); TGC3_PhiPlate8_YPos2-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate8_XPos1; TGC3_BigWheel_RadDist08"/>
+</gvxysx>
+
+<gvxysx name="TGC3_PhiPlate8_Odd" material="Aluminium" dZ="TGC3_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC3_PhiPlate8_XPos3-tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_BigWheel_RadDist08+TGC3_BigWheel_RThickPhiPlate2-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate8_XPos2+TGC3_BigWheel_RThickPhiPlate2*sin(TGC3_BigWheel_PhiStepAngle2)+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2)-tan(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_PhiPlate8_YPos2+TGC3_BigWheel_RThickPhiPlate2*cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate8_XPos2+TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2)-tan(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_PhiPlate8_YPos2-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC3_PhiPlate8_XPos1-tan(TGC3_BigWheel_PhiStepAngle1)*TGC3_BigWheel_PhiPlaDelEvenOdd; TGC3_BigWheel_RadDist08-TGC3_BigWheel_PhiPlaDelEvenOdd"/>
+</gvxysx>
+
+<!-- first R plate - center -->
+<box name="TGC3_RPlate1_base" material="Aluminium"   X_Y_Z=" TGC3_BigWheel_PhiThickRPlate; TGC3_BigWheel_RadDist09-TGC3_BigWheel_RadDistPlate02-TGC3_BigWheel_RadDist00; TGC3_BigWheel_ZThickRPlate" />
+<box name="TGC3_RPlate1_sub"  material="Aluminium"   X_Y_Z=" TGC3_BigWheel_PhiThickRPlate; TGC3_BigWheel_RadDist09-TGC3_BigWheel_RadDistPlate02-TGC3_BigWheel_RadDist00+TGC3_BigWheel_WallThickRPlate; TGC3_BigWheel_ZThickRPlate-2.*TGC3_BigWheel_WallThickRPlate" />
+
+<subtraction name="TGC3_RPlate1">
+  <posXYZ volume="TGC3_RPlate1_base" X_Y_Z=" TGC3_BigWheel_PhiDistRPlate1/2.+TGC3_BigWheel_PhiThickRPlate/2.; (TGC3_BigWheel_RadDist09+TGC3_BigWheel_RadDistPlate02-TGC3_BigWheel_RadDist00)/2.; 0." />
+  <posXYZ volume="TGC3_RPlate1_sub"  X_Y_Z=" TGC3_BigWheel_PhiDistRPlate1/2.+TGC3_BigWheel_PhiThickRPlate/2.+TGC3_BigWheel_WallThickRPlate; (TGC3_BigWheel_RadDist09+TGC3_BigWheel_RadDistPlate02-TGC3_BigWheel_RadDist00)/2.; 0." />
+</subtraction>
+
+<!-- second R plate - 7.5 degrees -->
+<box name="TGC3_RPlate2_base" material="Aluminium"   X_Y_Z=" TGC3_BigWheel_PhiThickRPlate; (TGC3_BigWheel_RadDist09-TGC3_BigWheel_RadDistPlate02-TGC3_BigWheel_RadDist00)/cos(TGC3_BigWheel_PhiStepAngle1); TGC3_BigWheel_ZThickRPlate" />
+<box name="TGC3_RPlate2_sub"  material="Aluminium"   X_Y_Z=" TGC3_BigWheel_PhiThickRPlate; (TGC3_BigWheel_RadDist09-TGC3_BigWheel_RadDistPlate02-TGC3_BigWheel_RadDist00+TGC3_BigWheel_WallThickRPlate)/cos(TGC3_BigWheel_PhiStepAngle1); TGC3_BigWheel_ZThickRPlate-2.*TGC3_BigWheel_WallThickRPlate" />
+
+<subtraction name="TGC3_RPlate2">
+  <posXYZ volume="TGC3_RPlate2_base" X_Y_Z=" TGC3_PhiPlate2_XPos1+(TGC3_BigWheel_RadDist09+TGC3_BigWheel_RadDistPlate02-TGC3_BigWheel_RadDist00-2.*TGC3_BigWheel_RadDist02)*tan(TGC3_BigWheel_PhiStepAngle1)/2.; (TGC3_BigWheel_RadDist09+TGC3_BigWheel_RadDistPlate02-TGC3_BigWheel_RadDist00)/2.; 0." rot=" 0.;   0.; -TGC3_BigWheel_PhiStepAngle1/GENV_PiS180" />
+  <posXYZ volume="TGC3_RPlate2_sub"  X_Y_Z=" TGC3_PhiPlate2_XPos1+(TGC3_BigWheel_RadDist09+TGC3_BigWheel_RadDistPlate02-TGC3_BigWheel_RadDist00-2.*TGC3_BigWheel_RadDist02)*tan(TGC3_BigWheel_PhiStepAngle1)/2.-TGC3_BigWheel_WallThickRPlate; (TGC3_BigWheel_RadDist09+TGC3_BigWheel_RadDistPlate02-TGC3_BigWheel_RadDist00)/2.; 0." rot=" 0.;   0.; -TGC3_BigWheel_PhiStepAngle1/GENV_PiS180" />
+</subtraction>
+
+<!-- third R plate - 7.5 degrees TGC3_BigWheel_PhiThickRPlate-->
+<var name="TGC3_RPlate3_length"  value="(TGC3_BigWheel_RadDist09 - TGC3_BigWheel_RadDist00 - (TGC3_PhiPlate2_YPos2-TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)) - (TGC3_BigWheel_PhiStep2toP1 + TGC3_BigWheel_PhiThickRPlate) * sin(TGC3_BigWheel_PhiStepAngle2) ) / cos(TGC3_BigWheel_PhiStepAngle1)" />
+
+<box name="TGC3_RPlate3_base" material="Aluminium"   X_Y_Z=" TGC3_BigWheel_PhiThickRPlate; TGC3_RPlate3_length; TGC3_BigWheel_ZThickRPlate" />
+<box name="TGC3_RPlate3_sub1"  material="Aluminium"   X_Y_Z=" TGC3_BigWheel_PhiThickRPlate; TGC3_RPlate3_length + TGC3_BigWheel_WallThickRPlate/cos(TGC3_BigWheel_PhiStepAngle1); TGC3_BigWheel_ZThickRPlate-2.*TGC3_BigWheel_WallThickRPlate" />
+<box name="TGC3_RPlate3_sub2"  material="Aluminium"   X_Y_Z=" TGC3_BigWheel_PhiThickRPlate; TGC3_RPlate3_length; TGC3_BigWheel_ZThickRPlate+2.*TGC3_BigWheel_WallThickRPlate" />
+
+<subtraction name="TGC3_RPlate3_tmp">
+  <posXYZ volume="TGC3_RPlate3_base" X_Y_Z=" TGC3_RPlate3_length/2.*sin(TGC3_BigWheel_PhiStepAngle1); TGC3_RPlate3_length/2.*cos(TGC3_BigWheel_PhiStepAngle1); 0." rot=" 0.;   0.; -TGC3_BigWheel_PhiStepAngle1/GENV_PiS180" />
+  <posXYZ volume="TGC3_RPlate3_sub1"  X_Y_Z=" TGC3_RPlate3_length/2.*sin(TGC3_BigWheel_PhiStepAngle1)-TGC3_BigWheel_WallThickRPlate; TGC3_RPlate3_length/2.*cos(TGC3_BigWheel_PhiStepAngle1); 0." rot=" 0.; 0.; -TGC3_BigWheel_PhiStepAngle1/GENV_PiS180" />
+  <posXYZ volume="TGC3_RPlate3_sub2" X_Y_Z="TGC3_RPlate3_length/2.*sin(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/2*(cos(TGC3_BigWheel_PhiStepAngle1)-cos(TGC3_BigWheel_PhiStepAngle2));TGC3_RPlate3_length/2.*cos(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_PhiThickRPlate/2*(sin(TGC3_BigWheel_PhiStepAngle2)-sin(TGC3_BigWheel_PhiStepAngle1)); 0." rot=" 0.; 0.; -TGC3_BigWheel_PhiStepAngle2/GENV_PiS180" />
+</subtraction>
+
+<var name="TGC3_RPlate3_PosX" value="TGC3_PhiPlate2_XPos2+(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*cos(TGC3_BigWheel_PhiStepAngle2)+TGC3_BigWheel_PhiThickRPlate*(0.5*cos(TGC3_BigWheel_PhiStepAngle1)-cos(TGC3_BigWheel_PhiStepAngle2))-cos(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiThickRPlate" />
+
+<var name="TGC3_RPlate3_PosY" value="TGC3_PhiPlate2_YPos2+(TGC3_BigWheel_PhiStep2toP1-TGC3_BigWheel_PhiStepP2toP2)*sin(TGC3_BigWheel_PhiStepAngle2)+TGC3_BigWheel_PhiThickRPlate*(sin(TGC3_BigWheel_PhiStepAngle2)-0.5*sin(TGC3_BigWheel_PhiStepAngle1))+sin(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiThickRPlate" />
+
+<composition name="TGC3_RPlate3" >
+  <posXYZ  volume="TGC3_RPlate3_tmp" X_Y_Z=" TGC3_RPlate3_PosX-GENV_Eps; TGC3_RPlate3_PosY ; 0." />
+</composition>
+
+<!-- first R plate - 15 degrees -->
+<box name="TGC3_RPlate4_base" material="Aluminium"   X_Y_Z=" TGC3_BigWheel_PhiThickRPlate; (TGC3_BigWheel_RadDist09-TGC3_BigWheel_RadDist00)/cos(TGC3_BigWheel_PhiStepAngle2); TGC3_BigWheel_ZThickRPlate" />
+<box name="TGC3_RPlate4_sub"  material="Aluminium"   X_Y_Z=" TGC3_BigWheel_PhiThickRPlate; (TGC3_BigWheel_RadDist09-TGC3_BigWheel_RadDist00+TGC3_BigWheel_WallThickRPlate)/cos(TGC3_BigWheel_PhiStepAngle2); TGC3_BigWheel_ZThickRPlate-2.*TGC3_BigWheel_WallThickRPlate" />
+
+<subtraction name="TGC3_RPlate4">
+  <posXYZ volume="TGC3_RPlate4_base" X_Y_Z=" (TGC3_BigWheel_RadDist09-TGC3_BigWheel_RadDist00)*tan(TGC3_BigWheel_PhiStepAngle2)/2.+(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1-1.5*TGC3_BigWheel_PhiThickRPlate)/cos(TGC3_BigWheel_PhiStepAngle2); (TGC3_BigWheel_RadDist09-TGC3_BigWheel_RadDist00)/2.; 0." rot=" 0.;   0.; -TGC3_BigWheel_PhiStepAngle2/GENV_PiS180" />
+  <posXYZ volume="TGC3_RPlate4_sub"  X_Y_Z=" (TGC3_BigWheel_RadDist09-TGC3_BigWheel_RadDist00)*tan(TGC3_BigWheel_PhiStepAngle2)/2.-TGC3_BigWheel_WallThickRPlate+(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1-1.5*TGC3_BigWheel_PhiThickRPlate)/cos(TGC3_BigWheel_PhiStepAngle2); (TGC3_BigWheel_RadDist09-TGC3_BigWheel_RadDist00)/2.; 0." rot=" 0.;   0.; -TGC3_BigWheel_PhiStepAngle2/GENV_PiS180" />
+</subtraction>
+
+<!-- second R plate - 15 degrees -->
+<box name="TGC3_RPlate5_base" material="Aluminium"   X_Y_Z=" TGC3_BigWheel_PhiThickRPlate; (TGC3_BigWheel_RadDist09-cos(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_RadDistOutPlate)/cos(TGC3_BigWheel_PhiStepAngle2); TGC3_BigWheel_ZThickRPlate" />
+<box name="TGC3_RPlate5_sub"  material="Aluminium"   X_Y_Z=" TGC3_BigWheel_PhiThickRPlate; (TGC3_BigWheel_RadDist09-cos(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_RadDistOutPlate)/cos(TGC3_BigWheel_PhiStepAngle2)+TGC3_BigWheel_WallThickRPlate; TGC3_BigWheel_ZThickRPlate-2.*TGC3_BigWheel_WallThickRPlate" />
+
+<var name="TGC3_RPlate5_PosX" value="sin(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_RadDistOutPlate/2. +TGC3_PhiPlate2_XPos2 +TGC3_BigWheel_PhiStepP2toP2*cos(TGC3_BigWheel_PhiStepAngle2) +tan(TGC3_BigWheel_PhiStepAngle2)*(TGC3_BigWheel_RadDist09/2.-TGC3_PhiPlate2_YPos2+TGC3_BigWheel_PhiStepP2toP2*sin(TGC3_BigWheel_PhiStepAngle2)-TGC3_BigWheel_RadDist00)"/>
+
+<subtraction name="TGC3_RPlate5">
+  <posXYZ volume="TGC3_RPlate5_base" X_Y_Z=" TGC3_RPlate5_PosX - cos(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiThickRPlate/2.; (TGC3_BigWheel_RadDist09+cos(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_RadDistOutPlate)/2. - TGC3_BigWheel_RadDist00 + sin(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiThickRPlate/2.; 0." rot=" 0.;   0.; -TGC3_BigWheel_PhiStepAngle2/GENV_PiS180" />
+  <posXYZ volume="TGC3_RPlate5_sub"  X_Y_Z=" TGC3_RPlate5_PosX - cos(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiThickRPlate/2.+TGC3_BigWheel_WallThickRPlate; (TGC3_BigWheel_RadDist09+cos(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_RadDistOutPlate)/2.- TGC3_BigWheel_RadDist00 + sin(TGC3_BigWheel_PhiStepAngle2)*TGC3_BigWheel_PhiThickRPlate/2.; 0." rot=" 0.;   0.; -TGC3_BigWheel_PhiStepAngle2/GENV_PiS180" />
+</subtraction>
+
+<!-- very rough approximation of trigger boxes and cables - everything estimated - even/odd sectors for TGC3 -->
+<!-- change of variables does not change placement correctly - fine tuning required -->
+
+<var name="TGC3_TrigBoxThicknessZ"   value="    2.  " />
+<var name="TGC3_TrigBoxWidthPhi"     value="  260.  " />
+<var name="TGC3_TrigBoxLengthR"      value=" 5160.  " />
+<var name="TGC3_TrigBoxAngle1"       value="    3.25" />
+<var name="TGC3_TrigBoxAngle2"       value="   12. " />
+
+<box name="TGC3_TrigBox" material="Aluminium" X_Y_Z="TGC3_TrigBoxWidthPhi; TGC3_TrigBoxLengthR; TGC3_TrigBoxThicknessZ" />
+
+<var name="TGC3_TrigCableThicknessZ1"   value="    5.  " />
+<var name="TGC3_TrigCableThicknessZ2"   value="    3.  " />
+<var name="TGC3_TrigCableThicknessZ3"   value="    6.5  " />
+<var name="TGC3_TrigCableWidthPhi1"     value="  130.  " />
+<var name="TGC3_TrigCableWidthPhi2"     value="  100.  " />
+<var name="TGC3_TrigCableWidthPhi3"     value="   75.  " />
+<var name="TGC3_TrigCableWidthPhi4"     value="   60.  " />
+<var name="TGC3_TrigCableWidthPhi5"     value="  250.  " />
+<var name="TGC3_TrigCableLengthR1"      value=" 4500.  " />
+<var name="TGC3_TrigCableLengthR3"      value=" 1600.  " />
+<var name="TGC3_TrigCableLengthR4"      value=" 1400.  " />
+<var name="TGC3_TrigCableLengthR5"      value=" 1550.  " />
+
+<box name="TGC3_TrigCable1" material="Copper" X_Y_Z=" TGC3_TrigCableWidthPhi1; TGC3_TrigCableLengthR1; TGC3_TrigCableThicknessZ1" />
+<box name="TGC3_TrigCable2" material="Copper" X_Y_Z=" TGC3_TrigCableWidthPhi2; TGC3_TrigCableLengthR1; TGC3_TrigCableThicknessZ2" />
+<box name="TGC3_TrigCable3" material="Copper" X_Y_Z=" TGC3_TrigCableWidthPhi3; TGC3_TrigCableLengthR3; TGC3_TrigCableThicknessZ3" />
+<box name="TGC3_TrigCable4" material="Copper" X_Y_Z=" TGC3_TrigCableWidthPhi4; TGC3_TrigCableLengthR4; TGC3_TrigCableThicknessZ3" />
+<box name="TGC3_TrigCable5" material="Copper" X_Y_Z=" TGC3_TrigCableWidthPhi5; TGC3_TrigCableLengthR5; TGC3_TrigCableThicknessZ1" />
+
+<composition name="TGC3_Support_EvenSector_ASide">
+  <posXYZ volume="TGC3_PhiPlate1"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate2_Even"  X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate3"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate4_Even"  X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate5"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate6_Even"  X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate7"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate8_Even"  X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_RPlate1"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate1"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate2"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate2"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate3"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate3"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate4"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate4"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate5"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate5"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+
+  <posXYZ volume="TGC3_TrigBox"         X_Y_Z=" TGC3_PhiPlate4_XPos3-TGC3_TrigBoxLengthR/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_TrigBoxWidthPhi/4.*cos(TGC3_TrigBoxAngle1*GENV_PiS180); -TGC3_TrigBoxLengthR/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_ZThickPhiPlate" rot="0.; 0.; -TGC3_TrigBoxAngle1" />
+  <posXYZ volume="TGC3_TrigBox"         X_Y_Z=" -TGC3_TrigBoxLengthR/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-7.*TGC3_TrigBoxWidthPhi/10.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-(TGC3_PhiPlate3_XPos2+(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*cos(TGC3_BigWheel_PhiStepAngle2)); -TGC3_TrigBoxLengthR/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_ZThickPhiPlate" rot="0.; 0.; TGC3_TrigBoxAngle2" />
+
+  <posXYZ volume="TGC3_TrigCable1"      X_Y_Z="-TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_TrigCableWidthPhi1/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180) + 850.; -TGC3_TrigCableWidthPhi1/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ1/2." rot="0.; 0.; -TGC3_TrigBoxAngle1"/>
+  <posXYZ volume="TGC3_TrigCable2"      X_Y_Z="-TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-TGC3_TrigCableWidthPhi2/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180) + 580.; -TGC3_TrigCableWidthPhi2/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ2/2." rot="0.; 0.; -TGC3_TrigBoxAngle1"/>
+  <posXYZ volume="TGC3_TrigCable3"      X_Y_Z="-TGC3_TrigCableLengthR3/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_TrigCableWidthPhi3/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180) + 380.; -TGC3_TrigCableWidthPhi3/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-(TGC3_TrigCableLengthR3/2.+TGC3_TrigBoxLengthR)*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ3/2." rot="0.; 0.; -TGC3_TrigBoxAngle1"/>
+
+  <posXYZ volume="TGC3_TrigCable1"      X_Y_Z="TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_TrigCableWidthPhi1/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-2315; TGC3_TrigCableWidthPhi1*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ1/2." rot="0.; 0.; TGC3_TrigBoxAngle2"/>
+  <posXYZ volume="TGC3_TrigCable2"      X_Y_Z="TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-TGC3_TrigCableWidthPhi2/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-2620.; TGC3_TrigCableWidthPhi2/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ2/2." rot="0.; 0.; TGC3_TrigBoxAngle2"/>
+  <posXYZ volume="TGC3_TrigCable4"      X_Y_Z="TGC3_TrigCableLengthR4/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_TrigCableWidthPhi4/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-1430.; -TGC3_TrigCableWidthPhi4/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-(TGC3_TrigCableLengthR4/2.+TGC3_TrigBoxLengthR)*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ3/2." rot="0.; 0.; TGC3_TrigBoxAngle2"/>
+
+  <posXYZ volume="TGC3_TrigCable5"      X_Y_Z="TGC3_TrigCableLengthR5/2.*sin(TGC3_BigWheel_PhiStepAngle2)+TGC3_TrigCableWidthPhi5/2.*cos(TGC3_BigWheel_PhiStepAngle2)-700.; TGC3_BigWheel_RadDist00+TGC3_BigWheel_RadDist01+TGC3_BigWheel_RThickPhiPlate1-75; TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ1/2." rot="0.; 0.; TGC3_BigWheel_PhiStepAngle2/GENV_PiS180"/>
+
+</composition>
+
+<composition name="TGC3_Support_OddSector_ASide">
+  <posXYZ volume="TGC3_PhiPlate1"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate2_Odd"   X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate3"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate4_Odd"   X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate5"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate6_Odd"   X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate7"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate8_Odd"   X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_RPlate1"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate1"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate2"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate2"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate3"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate3"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate4"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate4"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate5"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate5"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+
+  <posXYZ volume="TGC3_TrigBox"         X_Y_Z=" TGC3_PhiPlate4_XPos3-TGC3_TrigBoxLengthR/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_TrigBoxWidthPhi/4.*cos(TGC3_TrigBoxAngle1*GENV_PiS180); -TGC3_TrigBoxLengthR/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_ZThickPhiPlate" rot="0.; 0.; -TGC3_TrigBoxAngle1" />
+  <posXYZ volume="TGC3_TrigBox"         X_Y_Z=" -TGC3_TrigBoxLengthR/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-7.*TGC3_TrigBoxWidthPhi/10.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-(TGC3_PhiPlate3_XPos2+(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*cos(TGC3_BigWheel_PhiStepAngle2)); -TGC3_TrigBoxLengthR/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_ZThickPhiPlate" rot="0.; 0.; TGC3_TrigBoxAngle2" />
+
+  <posXYZ volume="TGC3_TrigCable1"      X_Y_Z="-TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_TrigCableWidthPhi1/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180) + 850.; -TGC3_TrigCableWidthPhi1/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ1/2." rot="0.; 0.; -TGC3_TrigBoxAngle1"/>
+  <posXYZ volume="TGC3_TrigCable2"      X_Y_Z="-TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-TGC3_TrigCableWidthPhi2/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180) + 580.; -TGC3_TrigCableWidthPhi2/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ2/2." rot="0.; 0.; -TGC3_TrigBoxAngle1"/>
+  <posXYZ volume="TGC3_TrigCable3"      X_Y_Z="-TGC3_TrigCableLengthR3/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_TrigCableWidthPhi3/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180) + 380.; -TGC3_TrigCableWidthPhi3/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-(TGC3_TrigCableLengthR3/2.+TGC3_TrigBoxLengthR)*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ3/2." rot="0.; 0.; -TGC3_TrigBoxAngle1"/>
+
+  <posXYZ volume="TGC3_TrigCable1"      X_Y_Z="TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_TrigCableWidthPhi1/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-2315; TGC3_TrigCableWidthPhi1*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ1/2." rot="0.; 0.; TGC3_TrigBoxAngle2"/>
+  <posXYZ volume="TGC3_TrigCable2"      X_Y_Z="TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-TGC3_TrigCableWidthPhi2/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-2620.; TGC3_TrigCableWidthPhi2/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ2/2." rot="0.; 0.; TGC3_TrigBoxAngle2"/>
+  <posXYZ volume="TGC3_TrigCable4"      X_Y_Z="TGC3_TrigCableLengthR4/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_TrigCableWidthPhi4/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-1430.; -TGC3_TrigCableWidthPhi4/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-(TGC3_TrigCableLengthR4/2.+TGC3_TrigBoxLengthR)*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ3/2." rot="0.; 0.; TGC3_TrigBoxAngle2"/>
+
+  <posXYZ volume="TGC3_TrigCable5"      X_Y_Z="TGC3_TrigCableLengthR5/2.*sin(TGC3_BigWheel_PhiStepAngle2)+TGC3_TrigCableWidthPhi5/2.*cos(TGC3_BigWheel_PhiStepAngle2)-700.; TGC3_BigWheel_RadDist00+TGC3_BigWheel_RadDist01+TGC3_BigWheel_RThickPhiPlate1-75; TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ1/2." rot="0.; 0.; TGC3_BigWheel_PhiStepAngle2/GENV_PiS180"/>
+
+</composition>
+
+<composition name="TGC3_Support_EvenSector_CSide">
+  <posXYZ volume="TGC3_PhiPlate1"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate2_Even"  X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate3"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate4_Even"  X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate5"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate6_Even"  X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate7"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate8_Even"  X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_RPlate1"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate1"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate2"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate2"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate3"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate3"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate4"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate4"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate5"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate5"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+
+  <posXYZ volume="TGC3_TrigBox"         X_Y_Z=" TGC3_PhiPlate4_XPos3-TGC3_TrigBoxLengthR/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_TrigBoxWidthPhi/4.*cos(TGC3_TrigBoxAngle1*GENV_PiS180); -TGC3_TrigBoxLengthR/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; -TGC3_BigWheel_ZThickPhiPlate" rot="0.; 0.; -TGC3_TrigBoxAngle1" />
+  <posXYZ volume="TGC3_TrigBox"         X_Y_Z=" -TGC3_TrigBoxLengthR/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-7.*TGC3_TrigBoxWidthPhi/10.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-(TGC3_PhiPlate3_XPos2+(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*cos(TGC3_BigWheel_PhiStepAngle2)); -TGC3_TrigBoxLengthR/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; -TGC3_BigWheel_ZThickPhiPlate" rot="0.; 0.; TGC3_TrigBoxAngle2" />
+
+  <posXYZ volume="TGC3_TrigCable1"      X_Y_Z="-TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_TrigCableWidthPhi1/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180) + 850.; -TGC3_TrigCableWidthPhi1/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; -(TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ1/2.)" rot="0.; 0.; -TGC3_TrigBoxAngle1"/>
+  <posXYZ volume="TGC3_TrigCable2"      X_Y_Z="-TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-TGC3_TrigCableWidthPhi2/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180) + 580.; -TGC3_TrigCableWidthPhi2/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; -(TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ2/2.)" rot="0.; 0.; -TGC3_TrigBoxAngle1"/>
+  <posXYZ volume="TGC3_TrigCable3"      X_Y_Z="-TGC3_TrigCableLengthR3/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_TrigCableWidthPhi3/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180) + 380.; -TGC3_TrigCableWidthPhi3/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-(TGC3_TrigCableLengthR3/2.+TGC3_TrigBoxLengthR)*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; -(TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ3/2.)" rot="0.; 0.; -TGC3_TrigBoxAngle1"/>
+
+  <posXYZ volume="TGC3_TrigCable1"      X_Y_Z="TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_TrigCableWidthPhi1/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-2315; TGC3_TrigCableWidthPhi1*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; -(TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ1/2.)" rot="0.; 0.; TGC3_TrigBoxAngle2"/>
+  <posXYZ volume="TGC3_TrigCable2"      X_Y_Z="TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-TGC3_TrigCableWidthPhi2/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-2620.; TGC3_TrigCableWidthPhi2/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; -(TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ2/2.)" rot="0.; 0.; TGC3_TrigBoxAngle2"/>
+  <posXYZ volume="TGC3_TrigCable4"      X_Y_Z="TGC3_TrigCableLengthR4/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_TrigCableWidthPhi4/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-1430.; -TGC3_TrigCableWidthPhi4/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-(TGC3_TrigCableLengthR4/2.+TGC3_TrigBoxLengthR)*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; -(TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ3/2.)" rot="0.; 0.; TGC3_TrigBoxAngle2"/>
+
+  <posXYZ volume="TGC3_TrigCable5"      X_Y_Z="TGC3_TrigCableLengthR5/2.*sin(TGC3_BigWheel_PhiStepAngle2)+TGC3_TrigCableWidthPhi5/2.*cos(TGC3_BigWheel_PhiStepAngle2)-700.; TGC3_BigWheel_RadDist00+TGC3_BigWheel_RadDist01+TGC3_BigWheel_RThickPhiPlate1-75; -(TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ1/2.)" rot="0.; 0.; TGC3_BigWheel_PhiStepAngle2/GENV_PiS180"/>
+
+</composition>
+
+<composition name="TGC3_Support_OddSector_CSide">
+  <posXYZ volume="TGC3_PhiPlate1"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate2_Odd"   X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate3"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate4_Odd"   X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate5"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate6_Odd"   X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate7"       X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_PhiPlate8_Odd"   X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC3_RPlate1"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate1"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate2"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate2"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate3"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate3"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate4"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate4"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC3_RPlate5"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00; -TGC3_BigWheel_ZThickPhiPlate-TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC3_RPlate5"         X_Y_Z=" 0.; TGC3_BigWheel_RadDist00;  TGC3_BigWheel_ZThickPhiPlate+TGC3_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+
+  <posXYZ volume="TGC3_TrigBox"         X_Y_Z=" TGC3_PhiPlate4_XPos3-TGC3_TrigBoxLengthR/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_TrigBoxWidthPhi/4.*cos(TGC3_TrigBoxAngle1*GENV_PiS180); -TGC3_TrigBoxLengthR/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; -TGC3_BigWheel_ZThickPhiPlate" rot="0.; 0.; -TGC3_TrigBoxAngle1" />
+  <posXYZ volume="TGC3_TrigBox"         X_Y_Z=" -TGC3_TrigBoxLengthR/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-7.*TGC3_TrigBoxWidthPhi/10.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-(TGC3_PhiPlate3_XPos2+(TGC3_BigWheel_PhiStepP2toP2-TGC3_BigWheel_PhiStep2toP1)*cos(TGC3_BigWheel_PhiStepAngle2)); -TGC3_TrigBoxLengthR/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; -TGC3_BigWheel_ZThickPhiPlate" rot="0.; 0.; TGC3_TrigBoxAngle2" />
+
+  <posXYZ volume="TGC3_TrigCable1"      X_Y_Z="-TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_TrigCableWidthPhi1/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180) + 850.; -TGC3_TrigCableWidthPhi1/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; -(TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ1/2.)" rot="0.; 0.; -TGC3_TrigBoxAngle1"/>
+  <posXYZ volume="TGC3_TrigCable2"      X_Y_Z="-TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-TGC3_TrigCableWidthPhi2/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180) + 580.; -TGC3_TrigCableWidthPhi2/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; -(TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ2/2.)" rot="0.; 0.; -TGC3_TrigBoxAngle1"/>
+  <posXYZ volume="TGC3_TrigCable3"      X_Y_Z="-TGC3_TrigCableLengthR3/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_TrigCableWidthPhi3/2.*cos(TGC3_TrigBoxAngle1*GENV_PiS180) + 380.; -TGC3_TrigCableWidthPhi3/2.*sin(TGC3_TrigBoxAngle1*GENV_PiS180)-(TGC3_TrigCableLengthR3/2.+TGC3_TrigBoxLengthR)*cos(TGC3_TrigBoxAngle1*GENV_PiS180)+TGC3_BigWheel_RadDist09; -(TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ3/2.)" rot="0.; 0.; -TGC3_TrigBoxAngle1"/>
+
+  <posXYZ volume="TGC3_TrigCable1"      X_Y_Z="TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_TrigCableWidthPhi1/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-2315; TGC3_TrigCableWidthPhi1*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; -(TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ1/2.)" rot="0.; 0.; TGC3_TrigBoxAngle2"/>
+  <posXYZ volume="TGC3_TrigCable2"      X_Y_Z="TGC3_TrigCableLengthR1/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-TGC3_TrigCableWidthPhi2/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-2620.; TGC3_TrigCableWidthPhi2/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-TGC3_TrigCableLengthR1/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; -(TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ2/2.)" rot="0.; 0.; TGC3_TrigBoxAngle2"/>
+  <posXYZ volume="TGC3_TrigCable4"      X_Y_Z="TGC3_TrigCableLengthR4/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_TrigCableWidthPhi4/2.*cos(TGC3_TrigBoxAngle2*GENV_PiS180)-1430.; -TGC3_TrigCableWidthPhi4/2.*sin(TGC3_TrigBoxAngle2*GENV_PiS180)-(TGC3_TrigCableLengthR4/2.+TGC3_TrigBoxLengthR)*cos(TGC3_TrigBoxAngle2*GENV_PiS180)+TGC3_BigWheel_RadDist09; -(TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ3/2.)" rot="0.; 0.; TGC3_TrigBoxAngle2"/>
+
+  <posXYZ volume="TGC3_TrigCable5"      X_Y_Z="TGC3_TrigCableLengthR5/2.*sin(TGC3_BigWheel_PhiStepAngle2)+TGC3_TrigCableWidthPhi5/2.*cos(TGC3_BigWheel_PhiStepAngle2)-700.; TGC3_BigWheel_RadDist00+TGC3_BigWheel_RadDist01+TGC3_BigWheel_RThickPhiPlate1-75; -(TGC3_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC3_TrigCableThicknessZ1/2.)" rot="0.; 0.; TGC3_BigWheel_PhiStepAngle2/GENV_PiS180"/>
+
+</composition>
+
+<!-- tube and boxes are rather rouhg approximated here - should be okay though - Cavern Background only -->
+
+<tubs name="TGC3_CentralTube" material="Aluminium" Rio_Z="TGC3_BigWheel_TubeInnerR; TGC3_BigWheel_TubeOuterR; TGC3_BigWheel_WallThickPhiPlate" nbPhi="20" />
+
+<box name="TGC3_SurBox_base" material="Aluminium" X_Y_Z=" 2.*TGC3_BigWheel_RadDist09*tan(TGC3_BigWheel_PhiStepAngle2); TGC_BigWheel_SurBoxSideLength; TGC_BigWheel_SurBoxSideLength" />
+<box name="TGC3_SurBox_inner" material="Aluminium" X_Y_Z=" 2.*TGC3_BigWheel_RadDist09*tan(TGC3_BigWheel_PhiStepAngle2)+2.*GENV_Eps; TGC_BigWheel_SurBoxSideLength-2.*TGC_BigWheel_SurBoxSpcWall; TGC_BigWheel_SurBoxSideLength-2.*TGC_BigWheel_SurBoxSpcWall" />
+
+<subtraction name="TGC3_SurBox_default" >
+  <posXYZ volume="TGC3_SurBox_base"  X_Y_Z=" 0.; TGC3_BigWheel_RadDist09+TGC_BigWheel_SurBoxSideLength; 0." />
+  <posXYZ volume="TGC3_SurBox_inner"  X_Y_Z=" 0.; TGC3_BigWheel_RadDist09+TGC_BigWheel_SurBoxSideLength; 0." />
+</subtraction>
+
+<box name="TGC3_SurBoxSpc_base" material="Aluminium" X_Y_Z=" 2.*TGC3_BigWheel_RadDist09*tan(TGC3_BigWheel_PhiStepAngle2); TGC_BigWheel_SurBoxSpcLength; TGC_BigWheel_SurBoxSpcHeight" />
+<box name="TGC3_SurBoxSpc_inner" material="Aluminium" X_Y_Z="  2.*TGC3_BigWheel_RadDist09*tan(TGC3_BigWheel_PhiStepAngle2)+2.*GENV_Eps; TGC_BigWheel_SurBoxSpcLength-2.*TGC_BigWheel_SurBoxSpcWall; TGC_BigWheel_SurBoxSpcHeight" />
+
+<subtraction name="TGC3_SurBoxSpc" >
+  <posXYZ volume="TGC3_SurBoxSpc_base"   X_Y_Z=" 0.; TGC3_BigWheel_RadDist09+1.5*TGC_BigWheel_SurBoxSideLength+TGC_BigWheel_SurBoxDistance/2.; TGC_BigWheel_SurBoxSideLength/2.+TGC_BigWheel_SurBoxSpcHeight/2." />
+  <posXYZ volume="TGC3_SurBoxSpc_inner"  X_Y_Z=" 0.; TGC3_BigWheel_RadDist09+1.5*TGC_BigWheel_SurBoxSideLength+TGC_BigWheel_SurBoxDistance/2.; TGC_BigWheel_SurBoxSideLength/2.+TGC_BigWheel_SurBoxSpcHeight/2.-TGC_BigWheel_SurBoxSpcWall" />
+</subtraction>
+
+<composition name="TGC3_SurBox_extended" >
+  <posXYZ volume="TGC3_SurBox_default"  X_Y_Z=" 0.; TGC_BigWheel_SurBoxSideLength + TGC_BigWheel_SurBoxDistance; 0." />
+  <posXYZ volume="TGC3_SurBoxSpc"       X_Y_Z=" 0.; 0.;  GENV_Eps" />
+  <posXYZ volume="TGC3_SurBoxSpc"       X_Y_Z=" 0.; 0.; -GENV_Eps" rot=" 0.; 180.; 0."/>
+</composition>
+
+<composition name="TGC3_BigWheel_ASide">
+  <foreach  index="counter"  begin="0"  loops="6" >
+    <posXYZ volume="TGC3_Support_EvenSector_ASide"  X_Y_Z=" 0.; 0.; TGC3_BigWheel_ZPosL" rot="0.; 0.; counter*60." />
+    <posXYZ volume="TGC3_Support_OddSector_ASide"   X_Y_Z=" 0.; 0.; TGC3_BigWheel_ZPosL" rot="0.; 0.; 30.+(counter)*60." />
+  </foreach>
+  <foreach  index="counter"  begin="0"  loops="12" >
+    <posXYZ volume="TGC3_SurBox_default"   X_Y_Z=" 0.; 0.; TGC3_BigWheel_ZPosL" rot="0.; 0.; counter*30." />
+  </foreach>
+  <foreach  index="counter"  begin="0"  loops="7" >
+    <posXYZ volume="TGC3_SurBox_extended"  X_Y_Z=" 0.; 0.; TGC3_BigWheel_ZPosL" rot="0.; 0.; -90.+counter*30." />
+  </foreach>
+  <posXYZ volume="TGC3_CentralTube"  X_Y_Z=" 0.; 0.; TGC3_BigWheel_ZPosL" />
+</composition>
+
+<composition name="TGC3_BigWheel_CSide">
+  <foreach  index="counter"  begin="0"  loops="6" >
+    <posXYZ volume="TGC3_Support_EvenSector_CSide"  X_Y_Z=" 0.; 0.; -TGC3_BigWheel_ZPosL" rot="0.; 0.; counter*60." />
+    <posXYZ volume="TGC3_Support_OddSector_CSide"   X_Y_Z=" 0.; 0.; -TGC3_BigWheel_ZPosL" rot="0.; 0.; 30.+(counter)*60." />
+  </foreach>
+  <foreach  index="counter"  begin="0"  loops="12" >
+    <posXYZ volume="TGC3_SurBox_default"   X_Y_Z=" 0.; 0.; -TGC3_BigWheel_ZPosL" rot="0.; 0.; counter*30." />
+  </foreach>
+  <foreach  index="counter"  begin="0"  loops="7" >
+    <posXYZ volume="TGC3_SurBox_extended"  X_Y_Z=" 0.; 0.; -TGC3_BigWheel_ZPosL" rot="0.; 0.; -90.+counter*30." />
+  </foreach>
+  <posXYZ volume="TGC3_CentralTube"  X_Y_Z=" 0.; 0.; -TGC3_BigWheel_ZPosL" />
+</composition>
+
+<composition name="TGC3_BigWheels">
+  <posXYZ volume="TGC3_BigWheel_ASide" X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="TGC3_BigWheel_CSide" X_Y_Z=" 0.; 0.; 0." />
+</composition>
+
+<!--     name       =  TGC1 Big Wheel                section name       = "Supports"  -->
+<!--  Spokes U zposition -->
+<var name="TGC1_BigWheel_ZPosL"             value=" 13435.  " />
+
+<var name="TGC1_BigWheel_RadDist00"         value="  1777.5 "/>
+<var name="TGC1_BigWheel_RadDist01"         value="   922.  "/>
+<var name="TGC1_BigWheel_RadDist02"         value="  2582.5 "/>
+<var name="TGC1_BigWheel_RadDist03"         value="  3572.5 "/>
+<var name="TGC1_BigWheel_RadDist04"         value="  4667.5 "/>
+<var name="TGC1_BigWheel_RadDist05"         value="  5672.5 "/>
+<var name="TGC1_BigWheel_RadDist06"         value="  6754.5 "/>
+<var name="TGC1_BigWheel_RadDist07"         value="  7772.5 "/>
+<var name="TGC1_BigWheel_RadDist08"         value="  8682.5 "/>
+<var name="TGC1_BigWheel_RadDist09"         value=" 10990.  "/>
+<var name="TGC1_BigWheel_RadDistOutPlate"   value="  3670.  "/>
+<var name="TGC1_BigWheel_RadDistPlate02"    value="  2547.  "/>
+<var name="TGC1_BigWheel_PhiDistRPlate1"    value="   350.  "/>
+
+<var name="TGC1_BigWheel_ZThickPhiPlate"    value="    30.  "/>
+<var name="TGC1_BigWheel_WallThickPhiPlate" value="    16.  "/>
+<var name="TGC1_BigWheel_RThickPhiPlate1"   value="   200.  "/>
+<var name="TGC1_BigWheel_RThickPhiPlate2"   value="   120.  "/>
+<var name="TGC1_BigWheel_ZThickRPlate"      value="   150.  "/>
+<var name="TGC1_BigWheel_PhiThickRPlate"    value="    50.  "/>
+<var name="TGC1_BigWheel_WallThickRPlate"   value="     5.  "/>
+
+<var name="TGC1_BigWheel_PhiPlaDelEvenOdd"  value="TGC1_BigWheel_RThickPhiPlate2 + TGC1_BigWheel_PhiThickRPlate/2."/>
+
+<var name="TGC1_BigWheel_PhiStepAngle1"     value="     7.5 * GENV_PiS180 "/>
+<var name="TGC1_BigWheel_PhiStepAngle2"     value="    15.  * GENV_PiS180  "/>
+
+<var name="TGC1_BigWheel_PhiStep1toP1"      value="    18.  "/>
+<var name="TGC1_BigWheel_PhiStepP1toP2"     value="   497.  "/>
+
+<var name="TGC1_BigWheel_PhiStep2toP1"      value="   442.  "/>
+<var name="TGC1_BigWheel_PhiStepP2toP2"     value="   642. + TGC1_BigWheel_PhiThickRPlate"/>
+
+<var name="TGC1_BigWheel_TubeInnerR"        value="  1715.  "/>
+<var name="TGC1_BigWheel_TubeOuterR"        value="  TGC1_BigWheel_TubeInnerR + 405. "/>
+
+<!-- lowest phi plate - plate 1 -->
+<gvxysx name="TGC1_PhiPlate1" material="Aluminium" dZ="TGC1_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y=" (TGC1_BigWheel_RadDist00+TGC1_BigWheel_RadDist01+TGC1_BigWheel_RThickPhiPlate1)*sin(TGC1_BigWheel_PhiStepAngle2); TGC1_BigWheel_RadDist01+TGC1_BigWheel_RThickPhiPlate1"/>
+  <gvxy_point X_Y=" (TGC1_BigWheel_RadDist00+TGC1_BigWheel_RadDist01)*sin(TGC1_BigWheel_PhiStepAngle2); TGC1_BigWheel_RadDist01"/>
+</gvxysx>
+
+<!-- first phi plate with kink - plate 2 -->
+<var name="TGC1_PhiPlate2_XPos1"  value="tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RadDist02-TGC1_BigWheel_PhiStep1toP1/cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/cos(TGC1_BigWheel_PhiStepAngle2)/2." />
+<var name="TGC1_PhiPlate2_XPos3"  value="tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RadDist02-TGC1_BigWheel_PhiStep1toP1/cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/cos(TGC1_BigWheel_PhiStepAngle2)/2.+tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RThickPhiPlate2" />
+<var name="TGC1_PhiPlate2_XPos2"  value="TGC1_PhiPlate2_XPos1+(TGC1_BigWheel_RadDist02*tan(TGC1_BigWheel_PhiStepAngle2)-TGC1_PhiPlate2_XPos1)*cos(TGC1_BigWheel_PhiStepAngle2)*cos(TGC1_BigWheel_PhiStepAngle2)" />
+<var name="TGC1_PhiPlate2_YPos2"  value="TGC1_BigWheel_RadDist02-(TGC1_BigWheel_RadDist02*tan(TGC1_BigWheel_PhiStepAngle2)-TGC1_PhiPlate2_XPos1)*cos(TGC1_BigWheel_PhiStepAngle2)*sin(TGC1_BigWheel_PhiStepAngle2)" />
+
+<gvxysx name="TGC1_PhiPlate2_Even" material="Aluminium" dZ="TGC1_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC1_PhiPlate2_XPos3; TGC1_BigWheel_RadDist02+TGC1_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate2_XPos2+TGC1_BigWheel_RThickPhiPlate2*sin(TGC1_BigWheel_PhiStepAngle2)+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2); TGC1_PhiPlate2_YPos2+TGC1_BigWheel_RThickPhiPlate2*cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate2_XPos2+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2); TGC1_PhiPlate2_YPos2-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate2_XPos1; TGC1_BigWheel_RadDist02"/>
+</gvxysx>
+
+<gvxysx name="TGC1_PhiPlate2_Odd" material="Aluminium" dZ="TGC1_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC1_PhiPlate2_XPos3-tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_BigWheel_RadDist02+TGC1_BigWheel_RThickPhiPlate2-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate2_XPos2+TGC1_BigWheel_RThickPhiPlate2*sin(TGC1_BigWheel_PhiStepAngle2)+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2)-tan(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_PhiPlate2_YPos2+TGC1_BigWheel_RThickPhiPlate2*cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate2_XPos2+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2)-tan(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_PhiPlate2_YPos2-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate2_XPos1-tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_BigWheel_RadDist02-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+</gvxysx>
+
+<!-- second phi plate with kink - plate 3 -->
+<var name="TGC1_PhiPlate3_XPos1"  value="tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RadDist03-TGC1_BigWheel_PhiStep1toP1/cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/cos(TGC1_BigWheel_PhiStepAngle2)/2." />
+<var name="TGC1_PhiPlate3_XPos3"  value="tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RadDist03-TGC1_BigWheel_PhiStep1toP1/cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/cos(TGC1_BigWheel_PhiStepAngle2)/2.+tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RThickPhiPlate2" />
+<var name="TGC1_PhiPlate3_XPos2"  value="TGC1_PhiPlate3_XPos1+(TGC1_BigWheel_RadDist03*tan(TGC1_BigWheel_PhiStepAngle2)-TGC1_PhiPlate3_XPos1)*cos(TGC1_BigWheel_PhiStepAngle2)*cos(TGC1_BigWheel_PhiStepAngle2)-cos(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiThickRPlate" />
+<var name="TGC1_PhiPlate3_YPos2"  value="TGC1_BigWheel_RadDist03-(TGC1_BigWheel_RadDist03*tan(TGC1_BigWheel_PhiStepAngle2)-TGC1_PhiPlate3_XPos1)*cos(TGC1_BigWheel_PhiStepAngle2)*sin(TGC1_BigWheel_PhiStepAngle2)+sin(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiThickRPlate" />
+
+<gvxysx name="TGC1_PhiPlate3" material="Aluminium" dZ="TGC1_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC1_PhiPlate3_XPos3; TGC1_BigWheel_RadDist03+TGC1_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate3_XPos2+TGC1_BigWheel_RThickPhiPlate2*sin(TGC1_BigWheel_PhiStepAngle2)+(TGC1_BigWheel_PhiStepP2toP2-TGC1_BigWheel_PhiStep2toP1)*cos(TGC1_BigWheel_PhiStepAngle2); TGC1_PhiPlate3_YPos2+TGC1_BigWheel_RThickPhiPlate2*cos(TGC1_BigWheel_PhiStepAngle2)-(TGC1_BigWheel_PhiStepP2toP2-TGC1_BigWheel_PhiStep2toP1)*sin(TGC1_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate3_XPos2+(TGC1_BigWheel_PhiStepP2toP2-TGC1_BigWheel_PhiStep2toP1)*cos(TGC1_BigWheel_PhiStepAngle2); TGC1_PhiPlate3_YPos2-(TGC1_BigWheel_PhiStepP2toP2-TGC1_BigWheel_PhiStep2toP1)*sin(TGC1_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate3_XPos1; TGC1_BigWheel_RadDist03"/>
+</gvxysx>
+
+<!-- third phi plate with kink - plate 4 -->
+<var name="TGC1_PhiPlate4_XPos1"  value="tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RadDist04-TGC1_BigWheel_PhiStep1toP1/cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/cos(TGC1_BigWheel_PhiStepAngle2)/2." />
+<var name="TGC1_PhiPlate4_XPos3"  value="tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RadDist04-TGC1_BigWheel_PhiStep1toP1/cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/cos(TGC1_BigWheel_PhiStepAngle2)/2.+tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RThickPhiPlate2" />
+<var name="TGC1_PhiPlate4_XPos2"  value="TGC1_PhiPlate4_XPos1+(TGC1_BigWheel_RadDist04*tan(TGC1_BigWheel_PhiStepAngle2)-TGC1_PhiPlate4_XPos1)*cos(TGC1_BigWheel_PhiStepAngle2)*cos(TGC1_BigWheel_PhiStepAngle2)" />
+<var name="TGC1_PhiPlate4_YPos2"  value="TGC1_BigWheel_RadDist04-(TGC1_BigWheel_RadDist04*tan(TGC1_BigWheel_PhiStepAngle2)-TGC1_PhiPlate4_XPos1)*cos(TGC1_BigWheel_PhiStepAngle2)*sin(TGC1_BigWheel_PhiStepAngle2)" />
+
+<gvxysx name="TGC1_PhiPlate4_Even" material="Aluminium" dZ="TGC1_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC1_PhiPlate4_XPos3; TGC1_BigWheel_RadDist04+TGC1_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate4_XPos2+TGC1_BigWheel_RThickPhiPlate2*sin(TGC1_BigWheel_PhiStepAngle2)+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2); TGC1_PhiPlate4_YPos2+TGC1_BigWheel_RThickPhiPlate2*cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate4_XPos2+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2); TGC1_PhiPlate4_YPos2-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate4_XPos1; TGC1_BigWheel_RadDist04"/>
+</gvxysx>
+
+<gvxysx name="TGC1_PhiPlate4_Odd" material="Aluminium" dZ="TGC1_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC1_PhiPlate4_XPos3-tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_BigWheel_RadDist04+TGC1_BigWheel_RThickPhiPlate2-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate4_XPos2+TGC1_BigWheel_RThickPhiPlate2*sin(TGC1_BigWheel_PhiStepAngle2)+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2)-tan(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_PhiPlate4_YPos2+TGC1_BigWheel_RThickPhiPlate2*cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate4_XPos2+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2)-tan(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_PhiPlate4_YPos2-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate4_XPos1-tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_BigWheel_RadDist04-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+</gvxysx>
+
+<!-- forth phi plate with kink - plate 5 -->
+<var name="TGC1_PhiPlate5_XPos1"  value="tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RadDist05-TGC1_BigWheel_PhiStep1toP1/cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/cos(TGC1_BigWheel_PhiStepAngle2)/2." />
+<var name="TGC1_PhiPlate5_XPos3"  value="tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RadDist05-TGC1_BigWheel_PhiStep1toP1/cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/cos(TGC1_BigWheel_PhiStepAngle2)/2.+tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RThickPhiPlate2" />
+<var name="TGC1_PhiPlate5_XPos2"  value="TGC1_PhiPlate5_XPos1+(TGC1_BigWheel_RadDist05*tan(TGC1_BigWheel_PhiStepAngle2)-TGC1_PhiPlate5_XPos1)*cos(TGC1_BigWheel_PhiStepAngle2)*cos(TGC1_BigWheel_PhiStepAngle2)-cos(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiThickRPlate" />
+<var name="TGC1_PhiPlate5_YPos2"  value="TGC1_BigWheel_RadDist05-(TGC1_BigWheel_RadDist05*tan(TGC1_BigWheel_PhiStepAngle2)-TGC1_PhiPlate5_XPos1)*cos(TGC1_BigWheel_PhiStepAngle2)*sin(TGC1_BigWheel_PhiStepAngle2)+sin(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiThickRPlate" />
+
+<gvxysx name="TGC1_PhiPlate5" material="Aluminium" dZ="TGC1_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC1_PhiPlate5_XPos3; TGC1_BigWheel_RadDist05+TGC1_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate5_XPos2+TGC1_BigWheel_RThickPhiPlate2*sin(TGC1_BigWheel_PhiStepAngle2)+(TGC1_BigWheel_PhiStepP2toP2-TGC1_BigWheel_PhiStep2toP1)*cos(TGC1_BigWheel_PhiStepAngle2); TGC1_PhiPlate5_YPos2+TGC1_BigWheel_RThickPhiPlate2*cos(TGC1_BigWheel_PhiStepAngle2)-(TGC1_BigWheel_PhiStepP2toP2-TGC1_BigWheel_PhiStep2toP1)*sin(TGC1_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate5_XPos2+(TGC1_BigWheel_PhiStepP2toP2-TGC1_BigWheel_PhiStep2toP1)*cos(TGC1_BigWheel_PhiStepAngle2); TGC1_PhiPlate5_YPos2-(TGC1_BigWheel_PhiStepP2toP2-TGC1_BigWheel_PhiStep2toP1)*sin(TGC1_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate5_XPos1; TGC1_BigWheel_RadDist05"/>
+</gvxysx>
+
+<!-- fifth phi plate with kink - plate 6 -->
+<var name="TGC1_PhiPlate6_XPos1"  value="tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RadDist06-TGC1_BigWheel_PhiStep1toP1/cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/cos(TGC1_BigWheel_PhiStepAngle2)/2." />
+<var name="TGC1_PhiPlate6_XPos3"  value="tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RadDist06-TGC1_BigWheel_PhiStep1toP1/cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/cos(TGC1_BigWheel_PhiStepAngle2)/2.+tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RThickPhiPlate2" />
+<var name="TGC1_PhiPlate6_XPos2"  value="TGC1_PhiPlate6_XPos1+(TGC1_BigWheel_RadDist06*tan(TGC1_BigWheel_PhiStepAngle2)-TGC1_PhiPlate6_XPos1)*cos(TGC1_BigWheel_PhiStepAngle2)*cos(TGC1_BigWheel_PhiStepAngle2)" />
+<var name="TGC1_PhiPlate6_YPos2"  value="TGC1_BigWheel_RadDist06-(TGC1_BigWheel_RadDist06*tan(TGC1_BigWheel_PhiStepAngle2)-TGC1_PhiPlate6_XPos1)*cos(TGC1_BigWheel_PhiStepAngle2)*sin(TGC1_BigWheel_PhiStepAngle2)" />
+
+<gvxysx name="TGC1_PhiPlate6_Even" material="Aluminium" dZ="TGC1_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC1_PhiPlate6_XPos3; TGC1_BigWheel_RadDist06+TGC1_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate6_XPos2+TGC1_BigWheel_RThickPhiPlate2*sin(TGC1_BigWheel_PhiStepAngle2)+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2); TGC1_PhiPlate6_YPos2+TGC1_BigWheel_RThickPhiPlate2*cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate6_XPos2+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2); TGC1_PhiPlate6_YPos2-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate6_XPos1; TGC1_BigWheel_RadDist06"/>
+</gvxysx>
+
+<gvxysx name="TGC1_PhiPlate6_Odd" material="Aluminium" dZ="TGC1_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC1_PhiPlate6_XPos3-tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_BigWheel_RadDist06+TGC1_BigWheel_RThickPhiPlate2-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate6_XPos2+TGC1_BigWheel_RThickPhiPlate2*sin(TGC1_BigWheel_PhiStepAngle2)+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2)-tan(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_PhiPlate6_YPos2+TGC1_BigWheel_RThickPhiPlate2*cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate6_XPos2+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2)-tan(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_PhiPlate6_YPos2-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate6_XPos1-tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_BigWheel_RadDist06-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+</gvxysx>
+
+<!-- sixth phi plate with kink - plate 7 -->
+<var name="TGC1_PhiPlate7_XPos1"  value="tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RadDist07-TGC1_BigWheel_PhiStep1toP1/cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/cos(TGC1_BigWheel_PhiStepAngle2)/2." />
+<var name="TGC1_PhiPlate7_XPos3"  value="tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RadDist07-TGC1_BigWheel_PhiStep1toP1/cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/cos(TGC1_BigWheel_PhiStepAngle2)/2.+tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RThickPhiPlate2" />
+<var name="TGC1_PhiPlate7_XPos2"  value="TGC1_PhiPlate7_XPos1+(TGC1_BigWheel_RadDist07*tan(TGC1_BigWheel_PhiStepAngle2)-TGC1_PhiPlate7_XPos1)*cos(TGC1_BigWheel_PhiStepAngle2)*cos(TGC1_BigWheel_PhiStepAngle2)-cos(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiThickRPlate" />
+<var name="TGC1_PhiPlate7_YPos2"  value="TGC1_BigWheel_RadDist07-(TGC1_BigWheel_RadDist07*tan(TGC1_BigWheel_PhiStepAngle2)-TGC1_PhiPlate7_XPos1)*cos(TGC1_BigWheel_PhiStepAngle2)*sin(TGC1_BigWheel_PhiStepAngle2)+sin(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiThickRPlate" />
+
+<gvxysx name="TGC1_PhiPlate7" material="Aluminium" dZ="TGC1_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC1_PhiPlate7_XPos3; TGC1_BigWheel_RadDist07+TGC1_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate7_XPos2+TGC1_BigWheel_RThickPhiPlate2*sin(TGC1_BigWheel_PhiStepAngle2)+(TGC1_BigWheel_PhiStepP2toP2-TGC1_BigWheel_PhiStep2toP1)*cos(TGC1_BigWheel_PhiStepAngle2); TGC1_PhiPlate7_YPos2+TGC1_BigWheel_RThickPhiPlate2*cos(TGC1_BigWheel_PhiStepAngle2)-(TGC1_BigWheel_PhiStepP2toP2-TGC1_BigWheel_PhiStep2toP1)*sin(TGC1_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate7_XPos2+(TGC1_BigWheel_PhiStepP2toP2-TGC1_BigWheel_PhiStep2toP1)*cos(TGC1_BigWheel_PhiStepAngle2); TGC1_PhiPlate7_YPos2-(TGC1_BigWheel_PhiStepP2toP2-TGC1_BigWheel_PhiStep2toP1)*sin(TGC1_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate7_XPos1; TGC1_BigWheel_RadDist07"/>
+</gvxysx>
+
+<!-- seventh phi plate with kink - plate 8 -->
+<var name="TGC1_PhiPlate8_XPos1"  value="tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RadDist08-TGC1_BigWheel_PhiStep1toP1/cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/cos(TGC1_BigWheel_PhiStepAngle2)/2." />
+<var name="TGC1_PhiPlate8_XPos3"  value="tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RadDist08-TGC1_BigWheel_PhiStep1toP1/cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/cos(TGC1_BigWheel_PhiStepAngle2)/2.+tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_RThickPhiPlate2" />
+<var name="TGC1_PhiPlate8_XPos2"  value="TGC1_PhiPlate8_XPos1+(TGC1_BigWheel_RadDist08*tan(TGC1_BigWheel_PhiStepAngle2)-TGC1_PhiPlate8_XPos1)*cos(TGC1_BigWheel_PhiStepAngle2)*cos(TGC1_BigWheel_PhiStepAngle2)" />
+<var name="TGC1_PhiPlate8_YPos2"  value="TGC1_BigWheel_RadDist08-(TGC1_BigWheel_RadDist08*tan(TGC1_BigWheel_PhiStepAngle2)-TGC1_PhiPlate8_XPos1)*cos(TGC1_BigWheel_PhiStepAngle2)*sin(TGC1_BigWheel_PhiStepAngle2)" />
+
+<gvxysx name="TGC1_PhiPlate8_Even" material="Aluminium" dZ="TGC1_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC1_PhiPlate8_XPos3; TGC1_BigWheel_RadDist08+TGC1_BigWheel_RThickPhiPlate2"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate8_XPos2+TGC1_BigWheel_RThickPhiPlate2*sin(TGC1_BigWheel_PhiStepAngle2)+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2); TGC1_PhiPlate8_YPos2+TGC1_BigWheel_RThickPhiPlate2*cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate8_XPos2+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2); TGC1_PhiPlate8_YPos2-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate8_XPos1; TGC1_BigWheel_RadDist08"/>
+</gvxysx>
+
+<gvxysx name="TGC1_PhiPlate8_Odd" material="Aluminium" dZ="TGC1_BigWheel_WallThickPhiPlate" >
+  <gvxy_point X_Y="  TGC1_PhiPlate8_XPos3-tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_BigWheel_RadDist08+TGC1_BigWheel_RThickPhiPlate2-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate8_XPos2+TGC1_BigWheel_RThickPhiPlate2*sin(TGC1_BigWheel_PhiStepAngle2)+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2)-tan(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_PhiPlate8_YPos2+TGC1_BigWheel_RThickPhiPlate2*cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate8_XPos2+TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2)-tan(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_PhiPlate8_YPos2-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+  <gvxy_point X_Y="  TGC1_PhiPlate8_XPos1-tan(TGC1_BigWheel_PhiStepAngle1)*TGC1_BigWheel_PhiPlaDelEvenOdd; TGC1_BigWheel_RadDist08-TGC1_BigWheel_PhiPlaDelEvenOdd"/>
+</gvxysx>
+
+<!-- first R plate - center -->
+<box name="TGC1_RPlate1_base" material="Aluminium"   X_Y_Z=" TGC1_BigWheel_PhiThickRPlate; TGC1_BigWheel_RadDist09-TGC1_BigWheel_RadDistPlate02-TGC1_BigWheel_RadDist00; TGC1_BigWheel_ZThickRPlate" />
+<box name="TGC1_RPlate1_sub"  material="Aluminium"   X_Y_Z=" TGC1_BigWheel_PhiThickRPlate; TGC1_BigWheel_RadDist09-TGC1_BigWheel_RadDistPlate02-TGC1_BigWheel_RadDist00+TGC1_BigWheel_WallThickRPlate; TGC1_BigWheel_ZThickRPlate-2.*TGC1_BigWheel_WallThickRPlate" />
+
+<subtraction name="TGC1_RPlate1">
+  <posXYZ volume="TGC1_RPlate1_base" X_Y_Z=" TGC1_BigWheel_PhiDistRPlate1/2.+TGC1_BigWheel_PhiThickRPlate/2.; (TGC1_BigWheel_RadDist09+TGC1_BigWheel_RadDistPlate02-TGC1_BigWheel_RadDist00)/2.; 0." />
+  <posXYZ volume="TGC1_RPlate1_sub"  X_Y_Z=" TGC1_BigWheel_PhiDistRPlate1/2.+TGC1_BigWheel_PhiThickRPlate/2.+TGC1_BigWheel_WallThickRPlate; (TGC1_BigWheel_RadDist09+TGC1_BigWheel_RadDistPlate02-TGC1_BigWheel_RadDist00)/2.; 0." />
+</subtraction>
+
+<!-- second R plate - 7.5 degrees -->
+<box name="TGC1_RPlate2_base" material="Aluminium"   X_Y_Z=" TGC1_BigWheel_PhiThickRPlate; (TGC1_BigWheel_RadDist09-TGC1_BigWheel_RadDistPlate02-TGC1_BigWheel_RadDist00)/cos(TGC1_BigWheel_PhiStepAngle1); TGC1_BigWheel_ZThickRPlate" />
+<box name="TGC1_RPlate2_sub"  material="Aluminium"   X_Y_Z=" TGC1_BigWheel_PhiThickRPlate; (TGC1_BigWheel_RadDist09-TGC1_BigWheel_RadDistPlate02-TGC1_BigWheel_RadDist00+TGC1_BigWheel_WallThickRPlate)/cos(TGC1_BigWheel_PhiStepAngle1); TGC1_BigWheel_ZThickRPlate-2.*TGC1_BigWheel_WallThickRPlate" />
+
+<subtraction name="TGC1_RPlate2">
+  <posXYZ volume="TGC1_RPlate2_base" X_Y_Z=" TGC1_PhiPlate2_XPos1+(TGC1_BigWheel_RadDist09+TGC1_BigWheel_RadDistPlate02-TGC1_BigWheel_RadDist00-2.*TGC1_BigWheel_RadDist02)*tan(TGC1_BigWheel_PhiStepAngle1)/2.; (TGC1_BigWheel_RadDist09+TGC1_BigWheel_RadDistPlate02-TGC1_BigWheel_RadDist00)/2.; 0." rot=" 0.;   0.; -TGC1_BigWheel_PhiStepAngle1/GENV_PiS180" />
+  <posXYZ volume="TGC1_RPlate2_sub"  X_Y_Z=" TGC1_PhiPlate2_XPos1+(TGC1_BigWheel_RadDist09+TGC1_BigWheel_RadDistPlate02-TGC1_BigWheel_RadDist00-2.*TGC1_BigWheel_RadDist02)*tan(TGC1_BigWheel_PhiStepAngle1)/2.-TGC1_BigWheel_WallThickRPlate; (TGC1_BigWheel_RadDist09+TGC1_BigWheel_RadDistPlate02-TGC1_BigWheel_RadDist00)/2.; 0." rot=" 0.;   0.; -TGC1_BigWheel_PhiStepAngle1/GENV_PiS180" />
+</subtraction>
+
+<!-- third R plate - 7.5 degrees TGC1_BigWheel_PhiThickRPlate-->
+<var name="TGC1_RPlate3_length"  value="(TGC1_BigWheel_RadDist09 - TGC1_BigWheel_RadDist00 - (TGC1_PhiPlate2_YPos2-TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)) - (TGC1_BigWheel_PhiStep2toP1 + TGC1_BigWheel_PhiThickRPlate) * sin(TGC1_BigWheel_PhiStepAngle2) ) / cos(TGC1_BigWheel_PhiStepAngle1)" />
+
+<box name="TGC1_RPlate3_base" material="Aluminium"   X_Y_Z=" TGC1_BigWheel_PhiThickRPlate; TGC1_RPlate3_length; TGC1_BigWheel_ZThickRPlate" />
+<box name="TGC1_RPlate3_sub1"  material="Aluminium"   X_Y_Z=" TGC1_BigWheel_PhiThickRPlate; TGC1_RPlate3_length + TGC1_BigWheel_WallThickRPlate/cos(TGC1_BigWheel_PhiStepAngle1); TGC1_BigWheel_ZThickRPlate-2.*TGC1_BigWheel_WallThickRPlate" />
+<box name="TGC1_RPlate3_sub2"  material="Aluminium"   X_Y_Z=" TGC1_BigWheel_PhiThickRPlate; TGC1_RPlate3_length; TGC1_BigWheel_ZThickRPlate+2.*TGC1_BigWheel_WallThickRPlate" />
+
+<subtraction name="TGC1_RPlate3_tmp">
+  <posXYZ volume="TGC1_RPlate3_base" X_Y_Z=" TGC1_RPlate3_length/2.*sin(TGC1_BigWheel_PhiStepAngle1); TGC1_RPlate3_length/2.*cos(TGC1_BigWheel_PhiStepAngle1); 0." rot=" 0.;   0.; -TGC1_BigWheel_PhiStepAngle1/GENV_PiS180" />
+  <posXYZ volume="TGC1_RPlate3_sub1"  X_Y_Z=" TGC1_RPlate3_length/2.*sin(TGC1_BigWheel_PhiStepAngle1)-TGC1_BigWheel_WallThickRPlate; TGC1_RPlate3_length/2.*cos(TGC1_BigWheel_PhiStepAngle1); 0." rot=" 0.; 0.; -TGC1_BigWheel_PhiStepAngle1/GENV_PiS180" />
+  <posXYZ volume="TGC1_RPlate3_sub2" X_Y_Z="TGC1_RPlate3_length/2.*sin(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/2*(cos(TGC1_BigWheel_PhiStepAngle1)-cos(TGC1_BigWheel_PhiStepAngle2));TGC1_RPlate3_length/2.*cos(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_PhiThickRPlate/2*(sin(TGC1_BigWheel_PhiStepAngle2)-sin(TGC1_BigWheel_PhiStepAngle1)); 0." rot=" 0.; 0.; -TGC1_BigWheel_PhiStepAngle2/GENV_PiS180" />
+</subtraction>
+
+<var name="TGC1_RPlate3_PosX" value="TGC1_PhiPlate2_XPos2+(TGC1_BigWheel_PhiStepP2toP2-TGC1_BigWheel_PhiStep2toP1)*cos(TGC1_BigWheel_PhiStepAngle2)+TGC1_BigWheel_PhiThickRPlate*(0.5*cos(TGC1_BigWheel_PhiStepAngle1)-cos(TGC1_BigWheel_PhiStepAngle2))-cos(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiThickRPlate" />
+
+<var name="TGC1_RPlate3_PosY" value="TGC1_PhiPlate2_YPos2+(TGC1_BigWheel_PhiStep2toP1-TGC1_BigWheel_PhiStepP2toP2)*sin(TGC1_BigWheel_PhiStepAngle2)+TGC1_BigWheel_PhiThickRPlate*(sin(TGC1_BigWheel_PhiStepAngle2)-0.5*sin(TGC1_BigWheel_PhiStepAngle1))+sin(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiThickRPlate" />
+
+<composition name="TGC1_RPlate3" >
+  <posXYZ  volume="TGC1_RPlate3_tmp" X_Y_Z=" TGC1_RPlate3_PosX-GENV_Eps; TGC1_RPlate3_PosY ; 0." />
+</composition>
+
+<!-- first R plate - 15 degrees -->
+<box name="TGC1_RPlate4_base" material="Aluminium"   X_Y_Z=" TGC1_BigWheel_PhiThickRPlate; (TGC1_BigWheel_RadDist09-TGC1_BigWheel_RadDist00)/cos(TGC1_BigWheel_PhiStepAngle2); TGC1_BigWheel_ZThickRPlate" />
+<box name="TGC1_RPlate4_sub"  material="Aluminium"   X_Y_Z=" TGC1_BigWheel_PhiThickRPlate; (TGC1_BigWheel_RadDist09-TGC1_BigWheel_RadDist00+TGC1_BigWheel_WallThickRPlate)/cos(TGC1_BigWheel_PhiStepAngle2); TGC1_BigWheel_ZThickRPlate-2.*TGC1_BigWheel_WallThickRPlate" />
+
+<subtraction name="TGC1_RPlate4">
+  <posXYZ volume="TGC1_RPlate4_base" X_Y_Z=" (TGC1_BigWheel_RadDist09-TGC1_BigWheel_RadDist00)*tan(TGC1_BigWheel_PhiStepAngle2)/2.+(TGC1_BigWheel_PhiStepP2toP2-TGC1_BigWheel_PhiStep2toP1-1.5*TGC1_BigWheel_PhiThickRPlate)/cos(TGC1_BigWheel_PhiStepAngle2); (TGC1_BigWheel_RadDist09-TGC1_BigWheel_RadDist00)/2.; 0." rot=" 0.;   0.; -TGC1_BigWheel_PhiStepAngle2/GENV_PiS180" />
+  <posXYZ volume="TGC1_RPlate4_sub"  X_Y_Z=" (TGC1_BigWheel_RadDist09-TGC1_BigWheel_RadDist00)*tan(TGC1_BigWheel_PhiStepAngle2)/2.-TGC1_BigWheel_WallThickRPlate+(TGC1_BigWheel_PhiStepP2toP2-TGC1_BigWheel_PhiStep2toP1-1.5*TGC1_BigWheel_PhiThickRPlate)/cos(TGC1_BigWheel_PhiStepAngle2); (TGC1_BigWheel_RadDist09-TGC1_BigWheel_RadDist00)/2.; 0." rot=" 0.;   0.; -TGC1_BigWheel_PhiStepAngle2/GENV_PiS180" />
+</subtraction>
+
+<!-- second R plate - 15 degrees -->
+<box name="TGC1_RPlate5_base" material="Aluminium"   X_Y_Z=" TGC1_BigWheel_PhiThickRPlate; (TGC1_BigWheel_RadDist09-cos(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_RadDistOutPlate)/cos(TGC1_BigWheel_PhiStepAngle2); TGC1_BigWheel_ZThickRPlate" />
+<box name="TGC1_RPlate5_sub"  material="Aluminium"   X_Y_Z=" TGC1_BigWheel_PhiThickRPlate; (TGC1_BigWheel_RadDist09-cos(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_RadDistOutPlate)/cos(TGC1_BigWheel_PhiStepAngle2)+TGC1_BigWheel_WallThickRPlate; TGC1_BigWheel_ZThickRPlate-2.*TGC1_BigWheel_WallThickRPlate" />
+
+<var name="TGC1_RPlate5_PosX" value="sin(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_RadDistOutPlate/2. +TGC1_PhiPlate2_XPos2 +TGC1_BigWheel_PhiStepP2toP2*cos(TGC1_BigWheel_PhiStepAngle2) +tan(TGC1_BigWheel_PhiStepAngle2)*(TGC1_BigWheel_RadDist09/2.-TGC1_PhiPlate2_YPos2+TGC1_BigWheel_PhiStepP2toP2*sin(TGC1_BigWheel_PhiStepAngle2)-TGC1_BigWheel_RadDist00)"/>
+
+<subtraction name="TGC1_RPlate5">
+  <posXYZ volume="TGC1_RPlate5_base" X_Y_Z=" TGC1_RPlate5_PosX - cos(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiThickRPlate/2.; (TGC1_BigWheel_RadDist09+cos(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_RadDistOutPlate)/2. - TGC1_BigWheel_RadDist00 + sin(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiThickRPlate/2.; 0." rot=" 0.;   0.; -TGC1_BigWheel_PhiStepAngle2/GENV_PiS180" />
+  <posXYZ volume="TGC1_RPlate5_sub"  X_Y_Z=" TGC1_RPlate5_PosX - cos(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiThickRPlate/2.+TGC1_BigWheel_WallThickRPlate; (TGC1_BigWheel_RadDist09+cos(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_RadDistOutPlate)/2.- TGC1_BigWheel_RadDist00 + sin(TGC1_BigWheel_PhiStepAngle2)*TGC1_BigWheel_PhiThickRPlate/2.; 0." rot=" 0.;   0.; -TGC1_BigWheel_PhiStepAngle2/GENV_PiS180" />
+</subtraction>
+
+<!-- very rough approximation of trigger boxes and cables - everything estimated - everywhere for TGC1 -->
+<!-- change of variables does not change placement correctly - fine tuning required -->
+
+<var name="TGC1_TrigBoxThicknessZ"   value="    2.  " />
+<var name="TGC1_TrigBoxWidthPhi"     value="  260.  " />
+<var name="TGC1_TrigBoxLengthR"      value=" 3160.  " />
+
+<box name="TGC1_TrigBox" material="Aluminium" X_Y_Z="TGC1_TrigBoxWidthPhi; TGC1_TrigBoxLengthR; TGC1_TrigBoxThicknessZ" />
+
+<var name="TGC1_TrigCableThicknessZ1"   value="    4.  " />
+<var name="TGC1_TrigCableWidthPhi1"     value="  100.  " />
+<var name="TGC1_TrigCableLengthR1"      value=" 5650.  " />
+
+<box name="TGC1_TrigCable1" material="Copper" X_Y_Z=" TGC1_TrigCableWidthPhi1; TGC1_TrigCableLengthR1; TGC1_TrigCableThicknessZ1" />
+
+<composition name="TGC1_Support_EvenSector_ASide">
+  <posXYZ volume="TGC1_PhiPlate1"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate2_Even"  X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate3"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate4_Even"  X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate5"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate6_Even"  X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate7"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate8_Even"  X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_RPlate1"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate1"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate2"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate2"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate3"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate3"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate4"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate4"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate5"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate5"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+
+  <posXYZ volume="TGC1_TrigBox"         X_Y_Z=" -(TGC1_PhiPlate6_XPos1-TGC1_TrigBoxLengthR/2.*sin(TGC1_BigWheel_PhiStepAngle1)+TGC1_TrigBoxWidthPhi/8.*cos(TGC1_BigWheel_PhiStepAngle1)); -TGC1_TrigBoxLengthR/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; -TGC1_BigWheel_ZThickPhiPlate" rot="0.; 0.; TGC1_BigWheel_PhiStepAngle1/GENV_PiS180" />
+  <posXYZ volume="TGC1_TrigBox"         X_Y_Z=" -(-TGC1_TrigBoxLengthR/2.*sin(TGC1_BigWheel_PhiStepAngle1)-3.*TGC1_TrigBoxWidthPhi/4.*cos(TGC1_BigWheel_PhiStepAngle1)-TGC1_PhiPlate5_XPos2); -TGC1_TrigBoxLengthR/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; -TGC1_BigWheel_ZThickPhiPlate" rot="0.; 0.; -TGC1_BigWheel_PhiStepAngle1/GENV_PiS180" />
+
+  <posXYZ volume="TGC1_TrigCable1"      X_Y_Z="-(-TGC1_TrigCableLengthR1/2.*sin(TGC1_BigWheel_PhiStepAngle1)+TGC1_TrigCableWidthPhi1/2.*cos(TGC1_BigWheel_PhiStepAngle1) + TGC1_PhiPlate6_XPos1 + 175.); -TGC1_TrigCableWidthPhi1/2.*sin(TGC1_BigWheel_PhiStepAngle1)-TGC1_TrigCableLengthR1/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; -(TGC1_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC1_TrigCableThicknessZ1/2.)" rot="0.; 0.; TGC1_BigWheel_PhiStepAngle1/GENV_PiS180"/>
+  <posXYZ volume="TGC1_TrigCable1"      X_Y_Z="-(TGC1_TrigCableLengthR1/2.*sin(TGC1_BigWheel_PhiStepAngle1)+3.*TGC1_TrigCableWidthPhi1/2.*cos(TGC1_BigWheel_PhiStepAngle1)-TGC1_PhiPlate7_XPos2); TGC1_TrigCableWidthPhi1*sin(TGC1_BigWheel_PhiStepAngle1)-TGC1_TrigCableLengthR1/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; -(TGC1_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC1_TrigCableThicknessZ1/2.)" rot="0.; 0.; -TGC1_BigWheel_PhiStepAngle1/GENV_PiS180"/>
+
+</composition>
+
+<composition name="TGC1_Support_OddSector_ASide">
+  <posXYZ volume="TGC1_PhiPlate1"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate2_Odd"   X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate3"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate4_Odd"   X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate5"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate6_Odd"   X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate7"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate8_Odd"   X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_RPlate1"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate1"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate2"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate2"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate3"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate3"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate4"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate4"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate5"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate5"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+
+  <posXYZ volume="TGC1_TrigBox"         X_Y_Z=" -(TGC1_PhiPlate6_XPos1-TGC1_TrigBoxLengthR/2.*sin(TGC1_BigWheel_PhiStepAngle1)+TGC1_TrigBoxWidthPhi/8.*cos(TGC1_BigWheel_PhiStepAngle1)); -TGC1_TrigBoxLengthR/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; -TGC1_BigWheel_ZThickPhiPlate" rot="0.; 0.; TGC1_BigWheel_PhiStepAngle1/GENV_PiS180" />
+  <posXYZ volume="TGC1_TrigBox"         X_Y_Z=" -(-TGC1_TrigBoxLengthR/2.*sin(TGC1_BigWheel_PhiStepAngle1)-3.*TGC1_TrigBoxWidthPhi/4.*cos(TGC1_BigWheel_PhiStepAngle1)-TGC1_PhiPlate5_XPos2); -TGC1_TrigBoxLengthR/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; -TGC1_BigWheel_ZThickPhiPlate" rot="0.; 0.; -TGC1_BigWheel_PhiStepAngle1/GENV_PiS180" />
+
+  <posXYZ volume="TGC1_TrigCable1"      X_Y_Z="-(-TGC1_TrigCableLengthR1/2.*sin(TGC1_BigWheel_PhiStepAngle1)+TGC1_TrigCableWidthPhi1/2.*cos(TGC1_BigWheel_PhiStepAngle1) + TGC1_PhiPlate6_XPos1 + 175.); -TGC1_TrigCableWidthPhi1/2.*sin(TGC1_BigWheel_PhiStepAngle1)-TGC1_TrigCableLengthR1/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; -(TGC1_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC1_TrigCableThicknessZ1/2.)" rot="0.; 0.; TGC1_BigWheel_PhiStepAngle1/GENV_PiS180"/>
+  <posXYZ volume="TGC1_TrigCable1"      X_Y_Z="-(TGC1_TrigCableLengthR1/2.*sin(TGC1_BigWheel_PhiStepAngle1)+3.*TGC1_TrigCableWidthPhi1/2.*cos(TGC1_BigWheel_PhiStepAngle1)-TGC1_PhiPlate7_XPos2); TGC1_TrigCableWidthPhi1*sin(TGC1_BigWheel_PhiStepAngle1)-TGC1_TrigCableLengthR1/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; -(TGC1_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC1_TrigCableThicknessZ1/2.)" rot="0.; 0.; -TGC1_BigWheel_PhiStepAngle1/GENV_PiS180"/>
+
+</composition>
+
+<composition name="TGC1_Support_EvenSector_CSide">
+  <posXYZ volume="TGC1_PhiPlate1"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate2_Even"  X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate3"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate4_Even"  X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate5"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate6_Even"  X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate7"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate8_Even"  X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_RPlate1"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate1"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate2"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate2"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate3"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate3"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate4"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate4"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate5"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate5"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+
+  <posXYZ volume="TGC1_TrigBox"         X_Y_Z=" -(TGC1_PhiPlate6_XPos1-TGC1_TrigBoxLengthR/2.*sin(TGC1_BigWheel_PhiStepAngle1)+TGC1_TrigBoxWidthPhi/8.*cos(TGC1_BigWheel_PhiStepAngle1)); -TGC1_TrigBoxLengthR/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; TGC1_BigWheel_ZThickPhiPlate" rot="0.; 0.; TGC1_BigWheel_PhiStepAngle1/GENV_PiS180" />
+  <posXYZ volume="TGC1_TrigBox"         X_Y_Z=" -(-TGC1_TrigBoxLengthR/2.*sin(TGC1_BigWheel_PhiStepAngle1)-3.*TGC1_TrigBoxWidthPhi/4.*cos(TGC1_BigWheel_PhiStepAngle1)-TGC1_PhiPlate5_XPos2); -TGC1_TrigBoxLengthR/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; TGC1_BigWheel_ZThickPhiPlate" rot="0.; 0.; -TGC1_BigWheel_PhiStepAngle1/GENV_PiS180" />
+
+  <posXYZ volume="TGC1_TrigCable1"      X_Y_Z="-(-TGC1_TrigCableLengthR1/2.*sin(TGC1_BigWheel_PhiStepAngle1)+TGC1_TrigCableWidthPhi1/2.*cos(TGC1_BigWheel_PhiStepAngle1) + TGC1_PhiPlate6_XPos1 + 175.); -TGC1_TrigCableWidthPhi1/2.*sin(TGC1_BigWheel_PhiStepAngle1)-TGC1_TrigCableLengthR1/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; TGC1_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC1_TrigCableThicknessZ1/2." rot="0.; 0.; TGC1_BigWheel_PhiStepAngle1/GENV_PiS180"/>
+  <posXYZ volume="TGC1_TrigCable1"      X_Y_Z="-(TGC1_TrigCableLengthR1/2.*sin(TGC1_BigWheel_PhiStepAngle1)+3.*TGC1_TrigCableWidthPhi1/2.*cos(TGC1_BigWheel_PhiStepAngle1)-TGC1_PhiPlate7_XPos2); TGC1_TrigCableWidthPhi1*sin(TGC1_BigWheel_PhiStepAngle1)-TGC1_TrigCableLengthR1/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; TGC1_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC1_TrigCableThicknessZ1/2." rot="0.; 0.; -TGC1_BigWheel_PhiStepAngle1/GENV_PiS180"/>
+
+</composition>
+
+<composition name="TGC1_Support_OddSector_CSide">
+  <posXYZ volume="TGC1_PhiPlate1"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate2_Odd"   X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate3"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate4_Odd"   X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate5"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate6_Odd"   X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate7"       X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_PhiPlate8_Odd"   X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; 0." />
+  <posXYZ volume="TGC1_RPlate1"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate1"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate2"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate2"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate3"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate3"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate4"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate4"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+  <posXYZ volume="TGC1_RPlate5"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00; -TGC1_BigWheel_ZThickPhiPlate-TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.;   0.; 0."/>
+  <posXYZ volume="TGC1_RPlate5"         X_Y_Z=" 0.; TGC1_BigWheel_RadDist00;  TGC1_BigWheel_ZThickPhiPlate+TGC1_BigWheel_ZThickRPlate/2."   rot=" 0.; 180.; 0."/>
+
+  <posXYZ volume="TGC1_TrigBox"         X_Y_Z=" -(TGC1_PhiPlate6_XPos1-TGC1_TrigBoxLengthR/2.*sin(TGC1_BigWheel_PhiStepAngle1)+TGC1_TrigBoxWidthPhi/8.*cos(TGC1_BigWheel_PhiStepAngle1)); -TGC1_TrigBoxLengthR/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; TGC1_BigWheel_ZThickPhiPlate" rot="0.; 0.; TGC1_BigWheel_PhiStepAngle1/GENV_PiS180" />
+  <posXYZ volume="TGC1_TrigBox"         X_Y_Z=" -(-TGC1_TrigBoxLengthR/2.*sin(TGC1_BigWheel_PhiStepAngle1)-3.*TGC1_TrigBoxWidthPhi/4.*cos(TGC1_BigWheel_PhiStepAngle1)-TGC1_PhiPlate5_XPos2); -TGC1_TrigBoxLengthR/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; TGC1_BigWheel_ZThickPhiPlate" rot="0.; 0.; -TGC1_BigWheel_PhiStepAngle1/GENV_PiS180" />
+
+  <posXYZ volume="TGC1_TrigCable1"      X_Y_Z="-(-TGC1_TrigCableLengthR1/2.*sin(TGC1_BigWheel_PhiStepAngle1)+TGC1_TrigCableWidthPhi1/2.*cos(TGC1_BigWheel_PhiStepAngle1) + TGC1_PhiPlate6_XPos1 + 175.); -TGC1_TrigCableWidthPhi1/2.*sin(TGC1_BigWheel_PhiStepAngle1)-TGC1_TrigCableLengthR1/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; TGC1_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC1_TrigCableThicknessZ1/2." rot="0.; 0.; TGC1_BigWheel_PhiStepAngle1/GENV_PiS180"/>
+  <posXYZ volume="TGC1_TrigCable1"      X_Y_Z="-(TGC1_TrigCableLengthR1/2.*sin(TGC1_BigWheel_PhiStepAngle1)+3.*TGC1_TrigCableWidthPhi1/2.*cos(TGC1_BigWheel_PhiStepAngle1)-TGC1_PhiPlate7_XPos2); TGC1_TrigCableWidthPhi1*sin(TGC1_BigWheel_PhiStepAngle1)-TGC1_TrigCableLengthR1/2.*cos(TGC1_BigWheel_PhiStepAngle1)+TGC1_BigWheel_RadDist09; TGC1_BigWheel_WallThickPhiPlate/2.+GENV_Eps+TGC1_TrigCableThicknessZ1/2." rot="0.; 0.; -TGC1_BigWheel_PhiStepAngle1/GENV_PiS180"/>
+
+</composition>
+
+<!-- tube and boxes are rather rouhg approximated here - should be okay though - Cavern Background only -->
+
+<tubs name="TGC1_CentralTube" material="Aluminium" Rio_Z="TGC1_BigWheel_TubeInnerR; TGC1_BigWheel_TubeOuterR; TGC1_BigWheel_WallThickPhiPlate" nbPhi="20" />
+
+<box name="TGC1_SurBox_base" material="Aluminium" X_Y_Z=" 2.*TGC1_BigWheel_RadDist09*tan(TGC1_BigWheel_PhiStepAngle2); TGC_BigWheel_SurBoxSideLength; TGC_BigWheel_SurBoxSideLength" />
+<box name="TGC1_SurBox_inner" material="Aluminium" X_Y_Z=" 2.*TGC1_BigWheel_RadDist09*tan(TGC1_BigWheel_PhiStepAngle2)+2.*GENV_Eps; TGC_BigWheel_SurBoxSideLength-2.*TGC_BigWheel_SurBoxSpcWall; TGC_BigWheel_SurBoxSideLength-2.*TGC_BigWheel_SurBoxSpcWall" />
+
+<subtraction name="TGC1_SurBox_default" >
+  <posXYZ volume="TGC1_SurBox_base"  X_Y_Z=" 0.; TGC1_BigWheel_RadDist09+TGC_BigWheel_SurBoxSideLength; 0." />
+  <posXYZ volume="TGC1_SurBox_inner"  X_Y_Z=" 0.; TGC1_BigWheel_RadDist09+TGC_BigWheel_SurBoxSideLength; 0." />
+</subtraction>
+
+<box name="TGC1_SurBoxSpc_base" material="Aluminium" X_Y_Z=" 2.*TGC1_BigWheel_RadDist09*tan(TGC1_BigWheel_PhiStepAngle2); TGC_BigWheel_SurBoxSpcLength; TGC_BigWheel_SurBoxSpcHeight" />
+<box name="TGC1_SurBoxSpc_inner" material="Aluminium" X_Y_Z="  2.*TGC1_BigWheel_RadDist09*tan(TGC1_BigWheel_PhiStepAngle2)+2.*GENV_Eps; TGC_BigWheel_SurBoxSpcLength-2.*TGC_BigWheel_SurBoxSpcWall; TGC_BigWheel_SurBoxSpcHeight" />
+
+<subtraction name="TGC1_SurBoxSpc" >
+  <posXYZ volume="TGC1_SurBoxSpc_base"   X_Y_Z=" 0.; TGC1_BigWheel_RadDist09+1.5*TGC_BigWheel_SurBoxSideLength+TGC_BigWheel_SurBoxDistance/2.; TGC_BigWheel_SurBoxSideLength/2.+TGC_BigWheel_SurBoxSpcHeight/2." />
+  <posXYZ volume="TGC1_SurBoxSpc_inner"  X_Y_Z=" 0.; TGC1_BigWheel_RadDist09+1.5*TGC_BigWheel_SurBoxSideLength+TGC_BigWheel_SurBoxDistance/2.; TGC_BigWheel_SurBoxSideLength/2.+TGC_BigWheel_SurBoxSpcHeight/2.-TGC_BigWheel_SurBoxSpcWall" />
+</subtraction>
+
+<composition name="TGC1_SurBox_extended" >
+  <posXYZ volume="TGC1_SurBox_default"  X_Y_Z=" 0.; TGC_BigWheel_SurBoxSideLength + TGC_BigWheel_SurBoxDistance; 0." />
+  <posXYZ volume="TGC1_SurBoxSpc"       X_Y_Z=" 0.; 0.;  GENV_Eps" />
+  <posXYZ volume="TGC1_SurBoxSpc"       X_Y_Z=" 0.; 0.; -GENV_Eps" rot=" 0.; 180.; 0."/>
+</composition>
+
+<composition name="TGC1_BigWheel_ASide">
+  <foreach  index="counter"  begin="0"  loops="6" >
+    <posXYZ volume="TGC1_Support_EvenSector_ASide"  X_Y_Z=" 0.; 0.; TGC1_BigWheel_ZPosL" rot="0.; 0.; counter*60." />
+    <posXYZ volume="TGC1_Support_OddSector_ASide"   X_Y_Z=" 0.; 0.; TGC1_BigWheel_ZPosL" rot="0.; 0.; 30.+(counter)*60." />
+  </foreach>
+  <foreach  index="counter"  begin="0"  loops="12" >
+    <posXYZ volume="TGC1_SurBox_default"   X_Y_Z=" 0.; 0.; TGC1_BigWheel_ZPosL" rot="0.; 0.; counter*30." />
+    <posXYZ volume="TGC1_SurBox_extended"  X_Y_Z=" 0.; 0.; TGC1_BigWheel_ZPosL" rot="0.; 0.; counter*30." />
+  </foreach>
+  <posXYZ volume="TGC1_CentralTube"   X_Y_Z=" 0.; 0.; TGC1_BigWheel_ZPosL" />
+</composition>
+
+<composition name="TGC1_BigWheel_CSide">
+  <foreach  index="counter"  begin="0"  loops="6" >
+    <posXYZ volume="TGC1_Support_EvenSector_CSide"  X_Y_Z=" 0.; 0.; -TGC1_BigWheel_ZPosL" rot="0.; 0.; counter*60." />
+    <posXYZ volume="TGC1_Support_OddSector_CSide"   X_Y_Z=" 0.; 0.; -TGC1_BigWheel_ZPosL" rot="0.; 0.; 30.+(counter)*60." />
+  </foreach>
+  <foreach  index="counter"  begin="0"  loops="12" >
+    <posXYZ volume="TGC1_SurBox_default"   X_Y_Z=" 0.; 0.; -TGC1_BigWheel_ZPosL" rot="0.; 0.; counter*30." />
+    <posXYZ volume="TGC1_SurBox_extended"  X_Y_Z=" 0.; 0.; -TGC1_BigWheel_ZPosL" rot="0.; 0.; counter*30." />
+  </foreach>
+  <posXYZ volume="TGC1_CentralTube"   X_Y_Z=" 0.; 0.; -TGC1_BigWheel_ZPosL" />
+</composition>
+
+<composition name="TGC1_BigWheels">
+  <posXYZ volume="TGC1_BigWheel_ASide" X_Y_Z=" 0.; 0.; 0." />
+  <posXYZ volume="TGC1_BigWheel_CSide" X_Y_Z=" 0.; 0.; 0." />
+</composition>
+
+</section>
+
+<section name       = "MdtRailSupport"
+         version    = "1.0"
+         date       = "21 10 2010"
+         author     = "Claude, Jochen, laurent"
+         top_volume = "MDTRail">
+<defaults   unit_length="mm"   />
+
+<var name="Zero"             value="  0"/>
+
+<var  name="R_BOL_rail"    value="9650."/>
+<var  name="S_BOL_rail"    value="2710."/>
+<var  name="Z_BOL_rail"    value="6350."/>
+<box   name="rail_BOL"        material="Aluminium"  X_Y_Z="120.;120.;11300."   />
+
+<composition name="BOL_MDTRail">
+   <mposPhi volume="rail_BOL"  ncopy="7"  Phi0="-45." dPhi=" 45." S=" S_BOL_rail" R_Z="R_BOL_rail; Z_BOL_rail" impliedRot="true" />
+   <mposPhi volume="rail_BOL"  ncopy="7"  Phi0="-45." dPhi=" 45." S="-S_BOL_rail" R_Z="R_BOL_rail; Z_BOL_rail" impliedRot="true" />
+   <mposPhi volume="rail_BOL"  ncopy="7"  Phi0="-45." dPhi=" 45." S=" S_BOL_rail" R_Z="R_BOL_rail;-Z_BOL_rail" impliedRot="true" />
+   <mposPhi volume="rail_BOL"  ncopy="7"  Phi0="-45." dPhi=" 45." S="-S_BOL_rail" R_Z="R_BOL_rail;-Z_BOL_rail" impliedRot="true" />
+</composition>
+
+<var  name="R_BOL_service"    value="9520."/>
+<var  name="S_BOL_service"    value="2570."/>
+<var  name="Z_BOL_service"    value="6350."/>
+<box   name="service_BOL"        material="Carbon"  X_Y_Z="200.;150.; 11300."   />
+
+<composition name="BOL_MDTService">
+   <mposPhi volume="service_BOL"  ncopy="8"  Phi0="0." S=" S_BOL_service" R_Z="R_BOL_service; Z_BOL_service" impliedRot="true" />
+   <mposPhi volume="service_BOL"  ncopy="8"  Phi0="0." S="-S_BOL_service" R_Z="R_BOL_service; Z_BOL_service" impliedRot="true" />
+   <mposPhi volume="service_BOL"  ncopy="8"  Phi0="0." S=" S_BOL_service" R_Z="R_BOL_service;-Z_BOL_service" impliedRot="true" />
+   <mposPhi volume="service_BOL"  ncopy="8"  Phi0="0." S="-S_BOL_service" R_Z="R_BOL_service;-Z_BOL_service" impliedRot="true" />
+</composition>
+
+
+<var  name="R_BML_rail"    value="7139."/>
+<var  name="S_BML_rail"    value="1998."/>
+<var  name="Z_BML_rail"    value="4850."/>
+<box   name="rail_BML"        material="Aluminium"  X_Y_Z="120.;120.; 8300."   />
+
+<composition name="BML_MDTRail">
+   <mposPhi volume="rail_BML"  ncopy="8"  Phi0="0." S=" S_BML_rail" R_Z="R_BML_rail; Z_BML_rail" impliedRot="true" />
+   <mposPhi volume="rail_BML"  ncopy="8"  Phi0="0." S="-S_BML_rail" R_Z="R_BML_rail; Z_BML_rail" impliedRot="true" />
+   <mposPhi volume="rail_BML"  ncopy="8"  Phi0="0." S=" S_BML_rail" R_Z="R_BML_rail;-Z_BML_rail" impliedRot="true" />
+   <mposPhi volume="rail_BML"  ncopy="8"  Phi0="0." S="-S_BML_rail" R_Z="R_BML_rail;-Z_BML_rail" impliedRot="true" />
+</composition>
+
+<var  name="R_BML_support1"    value="6900."/>
+<var  name="S_BML_support1"    value="2120."/>
+<var  name="Z1_BML_support1"    value="1712.5"/>
+<var  name="Z2_BML_support1"    value="5137.5"/>
+<var  name="Z3_BML_support1"    value="8245.0"/>
+<box   name="support1_BML"        material="Aluminium"  X_Y_Z="590.;120.; 120."   />
+
+<composition name="BML_RailSupport1">
+   <mposPhi volume="support1_BML"  ncopy="8"  Phi0="0." S=" S_BML_support1" R_Z="R_BML_support1; Z1_BML_support1" impliedRot="true" />
+   <mposPhi volume="support1_BML"  ncopy="8"  Phi0="0." S="-S_BML_support1" R_Z="R_BML_support1; Z1_BML_support1" impliedRot="true" />
+   <mposPhi volume="support1_BML"  ncopy="8"  Phi0="0." S=" S_BML_support1" R_Z="R_BML_support1;-Z1_BML_support1" impliedRot="true" />
+   <mposPhi volume="support1_BML"  ncopy="8"  Phi0="0." S="-S_BML_support1" R_Z="R_BML_support1;-Z1_BML_support1" impliedRot="true" />
+   <mposPhi volume="support1_BML"  ncopy="8"  Phi0="0." S=" S_BML_support1" R_Z="R_BML_support1; Z2_BML_support1" impliedRot="true" />
+   <mposPhi volume="support1_BML"  ncopy="8"  Phi0="0." S="-S_BML_support1" R_Z="R_BML_support1; Z2_BML_support1" impliedRot="true" />
+   <mposPhi volume="support1_BML"  ncopy="8"  Phi0="0." S=" S_BML_support1" R_Z="R_BML_support1;-Z2_BML_support1" impliedRot="true" />
+   <mposPhi volume="support1_BML"  ncopy="8"  Phi0="0." S="-S_BML_support1" R_Z="R_BML_support1;-Z2_BML_support1" impliedRot="true" />
+   <mposPhi volume="support1_BML"  ncopy="8"  Phi0="0." S=" S_BML_support1" R_Z="R_BML_support1; Z3_BML_support1" impliedRot="true" />
+   <mposPhi volume="support1_BML"  ncopy="8"  Phi0="0." S="-S_BML_support1" R_Z="R_BML_support1; Z3_BML_support1" impliedRot="true" />
+   <mposPhi volume="support1_BML"  ncopy="8"  Phi0="0." S=" S_BML_support1" R_Z="R_BML_support1;-Z3_BML_support1" impliedRot="true" />
+   <mposPhi volume="support1_BML"  ncopy="8"  Phi0="0." S="-S_BML_support1" R_Z="R_BML_support1;-Z3_BML_support1" impliedRot="true" />
+</composition>
+
+<var  name="R_BML_support2"    value="7139."/>
+<var  name="S_BML_support2"    value="2362."/>
+<var  name="Z1_BML_support2"    value="3490.0"/>
+<var  name="Z2_BML_support2"    value="6760.0"/>
+<box   name="support2_BML"        material="Aluminium"  X_Y_Z=" 120.; 590.; 120."   />
+
+<composition name="BML_RailSupport2">
+   <mposPhi volume="support2_BML"  ncopy="8"  Phi0="0." S=" S_BML_support2" R_Z="R_BML_support2; Z1_BML_support2" impliedRot="true" />
+   <mposPhi volume="support2_BML"  ncopy="8"  Phi0="0." S="-S_BML_support2" R_Z="R_BML_support2; Z1_BML_support2" impliedRot="true" />
+   <mposPhi volume="support2_BML"  ncopy="8"  Phi0="0." S=" S_BML_support2" R_Z="R_BML_support2;-Z1_BML_support2" impliedRot="true" />
+   <mposPhi volume="support2_BML"  ncopy="8"  Phi0="0." S="-S_BML_support2" R_Z="R_BML_support2;-Z1_BML_support2" impliedRot="true" />
+   <mposPhi volume="support2_BML"  ncopy="8"  Phi0="0." S=" S_BML_support2" R_Z="R_BML_support2; Z2_BML_support2" impliedRot="true" />
+   <mposPhi volume="support2_BML"  ncopy="8"  Phi0="0." S="-S_BML_support2" R_Z="R_BML_support2; Z2_BML_support2" impliedRot="true" />
+   <mposPhi volume="support2_BML"  ncopy="8"  Phi0="0." S=" S_BML_support2" R_Z="R_BML_support2;-Z2_BML_support2" impliedRot="true" />
+   <mposPhi volume="support2_BML"  ncopy="8"  Phi0="0." S="-S_BML_support2" R_Z="R_BML_support2;-Z2_BML_support2" impliedRot="true" />
+</composition>
+
+
+<var  name="R_BML_service"    value="7139."/>
+<var  name="S_BML_service"    value="1860."/>
+<var  name="Z_BML_service"    value="4850."/>
+<box   name="service_BML"        material="Carbon"  X_Y_Z="250.;120.; 8300."   />
+
+<composition name="BML_MDTService">
+   <mposPhi volume="service_BML"  ncopy="8"  Phi0="0." S=" S_BML_service" R_Z="R_BML_service; Z_BML_service" impliedRot="true" />
+   <mposPhi volume="service_BML"  ncopy="8"  Phi0="0." S="-S_BML_service" R_Z="R_BML_service; Z_BML_service" impliedRot="true" />
+   <mposPhi volume="service_BML"  ncopy="8"  Phi0="0." S=" S_BML_service" R_Z="R_BML_service;-Z_BML_service" impliedRot="true" />
+   <mposPhi volume="service_BML"  ncopy="8"  Phi0="0." S="-S_BML_service" R_Z="R_BML_service;-Z_BML_service" impliedRot="true" />
+</composition>
+
+<var  name="R_BML_trigbox"    value="7575."/>
+<var  name="S_BML_trigbox"    value=" 900."/>
+<var  name="Z_BML_trigbox"    value="4850."/>
+<box   name="trigbox_BML"        material="Carbon"  X_Y_Z="50.;1000.; 8300."   />
+<composition name="BML_trigbox">
+   <mposPhi volume="trigbox_BML"  ncopy="8"  Phi0="0." S=" S_BML_trigbox" R_Z="R_BML_trigbox; Z_BML_trigbox" impliedRot="true" />
+   <mposPhi volume="trigbox_BML"  ncopy="8"  Phi0="0." S="-S_BML_trigbox" R_Z="R_BML_trigbox; Z_BML_trigbox" impliedRot="true" />
+   <mposPhi volume="trigbox_BML"  ncopy="8"  Phi0="0." S=" S_BML_trigbox" R_Z="R_BML_trigbox;-Z_BML_trigbox" impliedRot="true" />
+   <mposPhi volume="trigbox_BML"  ncopy="8"  Phi0="0." S="-S_BML_trigbox" R_Z="R_BML_trigbox;-Z_BML_trigbox" impliedRot="true" />
+</composition>
+
+<var  name="R_BMS_service"    value="8095."/>
+<var  name="S_BMS_service"    value="1610."/>
+<var  name="Z_BMS_service"    value="4850."/>
+<box   name="service_BMS"        material="Carbon"  X_Y_Z="100.;120.; 8300."   />
+
+<composition name="BMS_MDTService">
+   <mposPhi volume="service_BMS"  ncopy="8"  Phi0="22.5" S=" S_BMS_service" R_Z="R_BMS_service; Z_BMS_service" impliedRot="true" />
+   <mposPhi volume="service_BMS"  ncopy="8"  Phi0="22.5" S="-S_BMS_service" R_Z="R_BMS_service; Z_BMS_service" impliedRot="true" />
+   <mposPhi volume="service_BMS"  ncopy="8"  Phi0="22.5" S=" S_BMS_service" R_Z="R_BMS_service;-Z_BMS_service" impliedRot="true" />
+   <mposPhi volume="service_BMS"  ncopy="8"  Phi0="22.5" S="-S_BMS_service" R_Z="R_BMS_service;-Z_BMS_service" impliedRot="true" />
+</composition>
+
+<var  name="R_BMS_trigbox"    value="7740."/>
+<var  name="S_BMS_trigbox"    value=" 550."/>
+<var  name="Z_BMS_trigbox1"   value="1950."/>
+<var  name="Z_BMS_trigbox2"   value="5150."/>
+<var  name="Z_BMS_trigbox3"   value="8150."/>
+<box   name="trigbox_BMS"     material="Carbon"  X_Y_Z="50.;900.; 2000."   />
+
+<composition name="BMS_trigbox">
+   <mposPhi volume="trigbox_BMS"  ncopy="6"  Phi0="-22.5" dPhi="45." S=" S_BMS_trigbox" R_Z="R_BMS_trigbox; Z_BMS_trigbox1" impliedRot="true" />
+   <mposPhi volume="trigbox_BMS"  ncopy="6"  Phi0="-22.5" dPhi="45." S="-S_BMS_trigbox" R_Z="R_BMS_trigbox; Z_BMS_trigbox1" impliedRot="true" />
+   <mposPhi volume="trigbox_BMS"  ncopy="6"  Phi0="-22.5" dPhi="45." S=" S_BMS_trigbox" R_Z="R_BMS_trigbox;-Z_BMS_trigbox1" impliedRot="true" />
+   <mposPhi volume="trigbox_BMS"  ncopy="6"  Phi0="-22.5" dPhi="45." S="-S_BMS_trigbox" R_Z="R_BMS_trigbox;-Z_BMS_trigbox1" impliedRot="true" />
+   <mposPhi volume="trigbox_BMS"  ncopy="6"  Phi0="-22.5" dPhi="45." S=" S_BMS_trigbox" R_Z="R_BMS_trigbox; Z_BMS_trigbox2" impliedRot="true" />
+   <mposPhi volume="trigbox_BMS"  ncopy="6"  Phi0="-22.5" dPhi="45." S="-S_BMS_trigbox" R_Z="R_BMS_trigbox; Z_BMS_trigbox2" impliedRot="true" />
+   <mposPhi volume="trigbox_BMS"  ncopy="6"  Phi0="-22.5" dPhi="45." S=" S_BMS_trigbox" R_Z="R_BMS_trigbox;-Z_BMS_trigbox2" impliedRot="true" />
+   <mposPhi volume="trigbox_BMS"  ncopy="6"  Phi0="-22.5" dPhi="45." S="-S_BMS_trigbox" R_Z="R_BMS_trigbox;-Z_BMS_trigbox2" impliedRot="true" />
+   <mposPhi volume="trigbox_BMS"  ncopy="6"  Phi0="-22.5" dPhi="45." S=" S_BMS_trigbox" R_Z="R_BMS_trigbox; Z_BMS_trigbox3" impliedRot="true" />
+   <mposPhi volume="trigbox_BMS"  ncopy="6"  Phi0="-22.5" dPhi="45." S="-S_BMS_trigbox" R_Z="R_BMS_trigbox; Z_BMS_trigbox3" impliedRot="true" />
+   <mposPhi volume="trigbox_BMS"  ncopy="6"  Phi0="-22.5" dPhi="45." S=" S_BMS_trigbox" R_Z="R_BMS_trigbox;-Z_BMS_trigbox3" impliedRot="true" />
+   <mposPhi volume="trigbox_BMS"  ncopy="6"  Phi0="-22.5" dPhi="45." S="-S_BMS_trigbox" R_Z="R_BMS_trigbox;-Z_BMS_trigbox3" impliedRot="true" />
+</composition>
+
+
+<composition name="MDTRail">
+   <posXYZ volume="BOL_MDTRail"	     X_Y_Z="Zero;Zero;Zero"/>
+   <posXYZ volume="BOL_MDTService"   X_Y_Z="Zero;Zero;Zero"/>
+   <posXYZ volume="BML_MDTRail"	     X_Y_Z="Zero;Zero;Zero"/>
+   <posXYZ volume="BML_RailSupport1" X_Y_Z="Zero;Zero;Zero"/>
+   <posXYZ volume="BML_RailSupport2" X_Y_Z="Zero;Zero;Zero"/>
+   <posXYZ volume="BML_MDTService"   X_Y_Z="Zero;Zero;Zero"/>
+   <posXYZ volume="BML_trigbox"	     X_Y_Z="Zero;Zero;Zero"/>
+   <posXYZ volume="BMS_MDTService"   X_Y_Z="Zero;Zero;Zero"/>
+   <posXYZ volume="BMS_trigbox"      X_Y_Z="Zero;Zero;Zero"/>
+</composition>
+
+</section>
+
+<section name       = "HFtruck"
+         version    = "7.0"
+         date       = "22 November 2008"
+         author     = "Laurent"
+         top_volume = "HFTruckRail">
+
+<!--     name       =  HFTruck                       section name       = "Supports"  -->
+<!--  
+      **************************************************************
+      ***                                                       ****
+      ***                  HF Truck                             ****
+      ***                                                       ****
+      **************************************************************
+-->
+
+<defaults   unit_length="mm"   />
+<!--  Spokes U profile -->
+<var  name="HFTCBLthi" value="5"/>
+<var  name="HFTCBext"  value="400"/>
+<var  name="HFTCBext2" value="200"/>
+<var  name="HFTCBhei"  value="100"/>
+<var  name="HFTCBSthi" value="6"/>
+
+<var  name="HFTCBLxa"  value="HFTCBext/2." />
+<var  name="HFTCBLya"  value="0."        />
+<var  name="HFTCBLxb"  value="HFTCBLxa"  />
+<var  name="HFTCBLyb"  value="HFTCBhei"  />
+<var  name="HFTCBLxc"  value="HFTCBLxb -HFTCBSthi" />
+<var  name="HFTCBLyc"  value="HFTCBLyb"  />
+<var  name="HFTCBLxd"  value="HFTCBLxc"  />
+<var  name="HFTCBLyd"  value="HFTCBLthi" />
+
+<var name="HFT_leng"     value="5400" />
+<var name="HFT_width"    value="2210" />
+<var name="HFT_Decal"    value="HFT_width/2.+40"/>
+<var name="HFT_feet"     value="6662" />
+<var name="HFT_RFP"      value="1522" />
+<var name="HFT_RPR"      value="4630" />
+<var name="HFT_RP2"      value="2200" />
+<var name="HFT_RP3"      value="5000" />
+<var name="TubPos"       value="HFT_RFP+1300" />
+<var name="feePos"       value="2092" />
+<var name="ZtruckPos"    value="17850" />
+<var name="Zup"          value="9850" />
+<var name="Tshape"       value="540" />
+<var name="Sup2"         value="Tshape+1075" />
+<var name="HFT_Deca"     value="1700" />
+
+<box name="HFTsup1" material="Iron2"    X_Y_Z="Tshape;100;HFT_leng-10" />
+<box name="HFTsup2" material="Iron2"    X_Y_Z="Tshape;100;HFT_width" />
+<box name="HFTcot1" material="Iron1"    X_Y_Z="540;100;880"         />
+<box name="HFTame1" material="Iron1"    X_Y_Z="679;60;HFT_leng-10." />
+
+<tubs  name="HFTubes"   material="Iron1"  Rio_Z="244; 254;HFT_width"  nbPhi="20" />
+<tubs  name="HFTube2"   material="Iron1"  Rio_Z="104; 154;2105"       nbPhi="20" />
+
+<composition name="HFTruckSuppor1">
+   <posXYZ volume="HFTcot1"            X_Y_Z="Zero;Zero; HFT_leng/2.+50" rot="90.;Zero;Zero"/>
+   <posXYZ volume="HFTcot1"            X_Y_Z="Zero;Zero;-HFT_leng/2.-50" rot="90.;Zero;Zero"/>
+   <posXYZ volume="HFTame1"            X_Y_Z="Zero;Zero;Zero" rot="Zero;Zero;90."/>
+   <posXYZ volume="HFTsup1"            X_Y_Z="Zero; 390;Zero"  />
+   <posXYZ volume="HFTsup1"            X_Y_Z="Zero;-390;Zero"  />
+</composition>
+
+<box name="HFTfee1" material="Iron2"    X_Y_Z="639;60;HFT_feet-10." />
+<box name="HFTfee2" material="Iron1"    X_Y_Z="540;60;HFT_feet"    />
+<composition name="HFTruckFeet2">
+   <posXYZ volume="HFTfee1"            X_Y_Z="Zero;Zero;Zero" rot="Zero;Zero;90."/>
+   <posXYZ volume="HFTfee2"            X_Y_Z="Zero; 350;Zero"  />
+   <posXYZ volume="HFTfee2"            X_Y_Z="Zero;-350;Zero"  />
+</composition>
+
+<composition name="HFTruckFeet1">
+  <posXYZ  volume="HFTruckFeet2"      X_Y_Z="Zero;-HFT_leng/2.;Zero"  rot="90.;0.;0." />
+</composition>
+
+<gvxysx name="HFTProfiles2" material="Aluminium1" dZ="HFT_leng">
+  <gvxy_point X_Y="HFTCBLxa;HFTCBLya"/>
+  <gvxy_point X_Y="HFTCBLxb;HFTCBLyb"/>
+  <gvxy_point X_Y="HFTCBLxc;HFTCBLyc"/>
+  <gvxy_point X_Y="HFTCBLxd;HFTCBLyd"/>
+</gvxysx>
+
+<composition name="HFTProfiles1">
+   <posXYZ volume="HFTProfiles2"            X_Y_Z="Zero;Zero;Zero" rot="0.;0.;180."/>
+</composition>
+
+<composition name="HFTUPorfile">
+   <posXYZ volume="HFTProfiles1"            X_Y_Z="Zero;Zero;-7." rot="90.;0.; 20."/>
+   <posXYZ volume="HFTProfiles2"            X_Y_Z="Zero;Zero; 7." rot="90.;0.;-20."/>
+</composition>
+
+<var  name="HFTCBLxa2"  value="HFTCBext2/2." />
+<var  name="HFTCBLya2"  value="0."        />
+<var  name="HFTCBLxb2"  value="HFTCBLxa2"  />
+<var  name="HFTCBLyb2"  value="HFTCBhei"  />
+<var  name="HFTCBLxc2"  value="HFTCBLxb2 -HFTCBSthi" />
+<var  name="HFTCBLyc2"  value="HFTCBLyb2"  />
+<var  name="HFTCBLxd2"  value="HFTCBLxc2"  />
+<var  name="HFTCBLyd2"  value="HFTCBLthi" />
+
+<gvxysx name="HFTProfiles3" material="Aluminium1" dZ="HFT_leng-1400">
+  <gvxy_point X_Y="HFTCBLxa2;HFTCBLya2"/>
+  <gvxy_point X_Y="HFTCBLxb2;HFTCBLyb2"/>
+  <gvxy_point X_Y="HFTCBLxc2;HFTCBLyc2"/>
+  <gvxy_point X_Y="HFTCBLxd2;HFTCBLyd2"/>
+</gvxysx>
+
+<composition name="HFTProfiles4">
+   <posXYZ volume="HFTProfiles3"            X_Y_Z="Zero;Zero;Zero" rot="0.;0.;180."/>
+</composition>
+
+<!--  Spokes Rail same position that the feet rail -->
+<gvxy     name="HFTExtremityRail1"    material="Iron"   dZ="HFT_leng+200"  >
+  <gvxy_point X_Y="RAIL_CeRxb;RAIL_CeRyb"/>
+  <gvxy_point X_Y="RAIL_CeRxc;RAIL_CeRyc"/>
+  <gvxy_point X_Y="RAIL_CeRxd;RAIL_CeRyd"/>
+  <gvxy_point X_Y="RAIL_CeRxe;RAIL_CeRye"/>
+  <gvxy_point X_Y="RAIL_CeRxf;RAIL_CeRyf"/>
+  <gvxy_point X_Y="RAIL_CeRxg;RAIL_CeRyg"/>
+  <gvxy_point X_Y="RAIL_CeRxh;RAIL_CeRyh"/>
+  <gvxy_point X_Y="RAIL_CeRxi;RAIL_CeRyi"/>
+  <gvxy_point X_Y="RAIL_CeRxj;RAIL_CeRyj"/>
+  <gvxy_point X_Y="RAIL_CeRxk;RAIL_CeRyk"/>
+  <gvxy_point X_Y="RAIL_CeRxl;RAIL_CeRyl"/>
+  <gvxy_point X_Y="RAIL_CeRxm;RAIL_CeRym"/>
+</gvxy>
+
+<composition name="HFTruckFeet">
+  <posXYZ  volume="HFTruckFeet1"       X_Y_Z=" HFT_Decal;RAIL_Ypos-HFT_RFP; feePos" />
+  <posXYZ  volume="HFTruckFeet1"       X_Y_Z=" HFT_Decal;RAIL_Ypos-HFT_RFP;-feePos" />
+  <posXYZ  volume="HFTruckFeet1"       X_Y_Z="-HFT_Decal;RAIL_Ypos-HFT_RFP; feePos" />
+  <posXYZ  volume="HFTruckFeet1"       X_Y_Z="-HFT_Decal;RAIL_Ypos-HFT_RFP;-feePos" />
+
+  <posXYZ  volume="HFTruckSuppor1"     X_Y_Z=" HFT_Decal;RAIL_Ypos-450.;Zero"    /> 
+  <posXYZ  volume="HFTruckSuppor1"     X_Y_Z="-HFT_Decal;RAIL_Ypos-450.;Zero"    />
+
+  <posXYZ  volume="HFTExtremityRail1"  X_Y_Z="-HFT_Decal;RAIL_Ypos     ;Zero"    />
+  <posXYZ  volume="HFTExtremityRail1"  X_Y_Z=" HFT_Decal;RAIL_Ypos     ;Zero"    /> 
+
+  <posXYZ  volume="HFTubes"            X_Y_Z=" Zero;RAIL_Ypos-HFT_RFP  ; feePos"           rot="0.; 90.;0." />
+  <posXYZ  volume="HFTubes"            X_Y_Z=" Zero;RAIL_Ypos-HFT_RFP  ;-feePos"           rot="0.; 90.;0." />
+
+</composition>
+
+<composition name="HFTUPorfile1">
+   <posXYZ volume="HFTProfiles3"            X_Y_Z="Zero;Zero; 3." rot="90.;0.; 55."/>
+   <posXYZ volume="HFTProfiles4"            X_Y_Z="Zero;Zero;-3." rot="90.;0.;-55."/>
+</composition>
+
+
+<composition  name="HFTruckRail2" >
+  <posXYZ  volume="HFTruckFeet"       X_Y_Z="           HFT_Deca ; Zero                ; Zero "   />
+  <posXYZ  volume="HFTUPorfile"       X_Y_Z="           HFT_Deca ; RAIL_Ypos-HFT_RPR   ; feePos" />
+  <posXYZ  volume="HFTUPorfile"       X_Y_Z="           HFT_Deca ; RAIL_Ypos-HFT_RPR   ;-feePos" />
+  <posXYZ  volume="HFTUPorfile1"      X_Y_Z=" HFT_Decal+HFT_Deca ; RAIL_Ypos-HFT_RP2   ; Zero"            rot="0.; 90.;0." />
+  <posXYZ  volume="HFTUPorfile1"      X_Y_Z="-HFT_Decal+HFT_Deca ; RAIL_Ypos-HFT_RP2   ; Zero"            rot="0.; 90.;0." />
+  <posXYZ  volume="HFTUPorfile1"      X_Y_Z=" HFT_Decal+HFT_Deca ; RAIL_Ypos-HFT_RP3   ; Zero"            rot="0.; 90.;0." />
+  <posXYZ  volume="HFTUPorfile1"      X_Y_Z="-HFT_Decal+HFT_Deca ; RAIL_Ypos-HFT_RP3   ; Zero"            rot="0.; 90.;0." />
+  <posXYZ  volume="HFTsup2"           X_Y_Z=" HFT_Deca           ; RAIL_Ypos+Tshape-50 ; feePos-HFT_Deca"  rot="0.; 90.;0." />
+  <posXYZ  volume="HFTsup2"           X_Y_Z=" HFT_Deca           ; RAIL_Ypos+Tshape-50 ;-feePos+HFT_Deca"  rot="0.; 90.;0." />
+  <posXYZ  volume="HFTube2"           X_Y_Z=" HFT_Deca-800       ; RAIL_Ypos+Sup2      ; feePos-HFT_Deca"  rot="90.; 90.;0." />
+  <posXYZ  volume="HFTube2"           X_Y_Z=" HFT_Deca+800       ; RAIL_Ypos+Sup2      ; feePos-HFT_Deca"  rot="90.; 90.;0." />
+  <posXYZ  volume="HFTube2"           X_Y_Z=" HFT_Deca-800       ; RAIL_Ypos+Sup2      ;-feePos+HFT_Deca"  rot="90.; 90.;0." />
+  <posXYZ  volume="HFTube2"           X_Y_Z=" HFT_Deca+800       ; RAIL_Ypos+Sup2      ;-feePos+HFT_Deca"  rot="90.; 90.;0." />
+</composition>
+
+<composition  name="HFTruckRail" >
+  <posXYZ  volume="HFTruckRail2"      X_Y_Z=" Zero; Zero; ZtruckPos"  rot="0.;270.;0." />
+  <posXYZ  volume="HFTruckRail2"      X_Y_Z=" Zero; Zero;-ZtruckPos"  rot="0.; 90.;0." />
+</composition>
+
+</section>
+
+<section name       = "RUN2_Services"
+         version    = "1.0"
+         date       = "September 2014"
+         author     = "Antonios Leisos, Jochen Meyer"
+         top_volume = "RUN2_Services">
+
+<!--     name       =  Run2 supports                  section name       = "Services"     -->
+
+<var name="BME_ElectronicsBox_Frame_xwid"        value="2350."/> <!-- ATLMHS_0114 -->
+<var name="BME_ElectronicsBox_Frame_ywid"        value=" 100."/> <!-- ATLMHS_0114 -->
+<var name="BME_ElectronicsBox_Frame_zwid"        value=" 600."/> <!-- ATLMHS_0114 -->
+<var name="BME_ElectronicsBox_Frame_width"       value="  50."/> <!-- ATLMHS_0114 -->
+<var name="BME_ElectronicsBox_Frame_plate_width" value="   7."/> <!-- Approximate value -->
+<var name="BME_ElectronicsBox_Frame_box_width"   value="   5."/> <!-- Approximate value tuned to the weight -->
+<var name="BME_ElectronicsBox_Frame_distance_from_chamber" value="120."/> <!-- Markus Lippert:121mm and a little bit smaller since thery are not parallel -->
+
+<box  name="BME_ElectronicsBox_Outer"  material="Aluminium"  X_Y_Z="BME_ElectronicsBox_Frame_xwid; BME_ElectronicsBox_Frame_ywid ;  BME_ElectronicsBox_Frame_zwid" />
+<box  name="BME_ElectronicsBox_Inner"  material="Aluminium"  X_Y_Z="BME_ElectronicsBox_Frame_xwid-2.*BME_ElectronicsBox_Frame_width; BME_ElectronicsBox_Frame_ywid+10. ;  BME_ElectronicsBox_Frame_zwid-2.*BME_ElectronicsBox_Frame_width" />
+
+<subtraction  name="BME_Electronics_Box" >
+  <posXYZ  volume="BME_ElectronicsBox_Outer"  />
+  <posXYZ  volume="BME_ElectronicsBox_Inner"  />
+</subtraction>
+
+<box  name="BME_ElectronicsBox_Plate"  material="Aluminium"  X_Y_Z="BME_ElectronicsBox_Frame_xwid-2.*BME_ElectronicsBox_Frame_width-2.*GENV_Eps; BME_ElectronicsBox_Frame_plate_width;  BME_ElectronicsBox_Frame_zwid-2.*BME_ElectronicsBox_Frame_width-2.*GENV_Eps" />
+
+<box  name="BME_ElectronicsBox_Box"    material="Carbon"  X_Y_Z="BME_ElectronicsBox_Frame_xwid-2.*BME_ElectronicsBox_Frame_width-2.*GENV_Eps; BME_ElectronicsBox_Frame_box_width;  BME_ElectronicsBox_Frame_zwid-2.*BME_ElectronicsBox_Frame_width-2.*GENV_Eps" />
+
+<composition name="BME_Electronics">
+  <posXYZ volume="BME_Electronics_Box" />
+  <posXYZ volume="BME_ElectronicsBox_Plate" X_Y_Z=" 0.;BME_ElectronicsBox_Frame_ywid*0.5-BME_ElectronicsBox_Frame_plate_width*0.5;0." />
+  <posXYZ volume="BME_ElectronicsBox_Box" X_Y_Z=" 0.;BME_ElectronicsBox_Frame_ywid*0.5-BME_ElectronicsBox_Frame_plate_width-BME_ElectronicsBox_Frame_box_width/2.-GENV_Eps;0." />
+</composition>
+
+<var name="BOEwall_thickness"   value="200."/>
+<var name="BOEwall_ywid"        value="2000."/>
+<var name="BOEwall_xwid"        value="3400."/>
+<var name="BOEwall_zwid"        value="2200."/>
+
+<var name="BOEbox4_xwid"        value="BOEwall_xwid-2*BOEwall_thickness"/> 
+<var name="BOEbox4_ywid"        value="BOEwall_ywid"/> 
+<var name="BOEbox4_zwid"        value="BOEwall_thickness"/> 
+<var name="BOEbox4_xpos"        value="0."/>
+<var name="BOEbox4_ypos"        value="0."/>
+<var name="BOEbox4_zpos"        value="0."/>
+
+<var name="BOEbox5_xwid"        value="BOEwall_thickness"/> 
+<var name="BOEbox5_ywid"        value="BOEwall_ywid"/> 
+<var name="BOEbox5_zwid"        value="BOEwall_zwid"/> 
+<var name="BOEbox5_xpos"        value="BOEbox4_xwid/2+BOEbox5_xwid/2+GENV_Eps"/>
+<var name="BOEbox5_ypos"        value="BOEbox4_ypos"/>
+<var name="BOEbox5_zpos"        value="BOEwall_zwid/2-BOEwall_thickness/2"/>
+
+<box name="BOEbox4" material="Aluminium" X_Y_Z=" BOEbox4_xwid;BOEbox4_ywid;BOEbox4_zwid" /> 
+<box name="BOEbox5" material="Aluminium" X_Y_Z=" BOEbox5_xwid;BOEbox5_ywid;BOEbox5_zwid" /> 
+
+<var name="ElavatorSupport_xwid"         value=" 200. "/> <!-- approximate value -->
+<var name="ElavatorSupport_zwid"         value=" 200. "/> <!-- approximate value -->
+<var name="ElavatorSupport_ywid"         value="BOEwall_ywid"/>
+<var name="ElavatorSupport_xpos"         value="1000. "/>  <!-- approximate value -->
+<var name="ElavatorSupport_ypos"         value="BOEbox5_ypos"/> 
+<var name="ElavatorSupport_zpos"         value="BOEbox5_zpos"/>
+
+<var name="ElavatorCross_zwid"           value="  10. "/> <!-- approximate value -->
+<var name="ElavatorCross_xwid"           value="2.*ElavatorSupport_xpos-ElavatorSupport_xwid-2.*GENV_Eps"/> 
+<var name="ElavatorCross_ywid"           value="1000. "/> <!-- approximate value -->
+<var name="ElavatorCross_xpos"           value="BOEbox4_xpos"/> 
+<var name="ElavatorCross_ypos"           value="BOEwall_ywid/2.-ElavatorCross_ywid/2."/>
+<var name="ElavatorCross_zpos"           value="ElavatorSupport_zpos"/> 
+
+<var name="ElavatorTopFrame_xwid"        value="BOEbox4_xwid+2.*BOEbox5_xwid"/>
+<var name="ElavatorTopFrame_zwid"        value="BOEbox5_zwid"/> 
+<var name="ElavatorTopFrame_ywid"        value=" 200. "/>  <!-- approximate value --> 
+<var name="ElavatorTopFrame_xpos"        value="BOEbox4_xpos"/> 
+<var name="ElavatorTopFrame_ypos"        value="BOEbox4_ywid/2+ElavatorTopFrame_ywid/2+GENV_Eps"/> 
+<var name="ElavatorTopFrame_zpos"        value="BOEbox5_zpos"/> 
+<var name="ElavatorTopFrame_thickness"   value="  30. "/> <!-- approximate value -->  
+<var name="ElavatorTopPlate_xwid"        value="ElavatorTopFrame_xwid"/>  
+<var name="ElavatorTopPlate_zwid"        value="ElavatorTopFrame_zwid"/> 
+<var name="ElavatorTopPlate_ywid"        value="   5. "/>  <!-- approximate value --> 
+<var name="ElavatorTopPlate_xpos"        value="BOEbox4_xpos"/> 
+<var name="ElavatorTopPlate_ypos"        value="ElavatorTopFrame_ypos+ElavatorTopFrame_ywid/2+ElavatorTopPlate_ywid/2+GENV_Eps"/>  
+<var name="ElavatorTopPlate_zpos"        value="BOEbox5_zpos"/> 
+
+<box name="ElevatorSupport"        material="Aluminium" X_Y_Z=" ElavatorSupport_xwid;  ElavatorSupport_ywid;  ElavatorSupport_zwid" /> 
+<box name="ElevatorCross"          material="Aluminium" X_Y_Z="   ElavatorCross_xwid;    ElavatorCross_ywid;    ElavatorCross_zwid" /> 
+<box name="ElevatorTopFrame_Outer" material="Aluminium" X_Y_Z="ElavatorTopFrame_xwid; ElavatorTopFrame_ywid; ElavatorTopFrame_zwid" /> 
+<box name="ElevatorTopFrame_Inner" material="Aluminium" X_Y_Z="ElavatorTopFrame_xwid-ElavatorTopFrame_thickness; ElavatorTopFrame_ywid; ElavatorTopFrame_zwid-ElavatorTopFrame_thickness" /> 
+
+<subtraction  name="ElevatorTopFrame" >
+  <posXYZ  volume="ElevatorTopFrame_Outer"  />
+  <posXYZ  volume="ElevatorTopFrame_Inner"  />
+</subtraction>
+
+<box name="ElevatorTopPlate" material="Aluminium" X_Y_Z=" ElavatorTopPlate_xwid; ElavatorTopPlate_ywid; ElavatorTopPlate_zwid" /> 
+
+<composition  name="BOEwallside" >
+   <posXYZ  volume="BOEbox4"          X_Y_Z="          BOEbox4_xpos;          BOEbox4_ypos;          BOEbox4_zpos" /> 
+   <posXYZ  volume="ElevatorSupport"  X_Y_Z="  ElavatorSupport_xpos;  ElavatorSupport_ypos;  ElavatorSupport_zpos" /> 
+   <posXYZ  volume="ElevatorCross"    X_Y_Z="    ElavatorCross_xpos;    ElavatorCross_ypos;    ElavatorCross_zpos" /> 
+   <posXYZ  volume="ElevatorSupport"  X_Y_Z=" -ElavatorSupport_xpos;  ElavatorSupport_ypos;  ElavatorSupport_zpos" /> 
+   <posXYZ  volume="ElevatorTopFrame" X_Y_Z=" ElavatorTopFrame_xpos; ElavatorTopFrame_ypos; ElavatorTopFrame_zpos" /> 
+   <posXYZ  volume="ElevatorTopPlate" X_Y_Z=" ElavatorTopPlate_xpos; ElavatorTopPlate_ypos; ElavatorTopPlate_zpos" /> 
+   <posXYZ  volume="BOEbox5"          X_Y_Z="          BOEbox5_xpos;          BOEbox5_ypos;          BOEbox5_zpos" /> 
+   <posXYZ  volume="BOEbox5"          X_Y_Z="         -BOEbox5_xpos;          BOEbox5_ypos;          BOEbox5_zpos" /> 
+</composition>
+
+<composition name="BOEwall">
+   <posXYZ volume="BOEwallside"    X_Y_Z="  0.;  -12970 ;   6900." rot="0.;180.; 0" />
+   <posXYZ volume="BOEwallside"    X_Y_Z="  0.;  -12970 ;  -7060." rot="0.;  0.; 0" />
+</composition>
+
+<composition name="RUN2_Services">
+  <posXYZ volume="BME_Electronics" X_Y_Z="0.;-7786.6-0.5*229.5;GENV_Eps+7057.8+0.5*BME_ElectronicsBox_Frame_zwid+BME_ElectronicsBox_Frame_distance_from_chamber" />
+  <posXYZ volume="BME_Electronics" X_Y_Z="0.;-7786.6-0.5*229.5;-GENV_Eps-7057.8-0.5*BME_ElectronicsBox_Frame_zwid-BME_ElectronicsBox_Frame_distance_from_chamber" />
+  <posXYZ volume="BOEwall"         X_Y_Z="0.; 0.; 0."  rot="-0.708; 0.; 0"/>
+</composition>
+
+</section>
+
+<section name       = "ATLAS Plancher (in french in the text)"
+         version    = "7.0"
+         date       = "22 November 2008"
+         author     = "Laurent"
+         top_volume = "Plancher">
+
+<!--     name       =  Plancher                      section name       = "Supports"  -->
+<!--     plan:ATF1 UX 150001   -->
+<defaults unit_length="mm"/>
+
+<box name="box1" material="Iron" X_Y_Z="30000; 5002;27000" />
+<box name="box2" material="Iron" X_Y_Z="30000; 1336; 9000" />
+<box name="box3" material="Iron" X_Y_Z=" 5200;10000;27010" /> <!-- use larger length in z than box1 to not run into issues with volume subtraction -->
+
+<subtraction  name="central" >
+  <posXYZ  volume="box1" X_Y_Z="0;   0;0" />
+  <posXYZ  volume="box3" X_Y_Z="0;4541;0" />
+</subtraction>
+
+<composition name="PlancherTilte">
+   <posXYZ volume="central" X_Y_Z="0;  -13871;      0"  /> <!-- the distance between cavern floor and centre of beam axis at IP is 11370mm, cf. atcz____0005-vAC -->
+   <posXYZ volume="box2"    X_Y_Z="0;  -15704;  18005"  />
+   <posXYZ volume="box2"    X_Y_Z="0;  -15704; -18005"  />
+</composition>
+
+<composition name="Plancher">
+   <posXYZ volume="PlancherTilte" X_Y_Z="0;0;0"  rot="-0.708;0;0"/>
+</composition>
+
+</section>
+
+<section name       = "ID-EMC-Tile"
+         version    = "7.0"
+         date       = "21 Juin 2010"
+         author     = "Laurent Chevalier"
+         top_volume = "IDEMTile">
+
+<!--     name       =  Tile Fingers                  section name       = "ID-EM-Tile"-->
+
+<trd name="TileFinger1"   material="Iron1"     Xmp_Ymp_Z="420 ;  420 ; 176  ; 130 ;  300 "  />
+
+<var name="FingerPos"      value="6540" />
+<var name="FingerShift"    value="210" />
+
+<composition name="TileFinger2">
+       <posXYZ volume="TileFinger1" X_Y_Z="JDSH_BDRRouRa_RetrunRing_outerRadius-JDReturnL/2. ; 0 ; 0." rot=" 90.;  90.; 270."  />
+</composition>
+
+<composition name="TileFinger3">
+  <foreach  index="IFing"  begin="1"  loops="8" >
+    <posXYZ volume="TileFinger2" X_Y_Z="0 ; 0 ; 0" rot="0.;0.; IFing*45/8 +2.81"  />
+  </foreach>
+</composition>
+
+<composition name="TileFingersA">
+ <posXYZ volume="TileFinger3" X_Y_Z="0 ; 0 ; 0" rot="0.;0.; 270"  />
+ <posXYZ volume="TileFinger3" X_Y_Z="0 ; 0 ; 0" rot="0.;0.; 315"  />
+ <posXYZ volume="TileFinger3" X_Y_Z="0 ; 0 ; 0" rot="0.;0.;   0"  />
+ <posXYZ volume="TileFinger3" X_Y_Z="0 ; 0 ; 0" rot="0.;0.;  45"  />
+</composition>
+<composition name="TileFingersB">
+ <posXYZ volume="TileFinger3" X_Y_Z="0 ; 0 ; 0" rot="0.;0.;  90"  />
+ <posXYZ volume="TileFinger3" X_Y_Z="0 ; 0 ; 0" rot="0.;0.; 135"  />
+ <posXYZ volume="TileFinger3" X_Y_Z="0 ; 0 ; 0" rot="0.;0.; 180"  />
+ <posXYZ volume="TileFinger3" X_Y_Z="0 ; 0 ; 0" rot="0.;0.; 225"  />
+</composition>
+
+<composition name="TileFingers">
+ <posXYZ volume="TileFingersA" X_Y_Z="0 ; 0 ; FingerPos - FingerShift"   />
+ <posXYZ volume="TileFingersB" X_Y_Z="0 ; 0 ; FingerPos - FingerShift"   />
+ <posXYZ volume="TileFingersA" X_Y_Z="0 ; 0 ;-FingerPos + FingerShift"   />
+ <posXYZ volume="TileFingersB" X_Y_Z="0 ; 0 ;-FingerPos + FingerShift"   />
+</composition>
+
+</section>
+
+<section name       = "ATLAS"
+         version    = "7.0"
+         date       = "22 November 2008"
+         author     = "Laurent"
+         top_volume = "All">
+
+<composition name="Magnets">
+   <posXYZ volume="ECT_Toroids"        X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="BAR_Toroid"         X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="Solenoid"           X_Y_Z="0.;0.;0."/>
+</composition>
+
+<composition name="Service">
+   <posXYZ volume="servicesAtZ0"           X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="pp2"                    X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="MBAP_AccessPlatform"    X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="RUN2_Services"          X_Y_Z="0.;0.;0."/>
+</composition>
+
+<composition name="Shield">
+   <posXYZ volume="JTSH_Shield"         X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="JDSH_Shield"         X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="JFSH_Shield"         X_Y_Z="0.;0.;0."/>
+</composition>
+
+<composition name="Supports">
+   <posXYZ volume="Feet"                      X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="RailAssembly"              X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="HFTruckRail"               X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="SADL_CalorimeterSaddle"    X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="MBWH_BigWheels"            X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="TBWH_BigWheels"            X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="TGC1_BigWheels"            X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="TGC3_BigWheels"            X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="MDTRail"                   X_Y_Z="0.;0.;0."/>
+   <posXYZ volume="Plancher"                  X_Y_Z="0.;0.;0."/>
+</composition>
+
+<composition name="IdEmTile">
+   <posXYZ  volume="TileFingers"  X_Y_Z="0.;0.;0." />
+</composition>
+
+</section>
+
+</AGDD>
diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/IMuonIdHelperSvc.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/IMuonIdHelperSvc.h
index a91e286db8b2d82c0ffea4766a14459b5b899acf..1cfd56d89c0144d7769578ab8e651ac28faaec95 100644
--- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/IMuonIdHelperSvc.h
+++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/IMuonIdHelperSvc.h
@@ -75,6 +75,9 @@ namespace Muon {
     /** @brief returns whether this is a sTGC Identifier or not */
     virtual bool issTgc( const Identifier& id ) const = 0;
 
+    /** @brief returns whether this is a sMDT Identifier or not */
+    virtual bool issMdt( const Identifier& id ) const = 0;
+
     /** @brief returns whether this Identifier belongs to an MDT with HPTDC or not */
     virtual bool hasHPTDC( const Identifier& id ) const = 0;
 
diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MdtIdHelper.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MdtIdHelper.h
index ecbf00980469e470c0016d048ac4678a1c96a7f7..109ceed683f6594c2c770e1f69ede5440cafb960 100644
--- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MdtIdHelper.h
+++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MdtIdHelper.h
@@ -144,10 +144,10 @@ class MdtIdHelper : public MuonIdHelper
   int gasGap(const Identifier& id) const; 
   /// always false for MDTs 
   bool measuresPhi(const Identifier& id) const; 
-  /// is this an sMDT chamber
-  bool isSmallMdt(const Identifier& id) const;
   /// is this a BMG chamber
   bool isBMG(const Identifier& id) const;
+  /// is this a BME chamber
+  bool isBME(const Identifier& id) const;
 
  private:
 
@@ -346,10 +346,10 @@ inline bool MdtIdHelper::measuresPhi(const Identifier& /*id*/) const
 
 } 
 
-inline bool MdtIdHelper::isSmallMdt(const Identifier& id) const
+inline bool MdtIdHelper::isBME(const Identifier& id) const
 {
   int index=stationName(id);
-  if(stationNameIndex("BME")==index || stationNameIndex("BMG")==index) return true;
+  if(stationNameIndex("BME")==index) return true;
   else return false;
 }
 
diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelperSvc.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelperSvc.h
index 55630f0a2133a217ce78835df086b1ad19d69d27..f5861aa67b7a7bf83e3c5ef2b88f273a7af6c075 100644
--- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelperSvc.h
+++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelperSvc.h
@@ -77,6 +77,9 @@ namespace Muon {
     /** @brief returns whether this is a sTGC Identifier or not */
     virtual bool issTgc( const Identifier& id ) const override;
 
+    /** @brief returns whether this is a sMDT Identifier or not */
+    virtual bool issMdt( const Identifier& id ) const override;
+
     /** @brief returns whether this Identifier belongs to an MDT with HPTDC or not */
     virtual bool hasHPTDC( const Identifier& id ) const override;
 
diff --git a/MuonSpectrometer/MuonIdHelpers/src/MuonIdHelperSvc.cxx b/MuonSpectrometer/MuonIdHelpers/src/MuonIdHelperSvc.cxx
index 946e5b55a5f3f19e346b69d0bb295f43c2f6d398..af6cd27a209cbf2a6af1ac858430368e9fc9fef2 100644
--- a/MuonSpectrometer/MuonIdHelpers/src/MuonIdHelperSvc.cxx
+++ b/MuonSpectrometer/MuonIdHelpers/src/MuonIdHelperSvc.cxx
@@ -199,6 +199,17 @@ namespace Muon {
     return m_stgcIdHelper->is_stgc(id);
   }
 
+  bool MuonIdHelperSvc::issMdt( const Identifier& id ) const {
+    if (!m_mdtIdHelper) return false;
+    else if (!isMdt(id)) return false;
+    else if (m_mdtIdHelper->isEndcap(id)) return false; // there are no sMDTs in the endcaps
+    else if (!m_rpcIdHelper) return false; // need RPC helper for the hasHPTDC check
+    bool sMdt = false;
+    if (m_mdtIdHelper->isBME(id)) sMdt = true; // all BME chambers are sMDTs
+    else if (hasHPTDC(id)) sMdt = true; // all chambers with HPTDC are sMDTs
+    return sMdt;
+  }
+
   bool MuonIdHelperSvc::hasHPTDC( const Identifier& id ) const {
     if (!isMdt(id)) return false;
     else if (!m_rpcIdHelper) return false; // there must be RPCs in the layout
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/MuonStationIntersectSvc/MdtIntersectGeometry.h b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/MuonStationIntersectSvc/MdtIntersectGeometry.h
index 5b54539b1adc1235abf162c26426a6893fce8b0b..c464247efaa8083b652d033b4fbed7095fc725e0 100755
--- a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/MuonStationIntersectSvc/MdtIntersectGeometry.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/MuonStationIntersectSvc/MdtIntersectGeometry.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef MDTINTERSECTGEOMETRY_H
@@ -15,7 +15,6 @@ namespace MuonGM {
   class MdtReadoutElement;
 }
 
-class MdtIdHelper;
 class MdtCondDbData;
 
 namespace TrkDriftCircleMath {
@@ -23,11 +22,10 @@ namespace TrkDriftCircleMath {
 }
 
 namespace Muon {
-
+  class IMuonIdHelperSvc;
   class MdtIntersectGeometry : public MuonIntersectGeometry {
   public:
-    MdtIntersectGeometry( const Identifier& chid, const MuonGM::MuonDetectorManager* detMgr, const MdtCondDbData* dbData,
-                          MsgStream* msg);
+    MdtIntersectGeometry(const Identifier& chid, const MuonGM::MuonDetectorManager* detMgr, const MdtCondDbData* dbData, MsgStream* msg, const Muon::IMuonIdHelperSvc* idHelp);
     MdtIntersectGeometry(const MdtIntersectGeometry &right);
     MdtIntersectGeometry & operator=(const MdtIntersectGeometry &right);
     ~MdtIntersectGeometry();
@@ -51,7 +49,7 @@ namespace Muon {
     const MuonGM::MdtReadoutElement*        m_detElMl1;
     const MuonGM::MuonDetectorManager*      m_detMgr;
     const MdtCondDbData*                    m_dbData;
-    const MdtIdHelper*                      m_mdtIdHelper;
+    const Muon::IMuonIdHelperSvc*           m_idHelperSvc;
     std::set<Identifier>                    m_deadTubesML;
     std::vector<Identifier>                 m_deadTubes;
   };
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MdtIntersectGeometry.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MdtIntersectGeometry.cxx
index fbc80277b7f4db6811b3543e6edd1a73515ca106..de72e259b0dcb0952d2a68d3437bd275876337fe 100755
--- a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MdtIntersectGeometry.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MdtIntersectGeometry.cxx
@@ -9,19 +9,19 @@
 #include "TrkDriftCircleMath/MdtChamberGeometry.h"
 #include "MuonReadoutGeometry/MdtReadoutElement.h"
 #include "MuonReadoutGeometry/MuonDetectorManager.h"
-#include "MuonIdHelpers/MdtIdHelper.h"
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
 #include "GeoModelUtilities/GeoGetIds.h"
 #include "MuonCondData/MdtCondDbData.h"
 
 namespace Muon{
 
   
-  MdtIntersectGeometry::MdtIntersectGeometry(const Identifier& chid, const MuonGM::MuonDetectorManager* detMgr, const MdtCondDbData* dbData, MsgStream* msg) :
+  MdtIntersectGeometry::MdtIntersectGeometry(const Identifier& chid, const MuonGM::MuonDetectorManager* detMgr, const MdtCondDbData* dbData, MsgStream* msg, const Muon::IMuonIdHelperSvc* idHelp) :
       m_chid(chid),
       m_mdtGeometry(nullptr),
       m_detMgr(detMgr),
       m_dbData(dbData),
-      m_mdtIdHelper(nullptr)
+      m_idHelperSvc(idHelp)
   {
     init(msg);
   }
@@ -35,7 +35,7 @@ namespace Muon{
     m_detElMl1 = right.m_detElMl1;
     m_detMgr = right.m_detMgr;
     m_dbData=right.m_dbData;
-    m_mdtIdHelper = right.m_mdtIdHelper;
+    m_idHelperSvc = right.m_idHelperSvc;
   }
 
   MdtIntersectGeometry& MdtIntersectGeometry::operator=(const MdtIntersectGeometry& right) {
@@ -48,7 +48,7 @@ namespace Muon{
       m_detElMl1 = right.m_detElMl1;
       m_detMgr = right.m_detMgr;
       m_dbData=right.m_dbData;
-      m_mdtIdHelper = right.m_mdtIdHelper;
+      m_idHelperSvc = right.m_idHelperSvc;
     }
     return *this;
   } 
@@ -63,7 +63,7 @@ namespace Muon{
     MuonStationIntersect intersect;
     if( !m_mdtGeometry ){
       MsgStream log(Athena::getMessageSvc(),"MdtIntersectGeometry");
-      log<<MSG::WARNING<<"MdtIntersectGeometry::intersection() - MdtIntersectGeometry not correctly initialized "<< m_mdtIdHelper->print_to_string(m_chid)<<endmsg;
+      log<<MSG::WARNING<<"MdtIntersectGeometry::intersection() - MdtIntersectGeometry not correctly initialized "<< m_idHelperSvc->mdtIdHelper().print_to_string(m_chid)<<endmsg;
       return intersect;
     }
 
@@ -85,8 +85,8 @@ namespace Muon{
     for( ; dit!=dit_end;++dit ){
 
       double xint = dxdy*( dit->position().x() - lpos.y() ) + lpos.x();
-      Identifier tubeid = m_mdtIdHelper->channelID( m_chid, dit->id().ml()+1, dit->id().lay()+1, dit->id().tube()+1 );
-      if( m_deadTubesML.find( m_mdtIdHelper->multilayerID(tubeid) ) != m_deadTubesML.end() ) {
+      Identifier tubeid = m_idHelperSvc->mdtIdHelper().channelID( m_chid, dit->id().ml()+1, dit->id().lay()+1, dit->id().tube()+1 );
+      if( m_deadTubesML.find( m_idHelperSvc->mdtIdHelper().multilayerID(tubeid) ) != m_deadTubesML.end() ) {
         if( std::find( m_deadTubes.begin(), m_deadTubes.end(), tubeid ) != m_deadTubes.end() )
           continue;
       }
@@ -114,8 +114,6 @@ namespace Muon{
   void MdtIntersectGeometry::init(MsgStream* msg)
   {
 
-    m_mdtIdHelper = m_detMgr->mdtIdHelper();
-
     /* calculate chamber geometry
        it takes as input:
          distance between the first and second tube in the chamber within a layer along the tube layer (tube distance)
@@ -129,15 +127,15 @@ namespace Muon{
     */
 
     // get id
-    int eta =  m_mdtIdHelper->stationEta(m_chid);
-    int phi = m_mdtIdHelper->stationPhi(m_chid);
-    int name = m_mdtIdHelper->stationName(m_chid);
-    int isBarrel = m_mdtIdHelper->isBarrel(m_chid);
-    int isSmallMdt = m_mdtIdHelper->isSmallMdt(m_chid);
+    int eta = m_idHelperSvc->mdtIdHelper().stationEta(m_chid);
+    int phi = m_idHelperSvc->mdtIdHelper().stationPhi(m_chid);
+    int name = m_idHelperSvc->mdtIdHelper().stationName(m_chid);
+    int isBarrel = m_idHelperSvc->mdtIdHelper().isBarrel(m_chid);
+    int isSmallMdt = m_idHelperSvc->issMdt(m_chid);
     TrkDriftCircleMath::MdtStationId stationId( isSmallMdt, isBarrel, name, eta, phi );
     
     // get detEL for first ml (always there)
-    Identifier firstIdml0 = m_mdtIdHelper->channelID( name,eta,phi,1,1,1 );
+    Identifier firstIdml0 = m_idHelperSvc->mdtIdHelper().channelID( name,eta,phi,1,1,1 );
     Identifier firstIdml1;
 
     m_detElMl0 = m_detMgr->getMdtReadoutElement( firstIdml0 );
@@ -153,7 +151,7 @@ namespace Muon{
     
     // treament of chambers with two ml
     if( nml == 2 ){
-      firstIdml1 = m_mdtIdHelper->channelID( name,eta,phi,2,1,1 );
+      firstIdml1 = m_idHelperSvc->mdtIdHelper().channelID( name,eta,phi,2,1,1 );
       m_detElMl1 = m_detMgr->getMdtReadoutElement( firstIdml1 );
     }
     
@@ -201,14 +199,14 @@ namespace Muon{
     TrkDriftCircleMath::LocPos firstTube1( firstTubeMl1.y(), firstTubeMl1.z() );
         
     // position second tube in ml 0
-    Identifier secondIdml0 = m_mdtIdHelper->channelID( name,eta,phi,firstMlIndex,1,2 );
+    Identifier secondIdml0 = m_idHelperSvc->mdtIdHelper().channelID( name,eta,phi,firstMlIndex,1,2 );
     Amg::Vector3D secondTubeMl0 = transform()*(m_detElMl0->tubePos( secondIdml0 ));
 
     if(m_detElMl0) fillDeadTubes(m_detElMl0, msg);
     if(m_detElMl1) fillDeadTubes(m_detElMl1, msg);
 	
     // position first tube in second layer ml 0 
-    Identifier firstIdml0lay1 = m_mdtIdHelper->channelID( name,eta,phi,firstMlIndex,2,1 );
+    Identifier firstIdml0lay1 = m_idHelperSvc->mdtIdHelper().channelID( name,eta,phi,firstMlIndex,2,1 );
     Amg::Vector3D firstTubeMl0lay1 = transform()*(m_detElMl0->tubePos( firstIdml0lay1 ));
 	
     double tubeDist = (secondTubeMl0 - firstTubeMl0).y();      // distance between tube in a given layer
@@ -235,10 +233,10 @@ namespace Muon{
 
       Identifier detElId = mydetEl->identify();
 
-      int name = m_mdtIdHelper->stationName(detElId);
-      int eta = m_mdtIdHelper->stationEta(detElId);
-      int phi = m_mdtIdHelper->stationPhi(detElId);
-      int ml = m_mdtIdHelper->multilayer(detElId);
+      int name = m_idHelperSvc->mdtIdHelper().stationName(detElId);
+      int eta = m_idHelperSvc->mdtIdHelper().stationEta(detElId);
+      int phi = m_idHelperSvc->mdtIdHelper().stationPhi(detElId);
+      int ml = m_idHelperSvc->mdtIdHelper().multilayer(detElId);
 
       std::vector<int>::iterator it = tubes.begin();
       for(int layer = 1; layer <= mydetEl->getNLayers(); layer++){
@@ -253,8 +251,8 @@ namespace Muon{
                ++it;
              }
              else {
-               Identifier deadTubeId = m_mdtIdHelper->channelID( name, eta, phi, ml, layer, tube );
-               Identifier deadTubeMLId = m_mdtIdHelper->multilayerID( deadTubeId );
+               Identifier deadTubeId = m_idHelperSvc->mdtIdHelper().channelID( name, eta, phi, ml, layer, tube );
+               Identifier deadTubeMLId = m_idHelperSvc->mdtIdHelper().multilayerID( deadTubeId );
                m_deadTubes.push_back( deadTubeId );
                m_deadTubesML.insert( deadTubeMLId );
                if (msg) {
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MuonStationIntersectSvc.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MuonStationIntersectSvc.cxx
index 897379807cafcdbd9b66e14b289e769785388ace..09173c881daa4e634fb9e7738669e3fadac9a0f4 100755
--- a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MuonStationIntersectSvc.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MuonStationIntersectSvc.cxx
@@ -48,7 +48,7 @@ const std::vector<std::unique_ptr<Muon::MdtIntersectGeometry> > MuonStationInter
 	continue;
       }
     }
-    stations.push_back(std::unique_ptr<Muon::MdtIntersectGeometry>(new Muon::MdtIntersectGeometry( chId, detMgr,dbData,&this->msgStream())));
+    stations.push_back(std::unique_ptr<Muon::MdtIntersectGeometry>(new Muon::MdtIntersectGeometry( chId, detMgr,dbData,&this->msgStream(),m_idHelperSvc.get())));
   }
   return stations;
 }
diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/DCMathSegmentMaker.cxx b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/DCMathSegmentMaker.cxx
index 78911fe942c9d691ce28a9d1962b6e2725a03fe6..d1af1e1313340fa2b5d76430f6bc4154431c9558 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/DCMathSegmentMaker.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/DCMathSegmentMaker.cxx
@@ -33,7 +33,6 @@
 #include "MuonRIO_OnTrack/RpcClusterOnTrack.h"
 #include "MuonRIO_OnTrack/TgcClusterOnTrack.h"
 #include "MuonCompetingRIOsOnTrack/CompetingMuonClustersOnTrack.h"
-#include "MuonStationIntersectSvc/MdtIntersectGeometry.h"
 #include "MuonReadoutGeometry/MdtReadoutElement.h"
 #include "MuonReadoutGeometry/RpcReadoutElement.h"
 #include "MuonReadoutGeometry/MuonDetectorManager.h"
@@ -472,15 +471,6 @@ namespace Muon {
       std::set<Identifier>::iterator it = chamberSet.begin();
       std::set<Identifier>::iterator it_end = chamberSet.end();
       for( ;it!=it_end;++it ){
-
-	// this does not work yet....
-	// get geometry of chamber
-	//const Muon::MuonIntersectGeometry* intersectGeometry = m_intersectSvc->getChamberGeometry( *it );
-	  
-	//const MdtIntersectGeometry* mdtGeo = dynamic_cast<const MdtIntersectGeometry*>(intersectGeometry);
-	//if( !mdtGeo ) continue;
-	//geos.push_back( *mdtGeo->mdtChamberGeometry() );
-	
 	geos.push_back( createChamberGeometry( *it, gToStation ) );
       }
       
@@ -1574,19 +1564,18 @@ namespace Muon {
     int phi = m_idHelperSvc->mdtIdHelper().stationPhi(chid);
     int name = m_idHelperSvc->mdtIdHelper().stationName(chid);
     int isBarrel = m_idHelperSvc->mdtIdHelper().isBarrel(chid);
-    int isSmallMdt = m_idHelperSvc->mdtIdHelper().isSmallMdt(chid);
+    int isSmallMdt = m_idHelperSvc->issMdt(chid);
     TrkDriftCircleMath::MdtStationId stationId( isSmallMdt, isBarrel, name, eta, phi );
 
     SG::ReadCondHandle<MuonGM::MuonDetectorManager> DetectorManagerHandle{m_DetectorManagerKey};
     const MuonGM::MuonDetectorManager* MuonDetMgr{*DetectorManagerHandle}; 
     if(MuonDetMgr==nullptr){
       ATH_MSG_ERROR("Null pointer to the read MuonDetectorManager conditions object");
-      // return 0; 
     }
 
     // get detEL for first ml (always there)
     const MuonGM::MdtReadoutElement* detEl1 = MuonDetMgr->getMdtReadoutElement( m_idHelperSvc->mdtIdHelper().channelID( name,eta,phi,1,1,1 ) );
-    const MuonGM::MdtReadoutElement* detEl2 = 0;
+    const MuonGM::MdtReadoutElement* detEl2 = nullptr;
     int ntube2 = 0;
     // number of multilayers in chamber
     int nml = detEl1->nMDTinStation();
diff --git a/MuonSpectrometer/MuonTruthAlgs/MuonTruthAlgs/MuonDetailedTrackTruthMaker.h b/MuonSpectrometer/MuonTruthAlgs/MuonTruthAlgs/MuonDetailedTrackTruthMaker.h
index 50984d9b38695577afbc5157cc3f9549722839ac..4ada05aae45601ddb5716a1a5e002a493ad2d659 100755
--- a/MuonSpectrometer/MuonTruthAlgs/MuonTruthAlgs/MuonDetailedTrackTruthMaker.h
+++ b/MuonSpectrometer/MuonTruthAlgs/MuonTruthAlgs/MuonDetailedTrackTruthMaker.h
@@ -1,24 +1,22 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef MUONDETAILEDTRACKTRUTHMAKER_H
 #define MUONDETAILEDTRACKTRUTHMAKER_H
 
-#include <string>
-#include <vector>
-
 #include "AthenaBaseComps/AthAlgorithm.h"
 #include "GaudiKernel/ToolHandle.h"
+
 #include "StoreGate/WriteHandleKeyArray.h"
 #include "StoreGate/ReadHandleKeyArray.h"
-
 #include "TrkToolInterfaces/IDetailedTrackTruthBuilder.h"
-
 #include "TrkTrack/TrackCollection.h"
 #include "TrkTruthData/PRD_MultiTruthCollection.h"
 #include "TrkTruthData/DetailedTrackTruthCollection.h"
 
+#include <string>
+
 /**
  * This algorithm produces track truth data using Muon PRD truth collections.
  * Calls a DetailedTrackTruthBuilder tool that does the actual job.
@@ -33,7 +31,6 @@ public:
   
   virtual StatusCode initialize();
   virtual StatusCode execute();
-  virtual StatusCode finalize();
   
 private:
   // PRD truth maps in any order
@@ -45,12 +42,11 @@ private:
   // DetailedTrackTruthCollection output
   SG::WriteHandleKeyArray<DetailedTrackTruthCollection> m_detailedTrackTruthNames{this,"DetailedTrackTruthNames",{""},"output collections"};
 
-  // Tool Handle for truth tool
-  ToolHandle<Trk::IDetailedTrackTruthBuilder> m_truthTool;
+  ToolHandle<Trk::IDetailedTrackTruthBuilder> m_truthTool{this,"TruthTool","Trk::DetailedTrackTruthBuilder"};
 
-  bool m_hasCSC;
-  bool m_hasSTgc;
-  bool m_hasMM;
+  Gaudi::Property<bool> m_hasCSC {this, "HasCSC", true};
+  Gaudi::Property<bool> m_hasSTgc {this, "HasSTgc", true};
+  Gaudi::Property<bool> m_hasMM {this, "HasMM", true};
 
 };
 
diff --git a/MuonSpectrometer/MuonTruthAlgs/MuonTruthAlgs/MuonPatternCombinationDetailedTrackTruthMaker.h b/MuonSpectrometer/MuonTruthAlgs/MuonTruthAlgs/MuonPatternCombinationDetailedTrackTruthMaker.h
index c8677ec48de438db18775c872077325ce6a01909..2df3a9bd21fa96cdbaeaa87e5a7d35f2be06667e 100755
--- a/MuonSpectrometer/MuonTruthAlgs/MuonTruthAlgs/MuonPatternCombinationDetailedTrackTruthMaker.h
+++ b/MuonSpectrometer/MuonTruthAlgs/MuonTruthAlgs/MuonPatternCombinationDetailedTrackTruthMaker.h
@@ -1,18 +1,18 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef MUONPATTERNCOMBINATIONDETAILEDTRACKTRUTHMAKER_H
 #define MUONPATTERNCOMBINATIONDETAILEDTRACKTRUTHMAKER_H
 
-#include <string>
-#include <vector>
-
 #include "AthenaBaseComps/AthAlgorithm.h"
 #include "GaudiKernel/ToolHandle.h"
 
 #include "MuonRecToolInterfaces/IDetailedMuonPatternTruthBuilder.h"
 
+#include <string>
+#include <vector>
+
 /**
  * This algorithm produces track truth data using Muon PRD truth collections.
  * Calls a DetailedTrackTruthBuilder tool that does the actual job.
@@ -27,24 +27,17 @@ public:
   
   virtual StatusCode initialize();
   virtual StatusCode execute();
-  virtual StatusCode finalize();
   
 private:
-  // PRD truth maps in any order
-  std::vector<std::string> m_PRD_TruthNames;
-
-  // Track input
-  std::string m_trackCollectionName;
+  Gaudi::Property<std::vector<std::string>> m_PRD_TruthNames{this,"PRD_TruthNames",{"CSC_TruthMap","RPC_TruthMap","TGC_TruthMap","MDT_TruthMap"},"PRD truth maps in any order"};
 
-  // Muon pattern combination collection input
-  std::string m_collection;
+  Gaudi::Property<std::string> m_trackCollectionName{this,"TrackCollectionName","MooreTracks","Track input"};
 
-  // DetailedTrackTruthCollection output
-  std::string m_detailedTrackTruthName;
+  Gaudi::Property<std::string> m_collection{this,"MuonPatternCombinationCollection","MuonHoughPatternCombinations","Muon pattern combination collection input"};
 
-  // Tool Handle for truth tool
-  ToolHandle<Trk::IDetailedMuonPatternTruthBuilder> m_truthTool;
+  Gaudi::Property<std::string> m_detailedTrackTruthName{this,"DetailedTrackTruthNames","","DetailedTrackTruthCollection output"};
 
+  ToolHandle<Trk::IDetailedMuonPatternTruthBuilder> m_truthTool{this,"TruthTool","Trk::DetailedMuonPatternTruthBuilder/DetailedMuonPatternTruthBuilder"};
 };
 
 #endif/*MUONPATTERNCOMBINATIONDETAILEDTRACKTRUTHMAKER_H*/
diff --git a/MuonSpectrometer/MuonTruthAlgs/MuonTruthAlgs/MuonTrackTruthTool.h b/MuonSpectrometer/MuonTruthAlgs/MuonTruthAlgs/MuonTrackTruthTool.h
index 3876339487e1cf164c3604053c9b5712724df275..c800bb4d8b067c40ce4e808198781b89a12e567a 100644
--- a/MuonSpectrometer/MuonTruthAlgs/MuonTruthAlgs/MuonTrackTruthTool.h
+++ b/MuonSpectrometer/MuonTruthAlgs/MuonTruthAlgs/MuonTrackTruthTool.h
@@ -16,11 +16,13 @@
 #include "MuonSimData/CscSimDataCollection.h"
 #include "TrackRecord/TrackRecordCollection.h"
 #include "TrkTrack/TrackCollection.h"
+#include "TrkToolInterfaces/ITruthTrajectoryBuilder.h"
 
 #include <string>
 #include <vector>
 #include <map>
 #include <utility>
+#include <set>
 
 class TruthTrajectory;
 
@@ -35,7 +37,6 @@ namespace Muon {
 namespace Trk {
   class Track;
   class MeasurementBase;
-  class ITruthTrajectoryBuilder;
 }
 
 namespace Muon {
@@ -138,21 +139,23 @@ namespace Muon {
     /// The number of such scatters is returned in the .second.
     const std::pair<const HepMC::GenParticle*, unsigned int> getInitialPair( const TruthTrajectory& traj, const int barcodeIn ) const;
     
-    const MuonGM::MuonDetectorManager*  m_detMgr;
+    const MuonGM::MuonDetectorManager* m_detMgr;
 
-    ToolHandle<Muon::MuonEDMPrinterTool>         m_printer;
     ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
-    ToolHandle<Trk::ITruthTrajectoryBuilder>     m_truthTrajectoryBuilder;
+
+    ToolHandle<Muon::MuonEDMPrinterTool> m_printer{this,"Printer","Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"};
+    ToolHandle<Trk::ITruthTrajectoryBuilder> m_truthTrajectoryBuilder{this,"TruthTrajectoryBuilder","Muon::MuonDecayTruthTrajectoryBuilder/MuonDecayTruthTrajectoryBuilder"};
 
     mutable TruthTree m_truthTree;
     mutable std::vector<TruthTrajectory*> m_truthTrajectoriesToBeDeleted;
     mutable std::map<int,int> m_barcodeMap; // map used to link barcode of TrackRecord particles/hits to 'final' state barcode
-    bool m_manipulateBarCode;
-    bool m_doSummary;
-    unsigned int  m_minHits;
-    bool m_matchAllParticles;
+
+    Gaudi::Property<bool> m_manipulateBarCode{this,"ManipulateBarCode",false};
+    Gaudi::Property<bool> m_doSummary{this,"DoSummary",false};
+    Gaudi::Property<bool> m_matchAllParticles{this,"MatchAllParticles",true};
+    Gaudi::Property<unsigned int> m_minHits{this,"MinHits",4};
+    Gaudi::Property<std::vector<int>> m_pdgsToBeConsidered{this,"ConsideredPDGs",{}};
     
-    IntegerArrayProperty m_pdgsToBeConsidered;
     std::set<int> m_selectedPdgs; // set storing particle PDG's considered for matching
   };
 
diff --git a/MuonSpectrometer/MuonTruthAlgs/src/DetailedMuonPatternTruthBuilder.cxx b/MuonSpectrometer/MuonTruthAlgs/src/DetailedMuonPatternTruthBuilder.cxx
index 69e3e795536b96481113e84c2162d2c1f6243c0b..5fea6adda781d26e674832d40cbd1a2d1b5abc55 100755
--- a/MuonSpectrometer/MuonTruthAlgs/src/DetailedMuonPatternTruthBuilder.cxx
+++ b/MuonSpectrometer/MuonTruthAlgs/src/DetailedMuonPatternTruthBuilder.cxx
@@ -3,54 +3,42 @@
 */
 
 #include "DetailedMuonPatternTruthBuilder.h"
+
 #include "MuonPattern/MuonPattern.h"
 #include "MuonPattern/MuonPatternCollection.h"
 #include "MuonPattern/MuonPatternCombination.h"
 #include "MuonPattern/MuonPatternCombinationCollection.h"
 #include "MuonPattern/MuonPatternChamberIntersect.h"
 #include "MuonPattern/DetailedMuonPatternTruthCollection.h"
-
 #include "TrkTruthData/DetailedTrackTruth.h"
 #include "TrkTruthData/DetailedSegmentTruth.h"
 #include "TrkTruthData/TruthTrajectory.h"
-
 #include "AtlasHepMC/GenParticle.h"
 #include "AtlasHepMC/GenVertex.h"
-
 #include "GeneratorObjects/HepMcParticleLink.h"
 #include "AthContainers/DataVector.h"
-
 #include "TrkTrack/Track.h"
 #include "TrkRIO_OnTrack/RIO_OnTrack.h"
 #include "TrkCompetingRIOsOnTrack/CompetingRIOsOnTrack.h"
 #include "TrkMeasurementBase/MeasurementBase.h"
 #include "TrkPrepRawData/PrepRawData.h"
-
-// GROSS MASS INCLUDING ALL PACKAGES
 #include "MuonSimData/MuonSimData.h"
 #include "MuonSimData/MuonSimDataCollection.h"
 #include "MuonSimData/CscSimDataCollection.h"
 #include "MuonPrepRawData/MdtPrepData.h"
 #include "MuonPrepRawData/MMPrepData.h"
 #include "MuonPrepRawData/sTgcPrepData.h"
-
-// package include
-// Trk includes
 #include "TrkParameters/TrackParameters.h" 
 #include "TrkTrack/Track.h"
 #include "TrkFitterInterfaces/ITrackFitter.h"
 #include "TrkExInterfaces/IExtrapolator.h"
 #include "TrkSurfaces/PerigeeSurface.h"
-
 #include "TrkDetElementBase/TrkDetElementBase.h"
-
 #include "TrkPrepRawData/PrepRawData.h"
 #include "TrkMeasurementBase/MeasurementBase.h"
 #include "TrkRIO_OnTrack/RIO_OnTrack.h"
 #include "TrkPseudoMeasurementOnTrack/PseudoMeasurementOnTrack.h"
-
 #include "TrackRecord/TrackRecordCollection.h"
-
 #include "MuonRIO_OnTrack/MdtDriftCircleOnTrack.h"
 #include "MuonRIO_OnTrack/MuonClusterOnTrack.h"
 #include "MuonRIO_OnTrack/MMClusterOnTrack.h"
@@ -59,7 +47,6 @@
 #include "MuonPrepRawData/sTgcPrepData.h"
 #include "MuonPrepRawData/MuonCluster.h"
 #include "MuonSegment/MuonSegment.h"
-// HepMC
 #include "AtlasHepMC/GenParticle.h"
 #include "MuonRecHelperTools/MuonEDMPrinterTool.h"
 #include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
@@ -67,11 +54,8 @@
 #include "MuonRecToolInterfaces/IMuonClusterOnTrackCreator.h"
 #include "MuonRecToolInterfaces/IMuonCompetingClustersOnTrackCreator.h"
 #include "MuonRecToolInterfaces/IMuonTrackToSegmentTool.h"
-
 #include "MuonTrackMakerUtils/SortMeasurementsByPosition.h"
 
-// END GROSS MASS INCLUDING
-
 #include <map>
 #include <queue>
 #include <list>
@@ -99,7 +83,6 @@ struct DetectorLayer {
 };
 
 namespace {
-  //template<class Map>  void printMap(const Map& m);
 
   template<class Map>  void printMap(const Map& m) {
     std::cout<<"printMap(): [";
@@ -144,24 +127,17 @@ namespace {
 namespace Trk {
 
 //================================================================
-DetailedMuonPatternTruthBuilder::DetailedMuonPatternTruthBuilder(const std::string& type, const std::string& name, const IInterface* parent)
-  : AthAlgTool(type,name,parent)
-  , m_truthTrackBuilder("Trk::ElasticTruthTrajectoryBuilder")
-  , m_mdtCreator("Muon::MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator")
-  , m_muonClusterCreator("Muon::MuonClusterOnTrackCreator/MuonClusterOnTrackCreator")
-{
+DetailedMuonPatternTruthBuilder::DetailedMuonPatternTruthBuilder(const std::string& type, const std::string& name, const IInterface* parent) :
+    AthAlgTool(type,name,parent) {
   declareInterface<IDetailedMuonPatternTruthBuilder>(this);
-  declareProperty("TruthTrajectoryTool", m_truthTrackBuilder);
 }
 
 //================================================================
 StatusCode DetailedMuonPatternTruthBuilder::initialize() {
-
   ATH_CHECK(m_truthTrackBuilder.retrieve());
   ATH_CHECK(m_idHelperSvc.retrieve());
   ATH_CHECK(m_mdtCreator.retrieve());
   ATH_CHECK(m_muonClusterCreator.retrieve());
-
   return StatusCode::SUCCESS;
 }
 
diff --git a/MuonSpectrometer/MuonTruthAlgs/src/DetailedMuonPatternTruthBuilder.h b/MuonSpectrometer/MuonTruthAlgs/src/DetailedMuonPatternTruthBuilder.h
index e9fd93c872cfbabd398498d4b4854a1c463a56c6..ed21b33141d71982c59ec873ab6ce087a4fc2bfe 100755
--- a/MuonSpectrometer/MuonTruthAlgs/src/DetailedMuonPatternTruthBuilder.h
+++ b/MuonSpectrometer/MuonTruthAlgs/src/DetailedMuonPatternTruthBuilder.h
@@ -5,54 +5,46 @@
 #ifndef DETAILEDMUONPATTERNTRUTHBUILDER_H
 #define DETAILEDMUONPATTERNTRUTHBUILDER_H
 
-// Gaudi
+#include "MuonRecToolInterfaces/IDetailedMuonPatternTruthBuilder.h"
 #include "AthenaBaseComps/AthAlgTool.h"
-#include "GaudiKernel/ToolHandle.h"
 #include "GaudiKernel/ServiceHandle.h"
+#include "GaudiKernel/ToolHandle.h"
 
 #include "AthLinks/ElementLink.h"
 #include "AtlasDetDescr/AtlasDetectorID.h"
 #include "TrkTruthData/PRD_MultiTruthCollection.h"
 #include "TrkEventUtils/InverseMultiMap.h"
-
-#include "MuonRecToolInterfaces/IDetailedMuonPatternTruthBuilder.h"
 #include "MuonPattern/MuonPatternCollection.h"
 #include "MuonPattern/MuonPatternCombination.h"
 #include "MuonPattern/MuonPatternCombinationCollection.h"
 #include "MuonPattern/DetailedMuonPatternTruthCollection.h"
-
 #include "TrkToolInterfaces/ITruthTrajectoryBuilder.h"
 #include "TrkTruthData/DetailedTrackTruth.h"
 #include "TrkTruthData/DetailedSegmentTruth.h"
 #include "TrkTruthData/SubDetHitStatistics.h"
-
 #include "TrkTruthData/DetailedTrackTruthCollection.h"
 #include "TrkTruthData/DetailedTrackTruth.h"
 #include "TrkTruthData/TruthTrajectory.h"
-
 #include "TrkTrack/Track.h"
 #include "TrkRIO_OnTrack/RIO_OnTrack.h"
 #include "TrkCompetingRIOsOnTrack/CompetingRIOsOnTrack.h"
 #include "TrkMeasurementBase/MeasurementBase.h"
 #include "TrkPrepRawData/PrepRawData.h"
-
 #include "MuonIdHelpers/IMuonIdHelperSvc.h"
-
-// Include any other potentially useful packages
-// Trk includes
 #include "MuonSimData/MuonSimDataCollection.h"
 #include "MuonSimData/CscSimDataCollection.h"
 #include "TrackRecord/TrackRecord.h"
 #include "TrkSegment/SegmentCollection.h"
 #include "TrkParameters/TrackParameters.h"
-#include <vector>
 #include "MuonRecToolInterfaces/IMdtDriftCircleOnTrackCreator.h"
 #include "MuonRecToolInterfaces/IMuonClusterOnTrackCreator.h"
 
+#include <string>
+#include <vector>
+
 namespace Trk {
   
-  class DetailedMuonPatternTruthBuilder: virtual public IDetailedMuonPatternTruthBuilder,
-				   public AthAlgTool
+  class DetailedMuonPatternTruthBuilder: virtual public IDetailedMuonPatternTruthBuilder, public AthAlgTool
   {
   public:
     DetailedMuonPatternTruthBuilder(const std::string& type, const std::string& name, const IInterface* parent);
@@ -77,10 +69,9 @@ namespace Trk {
 
     ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
 
-    ToolHandle<Trk::ITruthTrajectoryBuilder> m_truthTrackBuilder;
-    ToolHandle<Muon::IMdtDriftCircleOnTrackCreator>   m_mdtCreator;
-    ToolHandle<Muon::IMuonClusterOnTrackCreator>      m_muonClusterCreator;
-    ToolHandle<Muon::IMuonClusterOnTrackCreator >    p_IMuonClusterOnTrackCreatorCSCCluster ;
+    ToolHandle<Trk::ITruthTrajectoryBuilder> m_truthTrackBuilder{this,"TruthTrajectoryTool","Trk::ElasticTruthTrajectoryBuilder"};
+    ToolHandle<Muon::IMdtDriftCircleOnTrackCreator> m_mdtCreator{this,"MdtDriftCircleCreator","Muon::MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator"};
+    ToolHandle<Muon::IMuonClusterOnTrackCreator> m_muonClusterCreator{this,"MuonClusterCreator","Muon::MuonClusterOnTrackCreator/MuonClusterOnTrackCreator"};
 
     SubDetHitStatistics::SubDetType findSubDetType(Identifier id);
 
diff --git a/MuonSpectrometer/MuonTruthAlgs/src/MuonDetailedTrackTruthMaker.cxx b/MuonSpectrometer/MuonTruthAlgs/src/MuonDetailedTrackTruthMaker.cxx
index cbd7fdf08f1153d739d8110b80c5333e2d17bd14..dc074373cb75df9b5cfad8392e094a185aa540ec 100755
--- a/MuonSpectrometer/MuonTruthAlgs/src/MuonDetailedTrackTruthMaker.cxx
+++ b/MuonSpectrometer/MuonTruthAlgs/src/MuonDetailedTrackTruthMaker.cxx
@@ -6,17 +6,14 @@
 // A. Gaponenko, 2006
 
 #include "MuonTruthAlgs/MuonDetailedTrackTruthMaker.h"
+
 #include <iterator>
+#include <vector>
 
 //================================================================
 MuonDetailedTrackTruthMaker::MuonDetailedTrackTruthMaker(const std::string &name, ISvcLocator *pSvcLocator) :
-  AthAlgorithm(name,pSvcLocator),
-  m_truthTool("Trk::DetailedTrackTruthBuilder")
-{  
-  declareProperty("TruthTool",               m_truthTool);
-  declareProperty("HasCSC",m_hasCSC=true);
-  declareProperty("HasSTgc",m_hasSTgc=true);
-  declareProperty("HasMM",m_hasMM=true);
+  AthAlgorithm(name,pSvcLocator)
+{
 }
 
 // Initialize method
@@ -52,13 +49,6 @@ StatusCode MuonDetailedTrackTruthMaker::initialize()
   return StatusCode::SUCCESS;
 }
 
-// -----------------------------------------------------------------------------------------------------
-StatusCode MuonDetailedTrackTruthMaker::finalize() 
-{
-  ATH_MSG_DEBUG( "MuonDetailedTrackTruthMaker::finalize()");
-  return StatusCode::SUCCESS;
-}
-
 // -----------------------------------------------------------------------------------------------------
 StatusCode MuonDetailedTrackTruthMaker::execute() {
   ATH_MSG_DEBUG( "MuonDetailedTrackTruthMaker::execute()");
diff --git a/MuonSpectrometer/MuonTruthAlgs/src/MuonPatternCombinationDetailedTrackTruthMaker.cxx b/MuonSpectrometer/MuonTruthAlgs/src/MuonPatternCombinationDetailedTrackTruthMaker.cxx
index ebd64af9a8525bf16acad7d0699f020f8b020e81..1d71c655f1574c8715f1b4c339b3f32de4690919 100755
--- a/MuonSpectrometer/MuonTruthAlgs/src/MuonPatternCombinationDetailedTrackTruthMaker.cxx
+++ b/MuonSpectrometer/MuonTruthAlgs/src/MuonPatternCombinationDetailedTrackTruthMaker.cxx
@@ -1,65 +1,31 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // Algorithm producing truth info for PrepRawData, keeping all MC particles contributed to a PRD.
 // A. Gaponenko, 2006
 
 #include "MuonTruthAlgs/MuonPatternCombinationDetailedTrackTruthMaker.h"
+
 #include "TrkTruthData/PRD_MultiTruthCollection.h"
 #include "TrkTruthData/DetailedTrackTruthCollection.h"
 #include "TrkTrack/TrackCollection.h"
-#include <iterator>
-
 #include "MuonPattern/DetailedMuonPatternTruthCollection.h"
 
+#include <iterator>
 
 //================================================================
 MuonPatternCombinationDetailedTrackTruthMaker::MuonPatternCombinationDetailedTrackTruthMaker(const std::string &name, ISvcLocator *pSvcLocator) :
-  AthAlgorithm(name,pSvcLocator),
-//  m_truthTool("Trk::DetailedTrackTruthBuilder")
-  m_truthTool("Trk::DetailedMuonPatternTruthBuilder/DetailedMuonPatternTruthBuilder")
+  AthAlgorithm(name,pSvcLocator)
 {  
-  declareProperty("TruthTool",               m_truthTool);
-
-  // Inputs
-  declareProperty("TrackCollectionName", m_trackCollectionName = "MooreTracks");
-  declareProperty("MuonPatternCombinationCollection", m_collection = "MuonHoughPatternCombinations");
-
-  declareProperty("PRD_TruthNames",          m_PRD_TruthNames);
-  m_PRD_TruthNames.push_back("CSC_TruthMap");
-  m_PRD_TruthNames.push_back("RPC_TruthMap");
-  m_PRD_TruthNames.push_back("TGC_TruthMap");
-  m_PRD_TruthNames.push_back("MDT_TruthMap");
-
-
-  // Output
-  declareProperty("DetailedTrackTruthNames",  m_detailedTrackTruthName);
-  m_detailedTrackTruthName = (m_trackCollectionName + "Truth");
+  if (m_detailedTrackTruthName.empty()) m_detailedTrackTruthName = (m_trackCollectionName + "Truth");
 }
 
-// Initialize method
 // -----------------------------------------------------------------------------------------------------
 StatusCode MuonPatternCombinationDetailedTrackTruthMaker::initialize()
 {
   ATH_MSG_DEBUG( "MuonPatternCombinationDetailedTrackTruthMaker::initialize()");
-    
-  //----------------
-  if ( m_truthTool.retrieve().isFailure() ) {
-    ATH_MSG_FATAL( "Failed to retrieve tool " << m_truthTool);
-    return StatusCode::FAILURE;
-  } else {
-    ATH_MSG_DEBUG("Retrieved tool " << m_truthTool );
-  }
-
-  //----------------
-  return StatusCode::SUCCESS;
-}
-
-// -----------------------------------------------------------------------------------------------------
-StatusCode MuonPatternCombinationDetailedTrackTruthMaker::finalize() 
-{
-  ATH_MSG_DEBUG( "MuonPatternCombinationDetailedTrackTruthMaker::finalize()");
+  ATH_CHECK(m_truthTool.retrieve());
   return StatusCode::SUCCESS;
 }
 
diff --git a/MuonSpectrometer/MuonTruthAlgs/src/MuonSegmentTruthAssociationAlg.cxx b/MuonSpectrometer/MuonTruthAlgs/src/MuonSegmentTruthAssociationAlg.cxx
index 1c494ba3e7cca79452fcccb46fdf016edfd519ef..7577aa796c2b49f1e7efb20ca265199f758776c2 100644
--- a/MuonSpectrometer/MuonTruthAlgs/src/MuonSegmentTruthAssociationAlg.cxx
+++ b/MuonSpectrometer/MuonTruthAlgs/src/MuonSegmentTruthAssociationAlg.cxx
@@ -15,11 +15,7 @@ namespace Muon {
 
   // Constructor with parameters:
   MuonSegmentTruthAssociationAlg::MuonSegmentTruthAssociationAlg(const std::string &name, ISvcLocator *pSvcLocator) :
-    AthAlgorithm(name,pSvcLocator),
-    m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"),
-    m_muonTrackTruthTool("Muon::MuonTrackTruthTool/MuonTrackTruthTool")
-  {  
-    declareProperty("BarcodeOffset", m_barcodeOffset = 1000000 ,"barcode offset for matching truth particles");
+    AthAlgorithm(name,pSvcLocator) {  
   }
 
   // Initialize method:
diff --git a/MuonSpectrometer/MuonTruthAlgs/src/MuonSegmentTruthAssociationAlg.h b/MuonSpectrometer/MuonTruthAlgs/src/MuonSegmentTruthAssociationAlg.h
index 3d8c36568bd40d34befbd17e0ae1d736c0d9e66c..d3d0a4979d7d836d085160bdce3cc2db59274a54 100644
--- a/MuonSpectrometer/MuonTruthAlgs/src/MuonSegmentTruthAssociationAlg.h
+++ b/MuonSpectrometer/MuonTruthAlgs/src/MuonSegmentTruthAssociationAlg.h
@@ -35,15 +35,19 @@ public:
 
 private:
   ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
-  ToolHandle<Muon::MuonEDMPrinterTool>  m_printer;
-  ToolHandle<Muon::IMuonTrackTruthTool> m_muonTrackTruthTool;
-  Gaudi::Property<SG::WriteDecorHandleKey<xAOD::MuonSegmentContainer> >m_muonTruthSegmentContainerName{this,"MuonTruthSegmentName","MuonTruthSegments","muon truth segment container name"};
-  Gaudi::Property<SG::WriteDecorHandleKey<xAOD::MuonSegmentContainer> >m_muonSegmentCollectionName{this,"MuonSegmentLocation","MuonSegments","muon segment container name"};
+
+  ToolHandle<Muon::MuonEDMPrinterTool> m_printer{this,"Printer","Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"};
+  ToolHandle<Muon::IMuonTrackTruthTool> m_muonTrackTruthTool{this,"MuonTrackTruthTool","Muon::MuonTrackTruthTool/MuonTrackTruthTool"};
+
+  SG::WriteDecorHandleKey<xAOD::MuonSegmentContainer> m_muonTruthSegmentContainerName{this,"MuonTruthSegmentName","MuonTruthSegments","muon truth segment container name"};
+  SG::WriteDecorHandleKey<xAOD::MuonSegmentContainer> m_muonSegmentCollectionName{this,"MuonSegmentLocation","MuonSegments","muon segment container name"};
+
   SG::ReadHandleKey<McEventCollection> m_mcEventColl{this,"McEventCollectionKey","TruthEvent","McEventCollection"};
   SG::ReadHandleKeyArray<MuonSimDataCollection> m_muonSimData{this,"MuonSimDataNames",{ "MDT_SDO", "RPC_SDO", "TGC_SDO", "sTGC_SDO", "MM_SDO" },"Muon SDO maps"};
   SG::ReadHandleKey<CscSimDataCollection> m_cscSimData{this,"CSC_SDO_Container","CSC_SDO","CSC SDO"};
   SG::ReadHandleKey<TrackRecordCollection> m_trackRecord{this,"TrackRecord","MuonEntryLayerFilter","Track Record Collection"};
-  int m_barcodeOffset;
+
+  Gaudi::Property<int>m_barcodeOffset{this,"BarcodeOffset",1000000 ,"barcode offset for matching truth particles"};
 };
 
 } // namespace Muon
diff --git a/MuonSpectrometer/MuonTruthAlgs/src/MuonTrackTruthTool.cxx b/MuonSpectrometer/MuonTruthAlgs/src/MuonTrackTruthTool.cxx
index fa7fafc64d4fbf46fc3ae60c688ea7015d5804aa..b256dcb13bb2ded4b988355698aad67bdda24cfe 100644
--- a/MuonSpectrometer/MuonTruthAlgs/src/MuonTrackTruthTool.cxx
+++ b/MuonSpectrometer/MuonTruthAlgs/src/MuonTrackTruthTool.cxx
@@ -4,46 +4,27 @@
 
 #include "MuonTruthAlgs/MuonTrackTruthTool.h"
 
-#include "TrkToolInterfaces/ITruthTrajectoryBuilder.h"
 #include "AtlasHepMC/GenEvent.h"
 #include "AtlasHepMC/GenParticle.h"
 #include "TrkTruthData/TruthTrajectory.h"
-
 #include "MuonReadoutGeometry/MuonDetectorManager.h"
-
 #include "MuonSimData/MuonSimData.h"
 #include "MuonRIO_OnTrack/MdtDriftCircleOnTrack.h"
 #include "MuonSegment/MuonSegment.h"
-
-#include <iostream>
-#include <set>
-
-#include "MuonIdHelpers/MdtIdHelper.h"
-#include "MuonIdHelpers/RpcIdHelper.h"
-#include "MuonIdHelpers/CscIdHelper.h"
-#include "MuonIdHelpers/TgcIdHelper.h"
-
 #include "MuonCompetingRIOsOnTrack/CompetingMuonClustersOnTrack.h"
 #include "TrkMeasurementBase/MeasurementBase.h"
 #include "TrkPseudoMeasurementOnTrack/PseudoMeasurementOnTrack.h"
 #include "TrkTrack/Track.h"
 #include "TrkEventUtils/RoT_Extractor.h"
 
+#include <iostream>
+
 namespace Muon {
 
-  MuonTrackTruthTool::MuonTrackTruthTool(const std::string& ty,const std::string& na,const IInterface* pa)
-    : AthAlgTool(ty,na,pa), 
-      m_detMgr(0),
-      m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"),
-      m_truthTrajectoryBuilder("Muon::MuonDecayTruthTrajectoryBuilder/MuonDecayTruthTrajectoryBuilder")
-  {
+  MuonTrackTruthTool::MuonTrackTruthTool(const std::string& ty,const std::string& na,const IInterface* pa) :
+      AthAlgTool(ty,na,pa), 
+      m_detMgr(nullptr) {
     declareInterface<IMuonTrackTruthTool>(this);
-
-    declareProperty("DoSummary",                  m_doSummary = false );
-    declareProperty("ManipulateBarCode",          m_manipulateBarCode = false );
-    declareProperty("MinHits",                    m_minHits = 4 );
-    declareProperty("MatchAllParticles",          m_matchAllParticles = true );
-    declareProperty("ConsideredPDGs",             m_pdgsToBeConsidered );
   }
 
   StatusCode MuonTrackTruthTool::initialize()
@@ -258,8 +239,6 @@ namespace Muon {
 	ATH_MSG_VERBOSE(" Erasing entry: barcode " << it->second.truthTrack->GetBarCode() 
                         << " manip " << manipulateBarCode(it->second.truthTrack->GetBarCode()) << " hits " << nhits);
 	badBarcodes.push_back(it->first);
-	//m_truthTree.erase(it);
-	//it = m_truthTree.begin();
       }else{
 	++ngood;
 	ATH_MSG_VERBOSE(" Keeping entry: barcode " << it->second.truthTrack->GetBarCode() 
diff --git a/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthDecorationAlg.cxx b/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthDecorationAlg.cxx
index 0819ef104cdac70818b16297ea0e127390e815e6..5fe49d5908c1a2ae995348cbdc240737ef1691f8 100644
--- a/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthDecorationAlg.cxx
+++ b/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthDecorationAlg.cxx
@@ -3,6 +3,7 @@
 */
 
 #include "MuonTruthDecorationAlg.h"
+
 #include "xAODMuon/MuonSegment.h"
 #include "xAODMuon/MuonSegmentAuxContainer.h"
 #include "xAODTruth/TruthParticleContainer.h"
@@ -24,30 +25,7 @@ namespace Muon {
   // Constructor with parameters:
   MuonTruthDecorationAlg::MuonTruthDecorationAlg(const std::string &name, ISvcLocator *pSvcLocator) :
     AthAlgorithm(name,pSvcLocator),
-    m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"),
-    m_truthClassifier("MCTruthClassifier/MCTruthClassifier"),
-    m_extrapolator("Trk::Extrapolator/AtlasExtrapolator"),
-    m_muonMgr(0)
-  {  
-    
-    // Get parameter values from jobOptions file
-    declareProperty("TruthParticleContainerName"    , m_truthParticleContainerName = "TruthParticles");
-    declareProperty("MuonTruthParticleContainerName", m_muonTruthParticleContainerName = "MuonTruthParticles");
-    declareProperty("MuonTruthSegmentName"          , m_muonTruthSegmentContainerName = "MuonTruthSegments" );
-    declareProperty("TrackRecordCollectionNames"    , m_trackRecordCollectionNames={"CaloEntryLayer","MuonEntryLayer","MuonExitLayer"});
-
-    //remove NSW by default for now, can always be changed in the configuration
-    declareProperty("PRD_TruthMaps",m_PRD_TruthNames={"CSC_TruthMap","RPC_TruthMap","TGC_TruthMap","MDT_TruthMap"}); 
-
-    declareProperty("CSCSDOs",   m_CSC_SDO_TruthNames="CSC_SDO");
-    //remove NSW by default for now, can always be changed in the configuration
-    declareProperty("SDOs",      m_SDO_TruthNames={"RPC_SDO","TGC_SDO","MDT_SDO"});
-
-    declareProperty("MCTruthClassifier",   m_truthClassifier);
-    declareProperty("MuonEDMPrinterTool",  m_printer);
-    declareProperty("Extrapolator",        m_extrapolator);
-    declareProperty("CreateTruthSegments", m_createTruthSegment = true );
-    declareProperty("BarcodeOffset",       m_barcodeOffset = 1000000 );
+    m_muonMgr(nullptr) {  
   }
 
   // Initialize method:
diff --git a/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthDecorationAlg.h b/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthDecorationAlg.h
index 51d2306de9dd48290a3e8edd159f7cf5291bd59e..ef4044910cf648f5cf7336bcbc76b57eb72f8025 100755
--- a/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthDecorationAlg.h
+++ b/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthDecorationAlg.h
@@ -8,15 +8,11 @@
 #include "AthenaBaseComps/AthAlgorithm.h"
 #include "GaudiKernel/ServiceHandle.h"
 #include "GaudiKernel/ToolHandle.h"
-#include <string>
-#include <map>
-#include <vector>
 
 #include "MuonIdHelpers/IMuonIdHelperSvc.h"
 #include "MuonRecToolInterfaces/IMuonTrackTruthTool.h"
 #include "MuonRecHelperTools/MuonEDMPrinterTool.h"
 #include "TrkExInterfaces/IExtrapolator.h"
-
 #include "TrackRecord/TrackRecordCollection.h"
 #include "xAODTruth/TruthParticle.h"
 #include "xAODTruth/TruthParticleContainer.h"
@@ -25,11 +21,14 @@
 #include "xAODMuon/MuonSegmentContainer.h"
 #include "GeneratorObjects/xAODTruthParticleLink.h"
 #include "MCTruthClassifier/IMCTruthClassifier.h"
-
 #include "StoreGate/ReadHandleKey.h"
 #include "StoreGate/WriteHandleKey.h"
 #include "StoreGate/WriteHandleKeyArray.h"
 
+#include <string>
+#include <map>
+#include <vector>
+
 class MuonSimDataCollection;
 class CscSimDataCollection;
 
@@ -58,20 +57,25 @@ private:
   void createSegments( const ElementLink< xAOD::TruthParticleContainer >& truthLink,SG::WriteHandle<xAOD::MuonSegmentContainer> segmentContainer,
                        const MuonTruthDecorationAlg::ChamberIdMap& ids) const;
 
-  SG::ReadHandleKey<xAOD::TruthParticleContainer> m_truthParticleContainerName;
-  SG::WriteHandleKey<xAOD::TruthParticleContainer> m_muonTruthParticleContainerName;
-  SG::WriteHandleKey<xAOD::MuonSegmentContainer> m_muonTruthSegmentContainerName;
-  SG::ReadHandleKeyArray<TrackRecordCollection> m_trackRecordCollectionNames;
-  SG::ReadHandleKeyArray<PRD_MultiTruthCollection> m_PRD_TruthNames;
-  SG::ReadHandleKeyArray<MuonSimDataCollection> m_SDO_TruthNames;
-  SG::ReadHandleKey<CscSimDataCollection> m_CSC_SDO_TruthNames;
+  SG::ReadHandleKey<xAOD::TruthParticleContainer> m_truthParticleContainerName{this,"TruthParticleContainerName","TruthParticles"};
+  SG::WriteHandleKey<xAOD::TruthParticleContainer> m_muonTruthParticleContainerName{this,"MuonTruthParticleContainerName","MuonTruthParticles"};
+  SG::WriteHandleKey<xAOD::MuonSegmentContainer> m_muonTruthSegmentContainerName{this,"MuonTruthSegmentName","MuonTruthSegments"};
+
+  SG::ReadHandleKeyArray<TrackRecordCollection> m_trackRecordCollectionNames{this,"TrackRecordCollectionNames",{"CaloEntryLayer","MuonEntryLayer","MuonExitLayer"}};
+  SG::ReadHandleKeyArray<PRD_MultiTruthCollection> m_PRD_TruthNames{this,"PRD_TruthMaps",{"CSC_TruthMap","RPC_TruthMap","TGC_TruthMap","MDT_TruthMap"},"remove NSW by default for now, can always be changed in the configuration"};
+  SG::ReadHandleKeyArray<MuonSimDataCollection> m_SDO_TruthNames{this,"SDOs",{"RPC_SDO","TGC_SDO","MDT_SDO"},"remove NSW by default for now, can always be changed in the configuration"};
+  SG::ReadHandleKey<CscSimDataCollection> m_CSC_SDO_TruthNames{this,"CSCSDOs","CSC_SDO"};
+
   ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
-  ToolHandle<Muon::MuonEDMPrinterTool>  m_printer;
-  ToolHandle<IMCTruthClassifier>        m_truthClassifier;
-  ToolHandle<Trk::IExtrapolator>        m_extrapolator;
+
+  ToolHandle<Muon::MuonEDMPrinterTool> m_printer{this,"MuonEDMPrinterTool","Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"};
+  ToolHandle<IMCTruthClassifier> m_truthClassifier{this,"MCTruthClassifier","MCTruthClassifier/MCTruthClassifier"};
+  ToolHandle<Trk::IExtrapolator> m_extrapolator{this,"Extrapolator","Trk::Extrapolator/AtlasExtrapolator"};
+
+  Gaudi::Property<bool> m_createTruthSegment{this,"CreateTruthSegments",true};
+  Gaudi::Property<int> m_barcodeOffset{this,"BarcodeOffset",1000000};
+
   const MuonGM::MuonDetectorManager* m_muonMgr;
-  bool m_createTruthSegment;
-  int m_barcodeOffset;
 };
 
 } // namespace Muon
diff --git a/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthSummaryAlg.cxx b/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthSummaryAlg.cxx
index 3946501952a397b19a9f8ed27d610ead65379461..cdc3303d7ac89a22e9d59b053a68b6c37045e51e 100644
--- a/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthSummaryAlg.cxx
+++ b/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthSummaryAlg.cxx
@@ -1,8 +1,7 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-// MuonTruthAlgs includes
 #include "MuonTruthSummaryAlg.h"
 
 #include "TrkTrack/TrackCollection.h"
@@ -10,20 +9,10 @@
 #include "MuonSegment/MuonSegment.h"
 #include "xAODTracking/TrackParticleContainer.h"
 
-MuonTruthSummaryAlg::MuonTruthSummaryAlg( const std::string& name, ISvcLocator* pSvcLocator ) 
-  : 
-  AthAlgorithm( name, pSvcLocator ),
-  m_truthSummaryTool("MuonTruthSummaryTool"){
-  declareProperty("SegmentContainerName"      , m_segmentContainerName = "MuonSegments");
-  declareProperty("MSTracksContainerName"     , m_msTracksContainerName = "MuonSpectrometerTracks");
-  declareProperty("MSTrackletsContainerName"     , m_msTrackletContainerName = "MSonlyTracklets");
-  declareProperty("MuonTruthSummaryTool"      ,	m_truthSummaryTool );
+MuonTruthSummaryAlg::MuonTruthSummaryAlg(const std::string& name, ISvcLocator* pSvcLocator) : 
+  AthAlgorithm( name, pSvcLocator ) {
 }
 
-
-MuonTruthSummaryAlg::~MuonTruthSummaryAlg() {}
-
-
 StatusCode MuonTruthSummaryAlg::initialize() {
   ATH_MSG_INFO ("Initializing " << name() << "...");
   if( m_truthSummaryTool.retrieve().isFailure()){
@@ -33,12 +22,6 @@ StatusCode MuonTruthSummaryAlg::initialize() {
   return StatusCode::SUCCESS;
 }
 
-StatusCode MuonTruthSummaryAlg::finalize() {
-  ATH_MSG_INFO ("Finalizing " << name() << "...");
-
-  return StatusCode::SUCCESS;
-}
-
 StatusCode MuonTruthSummaryAlg::execute() {  
   ATH_MSG_DEBUG ("Executing " << name() << "...");
 
@@ -59,14 +42,6 @@ StatusCode MuonTruthSummaryAlg::execute() {
     }
   }
 
-//  const xAOD::TrackParticleContainer* trackPs = 0;
-//  if (evtStore()->retrieve(trackPs, m_msTrackletContainerName).isSuccess()){
-//    for (auto trkP : *trackPs) {
-//        m_truthSummaryTool->add(*trkP,4);
-//    }
-//  }
-
-  //ATH_MSG_VERBOSE(m_truthSummaryTool->printSummary());
   return StatusCode::SUCCESS;
 }
 
diff --git a/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthSummaryAlg.h b/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthSummaryAlg.h
index e85c560f587cb961c2f8e1d3d6afc2850ff9b1c9..d5c8dc975443ea537e2562926fe5eee78e8b6671 100644
--- a/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthSummaryAlg.h
+++ b/MuonSpectrometer/MuonTruthAlgs/src/MuonTruthSummaryAlg.h
@@ -1,30 +1,31 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef MUONTRUTHALGS_MUONTRUTHSUMMARYALGS_H
 #define MUONTRUTHALGS_MUONTRUTHSUMMARYALGS_H
 
 #include "AthenaBaseComps/AthAlgorithm.h"
-#include <string>
 #include "GaudiKernel/ToolHandle.h"
+
 #include "MuonRecToolInterfaces/IMuonTruthSummaryTool.h"
 
+#include <string>
 
-class MuonTruthSummaryAlg: public ::AthAlgorithm {
+class MuonTruthSummaryAlg: public AthAlgorithm {
  public:
   MuonTruthSummaryAlg( const std::string& name, ISvcLocator* pSvcLocator );
-  virtual ~MuonTruthSummaryAlg();
+  virtual ~MuonTruthSummaryAlg()=default;
 
-  virtual StatusCode  initialize();
-  virtual StatusCode  execute();
-  virtual StatusCode  finalize();
+  virtual StatusCode initialize();
+  virtual StatusCode execute();
 
  private:
-   std::string                                      m_segmentContainerName;
-   std::string                                      m_msTracksContainerName;
-   std::string                                      m_msTrackletContainerName;
-   ToolHandle<Muon::IMuonTruthSummaryTool>          m_truthSummaryTool;
+   ToolHandle<Muon::IMuonTruthSummaryTool> m_truthSummaryTool{this,"MuonTruthSummaryTool","MuonTruthSummaryTool"};
+
+   Gaudi::Property<std::string> m_segmentContainerName{this,"SegmentContainerName","MuonSegments"};
+   Gaudi::Property<std::string> m_msTracksContainerName{this,"MSTracksContainerName","MuonSpectrometerTracks"};
+   Gaudi::Property<std::string> m_msTrackletContainerName{this,"MSTrackletsContainerName","MSonlyTracklets"};
 };
 
 #endif //> !MUONTRUTHALGS_MUONTRUTHSUMMARYALGS_H
diff --git a/PhysicsAnalysis/AnalysisCommon/HDF5Utils/util/copyRootTree.cxx b/PhysicsAnalysis/AnalysisCommon/HDF5Utils/util/copyRootTree.cxx
index 15e7f32ad911d61cb0728ee54e21dba94fcb3a8c..bf38fe8c279e45ca3b4e737ca84f7ff7d4083d7e 100644
--- a/PhysicsAnalysis/AnalysisCommon/HDF5Utils/util/copyRootTree.cxx
+++ b/PhysicsAnalysis/AnalysisCommon/HDF5Utils/util/copyRootTree.cxx
@@ -22,6 +22,7 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 #include <memory>
 #include <regex>
 #include <iostream>
+#include <set>
 
 // ______________________________________________________________________
 // Variable buffer classes
diff --git a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/CopyTruthParticles.h b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/CopyTruthParticles.h
index 2a6bb9b4e9a49e26d9def94f63911a90507951c3..fb6b6cde2e7069c02c9d1d7c0bbbfff6cf87e618 100644
--- a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/CopyTruthParticles.h
+++ b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/CopyTruthParticles.h
@@ -10,8 +10,8 @@
 #include "xAODTruth/TruthParticleContainer.h"
 #include "xAODTruth/TruthEventContainer.h"
 #include "AthContainers/ConstDataVector.h"
-#include "StoreGate/ReadHandleKey.h"
-#include "StoreGate/WriteHandleKey.h"
+#include "AsgDataHandles/ReadHandleKey.h"
+#include "AsgDataHandles/WriteHandleKey.h"
 
 // Do I need IAsgTool? I need AsgTool for the eventStore()
 class CopyTruthParticles : public IJetExecuteTool, public asg::AsgTool {
diff --git a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/JetQuarkLabel.h b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/JetQuarkLabel.h
index a20f3aafae700b3f1892c781e83e91b050fc437a..4bddc094e79a7c0d9641e90d22f59489cf8d8190 100644
--- a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/JetQuarkLabel.h
+++ b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/JetQuarkLabel.h
@@ -18,6 +18,7 @@
 #ifndef PARTICLEJETTOOLS_JETQUARKLABEL_H
 #define PARTICLEJETTOOLS_JETQUARKLABEL_H
 
+#include "AsgDataHandles/ReadHandleKey.h"
 #include "AsgTools/AsgTool.h"
 #include "ParticleJetTools/IJetTruthMatching.h"
 #include "EventPrimitives/EventPrimitives.h"
diff --git a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/ParticleJetDeltaRLabelTool.h b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/ParticleJetDeltaRLabelTool.h
index 3238fdf12461ab056044bc9f43835e9968619b78..e4665acc9d5180cea6c0a3ce957b6ee5629ca2a3 100644
--- a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/ParticleJetDeltaRLabelTool.h
+++ b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/ParticleJetDeltaRLabelTool.h
@@ -5,6 +5,7 @@
 #ifndef PARTICLEJETDELTARLABELTOOL_H
 #define PARTICLEJETDELTARLABELTOOL_H
 
+#include "AsgDataHandles/ReadHandleKey.h"
 #include "AsgTools/AsgTool.h"
 #include "JetInterface/IJetModifier.h"
 #include "xAODTruth/TruthParticle.h"
diff --git a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/CopyTruthJetParticles.cxx b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/CopyTruthJetParticles.cxx
index 4f895354ab28f69b32417111bfd41245f1a9f24d..3cf158009215a96dbe24eaf7233fcc94c214c888 100644
--- a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/CopyTruthJetParticles.cxx
+++ b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/CopyTruthJetParticles.cxx
@@ -10,6 +10,8 @@
 #include "xAODTruth/TruthParticleAuxContainer.h"
 #include "xAODTruth/TruthEventContainer.h"
 #include "AthContainers/ConstDataVector.h"
+#include "AsgDataHandles/ReadHandle.h"
+#include "AsgDataHandles/WriteHandle.h"
 #include "AsgTools/Check.h"
 
 #ifndef XAOD_STANDALONE
@@ -183,10 +185,10 @@ int CopyTruthJetParticles::setBarCodeFromMetaDataCheck() const{
   // if  m_barcodeFromMetadata  is  set to  1, the check is performed  and a warning is set out
   // explicitly set out when nothing is foun
  if(m_barcodeFromMetadata>0){
+    // Usage of metadata is only possible in Athena (not supported by dual-use tools yet)...
+#ifndef XAOD_STANDALONE
     bool found = false;
     // retrieve the value for the current sample from metadata
-#ifndef XAOD_STANDALONE
-    // Usage of metadata is only possible in Athena (not supported by dual-use tools yet)...
     
     int barcodeOffset_tmp(0);
     ATH_MSG_INFO("Look for barcode offset in  metadata ... ");
diff --git a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/CopyTruthParticles.cxx b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/CopyTruthParticles.cxx
index 4bc0236b822d864f052a007856d0bb4c0cffe2de..dc75e27f179b9c4b53c499ba4059d151c3cff04f 100644
--- a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/CopyTruthParticles.cxx
+++ b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/CopyTruthParticles.cxx
@@ -6,6 +6,8 @@
 #include <memory>
 #include "TruthUtils/PIDHelpers.h"
 #include "AsgTools/Check.h"
+#include "AsgDataHandles/ReadHandle.h"
+#include "AsgDataHandles/WriteHandle.h"
 
 using namespace std;
 
diff --git a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/JetQuarkLabel.cxx b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/JetQuarkLabel.cxx
index ef34e98c328ac9ba20c634850a6a23347441ef7d..d0a794bac26c3bb1676e5934e114c91d6a6b5fe0 100644
--- a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/JetQuarkLabel.cxx
+++ b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/JetQuarkLabel.cxx
@@ -15,6 +15,7 @@
 #include "ParticleJetTools/JetQuarkLabel.h"
 #include "ParticleJetTools/HadronUtils.h"
 
+#include "AsgDataHandles/ReadHandle.h"
 #include <algorithm>
 
 
diff --git a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/ParticleJetDeltaRLabelTool.cxx b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/ParticleJetDeltaRLabelTool.cxx
index 4c5f4598a1ff03d4745849755920f31ce173692a..27040971a9f2fa4993b6d715ba22f0a3b4e99a55 100644
--- a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/ParticleJetDeltaRLabelTool.cxx
+++ b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/ParticleJetDeltaRLabelTool.cxx
@@ -5,6 +5,7 @@
 #include "ParticleJetTools/ParticleJetDeltaRLabelTool.h"
 #include "ParticleJetTools/ParticleJetLabelCommon.h"
 #include "xAODJet/JetContainer.h"
+#include "AsgDataHandles/ReadHandle.h"
 #include "AsgTools/Check.h"
 
 using namespace std;
diff --git a/PhysicsAnalysis/D3PDMaker/D3PDMakerInterfaces/CMakeLists.txt b/PhysicsAnalysis/D3PDMaker/D3PDMakerInterfaces/CMakeLists.txt
index 9be035e427627b0524f5ac5ec087b9db84de5881..f566ec549f1a71807f4f341858c1ceeb656f608e 100644
--- a/PhysicsAnalysis/D3PDMaker/D3PDMakerInterfaces/CMakeLists.txt
+++ b/PhysicsAnalysis/D3PDMaker/D3PDMakerInterfaces/CMakeLists.txt
@@ -5,10 +5,8 @@
 # Declare the package name:
 atlas_subdir( D3PDMakerInterfaces )
 
-# Declare the package's dependencies:
-atlas_depends_on_subdirs( PUBLIC
-                          GaudiKernel )
-
-# Install files from the package:
-atlas_install_headers( D3PDMakerInterfaces )
-
+atlas_add_library( D3PDMakerInterfaces
+                   D3PDMakerInterfaces/*.h
+                   INTERFACE
+                   PUBLIC_HEADERS D3PDMakerInterfaces
+                   LINK_LIBRARIES GaudiKernel )
diff --git a/PhysicsAnalysis/JetTagging/JetTagInfo/JetTagInfo/TrackGrade.h b/PhysicsAnalysis/JetTagging/JetTagInfo/JetTagInfo/TrackGrade.h
index 183a6d2d92279fccae687c2f1f7546bed5ef52da..d429057e6e359fd854d08c4b2766a6138cfd0c14 100644
--- a/PhysicsAnalysis/JetTagging/JetTagInfo/JetTagInfo/TrackGrade.h
+++ b/PhysicsAnalysis/JetTagging/JetTagInfo/JetTagInfo/TrackGrade.h
@@ -16,8 +16,9 @@ class TrackGrade {
   TrackGrade(int,const std::string&);
 
   TrackGrade(const TrackGrade & );
+  TrackGrade( TrackGrade && ) noexcept = default;
   TrackGrade &operator= (const TrackGrade& rhs);
-
+  TrackGrade &operator= ( TrackGrade&& rhs) noexcept = default;
   bool operator== (const std::string &) const;
   bool operator== (const int &) const;
   bool operator== (const TrackGrade& rhs) const;
diff --git a/PhysicsAnalysis/PrimaryDPDMaker/CMakeLists.txt b/PhysicsAnalysis/PrimaryDPDMaker/CMakeLists.txt
index 88ab830b2d867f08d09ee461ba7d1099f344b437..0b18f944b5edaad0bfd82afeb24f0d0a6c841953 100644
--- a/PhysicsAnalysis/PrimaryDPDMaker/CMakeLists.txt
+++ b/PhysicsAnalysis/PrimaryDPDMaker/CMakeLists.txt
@@ -5,50 +5,6 @@
 # Declare the package name:
 atlas_subdir( PrimaryDPDMaker )
 
-# Declare the package's dependencies:
-atlas_depends_on_subdirs( PUBLIC
-                          Calorimeter/CaloEvent
-                          Control/AthenaBaseComps
-                          Control/AthenaKernel
-                          Control/AthLinks
-                          Control/AthContainers
-                          Control/StoreGate
-			  PhysicsAnalysis/DerivationFramework/DerivationFrameworkInterfaces
-                          DetectorDescription/IRegionSelector
-                          DetectorDescription/Identifier
-                          Event/EventKernel
-                          GaudiKernel
-                          InnerDetector/InDetDetDescr/InDetIdentifier
-                          InnerDetector/InDetDetDescr/InDetReadoutGeometry
-			  InnerDetector/InDetDetDescr/TRT_ReadoutGeometry
-                          InnerDetector/InDetRecEvent/InDetPrepRawData
-                          Reconstruction/Particle
-                          Tracking/TrkEvent/TrkTrack
-                          Tracking/TrkTools/TrkToolInterfaces
-                          PRIVATE
-                          DetectorDescription/RoiDescriptor
-                          Event/FourMom
-                          Event/FourMomUtils
-                          Event/NavFourMom
-                          Event/xAOD/xAODEventInfo
-                          Event/xAOD/xAODMuon
-                          Event/xAOD/xAODTracking
-                          InnerDetector/InDetRecEvent/InDetRIO_OnTrack
-                          LArCalorimeter/LArRecEvent
-                          PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEvent
-                          PhysicsAnalysis/MuonID/MuonSelectorTools
-                          Reconstruction/Jet/JetEvent
-                          Reconstruction/MuonIdentification/muonEvent
-                          Reconstruction/egamma/egammaEvent
-                          Reconstruction/tauEvent
-                          TileCalorimeter/TileEvent
-                          TileCalorimeter/TileIdentifier
-                          Tracking/TrkEvent/TrkParameters
-                          Tracking/TrkEvent/TrkParticleBase
-                          Tracking/TrkEvent/TrkPseudoMeasurementOnTrack
-                          Tracking/TrkEvent/TrkTrackSummary
-                          Tracking/TrkEvent/VxVertex )
-
 # External dependencies:
 find_package( CLHEP )
 find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
@@ -60,7 +16,7 @@ atlas_add_library( PrimaryDPDMakerLib
                    INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS}
                    PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
                    DEFINITIONS ${CLHEP_DEFINITIONS}
-                   LINK_LIBRARIES ${CLHEP_LIBRARIES} CaloEvent AthenaBaseComps AthenaKernel AthLinks AthContainers IRegionSelector Identifier EventKernel GaudiKernel InDetIdentifier InDetReadoutGeometry InDetPrepRawData Particle TrkTrack TrkToolInterfaces StoreGateLib SGtests
+                   LINK_LIBRARIES ${CLHEP_LIBRARIES} CaloEvent AthenaBaseComps AthenaKernel AthLinks AthContainers IRegionSelector Identifier EventKernel GaudiKernel InDetIdentifier InDetReadoutGeometry InDetPrepRawData Particle TrkTrack TrkToolInterfaces StoreGateLib SGtests DerivationFrameworkInterfaces
                    PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} RoiDescriptor FourMom FourMomUtils NavFourMom xAODEventInfo xAODMuon xAODTracking InDetRIO_OnTrack LArRecEvent AnalysisTriggerEvent MuonSelectorToolsLib JetEvent muonEvent egammaEvent tauEvent TileEvent TileIdentifier TrkParameters TrkParticleBase TrkPseudoMeasurementOnTrack TrkTrackSummary VxVertex )
 
 atlas_add_component( PrimaryDPDMaker
diff --git a/Projects/AnalysisBase/package_filters.txt b/Projects/AnalysisBase/package_filters.txt
index 38b5904e54252b60343e01862b79e3c5d599b9cc..435110a5c9822d396085e575ba6f8ec6c3009909 100644
--- a/Projects/AnalysisBase/package_filters.txt
+++ b/Projects/AnalysisBase/package_filters.txt
@@ -14,8 +14,21 @@
 - PhysicsAnalysis/ElectronPhotonID/ElectronPhotonFourMomentumCorrection
 - PhysicsAnalysis/ElectronPhotonID/PhotonVertexSelection
 - Reconstruction/Jet/JetMomentTools
-- Reconstruction/Jet/JetRec
-- Reconstruction/Jet/JetSubStructureMomentTools
+
+
+
+# these packages existed in 21.2, but no longer exist in master.
+# remove these lines if you are confident that these packages have
+# been retired.
+
+#+ External/AtlasPyFwdBwdPorts
+#+ ForwardDetectors/ZDC/ZdcNtuple
+#+ PhysicsAnalysis/AnalysisCommon/FakeBkgTools
+#+ PhysicsAnalysis/BPhys/BPhysTools
+#+ PhysicsAnalysis/DerivationFramework/DerivationFrameworkAnalysisTests
+#+ Reconstruction/Jet/BoostedJetTaggers
+#+ Trigger/TrigAnalysis/TrigGlobalEfficiencyCorrection
+#+ Trigger/TriggerSimulation/TrigBtagEmulationTool
 
 
 
@@ -48,9 +61,7 @@
 #+ Event/xAOD/xAODTruthCnv
 - Event/xAOD/.*Cnv
 + Event/xAOD/.*
-#+ External/AtlasPyFwdBwdPorts
 + ForwardDetectors/ZDC/ZdcAnalysis
-#+ ForwardDetectors/ZDC/ZdcNtuple
 + Generators/TruthUtils
 + InnerDetector/InDetRecTools/InDetTrackSelectionTool
 + InnerDetector/InDetRecTools/TrackVertexAssociationTool
@@ -59,7 +70,6 @@
 + PhysicsAnalysis/AnalysisCommon/AssociationUtils
 #+ PhysicsAnalysis/AnalysisCommon/CPAnalysisExamples
 + PhysicsAnalysis/AnalysisCommon/CutBookkeeperUtils
-#+ PhysicsAnalysis/AnalysisCommon/FakeBkgTools
 + PhysicsAnalysis/AnalysisCommon/FsrUtils
 + PhysicsAnalysis/AnalysisCommon/HDF5Utils
 + PhysicsAnalysis/AnalysisCommon/IsolationSelection
@@ -68,12 +78,10 @@
 + PhysicsAnalysis/AnalysisCommon/PMGOverlapRemovalTools/GammaORTools
 + PhysicsAnalysis/AnalysisCommon/PMGOverlapRemovalTools/HFORTools
 + PhysicsAnalysis/AnalysisCommon/PMGTools
-#+ PhysicsAnalysis/AnalysisCommon/ParticleJetTools
++ PhysicsAnalysis/AnalysisCommon/ParticleJetTools
 + PhysicsAnalysis/AnalysisCommon/PileupReweighting
 + PhysicsAnalysis/AnalysisCommon/ReweightUtils
-#+ PhysicsAnalysis/BPhys/BPhysTools
 + PhysicsAnalysis/D3PDTools/.*
-#+ PhysicsAnalysis/DerivationFramework/DerivationFrameworkAnalysisTests
 - PhysicsAnalysis/ElectronPhotonID/ElectronPhotonTagTools
 + PhysicsAnalysis/ElectronPhotonID/.*
 + PhysicsAnalysis/HeavyIonPhys/HIEventUtils
@@ -90,7 +98,6 @@
 + PhysicsAnalysis/TauID/TauAnalysisTools
 + PhysicsAnalysis/TrackingID/.*
 + Reconstruction/EventShapes/EventShapeInterface
-#+ Reconstruction/Jet/BoostedJetTaggers
 - Reconstruction/Jet/JetAnalysisTools/JetAnalysisEDM
 - Reconstruction/Jet/JetEvent.*
 - Reconstruction/Jet/JetMonitoring
@@ -100,10 +107,10 @@
 - Reconstruction/Jet/JetValidation
 + Reconstruction/Jet/Jet.*
 + Reconstruction/MET/METInterface
-#+ Reconstruction/MET/METUtilities
++ Reconstruction/MET/METUtilities
 + Reconstruction/MVAUtils
 + Reconstruction/PFlow/PFlowUtils
-#+ Reconstruction/RecoTools/IsolationTool
++ Reconstruction/RecoTools/IsolationTool
 + Reconstruction/RecoTools/RecoToolInterfaces
 + Reconstruction/egamma/egammaLayerRecalibTool
 + Reconstruction/egamma/egammaMVACalib
@@ -116,7 +123,6 @@
 + Trigger/TrigAnalysis/TrigAnalysisInterfaces
 + Trigger/TrigAnalysis/TrigBunchCrossingTool
 #+ Trigger/TrigAnalysis/TrigDecisionTool
-#+ Trigger/TrigAnalysis/TrigGlobalEfficiencyCorrection
 #+ Trigger/TrigAnalysis/TrigTauAnalysis/TrigTauMatching
 #+ Trigger/TrigAnalysis/TriggerMatchingTool
 + Trigger/TrigConfiguration/TrigConfBase
@@ -131,6 +137,5 @@
 + Trigger/TrigEvent/TrigSteeringEvent
 + Trigger/TrigSteer/TrigCompositeUtils
 #+ Trigger/TrigValidation/TrigAnalysisTest
-#+ Trigger/TriggerSimulation/TrigBtagEmulationTool
 
 - .*
diff --git a/Reconstruction/Jet/JetEDM/CMakeLists.txt b/Reconstruction/Jet/JetEDM/CMakeLists.txt
index 13439771241f350a5b55f8a825e871432e66f9c4..d1741397d97e2bcdbc460d5438ac4a55a042d0be 100644
--- a/Reconstruction/Jet/JetEDM/CMakeLists.txt
+++ b/Reconstruction/Jet/JetEDM/CMakeLists.txt
@@ -21,7 +21,7 @@ find_package( FastJet )
 atlas_add_library( JetEDM
                    Root/*.cxx
                    PUBLIC_HEADERS JetEDM
-                   PRIVATE_INCLUDE_DIRS ${FASTJET_INCLUDE_DIRS}
+                   INCLUDE_DIRS ${FASTJET_INCLUDE_DIRS}
                    LINK_LIBRARIES AsgTools xAODBase xAODJet xAODTracking
                    PRIVATE_LINK_LIBRARIES ${FASTJET_LIBRARIES} xAODMuon )
 
diff --git a/Reconstruction/Jet/JetInterface/CMakeLists.txt b/Reconstruction/Jet/JetInterface/CMakeLists.txt
index 17d8b97fc2142cb664dd715fb361f09681e4ef28..75b10d8229ab1b3d7a3460153424e617c85ccc20 100644
--- a/Reconstruction/Jet/JetInterface/CMakeLists.txt
+++ b/Reconstruction/Jet/JetInterface/CMakeLists.txt
@@ -21,7 +21,7 @@ atlas_depends_on_subdirs(
 atlas_add_library( JetInterface
    JetInterface/*.h Root/*.cxx
    PUBLIC_HEADERS JetInterface
-   LINK_LIBRARIES AsgTools xAODEventInfo xAODJet xAODTracking xAODBase )
+   LINK_LIBRARIES AsgTools AsgDataHandlesLib xAODEventInfo xAODJet xAODTracking xAODBase )
 
 atlas_add_dictionary( JetInterfaceDict
    JetInterface/JetInterfaceDict.h
diff --git a/Reconstruction/Jet/JetInterface/JetInterface/IJetProvider.h b/Reconstruction/Jet/JetInterface/JetInterface/IJetProvider.h
index 5d564de9efed672d7731486081dadb42286f7680..ac0d0eab46c424b99b374e2cef128e80ebf371ea 100644
--- a/Reconstruction/Jet/JetInterface/JetInterface/IJetProvider.h
+++ b/Reconstruction/Jet/JetInterface/JetInterface/IJetProvider.h
@@ -16,9 +16,9 @@
 
 #include <utility>
 #include <memory>
+#include "AsgDataHandles/WriteHandle.h"
 #include "AsgTools/IAsgTool.h"
 #include "xAODJet/JetContainer.h"
-#include "StoreGate/WriteHandle.h"
 
 namespace SG {
   class IAuxStore;
diff --git a/Reconstruction/Jet/JetRec/CMakeLists.txt b/Reconstruction/Jet/JetRec/CMakeLists.txt
index a0b25cc6ff22dd4d56324b4c93de985df4fbad74..66d1012f8071ac945cc0ac90665b2e544ecff106 100644
--- a/Reconstruction/Jet/JetRec/CMakeLists.txt
+++ b/Reconstruction/Jet/JetRec/CMakeLists.txt
@@ -14,7 +14,7 @@ endif()
 
 set( mon_deps )
 set( mon_lib )
-if( NOT GENERATIONBASE )
+if( NOT GENERATIONBASE AND NOT XAOD_STANDALONE )
    set( mon_deps Control/AthenaMonitoringKernel )
    set( mon_lib AthenaMonitoringKernelLib )
 endif()
@@ -54,7 +54,7 @@ atlas_add_library( JetRecLib
   INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${FASTJET_INCLUDE_DIRS} ${FASTJETCONTRIB_INCLUDE_DIRS}
   LINK_LIBRARIES ${ROOT_LIBRARIES} ${FASTJETCONTRIB_LIBRARIES} ${FASTJET_LIBRARIES} AthLinks AthContainers AsgTools
   xAODCaloEvent xAODJet xAODMuon EventShapeInterface JetEDM
-  JetInterface  ${mon_lib}
+  JetInterface  ${mon_lib} AsgDataHandlesLib
   PRIVATE_LINK_LIBRARIES CxxUtils xAODBase xAODCore
   xAODEventInfo xAODTracking )
 
@@ -77,19 +77,23 @@ atlas_add_test( TestTests
  INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${GTEST_INCLUDE_DIRS}
  LINK_LIBRARIES ${ROOT_LIBRARIES} ${GTEST_LIBRARIES} JetRecLib )
 
+if ( NOT XAOD_STANDALONE )
 atlas_add_test(JetTests
   SOURCES
   test/JetTest.cxx
   INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${GTEST_INCLUDE_DIRS}
   LINK_LIBRARIES ${ROOT_LIBRARIES} ${GTEST_LIBRARIES} JetRecLib )
+endif()
 
+if ( NOT XAOD_STANDALONE )
 atlas_add_test(PseudoJetContainerOffline
   SOURCES
   test/PseudoJetContainerOfflineTest.cxx
   INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${GTEST_INCLUDE_DIRS}
   LINK_LIBRARIES ${ROOT_LIBRARIES} ${GTEST_LIBRARIES} JetRecLib )
+endif()
 
-if ( NOT GENERATIONBASE )
+if ( NOT GENERATIONBASE AND NOT XAOD_STANDALONE )
 atlas_add_test(PseudoJetContainerTrigger
   SOURCES
   test/PseudoJetContainerTriggerTest.cxx
@@ -97,11 +101,13 @@ atlas_add_test(PseudoJetContainerTrigger
   LINK_LIBRARIES ${ROOT_LIBRARIES} ${GTEST_LIBRARIES} JetRecLib )
 endif()
 
+if ( NOT XAOD_STANDALONE )
 atlas_add_test(ExtractorUnitTests
   SOURCES
     test/ExtractorTest.cxx
     INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${GTEST_INCLUDE_DIRS}
     LINK_LIBRARIES ${ROOT_LIBRARIES} ${GTEST_LIBRARIES} JetRecLib )
+endif()
 
 atlas_add_test(JetClustererTest
   SOURCES
@@ -109,7 +115,7 @@ atlas_add_test(JetClustererTest
     INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${GTEST_INCLUDE_DIRS}
     LINK_LIBRARIES ${ROOT_LIBRARIES} ${GTEST_LIBRARIES} JetRecLib )
 
-if ( NOT GENERATIONBASE )
+if ( NOT GENERATIONBASE AND NOT XAOD_STANDALONE )
    atlas_add_test(JetRecAlg_Test SCRIPT share/JetRecAlgTestCfg.py )
 endif()
 
diff --git a/Reconstruction/Jet/JetRec/JetRec/JetClusterer.h b/Reconstruction/Jet/JetRec/JetRec/JetClusterer.h
index 64b71f7bd2e950f6d0c316b40ef139c8b640341b..bee4d61cbcfa1a10af4f45ca8f854fef6669a4ea 100644
--- a/Reconstruction/Jet/JetRec/JetRec/JetClusterer.h
+++ b/Reconstruction/Jet/JetRec/JetRec/JetClusterer.h
@@ -18,11 +18,12 @@
 
 
 #include "xAODEventInfo/EventInfo.h"
-#include "StoreGate/ReadHandleKey.h"
-#include "StoreGate/WriteHandleKey.h"
+#include "AsgDataHandles/ReadHandleKey.h"
+#include "AsgDataHandles/WriteHandleKey.h"
 
 #include "JetInterface/IJetProvider.h"
 #include "AsgTools/AsgTool.h"
+#include "AsgTools/PropertyWrapper.h"
 
 #include "JetRec/PseudoJetContainer.h"
 #include "JetRec/JetFromPseudojet.h"
diff --git a/Reconstruction/Jet/JetRec/JetRec/JetConstitRemover.h b/Reconstruction/Jet/JetRec/JetRec/JetConstitRemover.h
index 51d81b92c6d3c6f4b8ef19c538e7a50dc7bfee3f..a1c598a1ee8a333676286b7ffa3943d6880c9e05 100644
--- a/Reconstruction/Jet/JetRec/JetRec/JetConstitRemover.h
+++ b/Reconstruction/Jet/JetRec/JetRec/JetConstitRemover.h
@@ -19,7 +19,7 @@
 #include "JetRec/JetModifierBase.h"
 
 class JetConstitRemover : public JetModifierBase {
-  ASG_TOOL_CLASS(JetConstitRemover, IJetModifier);
+  ASG_TOOL_CLASS(JetConstitRemover, IJetModifier)
     
 public:
 
diff --git a/Reconstruction/Jet/JetRec/JetRec/JetCopier.h b/Reconstruction/Jet/JetRec/JetRec/JetCopier.h
index 11fe9b4c30309b96ba21605dbfc50778d2e986bd..bc7534bca579c46d1bc190ae24a13f26fd7a4909 100644
--- a/Reconstruction/Jet/JetRec/JetRec/JetCopier.h
+++ b/Reconstruction/Jet/JetRec/JetRec/JetCopier.h
@@ -16,8 +16,9 @@
 /// The JetVector key is also a Property of the tool.
 ///
 
+#include "AsgTools/PropertyWrapper.h"
 #include "AsgTools/AsgTool.h"
-#include "StoreGate/ReadHandleKey.h"
+#include "AsgDataHandles/ReadHandleKey.h"
 #include "JetInterface/IJetProvider.h"
 #include "xAODJet/JetContainer.h"
 #include "xAODCore/ShallowAuxContainer.h"
diff --git a/Reconstruction/Jet/JetRec/JetRec/JetFinder.h b/Reconstruction/Jet/JetRec/JetRec/JetFinder.h
index f87d90fd259e7c383b32b814e95894c56892f7ef..ab6cbdc63e4d8038f1c5e05345dd8bb66dd87e7c 100644
--- a/Reconstruction/Jet/JetRec/JetRec/JetFinder.h
+++ b/Reconstruction/Jet/JetRec/JetRec/JetFinder.h
@@ -20,6 +20,8 @@
 #include "AsgTools/ToolHandle.h"
 #include "JetRec/PseudoJetContainer.h"
 #include "xAODEventInfo/EventInfo.h"
+#include "AsgDataHandles/ReadHandleKey.h"
+#include "AsgDataHandles/WriteHandleKey.h"
 
 namespace fastjet {
   class ClusterSequence;
diff --git a/Reconstruction/Jet/JetRec/JetRec/JetGroomer.h b/Reconstruction/Jet/JetRec/JetRec/JetGroomer.h
index 60bca3c63ccdc57afbdca8c32a31ad5505fbdab6..666bb45ff75369d989f0628a4e5e7f6959ef34ce 100644
--- a/Reconstruction/Jet/JetRec/JetRec/JetGroomer.h
+++ b/Reconstruction/Jet/JetRec/JetRec/JetGroomer.h
@@ -18,8 +18,8 @@
 
 #include "AsgTools/AsgTool.h"
 
-#include "StoreGate/ReadHandleKey.h"
-#include "StoreGate/WriteHandleKey.h"
+#include "AsgDataHandles/ReadHandleKey.h"
+#include "AsgDataHandles/WriteHandleKey.h"
 
 #include "JetInterface/IJetProvider.h"
 
diff --git a/Reconstruction/Jet/JetRec/JetRec/JetPseudojetCopier.h b/Reconstruction/Jet/JetRec/JetRec/JetPseudojetCopier.h
index c4a03bcd719ffdf2f763658f9c3b789348f03e80..8a4f854da80d5221b76170d426a91b6c005b2890 100644
--- a/Reconstruction/Jet/JetRec/JetRec/JetPseudojetCopier.h
+++ b/Reconstruction/Jet/JetRec/JetRec/JetPseudojetCopier.h
@@ -33,7 +33,7 @@ class JetPseudojetCopier
 : virtual public asg::AsgTool,
   virtual public IJetConsumer {
 
-  ASG_TOOL_CLASS(JetPseudojetCopier, IJetConsumer);
+  ASG_TOOL_CLASS(JetPseudojetCopier, IJetConsumer)
 
 public:
     
diff --git a/Reconstruction/Jet/JetRec/JetRec/JetRecTool.h b/Reconstruction/Jet/JetRec/JetRec/JetRecTool.h
index 4c4b97e85e2590d6dc05977f1adedc70aefaa968..4b6ea2a453c225621eaca9602fe84d665fb71764 100644
--- a/Reconstruction/Jet/JetRec/JetRec/JetRecTool.h
+++ b/Reconstruction/Jet/JetRec/JetRec/JetRecTool.h
@@ -58,10 +58,11 @@
 #include "JetInterface/IJetPseudojetRetriever.h"
 #include "JetInterface/IJetConsumer.h"
 #include "TStopwatch.h"
-#include "StoreGate/ReadHandleKeyArray.h"
+#include "AsgDataHandles/ReadHandleKeyArray.h"
+#include "AsgDataHandles/WriteHandleKey.h"
 #include "JetEDM/PseudoJetVector.h"
 #include "JetRec/PseudoJetContainer.h"
-#ifndef GENERATIONBASE
+#if !defined(GENERATIONBASE) && !defined(XAOD_STANDALONE)
   #include "AthenaMonitoringKernel/GenericMonitoringTool.h"
 #endif
 
@@ -78,8 +79,17 @@ public:
   /// Initialization. Check all tools here.
   StatusCode initialize() override;
 
+  // FIX ME: This method is removed in AnalysisBase, because tools
+  // don't finalize in AnalysisBase.  In AnalysisBase tools are
+  // generally meant to be stateless, so it makes less sense for them
+  // to be finalized, and that aside there is nobody around that can
+  // guarantee that `finalize` does get called anyways.  If this does
+  // anything more than print out accounting-info this tool should
+  // probably be turned into a service (or an algorithm).
+#ifndef XAOD_STANDALONE
   /// Finalization. Write summary report.
   StatusCode finalize() override;
+#endif
 
   /// Retrieve inputs with tools and construct new
   /// jet collection.
@@ -121,17 +131,17 @@ private:
 
   
   // Properties.
-  SG::WriteHandleKey<xAOD::JetContainer> m_outcoll;
-  SG::ReadHandleKey<xAOD::JetContainer> m_incoll;
+  SG::WriteHandleKey<xAOD::JetContainer> m_outcoll {this, "OutputContainer", ""};
+  SG::ReadHandleKey<xAOD::JetContainer> m_incoll {this, "InputContainer", ""};
   // The template argument should become PseudoJetContainer
-  SG::ReadHandleKeyArray<PseudoJetContainer> m_psjsin;
+  SG::ReadHandleKeyArray<PseudoJetContainer> m_psjsin {this, "InputPseudoJets", {}};
 
   ToolHandle<IJetExecuteTool> m_intool;
   ToolHandle<IJetPseudojetRetriever> m_hpjr;
   ToolHandle<IJetFinder> m_finder;
   ToolHandle<IJetGroomer> m_groomer;
-  ToolHandleArray<IJetModifier> m_modifiers;
-  ToolHandleArray<IJetConsumer> m_consumers;
+  ToolHandleArray<IJetModifier> m_modifiers {this, "JetModifiers", {}};
+  ToolHandleArray<IJetConsumer> m_consumers {this, "JetConsumers", {}};
   bool m_trigger;
   int m_timer;
 
@@ -160,7 +170,7 @@ private:
   mutable std::vector<TStopwatch> m_modclocks;
   mutable std::vector<TStopwatch> m_conclocks;
 
-#ifndef GENERATIONBASE
+#if !defined (GENERATIONBASE) && !defined (XAOD_STANDALONE)
   ToolHandle<GenericMonitoringTool> m_monTool{this,"MonTool","","Monitoring tool"};
 #endif
 
diff --git a/Reconstruction/Jet/JetRec/JetRec/JetToolRunner.h b/Reconstruction/Jet/JetRec/JetRec/JetToolRunner.h
index 2cff3918577f88b0dfb8e3908544cac7d9a1f65f..efd865afedef5528a731249aa82f60bdcec7b2fb 100644
--- a/Reconstruction/Jet/JetRec/JetRec/JetToolRunner.h
+++ b/Reconstruction/Jet/JetRec/JetRec/JetToolRunner.h
@@ -48,8 +48,8 @@ public:
 private:
 
   // Properties.
-  ToolHandleArray<IEventShapeTool> m_evstools;
-  ToolHandleArray<IJetExecuteTool> m_exetools;
+  ToolHandleArray<IEventShapeTool> m_evstools {this, "EventShapeTools", {}};
+  ToolHandleArray<IJetExecuteTool> m_exetools {this, "Tools", {}};
   int m_timer;
 
   // Clocks.
diff --git a/Reconstruction/Jet/JetRec/Root/IParticleExtractor.cxx b/Reconstruction/Jet/JetRec/Root/IParticleExtractor.cxx
index f1fdd906fd70a2386e92d8d7d2eaab77b37fa1b7..743a27f559d866921c7394e33b1b28c8d5f7411e 100644
--- a/Reconstruction/Jet/JetRec/Root/IParticleExtractor.cxx
+++ b/Reconstruction/Jet/JetRec/Root/IParticleExtractor.cxx
@@ -7,6 +7,7 @@
 #include "JetRec/IParticleExtractor.h"
 #include "JetRec/LineFormatter.h" // helper class for debug printing
 #include "xAODBase/IParticle.h"
+#include <numeric>
 #include <vector>
 
 IParticleExtractor::IParticleExtractor(const xAOD::IParticleContainer* ips,
diff --git a/Reconstruction/Jet/JetRec/Root/JetClusterer.cxx b/Reconstruction/Jet/JetRec/Root/JetClusterer.cxx
index 2d0e2b1d462ba752fb02943342a762590175db2d..acad6882e30dce3bb48e9a140bcc405b3336af84 100644
--- a/Reconstruction/Jet/JetRec/Root/JetClusterer.cxx
+++ b/Reconstruction/Jet/JetRec/Root/JetClusterer.cxx
@@ -3,6 +3,7 @@
 */
 
 #include <memory>
+#include "AsgDataHandles/ReadHandle.h"
 #include "JetRec/JetClusterer.h"
 #include "fastjet/PseudoJet.hh"
 #include "fastjet/ClusterSequence.hh"
@@ -115,7 +116,7 @@ std::pair<std::unique_ptr<xAOD::JetContainer>, std::unique_ptr<SG::IAuxStore> >
   // Thus the contained PseudoJet will be kept frozen there and we can safely use pointer to them from the xAOD::Jet objects
   auto pjVector = std::make_unique<PseudoJetVector>(fastjet::sorted_by_pt(clSequence->inclusive_jets(m_ptmin)) );
   ATH_MSG_DEBUG("Found jet count: " << pjVector->size());
-  if(msgLevel(MSG::VERBOSE)) {
+  if(msgLvl(MSG::VERBOSE)) {
     for(const auto& pj : *pjVector) {
       msg() << "  Pseudojet with pt " << std::setprecision(4) << pj.Et()*1e-3 << " has " << pj.constituents().size() << " constituents" << endmsg;
     }
diff --git a/Reconstruction/Jet/JetRec/Root/JetCopier.cxx b/Reconstruction/Jet/JetRec/Root/JetCopier.cxx
index b4d808c73cfae74dc62649441563c13f019d7145..f27f31e349387dbebb9d0b139b9773718037c126 100644
--- a/Reconstruction/Jet/JetRec/Root/JetCopier.cxx
+++ b/Reconstruction/Jet/JetRec/Root/JetCopier.cxx
@@ -4,6 +4,7 @@
 
 #include "JetRec/JetCopier.h"
 
+#include "AsgDataHandles/ReadHandle.h"
 #include "xAODJet/JetContainer.h"
 #include "xAODJet/JetAuxContainer.h"
 #include "xAODBase/IParticleHelpers.h"
diff --git a/Reconstruction/Jet/JetRec/Root/JetFinder.cxx b/Reconstruction/Jet/JetRec/Root/JetFinder.cxx
index d1472a19d27e061c14df393cf5f47d1952a7ada3..aa6b08f15753ba76e90c4de4d5994b866e192c2d 100644
--- a/Reconstruction/Jet/JetRec/Root/JetFinder.cxx
+++ b/Reconstruction/Jet/JetRec/Root/JetFinder.cxx
@@ -13,6 +13,8 @@
 #ifndef NO_JET_VARIABLER
 #include "fastjet/contrib/VariableRPlugin.hh"
 #endif
+#include "AsgDataHandles/ReadHandle.h"
+#include "AsgDataHandles/WriteHandle.h"
 #include "xAODEventInfo/EventInfo.h"
 #include "JetEDM/FastJetUtils.h"
 #include "JetEDM/PseudoJetVector.h"
diff --git a/Reconstruction/Jet/JetRec/Root/JetGroomer.cxx b/Reconstruction/Jet/JetRec/Root/JetGroomer.cxx
index 65138a0b6222fda95d80f2f654a301bcaf3b9164..a54de07cdb9763f74dbe82e9beb8b747ea04eb21 100644
--- a/Reconstruction/Jet/JetRec/Root/JetGroomer.cxx
+++ b/Reconstruction/Jet/JetRec/Root/JetGroomer.cxx
@@ -4,6 +4,7 @@
 
 #include "JetRec/JetGroomer.h"
 
+#include "AsgDataHandles/ReadHandle.h"
 #include "fastjet/PseudoJet.hh"
 #include "JetRec/PseudoJetContainer.h"
 
diff --git a/Reconstruction/Jet/JetRec/Root/JetRecTool.cxx b/Reconstruction/Jet/JetRec/Root/JetRecTool.cxx
index 723c7b242bf05ac1128914e72a88b38b700777ec..6de287fc69973822022b2c084f337a22e496a7ba 100644
--- a/Reconstruction/Jet/JetRec/Root/JetRecTool.cxx
+++ b/Reconstruction/Jet/JetRec/Root/JetRecTool.cxx
@@ -20,9 +20,10 @@
 #include "JetRec/PseudoJetContainer.h"
 #include <algorithm>
 
-#include "StoreGate/ReadHandle.h"
+#include "AsgDataHandles/ReadHandle.h"
+#include "AsgDataHandles/WriteHandle.h"
 
-#ifndef GENERATIONBASE
+#if !defined (GENERATIONBASE) && !defined (XAOD_STANDALONE)
   #include "AthenaMonitoringKernel/Monitored.h"
 #endif
 
@@ -48,22 +49,15 @@ JetRecTool::JetRecTool(std::string myname)
 #endif
   m_finder("",this),
   m_groomer("",this),
-  m_modifiers(this),
-  m_consumers(this),
   m_trigger(false),
   m_initCount(0),
   m_find(false), m_groom(false), m_copy(false),
   m_inputtype(xAOD::JetInput::Uncategorized),
   m_ppjr(nullptr) {
-  declareProperty("OutputContainer", m_outcoll);
-  declareProperty("InputContainer", m_incoll);
   declareProperty("InputTool", m_intool);
-  declareProperty("InputPseudoJets", m_psjsin);
   declareProperty("JetPseudojetRetriever", m_hpjr);
   declareProperty("JetFinder", m_finder);
   declareProperty("JetGroomer", m_groomer);
-  declareProperty("JetModifiers", m_modifiers);
-  declareProperty("JetConsumers", m_consumers);
   declareProperty("Trigger", m_trigger);
   declareProperty("Timer", m_timer =0);
 }
@@ -225,7 +219,7 @@ StatusCode JetRecTool::initialize() {
   m_conclock.Reset();
   m_nevt = 0;
 
-#ifndef GENERATIONBASE
+#if !defined (GENERATIONBASE) && !defined (XAOD_STANDALONE)
   if (!m_monTool.empty()) ATH_CHECK(m_monTool.retrieve());
 #endif
 
@@ -235,6 +229,7 @@ StatusCode JetRecTool::initialize() {
 
 //**********************************************************************
 
+#ifndef XAOD_STANDALONE
 StatusCode JetRecTool::finalize() {
   ATH_MSG_INFO ("Finalizing " << name() << "...");
   string tname = "";
@@ -320,6 +315,7 @@ StatusCode JetRecTool::finalize() {
   if( saveToFile ) outfile.close();
   return StatusCode::SUCCESS;
 }
+#endif
 
 //**********************************************************************
 
@@ -412,7 +408,7 @@ const JetContainer* JetRecTool::build() const {
   }
 
 
-#ifndef GENERATIONBASE
+#if !defined (GENERATIONBASE) && !defined (XAOD_STANDALONE)
   // monitor jet multiplicity and basic jet kinematics
   auto njets = Monitored::Scalar<int>("nJets");
   auto pt    = Monitored::Collection("pt",  *jetsHandle, [c=m_mevtogev]( const xAOD::Jet* jet ) { return jet->pt()*c; });
diff --git a/Reconstruction/Jet/JetRec/Root/JetToolRunner.cxx b/Reconstruction/Jet/JetRec/Root/JetToolRunner.cxx
index bb78502c9c23169adb5c9a6156fc4e6828bad038..ea20cd52222ed9569aea37caaf02d905a2cf13a3 100644
--- a/Reconstruction/Jet/JetRec/Root/JetToolRunner.cxx
+++ b/Reconstruction/Jet/JetRec/Root/JetToolRunner.cxx
@@ -19,11 +19,7 @@ using std::fixed;
 //**********************************************************************
 
 JetToolRunner::JetToolRunner(const std::string& myname): 
-  AsgTool(myname),
-  m_evstools(this),
-  m_exetools(this){
-  declareProperty("Tools", m_exetools);
-  declareProperty("EventShapeTools", m_evstools);
+  AsgTool(myname){
   declareProperty("Timer", m_timer =0);
 }
 
diff --git a/Reconstruction/Jet/JetRec/Root/setAssocObjectsSummary.cxx b/Reconstruction/Jet/JetRec/Root/setAssocObjectsSummary.cxx
index e5640afaadcb16247dbaf38477de2936c78396a0..db12ab60fb169f3ba363b3de371cf75413ce44b9 100644
--- a/Reconstruction/Jet/JetRec/Root/setAssocObjectsSummary.cxx
+++ b/Reconstruction/Jet/JetRec/Root/setAssocObjectsSummary.cxx
@@ -2,6 +2,7 @@
   Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 #include "JetRec/setAssocObjectsSummary.h"
+#include <numeric>
 
 void
 setAssocObjectsSummary(const std::vector<const xAOD::IParticle*>& constituents,
diff --git a/Reconstruction/MET/METUtilities/CMakeLists.txt b/Reconstruction/MET/METUtilities/CMakeLists.txt
index 1e55f1340d0988b947002b6b58ae35d26c70c575..87d5220ad7f46bf77598f65880fbefba984a5165 100644
--- a/Reconstruction/MET/METUtilities/CMakeLists.txt
+++ b/Reconstruction/MET/METUtilities/CMakeLists.txt
@@ -55,7 +55,7 @@ atlas_add_library( METUtilitiesLib
    INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}  ${GTEST_INCLUDE_DIRS}
    LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools xAODEgamma xAODJet xAODMissingET
    xAODMuon xAODTau xAODTracking InDetTrackSelectionToolLib PATInterfaces
-   METInterface
+   METInterface AsgDataHandlesLib
    PRIVATE_LINK_LIBRARIES EventPrimitives FourMomUtils xAODCore PathResolver )
 
 if( NOT XAOD_STANDALONE )
@@ -83,8 +83,11 @@ endif()
 # Executable(s) in the package:
 # only compiled in analysis releases
 if( XAOD_ANALYSIS )
-  foreach( utility example_METMaker_METSystematicsTool
-          example_METMaker_advanced example_rebuildTrackMET )
+  # FIX ME: temporarily disabled utilities relying on non-existant code
+
+  # foreach( utility example_METMaker_METSystematicsTool
+  #         example_METMaker_advanced example_rebuildTrackMET )
+  foreach( utility example_rebuildTrackMET )
     atlas_add_executable( ${utility}
           util/${utility}.cxx
           INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
diff --git a/Reconstruction/MET/METUtilities/METUtilities/METMaker.h b/Reconstruction/MET/METUtilities/METUtilities/METMaker.h
index 5c100b8ed7b8bbfe588af6dad928b4b36eac9423..5d92d554aed9c2fc794f5baac5f93401bab29174 100644
--- a/Reconstruction/MET/METUtilities/METUtilities/METMaker.h
+++ b/Reconstruction/MET/METUtilities/METUtilities/METMaker.h
@@ -15,9 +15,9 @@
 #include <string>
 
 // FrameWork includes
+#include "AsgDataHandles/ReadHandleKey.h"
 #include "AsgTools/ToolHandle.h"
 #include "AsgTools/AsgTool.h"
-#include "StoreGate/DataHandle.h"
 
 // METInterface includes
 #include "METInterface/IMETMaker.h"
diff --git a/Reconstruction/MET/METUtilities/METUtilities/METRebuilder.h b/Reconstruction/MET/METUtilities/METUtilities/METRebuilder.h
index 30594d2c3e8a0fecba493124c1c45ae71341507f..5973a835985dcb060227db572b6b55b85ca8e89d 100644
--- a/Reconstruction/MET/METUtilities/METUtilities/METRebuilder.h
+++ b/Reconstruction/MET/METUtilities/METUtilities/METRebuilder.h
@@ -15,9 +15,10 @@
 #include <string>
 
 // FrameWork includes
+#include "AsgDataHandles/ReadHandleKey.h"
+#include "AsgDataHandles/WriteHandleKey.h"
 #include "AsgTools/AsgTool.h"
 #include "AsgTools/ToolHandle.h"
-#include "StoreGate/DataHandle.h"
 
 
 // METInterface includes
diff --git a/Reconstruction/MET/METUtilities/METUtilities/METSystematicsTool.h b/Reconstruction/MET/METUtilities/METUtilities/METSystematicsTool.h
index befa34d398ad1f1d04ca595678283bd548241457..3cd07106f014c39d433285c24ef50c34377a6238 100644
--- a/Reconstruction/MET/METUtilities/METUtilities/METSystematicsTool.h
+++ b/Reconstruction/MET/METUtilities/METUtilities/METSystematicsTool.h
@@ -16,8 +16,8 @@ class TH2D;
 class TH1D;
 
 #include "METInterface/IMETSystematicsTool.h"
+#include "AsgDataHandles/ReadHandleKey.h"
 #include "AsgTools/AsgTool.h"
-#include "StoreGate/DataHandle.h"
 
 #include "PATInterfaces/SystematicsTool.h"
 
diff --git a/Reconstruction/MET/METUtilities/Root/METMaker.cxx b/Reconstruction/MET/METUtilities/Root/METMaker.cxx
index d2c2182f42a77c94339f58afcc134ec78e14eccc..8cf2a1da64f1dd5277f9e68b3d7a7d7ffbc4a4c6 100644
--- a/Reconstruction/MET/METUtilities/Root/METMaker.cxx
+++ b/Reconstruction/MET/METUtilities/Root/METMaker.cxx
@@ -36,6 +36,9 @@
 #include "xAODEgamma/ElectronContainer.h"
 #include "xAODEgamma/EgammaxAODHelpers.h"
 
+// framework includes
+#include "AsgDataHandles/ReadHandle.h"
+
 namespace met {
 
   using std::vector;
diff --git a/Reconstruction/MET/METUtilities/Root/METRebuilder.cxx b/Reconstruction/MET/METUtilities/Root/METRebuilder.cxx
index 95f7866b4aa8fad7b39d9ad5ee39201b09b41020..330fa6c402898f6f4642322721db19c88852ed61 100644
--- a/Reconstruction/MET/METUtilities/Root/METRebuilder.cxx
+++ b/Reconstruction/MET/METUtilities/Root/METRebuilder.cxx
@@ -38,6 +38,9 @@
 // Track errors
 #include "EventPrimitives/EventPrimitivesHelpers.h"
 
+#include "AsgDataHandles/ReadHandle.h"
+#include "AsgDataHandles/WriteHandle.h"
+
 #ifndef ROOTCORE
 #include "GaudiKernel/IJobOptionsSvc.h"
 #endif
diff --git a/Reconstruction/MET/METUtilities/Root/METSystematicsTool.cxx b/Reconstruction/MET/METUtilities/Root/METSystematicsTool.cxx
index 5a7ffa166be74c7fed9bc04fa13a63e4bae9db70..ae9010d1a523972c459b38562d2ad96006e3f5cd 100644
--- a/Reconstruction/MET/METUtilities/Root/METSystematicsTool.cxx
+++ b/Reconstruction/MET/METUtilities/Root/METSystematicsTool.cxx
@@ -11,6 +11,7 @@
 
 #include <iostream>
 // #include <boost/filesystem.hpp>
+#include "AsgDataHandles/ReadHandle.h"
 #include "PathResolver/PathResolver.h"
 
 // xAOD includes
diff --git a/Reconstruction/MissingETPerformance/CMakeLists.txt b/Reconstruction/MissingETPerformance/CMakeLists.txt
index 63ce2de9eba3d330572a588ed2c33457854ebd5c..468d4ff229c017d793096cf226d26c0afbb5130b 100644
--- a/Reconstruction/MissingETPerformance/CMakeLists.txt
+++ b/Reconstruction/MissingETPerformance/CMakeLists.txt
@@ -5,44 +5,6 @@
 # Declare the package name:
 atlas_subdir( MissingETPerformance )
 
-# Declare the package's dependencies:
-atlas_depends_on_subdirs( PUBLIC
-                          Calorimeter/CaloConditions
-                          Calorimeter/CaloEvent
-                          Calorimeter/CaloInterface
-                          Control/AthenaBaseComps
-                          Control/SGTools
-                          Control/StoreGate
-                          GaudiKernel
-                          Generators/GeneratorObjects
-                          Generators/AtlasHepMC
-                          LArCalorimeter/LArRecConditions
-                          PhysicsAnalysis/AnalysisCommon/AnalysisTools
-                          PhysicsAnalysis/AnalysisTrigger/AnalysisTriggerEvent
-                          PhysicsAnalysis/TruthParticleID/McParticleEvent
-                          Reconstruction/Jet/JetEvent
-                          Reconstruction/Jet/JetUtils
-                          Reconstruction/MissingETEvent
-                          Reconstruction/MissingETGoodness
-                          Reconstruction/MuonIdentification/muonEvent
-                          Reconstruction/Particle
-                          Reconstruction/egamma/egammaEvent
-                          Trigger/TrigAnalysis/TrigDecisionTool
-                          Trigger/TrigEvent/TrigCaloEvent
-                          Trigger/TrigEvent/TrigInDetEvent
-                          Trigger/TrigEvent/TrigMissingEtEvent
-                          Trigger/TrigEvent/TrigMuonEvent
-                          PRIVATE
-                          Control/AthenaKernel
-                          Calorimeter/CaloGeoHelpers
-                          Event/FourMom
-                          Event/FourMomUtils
-                          Event/xAOD/xAODEventInfo
-                          Generators/GenAnalysisTools/TruthHelper
-                          Reconstruction/tauEvent
-                          Tracking/TrkEvent/VxVertex
-                          Trigger/TrigConfiguration/TrigConfL1Data )
-
 # External dependencies:
 find_package( Boost COMPONENTS filesystem thread system )
 find_package( CLHEP )
@@ -59,7 +21,7 @@ atlas_add_library( MissingETPerformanceLib
                    INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS}
                    PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} 
                    DEFINITIONS ${CLHEP_DEFINITIONS}
-                   LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} CaloConditions CaloEvent AthenaBaseComps SGTools GaudiKernel GeneratorObjects LArRecConditions AnalysisTriggerEvent McParticleEvent JetEvent JetUtils MissingETEvent muonEvent Particle egammaEvent TrigCaloEvent TrigInDetEvent TrigMissingEtEvent TrigMuonEvent StoreGateLib SGtests AthAnalysisToolsLib MissingETGoodnessLib TrigDecisionToolLib
+                   LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} CaloConditions CaloEvent AthenaBaseComps SGTools GaudiKernel GeneratorObjects LArRecConditions AnalysisTriggerEvent McParticleEvent JetEvent JetUtils MissingETEvent muonEvent Particle egammaEvent TrigCaloEvent TrigInDetEvent TrigMissingEtEvent TrigMuonEvent StoreGateLib SGtests AthAnalysisToolsLib MissingETGoodnessLib TrigDecisionToolLib CaloInterfaceLib
                    PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} AtlasHepMCLib AthenaKernel CaloGeoHelpers FourMom FourMomUtils xAODEventInfo TruthHelper tauEvent VxVertex TrigConfL1Data )
 
 atlas_add_component( MissingETPerformance
diff --git a/Reconstruction/MuonIdentification/MuidCaloEnergyTools/MuidCaloEnergyTools/MuidCaloEnergyMeas.h b/Reconstruction/MuonIdentification/MuidCaloEnergyTools/MuidCaloEnergyTools/MuidCaloEnergyMeas.h
index 70420ae31177469eb50c0e494db0a3ef80d1808c..e4806513800fd34531e11ed7ae99c1cda4efec81 100755
--- a/Reconstruction/MuonIdentification/MuidCaloEnergyTools/MuidCaloEnergyTools/MuidCaloEnergyMeas.h
+++ b/Reconstruction/MuonIdentification/MuidCaloEnergyTools/MuidCaloEnergyTools/MuidCaloEnergyMeas.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -7,7 +7,7 @@
  AlgTool to access the energy deposited by a muon in the
  calorimeters. The energy deposit is estimated according to
  the active measurements in the traversed calorimeter cells.
- 
+
   @author Konstantinos.Nikolopoulos@cern.ch, Alan.Poppleton@cern.ch
  (c) ATLAS Combined Muon software
 */
@@ -18,14 +18,14 @@
 
 //<<<<<< INCLUDES                                                       >>>>>>
 
+#include <atomic>
+
 #include "AthenaBaseComps/AthAlgTool.h"
+#include "CaloConditions/CaloNoise.h"
+#include "CaloEvent/CaloCellContainer.h"
 #include "GaudiKernel/ToolHandle.h"
 #include "MuidInterfaces/IMuidCaloEnergyMeas.h"
 #include "StoreGate/ReadHandleKey.h"
-#include "CaloEvent/CaloCellContainer.h"
-#include "CaloConditions/CaloNoise.h"
-
-#include <atomic>
 
 //<<<<<< CLASS DECLARATIONS                                             >>>>>>
 
@@ -35,91 +35,76 @@ class LArEM_ID;
 class LArHEC_ID;
 class TileID;
 
-namespace Rec
-{
+namespace Rec {
 
-    class caloMeas;
-    class IMuidCaloEnergyParam;
+class caloMeas;
+class IMuidCaloEnergyParam;
 
-class MuidCaloEnergyMeas: public AthAlgTool,
-			  virtual public IMuidCaloEnergyMeas
-{
-public:
-    MuidCaloEnergyMeas(const std::string& type, 
-		       const std::string& name,
-		       const IInterface* parent);
-    ~MuidCaloEnergyMeas(void); // destructor
+class MuidCaloEnergyMeas : public AthAlgTool, virtual public IMuidCaloEnergyMeas {
+  public:
+    MuidCaloEnergyMeas(const std::string& type, const std::string& name, const IInterface* parent);
+    ~MuidCaloEnergyMeas(void);  // destructor
+
+    StatusCode initialize();
+    StatusCode finalize();
 
-    StatusCode		initialize();
-    StatusCode		finalize();
-    
     /**IMuidCaloEnergyMeas interface:
        get the muon energy loss measurement from the calorimeter,
        knowing the track intersection at the em and had cals*/
-    CaloMeas*		energyMeasurement(double etaEM,
-					  double phiEM,
-					  double etaHad,
-					  double phiHad) const;
-private:
+    CaloMeas* energyMeasurement(double etaEM, double phiEM, double etaHad, double phiHad) const;
+
+  private:
     // private methods
-    void				energyInCalo(CaloMeas&			caloMeas,
-						     const CaloCellContainer*	cellContainer,
-						     double			eta,
-						     double			phi,
-						     int			iSubCalo) const;
-    void				isolationEnergy(CaloMeas&		caloMeas,
-							const CaloCellContainer* cellContainer,
-							double			eta,
-							double			phi,
-							int			iSubCalo) const;
-    double				energyInTile(const CaloCellContainer* cellContainer,
-						     double eta,
-						     double phi,
-						     int,
-						     int) const;
-    double				energyInLArHEC(const CaloCellContainer* cellContainer,
-						       double eta,
-						       double phi,
-						       int,
-						       int) const;
-    double				energyInLArEM(const CaloCellContainer* cellContainer,
-						      double eta,
-						      double phi,
-						      int,
-						      int) const;
-    int                                 cellCounting(const CaloCellContainer* cellContainer,
-						     double eta,
-						     double phi) const;
-    
+    void   energyInCalo(CaloMeas& caloMeas, const CaloCellContainer* cellContainer, double eta, double phi,
+                        int iSubCalo) const;
+    void   isolationEnergy(CaloMeas& caloMeas, const CaloCellContainer* cellContainer, double eta, double phi,
+                           int iSubCalo) const;
+    double energyInTile(const CaloCellContainer* cellContainer, double eta, double phi, int, int) const;
+    double energyInLArHEC(const CaloCellContainer* cellContainer, double eta, double phi, int, int) const;
+    double energyInLArEM(const CaloCellContainer* cellContainer, double eta, double phi, int, int) const;
+    int    cellCounting(const CaloCellContainer* cellContainer, double eta, double phi) const;
+
     // helpers, managers, tools
-    SG::ReadCondHandleKey<CaloNoise> m_noiseCDOKey{this,"CaloNoiseKey","totalNoise","SG Key of CaloNoise data object"};
-    ToolHandle<IMuidCaloEnergyParam>		m_caloParamTool;
-
-    const TileID*				m_tileID;
-    const LArEM_ID*				m_emID;
-    const LArHEC_ID*				m_hecID;
-    SG::ReadHandleKey<CaloCellContainer>	m_cellContainerLocation{this,"CellContainerLocation","AllCalo","calo cell container location"};
-
-    double 					m_measurementConeTile;
-    double					m_measurementConeLArHEC;
-    double					m_measurementConeLArEM;
-    double					m_isolationConeTile;
-    double					m_isolationConeLArHEC;
-    double					m_isolationConeLArEM;
-
-    double			m_sigmasAboveNoise;	// The minimum sigmas above the noise tool rms
-    double			m_sigmasAboveNoiseCore;	// The minimum sigmas above the noise tool rms
-
-    mutable std::atomic_int	m_totalCoreCellsEM;
-    mutable std::atomic_int	m_totalCoreCellsHEC;
-    mutable std::atomic_int	m_totalCoreCellsTile;
-    mutable std::atomic_int	m_totalSelectedEM;
-    mutable std::atomic_int	m_totalSelectedHEC;
-    mutable std::atomic_int	m_totalSelectedTile;
+    SG::ReadCondHandleKey<CaloNoise> m_noiseCDOKey{
+        this,
+        "CaloNoiseKey",
+        "totalNoise",
+        "SG Key of CaloNoise data object",
+    };
+    ToolHandle<IMuidCaloEnergyParam> m_caloParamTool{
+        this,
+        "CaloParamTool",
+        "",
+    };
+
+    const TileID*                        m_tileID;
+    const LArEM_ID*                      m_emID;
+    const LArHEC_ID*                     m_hecID;
+    SG::ReadHandleKey<CaloCellContainer> m_cellContainerLocation{
+        this,
+        "CellContainerLocation",
+        "AllCalo",
+        "calo cell container location",
+    };
+
+    double m_measurementConeTile;
+    double m_measurementConeLArHEC;
+    double m_measurementConeLArEM;
+    double m_isolationConeTile;
+    double m_isolationConeLArHEC;
+    double m_isolationConeLArEM;
+
+    double m_sigmasAboveNoise;      // The minimum sigmas above the noise tool rms
+    double m_sigmasAboveNoiseCore;  // The minimum sigmas above the noise tool rms
+
+    mutable std::atomic_int m_totalCoreCellsEM;
+    mutable std::atomic_int m_totalCoreCellsHEC;
+    mutable std::atomic_int m_totalCoreCellsTile;
+    mutable std::atomic_int m_totalSelectedEM;
+    mutable std::atomic_int m_totalSelectedHEC;
+    mutable std::atomic_int m_totalSelectedTile;
 };
 
-}	// end of namespace
-
-#endif // MUIDCALOENERGYTOOLS_MUIDCALOENERGYMEAS_H
-
+}  // namespace Rec
 
+#endif  // MUIDCALOENERGYTOOLS_MUIDCALOENERGYMEAS_H
diff --git a/Reconstruction/MuonIdentification/MuidCaloEnergyTools/MuidCaloEnergyTools/MuidCaloEnergyTool.h b/Reconstruction/MuonIdentification/MuidCaloEnergyTools/MuidCaloEnergyTools/MuidCaloEnergyTool.h
index 16b83ab5884ef9ff28ee4a9eeef229f8f3f91e07..a4ea560f9deeb0bc7978960e25da8db926f354dd 100755
--- a/Reconstruction/MuonIdentification/MuidCaloEnergyTools/MuidCaloEnergyTools/MuidCaloEnergyTool.h
+++ b/Reconstruction/MuonIdentification/MuidCaloEnergyTools/MuidCaloEnergyTools/MuidCaloEnergyTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////////////////
@@ -13,7 +13,7 @@
  K. Nikolopoulos, D. Fassouliotis, C. Kourkoumelis, and A. Poppleton,
  "Event-by-Event Estimate of Muon Energy Loss in ATLAS",
  IEEE Trans. Nucl. Sci., vol. 54, no. 5, pt. 2, pp. 1792-1796, Oct. 2007.
-  
+
   @author Konstantinos.Nikolopoulos@cern.ch, Alan.Poppleton@cern.ch
  (c) ATLAS Combined Muon software
 */
@@ -24,95 +24,89 @@
 
 //<<<<<< INCLUDES                                                       >>>>>>
 
+#include <atomic>
+
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ToolHandle.h"
 #include "MuidInterfaces/IMuidCaloEnergy.h"
-
-#include <atomic>
+#include "MuidInterfaces/IMuidCaloEnergyParam.h"
+#include "MuidInterfaces/IMuidTrackIsolation.h"
 
 //<<<<<< CLASS DECLARATIONS                                             >>>>>>
 
-namespace Rec
-{
+namespace Rec {
 
 class CaloMeas;
 class IMuidCaloEnergyMeas;
 class IMuidCaloEnergyParam;
 class IMuidTrackIsolation;
 
-class MuidCaloEnergyTool: public AthAlgTool,
-			  virtual public IMuidCaloEnergy
-{
+class MuidCaloEnergyTool : public AthAlgTool, virtual public IMuidCaloEnergy {
+
+  public:
+    MuidCaloEnergyTool(const std::string& type, const std::string& name, const IInterface* parent);
+    ~MuidCaloEnergyTool(void);  // destructor
 
-public:
-    MuidCaloEnergyTool(const std::string& type, 
-		       const std::string& name,
-		       const IInterface* parent);
-    ~MuidCaloEnergyTool(void); // destructor
-  
     StatusCode initialize();
     StatusCode finalize();
 
     /**IMuidCaloEnergy interface:
        to get the total energyLoss in the calorimeters */
-    CaloEnergy*				energyLoss(double trackMomentum,
-						                      double eta,
-						                      double phi) const;
-    
+    CaloEnergy* energyLoss(double trackMomentum, double eta, double phi) const;
+
     /**IMuidCaloEnergy interface:
        TrackStateOnSurface for parameters and energyLoss at the calorimeter mid-surface */
-    const Trk::TrackStateOnSurface*	trackStateOnSurface(
-	    const Trk::TrackParameters& middleParameters,
-	    const Trk::TrackParameters* innerParameters,
-	    const Trk::TrackParameters* outerParameters) const;
-    
-private:
+    const Trk::TrackStateOnSurface* trackStateOnSurface(const Trk::TrackParameters& middleParameters,
+                                                        const Trk::TrackParameters* innerParameters,
+                                                        const Trk::TrackParameters* outerParameters) const;
+
+  private:
     // private methods
-    CaloEnergy*				measurement(double	trackMomentum,
-						    double	eta,
-						    double	phi,
-						    CaloMeas*	caloMeas) const;
-    double                              muSpecResolParam(double trackMomentum,
-							 double eta) const;
-    double                              paramCorrection(double trackMomentum,
-							double eta,
-							double MopLoss,
-							double MopSigma) const;
-    double                              landau(double x,
-					       double mpv, 
-					       double sigma, 
-					       bool   norm) const;
+    CaloEnergy* measurement(double trackMomentum, double eta, double phi, CaloMeas* caloMeas) const;
+    double      muSpecResolParam(double trackMomentum, double eta) const;
+    double      paramCorrection(double trackMomentum, double eta, double MopLoss, double MopSigma) const;
+    double      landau(double x, double mpv, double sigma, bool norm) const;
 
     // helpers, managers, tools
-    ToolHandle<IMuidCaloEnergyMeas>		m_caloMeasTool;
-    ToolHandle<IMuidCaloEnergyParam>		m_caloParamTool;
-    ToolHandle<IMuidTrackIsolation>		m_trackIsolationTool;
-            
+    ToolHandle<IMuidCaloEnergyMeas> m_caloMeasTool{
+        this,
+        "CaloMeasTool",
+        "Rec::MuidCaloEnergyMeas/MuidCaloEnergyMeas",
+    };
+    ToolHandle<IMuidCaloEnergyParam> m_caloParamTool{
+        this,
+        "CaloParamTool",
+        "Rec::MuidCaloEnergyParam/MuidCaloEnergyParam",
+    };
+    ToolHandle<IMuidTrackIsolation> m_trackIsolationTool{
+        this,
+        "TrackIsolationTool",
+        "Rec::MuidTrackIsolation/MuidTrackIsolation",
+    };
+
     // configurable options
-    bool					m_cosmics;
-    bool					m_energyLossMeasurement;
-    bool					m_forceIsolationFailure;
-    bool					m_FSRtreatment;
-    bool					m_MOPparametrization;
-    bool					m_trackIsolation;
+    bool m_cosmics;
+    bool m_energyLossMeasurement;
+    bool m_forceIsolationFailure;
+    bool m_FSRtreatment;
+    bool m_MOPparametrization;
+    bool m_trackIsolation;
 
     // thresholds for use of energy measurement
-    double					m_emEtCut;	  // minimum Et in em for FSR treatment
-    double					m_emF1Cut;	  // minimum F1 in em for FSR treatment
-    double 					m_emMinEnergy;    // mininum energy in the EM 
-    double					m_hecMinEnergy;   // minimum energy in the HEC
-    int						  m_maxNTracksIso;  // max #tracks in the isolation cone
-    double					m_minFinalEnergy; // minimum measured final energy
-    double					m_minMuonPt;      // minimum pt of the muon
+    double m_emEtCut;         // minimum Et in em for FSR treatment
+    double m_emF1Cut;         // minimum F1 in em for FSR treatment
+    double m_emMinEnergy;     // mininum energy in the EM
+    double m_hecMinEnergy;    // minimum energy in the HEC
+    int    m_maxNTracksIso;   // max #tracks in the isolation cone
+    double m_minFinalEnergy;  // minimum measured final energy
+    double m_minMuonPt;       // minimum pt of the muon
 
     // counters (for finalize)
-    mutable std::atomic_int			m_countMean;        //number of tracks using mean
-    mutable std::atomic_int			m_countMeasurement; //number of tracks using measurement
-    mutable std::atomic_int 		m_countMop;         //number of tracks using mop
+    mutable std::atomic_int m_countMean;         // number of tracks using mean
+    mutable std::atomic_int m_countMeasurement;  // number of tracks using measurement
+    mutable std::atomic_int m_countMop;          // number of tracks using mop
 };
 
-}	// end of namespace
-
-#endif // MUIDCALOENERGYTOOLS_MUIDCALOENERGYTOOL_H
-
+}  // namespace Rec
 
+#endif  // MUIDCALOENERGYTOOLS_MUIDCALOENERGYTOOL_H
diff --git a/Reconstruction/MuonIdentification/MuidCaloEnergyTools/src/MuidCaloEnergyMeas.cxx b/Reconstruction/MuonIdentification/MuidCaloEnergyTools/src/MuidCaloEnergyMeas.cxx
index ccc58ff0315acacddd10ff9daec40f58e1275d31..e1798e456c84eb5f9c4cf597e0e27fe9c33ae111 100755
--- a/Reconstruction/MuonIdentification/MuidCaloEnergyTools/src/MuidCaloEnergyMeas.cxx
+++ b/Reconstruction/MuonIdentification/MuidCaloEnergyTools/src/MuidCaloEnergyMeas.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -13,58 +13,53 @@
 
 //<<<<<< INCLUDES                                                       >>>>>>
 
+#include "MuidCaloEnergyTools/MuidCaloEnergyMeas.h"
+
+#include "AthenaKernel/Units.h"
 #include "CLHEP/Geometry/Vector3D.h"
 #include "CaloEvent/CaloCell.h"
 #include "CaloIdentifier/CaloCell_ID.h"
-#include "CaloIdentifier/TileID.h"
+#include "CaloIdentifier/CaloID.h"
 #include "CaloIdentifier/LArEM_ID.h"
 #include "CaloIdentifier/LArHEC_ID.h"
-#include "CaloIdentifier/CaloID.h"
+#include "CaloIdentifier/TileID.h"
 #include "CaloUtils/CaloCellList.h"
-#include "MuidCaloEnergyTools/MuidCaloEnergyMeas.h"
 #include "MuidEvent/CaloMeas.h"
 #include "MuidInterfaces/IMuidCaloEnergyParam.h"
-#include "AthenaKernel/Units.h"
 
 //<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>
 
 namespace Units = Athena::Units;
 
-namespace Rec
-{
-
-MuidCaloEnergyMeas::MuidCaloEnergyMeas (const std::string&	type,
-					const std::string&	name,
-					const IInterface*	parent)
-    :	AthAlgTool		(type, name, parent),
-	m_caloParamTool		("", this),
-	m_tileID                (0),
-	m_emID                  (0),
-	m_hecID                 (0),
-	m_sigmasAboveNoise	(4.),
-	m_sigmasAboveNoiseCore	(1.5),
-	m_totalCoreCellsEM	(0),
-	m_totalCoreCellsHEC	(0),
-	m_totalCoreCellsTile	(0),
-	m_totalSelectedEM	(0),
-	m_totalSelectedHEC	(0),
-	m_totalSelectedTile	(0)
+namespace Rec {
+
+MuidCaloEnergyMeas::MuidCaloEnergyMeas(const std::string& type, const std::string& name, const IInterface* parent)
+    : AthAlgTool(type, name, parent),
+      m_tileID(0),
+      m_emID(0),
+      m_hecID(0),
+      m_sigmasAboveNoise(4.),
+      m_sigmasAboveNoiseCore(1.5),
+      m_totalCoreCellsEM(0),
+      m_totalCoreCellsHEC(0),
+      m_totalCoreCellsTile(0),
+      m_totalSelectedEM(0),
+      m_totalSelectedHEC(0),
+      m_totalSelectedTile(0)
 {
     declareInterface<IMuidCaloEnergyMeas>(this);
-    declareProperty ("CaloParamTool",		m_caloParamTool);
-    declareProperty ("NoiseThresInSigmas",	m_sigmasAboveNoise);
-    declareProperty ("NoiseThresInSigmasCore",	m_sigmasAboveNoiseCore);
-
-    m_measurementConeTile	= 0.15;
-    m_measurementConeLArHEC	= 0.15;
-    m_measurementConeLArEM	= 0.075;
-    m_isolationConeTile		= 0.3;
-    m_isolationConeLArHEC	= 0.3;
-    m_isolationConeLArEM	= 0.15;
+    declareProperty("NoiseThresInSigmas", m_sigmasAboveNoise);
+    declareProperty("NoiseThresInSigmasCore", m_sigmasAboveNoiseCore);
+
+    m_measurementConeTile   = 0.15;
+    m_measurementConeLArHEC = 0.15;
+    m_measurementConeLArEM  = 0.075;
+    m_isolationConeTile     = 0.3;
+    m_isolationConeLArHEC   = 0.3;
+    m_isolationConeLArEM    = 0.15;
 }
 
-MuidCaloEnergyMeas::~MuidCaloEnergyMeas (void) 
-{}
+MuidCaloEnergyMeas::~MuidCaloEnergyMeas(void) {}
 
 //<<<<<< PUBLIC MEMBER FUNCTION DEFINITIONS                             >>>>>>
 
@@ -72,34 +67,31 @@ MuidCaloEnergyMeas::~MuidCaloEnergyMeas (void)
 StatusCode
 MuidCaloEnergyMeas::initialize()
 {
-    ATH_MSG_INFO( "Initializing MuidCaloEnergyMeas AlgTool"
-		  << " - package version " << PACKAGE_VERSION );
+    ATH_MSG_INFO("Initializing MuidCaloEnergyMeas AlgTool"
+                 << " - package version " << PACKAGE_VERSION);
 
     // retrieve TileID helper and TileIfno from det store
-    if (StatusCode::SUCCESS != detStore()->retrieve(m_tileID)) 
-    {
-	ATH_MSG_FATAL( "Unable to retrieve TileID helper from DetectorStore" );
-	return StatusCode::FAILURE;
+    if (StatusCode::SUCCESS != detStore()->retrieve(m_tileID)) {
+        ATH_MSG_FATAL("Unable to retrieve TileID helper from DetectorStore");
+        return StatusCode::FAILURE;
     }
-    ATH_MSG_VERBOSE( "Accessed TileID helper" );
-   
-    // retrieve LArEM helper 
-    if (StatusCode::SUCCESS != detStore()->retrieve(m_emID,"LArEM_ID")) 
-    {
-	ATH_MSG_FATAL( "Unable to retrieve LArEM_ID helper from DetectorStore" );
-	return StatusCode::FAILURE;
+    ATH_MSG_VERBOSE("Accessed TileID helper");
+
+    // retrieve LArEM helper
+    if (StatusCode::SUCCESS != detStore()->retrieve(m_emID, "LArEM_ID")) {
+        ATH_MSG_FATAL("Unable to retrieve LArEM_ID helper from DetectorStore");
+        return StatusCode::FAILURE;
     }
-    ATH_MSG_VERBOSE( "Accessed LArEM helper" );
+    ATH_MSG_VERBOSE("Accessed LArEM helper");
 
     // retrieve LArHEC helper
-    if (StatusCode::SUCCESS != detStore()->retrieve(m_hecID,"LArHEC_ID")) 
-    {
-	ATH_MSG_FATAL( "Unable to retrieve LArHEC_ID helper from DetectorStore" );
-	return StatusCode::FAILURE;
+    if (StatusCode::SUCCESS != detStore()->retrieve(m_hecID, "LArHEC_ID")) {
+        ATH_MSG_FATAL("Unable to retrieve LArHEC_ID helper from DetectorStore");
+        return StatusCode::FAILURE;
     }
-    ATH_MSG_VERBOSE( "Accessed LArHEC helper" );
-
+    ATH_MSG_VERBOSE("Accessed LArHEC helper");
 
+    ATH_CHECK(m_caloParamTool.retrieve());
     ATH_CHECK(m_noiseCDOKey.initialize());
     ATH_CHECK(m_cellContainerLocation.initialize());
 
@@ -109,122 +101,99 @@ MuidCaloEnergyMeas::initialize()
 StatusCode
 MuidCaloEnergyMeas::finalize()
 {
-    ATH_MSG_INFO( "Finalizing MuidCaloEnergyMeas Tool" );
-    ATH_MSG_INFO( " EM:   selected " << m_totalSelectedEM << " from "
-		  << m_totalCoreCellsEM << " cells in core" );
-    
-    ATH_MSG_INFO( " Tile: selected " << m_totalSelectedTile << " from "
-		  << m_totalCoreCellsTile << " cells in core" );
-    
-    ATH_MSG_INFO( " HEC:  selected " << m_totalSelectedHEC  << " from "
-		  << m_totalCoreCellsHEC  << " cells in core" );
+    ATH_MSG_INFO("Finalizing MuidCaloEnergyMeas Tool");
+    ATH_MSG_INFO(" EM:   selected " << m_totalSelectedEM << " from " << m_totalCoreCellsEM << " cells in core");
+
+    ATH_MSG_INFO(" Tile: selected " << m_totalSelectedTile << " from " << m_totalCoreCellsTile << " cells in core");
+
+    ATH_MSG_INFO(" HEC:  selected " << m_totalSelectedHEC << " from " << m_totalCoreCellsHEC << " cells in core");
     return StatusCode::SUCCESS;
 }
 
 CaloMeas*
-MuidCaloEnergyMeas::energyMeasurement (double etaEM,
-				       double phiEM,
-				       double etaHad,
-				       double phiHad) const
+MuidCaloEnergyMeas::energyMeasurement(double etaEM, double phiEM, double etaHad, double phiHad) const
 {
-  SG::ReadHandle<CaloCellContainer> cellContainer(m_cellContainerLocation);
-  if(!cellContainer.isPresent()){
-    ATH_MSG_DEBUG("No calo cell container "<<m_cellContainerLocation.key()<<", energy measurement is 0");
-    return 0;
-  }
-  if(!cellContainer.isValid()){
-    ATH_MSG_WARNING("Calo cell container "<<m_cellContainerLocation.key()<<" not valid!");
-    return 0;
-  }
+    SG::ReadHandle<CaloCellContainer> cellContainer(m_cellContainerLocation);
+    if (!cellContainer.isPresent()) {
+        ATH_MSG_DEBUG("No calo cell container " << m_cellContainerLocation.key() << ", energy measurement is 0");
+        return 0;
+    }
+    if (!cellContainer.isValid()) {
+        ATH_MSG_WARNING("Calo cell container " << m_cellContainerLocation.key() << " not valid!");
+        return 0;
+    }
 
     // set measured tile energy, measured sampling fraction and isolation energy into CaloMeas
-    CaloMeas* caloMeas	= new CaloMeas();
-    energyInCalo(*caloMeas,cellContainer.cptr(),etaHad,phiHad,0);
-    isolationEnergy(*caloMeas,cellContainer.cptr(),etaHad,phiHad,0);
+    CaloMeas* caloMeas = new CaloMeas();
+    energyInCalo(*caloMeas, cellContainer.cptr(), etaHad, phiHad, 0);
+    isolationEnergy(*caloMeas, cellContainer.cptr(), etaHad, phiHad, 0);
 
     // similar for LArHEC
-    energyInCalo(*caloMeas,cellContainer.cptr(),etaHad,phiHad,1);
-    isolationEnergy(*caloMeas,cellContainer.cptr(),etaHad,phiHad,1);
+    energyInCalo(*caloMeas, cellContainer.cptr(), etaHad, phiHad, 1);
+    isolationEnergy(*caloMeas, cellContainer.cptr(), etaHad, phiHad, 1);
 
     // and for the em calo
-    energyInCalo(*caloMeas,cellContainer.cptr(),etaEM,phiEM,2);
-    isolationEnergy(*caloMeas,cellContainer.cptr(),etaEM,phiEM,2);
-
-    if (msgLvl(MSG::DEBUG))
-    {	 
-	// int cellsOverThreshold	= 0;
-	// cellsOverThreshold	= cellCounting(cellContainer,etaEM,phiEM);
-	ATH_MSG_DEBUG( std::setiosflags(std::ios::fixed)
-		       << " Tile energy (GeV)  :"	<< std::setw(8) << std::setprecision(3)
-		       << caloMeas->Tile_EnergyMeasured()/Units::GeV
-		       << " Material percent:"		<< std::setw(4) << std::setprecision(0)
-		       << 100.*caloMeas->Tile_SamplingFraction()
-		       << " ISO :"			<< std::setw(8) << std::setprecision(3)
-		       << caloMeas->Tile_Isolation()/Units::GeV
-		       << endmsg
-		       << " LArHEC energy (GeV):"	<< std::setw(8) << std::setprecision(3)
-		       << caloMeas->LArHEC_EnergyMeasured()/Units::GeV
-		       << " Material percent:"		<< std::setw(4) << std::setprecision(0)
-		       << 100.*caloMeas->LArHEC_SamplingFraction()
-		       << " ISO :"			<< std::setw(8) << std::setprecision(3)
-		       << caloMeas->LArHEC_Isolation()/Units::GeV
-		       << endmsg
-		       << " EM energy          :"	<< std::setw(8) << std::setprecision(3)
-		       << caloMeas->LArEM_EnergyMeasured()/Units::GeV
-		       << " first compartment:"		<< std::setw(8) << std::setprecision(3)
-		       << caloMeas->LArEM_FirstCompartmentEnergy()/Units::GeV
-		       << " Material percent:"		<< std::setw(4) << std::setprecision(0)
-		       << 100.*caloMeas->LArEM_SamplingFraction()
-		       << " ISO :"			<< std::setw(8) << std::setprecision(3)
-		       << caloMeas->LArEM_Isolation()/Units::GeV);
+    energyInCalo(*caloMeas, cellContainer.cptr(), etaEM, phiEM, 2);
+    isolationEnergy(*caloMeas, cellContainer.cptr(), etaEM, phiEM, 2);
+
+    if (msgLvl(MSG::DEBUG)) {
+        // int cellsOverThreshold	= 0;
+        // cellsOverThreshold	= cellCounting(cellContainer,etaEM,phiEM);
+        ATH_MSG_DEBUG(std::setiosflags(std::ios::fixed)
+                      << " Tile energy (GeV)  :" << std::setw(8) << std::setprecision(3)
+                      << caloMeas->Tile_EnergyMeasured() / Units::GeV << " Material percent:" << std::setw(4)
+                      << std::setprecision(0) << 100. * caloMeas->Tile_SamplingFraction() << " ISO :" << std::setw(8)
+                      << std::setprecision(3) << caloMeas->Tile_Isolation() / Units::GeV << endmsg
+                      << " LArHEC energy (GeV):" << std::setw(8) << std::setprecision(3)
+                      << caloMeas->LArHEC_EnergyMeasured() / Units::GeV << " Material percent:" << std::setw(4)
+                      << std::setprecision(0) << 100. * caloMeas->LArHEC_SamplingFraction() << " ISO :" << std::setw(8)
+                      << std::setprecision(3) << caloMeas->LArHEC_Isolation() / Units::GeV << endmsg
+                      << " EM energy          :" << std::setw(8) << std::setprecision(3)
+                      << caloMeas->LArEM_EnergyMeasured() / Units::GeV << " first compartment:" << std::setw(8)
+                      << std::setprecision(3) << caloMeas->LArEM_FirstCompartmentEnergy() / Units::GeV
+                      << " Material percent:" << std::setw(4) << std::setprecision(0)
+                      << 100. * caloMeas->LArEM_SamplingFraction() << " ISO :" << std::setw(8) << std::setprecision(3)
+                      << caloMeas->LArEM_Isolation() / Units::GeV);
     }
-    
+
     return caloMeas;
 }
 
 //<<<<<< PRIVATE MEMBER FUNCTION DEFINITIONS                            >>>>>>
 
 int
-MuidCaloEnergyMeas::cellCounting(const CaloCellContainer* cellContainer,
-				 double mu_eta,
-				 double mu_phi) const
+MuidCaloEnergyMeas::cellCounting(const CaloCellContainer* cellContainer, double mu_eta, double mu_phi) const
 {
-    //int isubcalo = 2;
+    // int isubcalo = 2;
     constexpr double lowest_threshold = 4 * 50.;
-    
+
     SG::ReadCondHandle<CaloNoise> noiseHdl{m_noiseCDOKey};
-    const CaloNoise* noiseCDO=*noiseHdl;
+    const CaloNoise*              noiseCDO = *noiseHdl;
 
     CaloCell_ID::SUBCALO iCalo = CaloCell_ID::LAREM;
-    CaloCellList myList(cellContainer,iCalo);  // Construct the list  
-    myList.select(mu_eta,mu_phi,0.2,0.2);
+    CaloCellList         myList(cellContainer, iCalo);  // Construct the list
+    myList.select(mu_eta, mu_phi, 0.2, 0.2);
 
-    int count		= 0;
+    int                         count      = 0;
     CaloCellList::list_iterator ilistfirst = myList.begin();
     CaloCellList::list_iterator ilistlast  = myList.end();
-    for(;ilistfirst!=ilistlast;ilistfirst++)
-    {
-	const double cellEnergy= (*ilistfirst)->energy();
-	const double noise_rms =noiseCDO->getNoise((*ilistfirst)->ID(),(*ilistfirst)->gain()); 
-
-	if( cellEnergy > lowest_threshold && cellEnergy > noise_rms * m_sigmasAboveNoise )
-	{
-	    count+=1;
-	}
+    for (; ilistfirst != ilistlast; ilistfirst++) {
+        const double cellEnergy = (*ilistfirst)->energy();
+        const double noise_rms  = noiseCDO->getNoise((*ilistfirst)->ID(), (*ilistfirst)->gain());
+
+        if (cellEnergy > lowest_threshold && cellEnergy > noise_rms * m_sigmasAboveNoise) {
+            count += 1;
+        }
     }
 
-    ATH_MSG_DEBUG( " counted "<< count
-		   << " cells over threshold out of a total of " << myList.ncells() << " cells" );
+    ATH_MSG_DEBUG(" counted " << count << " cells over threshold out of a total of " << myList.ncells() << " cells");
 
     return count;
 }
 
 void
-MuidCaloEnergyMeas::energyInCalo (CaloMeas&			caloMeas,
-				  const CaloCellContainer*	cellContainer,
-				  double			muEta,
-				  double			muPhi,
-				  int				isubcalo) const
+MuidCaloEnergyMeas::energyInCalo(CaloMeas& caloMeas, const CaloCellContainer* cellContainer, double muEta, double muPhi,
+                                 int isubcalo) const
 {
     /* -------------------------------------------
        Tile Cal
@@ -241,409 +210,288 @@ MuidCaloEnergyMeas::energyInCalo (CaloMeas&			caloMeas,
        2 --> Sampling 3
        3 --> Sampling 4
        ===========================================
-       LarEM calorimeter 
-       sample_number 	     
+       LarEM calorimeter
+       sample_number
        0 --> Presampler
        1 --> Sampling 1
        2 --> Sampling 2
        3 --> Sampling 3
        leadingEnergy is contribution from presampler and first compartment
-       -------------------------------------------*/	    
+       -------------------------------------------*/
 
     SG::ReadCondHandle<CaloNoise> noiseHdl{m_noiseCDOKey};
-    const CaloNoise* noiseCDO=*noiseHdl;
-
-    double totalEnergy		= 0.;
-    double leadingEnergy	= 0.;
-    CaloCellList* myList 	= 0;
-
-    if (isubcalo == 0)
-    {
-	CaloCell_ID::SUBCALO iCalo = CaloCell_ID::TILE;
-	myList	= new CaloCellList(cellContainer,iCalo);
-	myList->select(muEta,muPhi,m_measurementConeTile,m_measurementConeTile);
-    }
-    else if (isubcalo == 1)
-    {
-	CaloCell_ID::SUBCALO iCalo = CaloCell_ID::LARHEC;
-	myList	= new CaloCellList(cellContainer,iCalo);
-	myList->select(muEta,muPhi,m_measurementConeLArHEC,m_measurementConeLArHEC);
-    }
-    else if (isubcalo == 2)
-    {
-	CaloCell_ID::SUBCALO iCalo = CaloCell_ID::LAREM;
-	myList	= new CaloCellList(cellContainer,iCalo); 
-	myList->select(muEta,muPhi,m_measurementConeLArEM,m_measurementConeLArEM);
+    const CaloNoise*              noiseCDO = *noiseHdl;
+
+    double        totalEnergy   = 0.;
+    double        leadingEnergy = 0.;
+    CaloCellList* myList        = 0;
+
+    if (isubcalo == 0) {
+        CaloCell_ID::SUBCALO iCalo = CaloCell_ID::TILE;
+        myList                     = new CaloCellList(cellContainer, iCalo);
+        myList->select(muEta, muPhi, m_measurementConeTile, m_measurementConeTile);
+    } else if (isubcalo == 1) {
+        CaloCell_ID::SUBCALO iCalo = CaloCell_ID::LARHEC;
+        myList                     = new CaloCellList(cellContainer, iCalo);
+        myList->select(muEta, muPhi, m_measurementConeLArHEC, m_measurementConeLArHEC);
+    } else if (isubcalo == 2) {
+        CaloCell_ID::SUBCALO iCalo = CaloCell_ID::LAREM;
+        myList                     = new CaloCellList(cellContainer, iCalo);
+        myList->select(muEta, muPhi, m_measurementConeLArEM, m_measurementConeLArEM);
     }
 
-    int countCoreCells		= 0;
-    int countSelected		= 0;
-    bool compartment[4]		= {false,false,false,false};
-    double measuredSamplings	= 0.;
-
-    if (myList)
-    {
-	// get last cell (as CaloCellList->back() method doesn't work)
-	const CaloCell*	lastCell= 0;
-	CaloCellList::list_iterator cell = myList->begin();
-	for ( ; cell != myList->end(); ++cell) lastCell	= *cell;
-	
-	// flag core in each sampling
-	for (int coreSampling = 0; coreSampling != 4; ++coreSampling)
-	{
-	    const CaloCell*	coreCell	= 0;
-	    double		coreRadius	= 0.;
-	    for (cell = myList->begin(); cell != myList->end(); ++cell)
-	    {
-		int sampling	= -1;
-		if (isubcalo == 0)
-		{
-		    sampling	= m_tileID->sample((**cell).ID());
-		}
-		else if (isubcalo == 1)
-		{
-		    sampling	= m_hecID->sampling((**cell).ID());
-		}
-		else if (isubcalo == 2)
-		{
-		    sampling	= m_emID->sampling((**cell).ID());
-		}
-		if (*cell != lastCell && sampling != coreSampling)	continue;
-	    
-		double deltaEta	= (**cell).eta() - muEta;
-		double deltaPhi	= (**cell).phi() - muPhi;
-		double radius	= deltaEta*deltaEta + deltaPhi*deltaPhi;
-
-		if (sampling == coreSampling)
-		{
-		    if (! coreCell || radius < coreRadius)
-		    {
-			coreCell	= *cell;
-			coreRadius	= radius;
-		    }
-		}
-		
-		if (*cell != lastCell || ! coreCell)			continue;
-
-		for (CaloCellList::list_iterator cell2 = myList->begin();
-		     cell2 != myList->end();
-		     ++cell2)
-		{
-		    if (isubcalo == 0)
-		    {
-			sampling	= m_tileID->sample((**cell2).ID());
-		    }
-		    else if (isubcalo == 1)
-		    {
-			sampling	= m_hecID->sampling((**cell2).ID());
-		    }
-		    else if (isubcalo == 2)
-		    {
-			sampling	= m_emID->sampling((**cell2).ID());
-		    }
-		    if (sampling != coreSampling) continue;
-		    			
-		    double cellEnergy	= (**cell2).energy();
-		    double noiseRms	= noiseCDO->getNoise((**cell2).ID(),(**cell2).gain());
-
-		    // looser selection for core cell where at least mip is expected
-		    bool cellSelected	= cellEnergy > m_sigmasAboveNoise * noiseRms;
-		    if (*cell2 == coreCell
-			&& cellEnergy > m_sigmasAboveNoiseCore * noiseRms) cellSelected	= true;
-		    
-		    if (cellSelected)
-		    {
-			++countSelected;
-			totalEnergy			+= cellEnergy;
-			compartment[coreSampling]	=  true;
-			if (coreSampling < 2)
-			    leadingEnergy		+= cellEnergy;
-		    }
-		    if (*cell2 == coreCell)
-		    {
-			++countCoreCells;
-			if (isubcalo == 0)
-			{
-			    ++m_totalCoreCellsTile;
-			    if (cellSelected) ++m_totalSelectedTile;
-			}
-			else if (isubcalo == 1)
-			{
-			    ++m_totalCoreCellsHEC;
-			    if (cellSelected) ++m_totalSelectedHEC;
-			}
-			else if (isubcalo == 2)
-			{
-			    ++m_totalCoreCellsEM;
-			    if (cellSelected) ++m_totalSelectedEM;
-			}
-		    }
-		    if (msgLvl(MSG::DEBUG))
-		    {
-			std::string info	= "";
-			std::string type	= "  Tile  ";
-			if (isubcalo == 1)
-			{
-			    type	= "  LArHEC";
-			}
-			else if (isubcalo == 2)
-			{
-			    type	= "  EM    ";
-			}
-			if (cellSelected && *cell2 == coreCell)
-			{
-			    info	= "  selected core cell# ";
-			}
-			else if (cellSelected)
-			{
-			    info	= "  selected cell# ";
-			}
-			else if (*cell2 == coreCell)
-			{
-			    info	= "  cell in core NOT selected";
-			}
-
-			if (info == "")
-			{
-			    ATH_MSG_VERBOSE( std::setiosflags(std::ios::fixed) << type
-					     << " Sampling: "<< std::setw(1)
-					     << coreSampling
-					     << " Radius :"
-					     << std::setw(6) << std::setprecision(0)
-					     << (**cell2).caloDDE()->r()
-					     << " Eta : "
-					     << std::setw(6) << std::setprecision(2)
-					     << (**cell2).eta()
-					     << " Phi : "
-					     << std::setw(6) << std::setprecision(2)
-					     << (**cell2).phi()
-					     << " Noise level : "
-					     << std::setw(6) << std::setprecision(0)
-					     << noiseRms
-					     << " Energy : "
-					     << std::setw(7) << std::setprecision(0) 
-					     << (**cell2).energy() << info );
-			}
-			else if (cellSelected)
-			{
-			    ATH_MSG_DEBUG( std::setiosflags(std::ios::fixed) << type
-					   << " Sampling: "<< std::setw(1)
-					   << coreSampling
-					   << " Radius :"
-					   << std::setw(6) << std::setprecision(0)
-					   << (**cell2).caloDDE()->r()
-					   << " Eta : "
-					   << std::setw(6) << std::setprecision(2)
-					   << (**cell2).eta()
-					   << " Phi : "
-					   << std::setw(6) << std::setprecision(2)
-					   << (**cell2).phi()
-					   << " Noise level : "
-					   << std::setw(6) << std::setprecision(0)
-					   << noiseRms
-					   << " Energy : "
-					   << std::setw(7) << std::setprecision(0) 
-					   << (**cell2).energy() << info << countSelected);
-			}
-			else
-			{
-			    ATH_MSG_DEBUG( std::setiosflags(std::ios::fixed) << type
-					   << " Sampling: "<< std::setw(1)
-					   << coreSampling
-					   << " Radius :"
-					   << std::setw(6) << std::setprecision(0)
-					   << (**cell2).caloDDE()->r()
-					   << " Eta : "
-					   << std::setw(6) << std::setprecision(2)
-					   << (**cell2).eta()
-					   << " Phi : "
-					   << std::setw(6) << std::setprecision(2)
-					   << (**cell2).phi()
-					   << " Noise level : "
-					   << std::setw(6) << std::setprecision(0)
-					   << noiseRms
-					   << " Energy : "
-					   << std::setw(7) << std::setprecision(0) 
-					   << (**cell2).energy() << info );
-			}
-		    }
-		}
-	    }
-	}
-
-	if (msgLvl(MSG::DEBUG))
-	{
-	    std::string info	= "";
-	    std::string type	= "  Tile  ";
-	    if (isubcalo == 1)
-	    {
-		type	= "  LArHEC";
-	    }
-	    else if (isubcalo == 2)
-	    {
-		type	= "  EM    ";
-	    }
-
-	    ATH_MSG_DEBUG ( type << " at eta = " << muEta << " : selected "
-			    << countSelected << " from measured cone with "
-			    << countCoreCells << " cells forming core" );
-	}
-	
-	delete myList;
-
-	for (int i = 0; i < 4 ; ++i)
-	    if (compartment[i]) measuredSamplings += m_caloParamTool->caloCompartmentDepth(isubcalo,i);
-
-	// store result in caloMeas
-	if (isubcalo == 0)
-	{
-	    caloMeas.Tile_EnergyMeasured(totalEnergy);
-	    caloMeas.Tile_SamplingFraction(measuredSamplings);
-	}
-	else if (isubcalo == 1)
-	{
-	    caloMeas.LArHEC_EnergyMeasured(totalEnergy);
-	    caloMeas.LArHEC_SamplingFraction(measuredSamplings);
-	}
-	else if (isubcalo == 2)
-	{
-	    caloMeas.LArEM_EnergyMeasured(totalEnergy);
-	    caloMeas.LArEM_FirstCompartmentEnergy(leadingEnergy);
-	    caloMeas.LArEM_SamplingFraction(measuredSamplings);
-	}
+    int    countCoreCells    = 0;
+    int    countSelected     = 0;
+    bool   compartment[4]    = {false, false, false, false};
+    double measuredSamplings = 0.;
+
+    if (myList) {
+        // get last cell (as CaloCellList->back() method doesn't work)
+        const CaloCell*             lastCell = 0;
+        CaloCellList::list_iterator cell     = myList->begin();
+        for (; cell != myList->end(); ++cell) lastCell = *cell;
+
+        // flag core in each sampling
+        for (int coreSampling = 0; coreSampling != 4; ++coreSampling) {
+            const CaloCell* coreCell   = 0;
+            double          coreRadius = 0.;
+            for (cell = myList->begin(); cell != myList->end(); ++cell) {
+                int sampling = -1;
+                if (isubcalo == 0) {
+                    sampling = m_tileID->sample((**cell).ID());
+                } else if (isubcalo == 1) {
+                    sampling = m_hecID->sampling((**cell).ID());
+                } else if (isubcalo == 2) {
+                    sampling = m_emID->sampling((**cell).ID());
+                }
+                if (*cell != lastCell && sampling != coreSampling) continue;
+
+                double deltaEta = (**cell).eta() - muEta;
+                double deltaPhi = (**cell).phi() - muPhi;
+                double radius   = deltaEta * deltaEta + deltaPhi * deltaPhi;
+
+                if (sampling == coreSampling) {
+                    if (!coreCell || radius < coreRadius) {
+                        coreCell   = *cell;
+                        coreRadius = radius;
+                    }
+                }
+
+                if (*cell != lastCell || !coreCell) continue;
+
+                for (CaloCellList::list_iterator cell2 = myList->begin(); cell2 != myList->end(); ++cell2) {
+                    if (isubcalo == 0) {
+                        sampling = m_tileID->sample((**cell2).ID());
+                    } else if (isubcalo == 1) {
+                        sampling = m_hecID->sampling((**cell2).ID());
+                    } else if (isubcalo == 2) {
+                        sampling = m_emID->sampling((**cell2).ID());
+                    }
+                    if (sampling != coreSampling) continue;
+
+                    double cellEnergy = (**cell2).energy();
+                    double noiseRms   = noiseCDO->getNoise((**cell2).ID(), (**cell2).gain());
+
+                    // looser selection for core cell where at least mip is expected
+                    bool cellSelected = cellEnergy > m_sigmasAboveNoise * noiseRms;
+                    if (*cell2 == coreCell && cellEnergy > m_sigmasAboveNoiseCore * noiseRms) cellSelected = true;
+
+                    if (cellSelected) {
+                        ++countSelected;
+                        totalEnergy += cellEnergy;
+                        compartment[coreSampling] = true;
+                        if (coreSampling < 2) leadingEnergy += cellEnergy;
+                    }
+                    if (*cell2 == coreCell) {
+                        ++countCoreCells;
+                        if (isubcalo == 0) {
+                            ++m_totalCoreCellsTile;
+                            if (cellSelected) ++m_totalSelectedTile;
+                        } else if (isubcalo == 1) {
+                            ++m_totalCoreCellsHEC;
+                            if (cellSelected) ++m_totalSelectedHEC;
+                        } else if (isubcalo == 2) {
+                            ++m_totalCoreCellsEM;
+                            if (cellSelected) ++m_totalSelectedEM;
+                        }
+                    }
+                    if (msgLvl(MSG::DEBUG)) {
+                        std::string info = "";
+                        std::string type = "  Tile  ";
+                        if (isubcalo == 1) {
+                            type = "  LArHEC";
+                        } else if (isubcalo == 2) {
+                            type = "  EM    ";
+                        }
+                        if (cellSelected && *cell2 == coreCell) {
+                            info = "  selected core cell# ";
+                        } else if (cellSelected) {
+                            info = "  selected cell# ";
+                        } else if (*cell2 == coreCell) {
+                            info = "  cell in core NOT selected";
+                        }
+
+                        if (info == "") {
+                            ATH_MSG_VERBOSE(std::setiosflags(std::ios::fixed)
+                                            << type << " Sampling: " << std::setw(1) << coreSampling << " Radius :"
+                                            << std::setw(6) << std::setprecision(0) << (**cell2).caloDDE()->r()
+                                            << " Eta : " << std::setw(6) << std::setprecision(2) << (**cell2).eta()
+                                            << " Phi : " << std::setw(6) << std::setprecision(2) << (**cell2).phi()
+                                            << " Noise level : " << std::setw(6) << std::setprecision(0) << noiseRms
+                                            << " Energy : " << std::setw(7) << std::setprecision(0)
+                                            << (**cell2).energy() << info);
+                        } else if (cellSelected) {
+                            ATH_MSG_DEBUG(std::setiosflags(std::ios::fixed)
+                                          << type << " Sampling: " << std::setw(1) << coreSampling << " Radius :"
+                                          << std::setw(6) << std::setprecision(0) << (**cell2).caloDDE()->r()
+                                          << " Eta : " << std::setw(6) << std::setprecision(2) << (**cell2).eta()
+                                          << " Phi : " << std::setw(6) << std::setprecision(2) << (**cell2).phi()
+                                          << " Noise level : " << std::setw(6) << std::setprecision(0) << noiseRms
+                                          << " Energy : " << std::setw(7) << std::setprecision(0) << (**cell2).energy()
+                                          << info << countSelected);
+                        } else {
+                            ATH_MSG_DEBUG(std::setiosflags(std::ios::fixed)
+                                          << type << " Sampling: " << std::setw(1) << coreSampling << " Radius :"
+                                          << std::setw(6) << std::setprecision(0) << (**cell2).caloDDE()->r()
+                                          << " Eta : " << std::setw(6) << std::setprecision(2) << (**cell2).eta()
+                                          << " Phi : " << std::setw(6) << std::setprecision(2) << (**cell2).phi()
+                                          << " Noise level : " << std::setw(6) << std::setprecision(0) << noiseRms
+                                          << " Energy : " << std::setw(7) << std::setprecision(0) << (**cell2).energy()
+                                          << info);
+                        }
+                    }
+                }
+            }
+        }
+
+        if (msgLvl(MSG::DEBUG)) {
+            std::string info = "";
+            std::string type = "  Tile  ";
+            if (isubcalo == 1) {
+                type = "  LArHEC";
+            } else if (isubcalo == 2) {
+                type = "  EM    ";
+            }
+
+            ATH_MSG_DEBUG(type << " at eta = " << muEta << " : selected " << countSelected
+                               << " from measured cone with " << countCoreCells << " cells forming core");
+        }
+
+        delete myList;
+
+        for (int i = 0; i < 4; ++i)
+            if (compartment[i]) measuredSamplings += m_caloParamTool->caloCompartmentDepth(isubcalo, i);
+
+        // store result in caloMeas
+        if (isubcalo == 0) {
+            caloMeas.Tile_EnergyMeasured(totalEnergy);
+            caloMeas.Tile_SamplingFraction(measuredSamplings);
+        } else if (isubcalo == 1) {
+            caloMeas.LArHEC_EnergyMeasured(totalEnergy);
+            caloMeas.LArHEC_SamplingFraction(measuredSamplings);
+        } else if (isubcalo == 2) {
+            caloMeas.LArEM_EnergyMeasured(totalEnergy);
+            caloMeas.LArEM_FirstCompartmentEnergy(leadingEnergy);
+            caloMeas.LArEM_SamplingFraction(measuredSamplings);
+        }
     }
 }
 
 void
-MuidCaloEnergyMeas::isolationEnergy (CaloMeas&			caloMeas,
-				     const CaloCellContainer*	cellContainer,
-				     double			muEta,
-				     double			muPhi,
-				     int			isubcalo) const
+MuidCaloEnergyMeas::isolationEnergy(CaloMeas& caloMeas, const CaloCellContainer* cellContainer, double muEta,
+                                    double muPhi, int isubcalo) const
 {
-    double totalEnergy		= 0.;
-    CaloCellList* myList 	= 0;
+    double        totalEnergy = 0.;
+    CaloCellList* myList      = 0;
 
-     SG::ReadCondHandle<CaloNoise> noiseHdl{m_noiseCDOKey};
-     const CaloNoise* noiseCDO=*noiseHdl;
-
-    if (isubcalo == 0)
-    {
-	CaloCell_ID::SUBCALO iCalo = CaloCell_ID::TILE;
-	myList = new CaloCellList(cellContainer,iCalo);
-	myList->select(muEta, muPhi, m_isolationConeTile, m_isolationConeTile);
-    }
-    else if (isubcalo == 1)
-    {
-	CaloCell_ID::SUBCALO iCalo = CaloCell_ID::LARHEC;
-	myList	= new CaloCellList(cellContainer,iCalo);
-	myList->select(muEta, muPhi, m_isolationConeLArHEC, m_isolationConeLArHEC);
-    }
-    else if (isubcalo == 2)
-    {
-	CaloCell_ID::SUBCALO iCalo = CaloCell_ID::LAREM;
-	myList = new CaloCellList(cellContainer,iCalo); 
-	myList->select(muEta, muPhi, m_isolationConeLArEM, m_isolationConeLArEM);
+    SG::ReadCondHandle<CaloNoise> noiseHdl{m_noiseCDOKey};
+    const CaloNoise*              noiseCDO = *noiseHdl;
+
+    if (isubcalo == 0) {
+        CaloCell_ID::SUBCALO iCalo = CaloCell_ID::TILE;
+        myList                     = new CaloCellList(cellContainer, iCalo);
+        myList->select(muEta, muPhi, m_isolationConeTile, m_isolationConeTile);
+    } else if (isubcalo == 1) {
+        CaloCell_ID::SUBCALO iCalo = CaloCell_ID::LARHEC;
+        myList                     = new CaloCellList(cellContainer, iCalo);
+        myList->select(muEta, muPhi, m_isolationConeLArHEC, m_isolationConeLArHEC);
+    } else if (isubcalo == 2) {
+        CaloCell_ID::SUBCALO iCalo = CaloCell_ID::LAREM;
+        myList                     = new CaloCellList(cellContainer, iCalo);
+        myList->select(muEta, muPhi, m_isolationConeLArEM, m_isolationConeLArEM);
     }
 
-    if (myList)
-    {
-	// get last cell (as CaloCellList->back() method doesn't work)
-	const CaloCell*	lastCell= 0;
-	CaloCellList::list_iterator cell = myList->begin();
-	for ( ; cell != myList->end(); ++cell) lastCell	= *cell;
-	
-	// flag core in each sampling
-	for (int coreSampling = 0; coreSampling != 4; ++coreSampling)
-	{
-	    const CaloCell*	coreCell	= 0;
-	    double		coreRadius	= 0.;
-	    for (cell = myList->begin(); cell != myList->end(); ++cell)
-	    {
-		int sampling	= -1;
-		if (isubcalo == 0)
-		{
-		    sampling	= m_tileID->sample((**cell).ID());
-		}
-		else if (isubcalo == 1)
-		{
-		    sampling	= m_hecID->sampling((**cell).ID());
-		}
-		else if (isubcalo == 2)
-		{
-		    sampling	= m_emID->sampling((**cell).ID());
-		}
-		if (*cell != lastCell && sampling != coreSampling)	continue;
-	    
-		double deltaEta	= (**cell).eta() - muEta;
-		double deltaPhi	= (**cell).phi() - muPhi;
-		double radius	= deltaEta*deltaEta + deltaPhi*deltaPhi;
-
-		if (sampling == coreSampling)
-		{
-		    if (! coreCell || radius < coreRadius)
-		    {
-			coreCell	= *cell;
-			coreRadius	= radius;
-		    }
-		}
-		
-		if (*cell != lastCell || ! coreCell)			continue;
-
-		for (CaloCellList::list_iterator cell2 = myList->begin();
-		     cell2 != myList->end();
-		     ++cell2)
-		{
-		    if (isubcalo == 0)
-		    {
-			sampling	= m_tileID->sample((**cell2).ID());
-		    }
-		    else if (isubcalo == 1)
-		    {
-			sampling	= m_hecID->sampling((**cell2).ID());
-		    }
-		    else if (isubcalo == 2)
-		    {
-			sampling	= m_emID->sampling((**cell2).ID());
-		    }
-		    if (sampling != coreSampling) continue;
-		    			
-		    double cellEnergy	= (**cell2).energy();
-		    double noiseRms	= noiseCDO->getNoise((**cell2).ID(),(**cell2).gain());
-		    // looser selection for core cell where at least mip is expected
-		    bool cellSelected	= cellEnergy > m_sigmasAboveNoise * noiseRms;
-		    if (*cell2 == coreCell
-			&& cellEnergy > m_sigmasAboveNoiseCore * noiseRms) cellSelected	= true;
-		    
-		    if (cellSelected) totalEnergy += cellEnergy;
-		}
-	    }
-	}
-	
-	// store result in caloMeas
-	if (isubcalo == 0)
-	{
-	    caloMeas.Tile_Isolation(totalEnergy);
-	}
-	else if (isubcalo == 1)
-	{
-	    caloMeas.LArHEC_Isolation(totalEnergy);
-	}
-	else if (isubcalo == 2)
-	{
-	    caloMeas.LArEM_Isolation(totalEnergy);
-	}
+    if (myList) {
+        // get last cell (as CaloCellList->back() method doesn't work)
+        const CaloCell*             lastCell = 0;
+        CaloCellList::list_iterator cell     = myList->begin();
+        for (; cell != myList->end(); ++cell) lastCell = *cell;
+
+        // flag core in each sampling
+        for (int coreSampling = 0; coreSampling != 4; ++coreSampling) {
+            const CaloCell* coreCell   = 0;
+            double          coreRadius = 0.;
+            for (cell = myList->begin(); cell != myList->end(); ++cell) {
+                int sampling = -1;
+                if (isubcalo == 0) {
+                    sampling = m_tileID->sample((**cell).ID());
+                } else if (isubcalo == 1) {
+                    sampling = m_hecID->sampling((**cell).ID());
+                } else if (isubcalo == 2) {
+                    sampling = m_emID->sampling((**cell).ID());
+                }
+                if (*cell != lastCell && sampling != coreSampling) continue;
+
+                double deltaEta = (**cell).eta() - muEta;
+                double deltaPhi = (**cell).phi() - muPhi;
+                double radius   = deltaEta * deltaEta + deltaPhi * deltaPhi;
+
+                if (sampling == coreSampling) {
+                    if (!coreCell || radius < coreRadius) {
+                        coreCell   = *cell;
+                        coreRadius = radius;
+                    }
+                }
+
+                if (*cell != lastCell || !coreCell) continue;
+
+                for (CaloCellList::list_iterator cell2 = myList->begin(); cell2 != myList->end(); ++cell2) {
+                    if (isubcalo == 0) {
+                        sampling = m_tileID->sample((**cell2).ID());
+                    } else if (isubcalo == 1) {
+                        sampling = m_hecID->sampling((**cell2).ID());
+                    } else if (isubcalo == 2) {
+                        sampling = m_emID->sampling((**cell2).ID());
+                    }
+                    if (sampling != coreSampling) continue;
+
+                    double cellEnergy = (**cell2).energy();
+                    double noiseRms   = noiseCDO->getNoise((**cell2).ID(), (**cell2).gain());
+                    // looser selection for core cell where at least mip is expected
+                    bool cellSelected = cellEnergy > m_sigmasAboveNoise * noiseRms;
+                    if (*cell2 == coreCell && cellEnergy > m_sigmasAboveNoiseCore * noiseRms) cellSelected = true;
+
+                    if (cellSelected) totalEnergy += cellEnergy;
+                }
+            }
+        }
+
+        // store result in caloMeas
+        if (isubcalo == 0) {
+            caloMeas.Tile_Isolation(totalEnergy);
+        } else if (isubcalo == 1) {
+            caloMeas.LArHEC_Isolation(totalEnergy);
+        } else if (isubcalo == 2) {
+            caloMeas.LArEM_Isolation(totalEnergy);
+        }
     }
 
     delete myList;
 }
 
 double
-MuidCaloEnergyMeas::energyInTile(const CaloCellContainer* cellContainer,
-				 double mu_eta,
-				 double mu_phi,
-				 int sample,
-				 int cone) const
+MuidCaloEnergyMeas::energyInTile(const CaloCellContainer* cellContainer, double mu_eta, double mu_phi, int sample,
+                                 int cone) const
 {
     //      Tile Cal
     //      sample_number
@@ -651,72 +499,59 @@ MuidCaloEnergyMeas::energyInTile(const CaloCellContainer* cellContainer,
     // 	     1 --> Sampling 2
     // 	     2 --> Sampling 3
     // 	     3 --> ITC
-  
-    //int i,j,k;
 
-    SG::ReadCondHandle<CaloNoise> noiseHdl{m_noiseCDOKey};
-    const CaloNoise* noiseCDO=*noiseHdl;
+    // int i,j,k;
 
-    double tileTotalEnergy=0.;
-    double tileTestEnergy=0.;	
-
-    CaloCell_ID::SUBCALO iCalo = CaloCell_ID::TILE;	      
-    CaloCellList myList(cellContainer,iCalo);  // Construct the list   
-    if(cone == 1)
-    {
-	myList.select(mu_eta,mu_phi,0.15,0.15);
-    }
-    else if(cone == 2)
-    {
-	myList.select(mu_eta,mu_phi,0.3,0.3); 
-    }
-    else
-    {
-	myList.select(mu_eta,mu_phi,0.,0.);
+    SG::ReadCondHandle<CaloNoise> noiseHdl{m_noiseCDOKey};
+    const CaloNoise*              noiseCDO = *noiseHdl;
+
+    double tileTotalEnergy = 0.;
+    double tileTestEnergy  = 0.;
+
+    CaloCell_ID::SUBCALO iCalo = CaloCell_ID::TILE;
+    CaloCellList         myList(cellContainer, iCalo);  // Construct the list
+    if (cone == 1) {
+        myList.select(mu_eta, mu_phi, 0.15, 0.15);
+    } else if (cone == 2) {
+        myList.select(mu_eta, mu_phi, 0.3, 0.3);
+    } else {
+        myList.select(mu_eta, mu_phi, 0., 0.);
     }
-  
+
     CaloCellList::list_iterator ilistfirst = myList.begin();
     CaloCellList::list_iterator ilistlast  = myList.end();
-  
-    int count=0;
-    double lowest_threshold=0.; 
-    for(;ilistfirst!=ilistlast;ilistfirst++)
-    {
-	double cellEnergy= (*ilistfirst)->energy();
-	double noise_rms=noiseCDO->getNoise((*ilistfirst)->ID(),(*ilistfirst)->gain()); 
-
-	if( cellEnergy > lowest_threshold && cellEnergy > noise_rms * m_sigmasAboveNoise
-	    && m_tileID->sample((*ilistfirst)->ID()) == sample)
-	{
-	    count+=1;
-
-	    ATH_MSG_DEBUG( "Energy : "		<< (*ilistfirst)->energy() 
-			   << "  Sampling: "	<< m_tileID->sample((*ilistfirst)->ID())
-			   << "  Radius :"	<< (*ilistfirst)->caloDDE()->r()
-			   << "  Eta : "	<< (*ilistfirst)->eta()
-			   << "  Phi : "	<< (*ilistfirst)->phi()
-			   << " Noise Level : "	<< noise_rms );
-	    
-	    tileTotalEnergy += cellEnergy;
-	}
-	else
-	{
-	    tileTestEnergy += cellEnergy;
-	}
+
+    int    count            = 0;
+    double lowest_threshold = 0.;
+    for (; ilistfirst != ilistlast; ilistfirst++) {
+        double cellEnergy = (*ilistfirst)->energy();
+        double noise_rms  = noiseCDO->getNoise((*ilistfirst)->ID(), (*ilistfirst)->gain());
+
+        if (cellEnergy > lowest_threshold && cellEnergy > noise_rms * m_sigmasAboveNoise
+            && m_tileID->sample((*ilistfirst)->ID()) == sample)
+        {
+            count += 1;
+
+            ATH_MSG_DEBUG("Energy : " << (*ilistfirst)->energy()
+                                      << "  Sampling: " << m_tileID->sample((*ilistfirst)->ID()) << "  Radius :"
+                                      << (*ilistfirst)->caloDDE()->r() << "  Eta : " << (*ilistfirst)->eta()
+                                      << "  Phi : " << (*ilistfirst)->phi() << " Noise Level : " << noise_rms);
+
+            tileTotalEnergy += cellEnergy;
+        } else {
+            tileTestEnergy += cellEnergy;
+        }
     }
-    
-    ATH_MSG_DEBUG( " counted " << count << " test energy " << tileTestEnergy );
+
+    ATH_MSG_DEBUG(" counted " << count << " test energy " << tileTestEnergy);
 
     return tileTotalEnergy;
 }
 
 double
-MuidCaloEnergyMeas::energyInLArHEC(const CaloCellContainer* cellContainer,
-				   double mu_eta,
-				   double mu_phi,
-				   int sample,
-				   int cone) const
-{ 
+MuidCaloEnergyMeas::energyInLArHEC(const CaloCellContainer* cellContainer, double mu_eta, double mu_phi, int sample,
+                                   int cone) const
+{
     // Look in the LarHEC calorimeter
     // i.e. loop over its cells
     /* sample_number
@@ -726,134 +561,113 @@ MuidCaloEnergyMeas::energyInLArHEC(const CaloCellContainer* cellContainer,
        3 --> Sampling 4
     */
 
-    //int i,j,k;
+    // int i,j,k;
 
     SG::ReadCondHandle<CaloNoise> noiseHdl{m_noiseCDOKey};
-    const CaloNoise* noiseCDO=*noiseHdl;
-    double larhecTotal=0.;
-  
+    const CaloNoise*              noiseCDO    = *noiseHdl;
+    double                        larhecTotal = 0.;
+
     CaloCell_ID::SUBCALO iCalo = CaloCell_ID::LARHEC;
-    CaloCellList myList(cellContainer,iCalo);  // Construct the list  
-    if(cone == 1)
-    {
-	myList.select(mu_eta,mu_phi,0.15,0.15);
-    }
-    else if(cone == 2)
-    {
-	myList.select(mu_eta,mu_phi,0.3,0.3); 
+    CaloCellList         myList(cellContainer, iCalo);  // Construct the list
+    if (cone == 1) {
+        myList.select(mu_eta, mu_phi, 0.15, 0.15);
+    } else if (cone == 2) {
+        myList.select(mu_eta, mu_phi, 0.3, 0.3);
+    } else {
+        myList.select(mu_eta, mu_phi, 0., 0.);
     }
-    else
-    {
-	myList.select(mu_eta,mu_phi,0.,0.);
-    }
-  
+
     CaloCellList::list_iterator ilistfirst = myList.begin();
     CaloCellList::list_iterator ilistlast  = myList.end();
 
-    //std::vector<const CaloCell*> new_cell_list;
-    int count=0;
-    constexpr double lowest_threshold = 4.*150.;
-
-    for(;ilistfirst!=ilistlast;ilistfirst++)
-    {
-	double cellEnergy= (*ilistfirst)->energy();
-	const double noise_rms =noiseCDO->getNoise((*ilistfirst)->ID(),(*ilistfirst)->gain()); 
-	if (cellEnergy > lowest_threshold
-	    && cellEnergy > noise_rms * m_sigmasAboveNoise
-	    && m_hecID->sampling((*ilistfirst)->ID()) == sample)
-	{
-	    count+=1;
-	    //new_cell_list.push_back(*ilistfirst); 
-
-	    ATH_MSG_DEBUG( "Energy : "		<< (*ilistfirst)->energy() 
-			   << "  Sampling: "	<< m_hecID->sampling((*ilistfirst)->ID())
-			   << "  z  :"		<< (*ilistfirst)->caloDDE()->z()
-			   << "  Eta : "	<< (*ilistfirst)->eta()
-			   << "  Phi : "	<< (*ilistfirst)->phi()	
-			   << " Noise Level : "	<< noise_rms);
-	    
-	    larhecTotal += (*ilistfirst)->energy();
-	}
+    // std::vector<const CaloCell*> new_cell_list;
+    int              count            = 0;
+    constexpr double lowest_threshold = 4. * 150.;
+
+    for (; ilistfirst != ilistlast; ilistfirst++) {
+        double       cellEnergy = (*ilistfirst)->energy();
+        const double noise_rms  = noiseCDO->getNoise((*ilistfirst)->ID(), (*ilistfirst)->gain());
+        if (cellEnergy > lowest_threshold && cellEnergy > noise_rms * m_sigmasAboveNoise
+            && m_hecID->sampling((*ilistfirst)->ID()) == sample)
+        {
+            count += 1;
+            // new_cell_list.push_back(*ilistfirst);
+
+            ATH_MSG_DEBUG("Energy : " << (*ilistfirst)->energy()
+                                      << "  Sampling: " << m_hecID->sampling((*ilistfirst)->ID())
+                                      << "  z  :" << (*ilistfirst)->caloDDE()->z() << "  Eta : " << (*ilistfirst)->eta()
+                                      << "  Phi : " << (*ilistfirst)->phi() << " Noise Level : " << noise_rms);
+
+            larhecTotal += (*ilistfirst)->energy();
+        }
     }
-    
-    ATH_MSG_DEBUG( "larhec  counted " << count );
-   
+
+    ATH_MSG_DEBUG("larhec  counted " << count);
+
     return larhecTotal;
 }
 
 double
-MuidCaloEnergyMeas::energyInLArEM(const CaloCellContainer* cellContainer,
-				  double mu_eta,
-				  double mu_phi,
-				  int sample,
-				  int cone) const
-{ 
-    // Look in the LarEM calorimeter 
-    // i.e. loop over its cells 
-    /* 
-       sample_number 	     
+MuidCaloEnergyMeas::energyInLArEM(const CaloCellContainer* cellContainer, double mu_eta, double mu_phi, int sample,
+                                  int cone) const
+{
+    // Look in the LarEM calorimeter
+    // i.e. loop over its cells
+    /*
+       sample_number
        0 --> Presampler
        1 --> Sampling 1
        2 --> Sampling 2
-       3 --> Sampling 3 
+       3 --> Sampling 3
     */
 
-    //int i,j,k;
+    // int i,j,k;
 
     SG::ReadCondHandle<CaloNoise> noiseHdl{m_noiseCDOKey};
-    const CaloNoise* noiseCDO=*noiseHdl;
+    const CaloNoise*              noiseCDO = *noiseHdl;
 
-    double emTotalEnergy=0.;
+    double emTotalEnergy = 0.;
 
-    CaloCell_ID::SUBCALO iCalo = CaloCell_ID::LAREM;      
-    CaloCellList myList(cellContainer,iCalo);  // Construct the list  
-    if(cone == 1)
-    {
-	myList.select(mu_eta,mu_phi,0.075,0.075); // 0.1 0.1
-    }
-    else if(cone == 2)
-    {
-	myList.select(mu_eta,mu_phi,0.15,0.15); 
-    }
-    else
-    {
-	myList.select(mu_eta,mu_phi,0.,0.);
+    CaloCell_ID::SUBCALO iCalo = CaloCell_ID::LAREM;
+    CaloCellList         myList(cellContainer, iCalo);  // Construct the list
+    if (cone == 1) {
+        myList.select(mu_eta, mu_phi, 0.075, 0.075);  // 0.1 0.1
+    } else if (cone == 2) {
+        myList.select(mu_eta, mu_phi, 0.15, 0.15);
+    } else {
+        myList.select(mu_eta, mu_phi, 0., 0.);
     }
     CaloCellList::list_iterator ilistfirst = myList.begin();
     CaloCellList::list_iterator ilistlast  = myList.end();
-  
-    //std::vector<const CaloCell*> new_cell_list;
-    int count=0;
-
-    double lowest_threshold = 4.* 50.;
-  
-    for(;ilistfirst!=ilistlast;ilistfirst++)
-    {
-	double cellEnergy= (*ilistfirst)->energy();
-	const double noise_rms =noiseCDO->getNoise((*ilistfirst)->ID(),(*ilistfirst)->gain()); 
-
-	if( cellEnergy > lowest_threshold && cellEnergy > noise_rms * m_sigmasAboveNoise
-	    && m_emID->sampling((*ilistfirst)->ID()) == sample)
-	{
-	    count+=1;
-	    //new_cell_list.push_back(*ilistfirst);
-
-	    ATH_MSG_DEBUG( "Energy : "		<< (*ilistfirst)->energy() 
-			   << "  Sampling: "	<< m_emID->sampling((*ilistfirst)->ID())
-			   << "  Radius :"	<< (*ilistfirst)->caloDDE()->r()
-			   << "  z :"		<< (*ilistfirst)->caloDDE()->z()
-			   << "  Eta : "	<< (*ilistfirst)->eta()
-			   << "  Phi : "	<< (*ilistfirst)->phi()
-			   << " Noise Level : "	<< noise_rms);
-	  
-	    emTotalEnergy+=(*ilistfirst)->energy();
-	}
+
+    // std::vector<const CaloCell*> new_cell_list;
+    int count = 0;
+
+    double lowest_threshold = 4. * 50.;
+
+    for (; ilistfirst != ilistlast; ilistfirst++) {
+        double       cellEnergy = (*ilistfirst)->energy();
+        const double noise_rms  = noiseCDO->getNoise((*ilistfirst)->ID(), (*ilistfirst)->gain());
+
+        if (cellEnergy > lowest_threshold && cellEnergy > noise_rms * m_sigmasAboveNoise
+            && m_emID->sampling((*ilistfirst)->ID()) == sample)
+        {
+            count += 1;
+            // new_cell_list.push_back(*ilistfirst);
+
+            ATH_MSG_DEBUG("Energy : " << (*ilistfirst)->energy()
+                                      << "  Sampling: " << m_emID->sampling((*ilistfirst)->ID())
+                                      << "  Radius :" << (*ilistfirst)->caloDDE()->r()
+                                      << "  z :" << (*ilistfirst)->caloDDE()->z() << "  Eta : " << (*ilistfirst)->eta()
+                                      << "  Phi : " << (*ilistfirst)->phi() << " Noise Level : " << noise_rms);
+
+            emTotalEnergy += (*ilistfirst)->energy();
+        }
     }
 
-    ATH_MSG_DEBUG( "larem counted " << count );
-  
+    ATH_MSG_DEBUG("larem counted " << count);
+
     return emTotalEnergy;
 }
 
-}	// end of namespace
-
+}  // namespace Rec
diff --git a/Reconstruction/MuonIdentification/MuidCaloEnergyTools/src/MuidCaloEnergyTool.cxx b/Reconstruction/MuonIdentification/MuidCaloEnergyTools/src/MuidCaloEnergyTool.cxx
index 98bb45031a0d4a6752aa53768e85bbb8b83d3bb3..c146b92a59f7464df60be2ac97c5868f345d95dd 100755
--- a/Reconstruction/MuonIdentification/MuidCaloEnergyTools/src/MuidCaloEnergyTool.cxx
+++ b/Reconstruction/MuonIdentification/MuidCaloEnergyTools/src/MuidCaloEnergyTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////////////////
@@ -19,8 +19,11 @@
 
 //<<<<<< INCLUDES                                                       >>>>>>
 
-#include <cmath>
 #include "MuidCaloEnergyTools/MuidCaloEnergyTool.h"
+
+#include <cmath>
+
+#include "AthenaKernel/Units.h"
 #include "MuidEvent/CaloMeas.h"
 #include "MuidInterfaces/IMuidCaloEnergyMeas.h"
 #include "MuidInterfaces/IMuidCaloEnergyParam.h"
@@ -29,122 +32,81 @@
 #include "TrkMaterialOnTrack/MaterialEffectsOnTrack.h"
 #include "TrkTrack/TrackStateOnSurface.h"
 #include "muonEvent/CaloEnergy.h"
-#include "AthenaKernel/Units.h"
 
 namespace Units = Athena::Units;
 
 //<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>
 
-namespace Rec
-{
- 
-MuidCaloEnergyTool::MuidCaloEnergyTool (const std::string&type,
-					const std::string&name, 
-					const IInterface*parent)
-    :	AthAlgTool		(type, name, parent),
-	m_caloMeasTool		("Rec::MuidCaloEnergyMeas/MuidCaloEnergyMeas", this),
-	m_caloParamTool		("Rec::MuidCaloEnergyParam/MuidCaloEnergyParam", this),
-	m_trackIsolationTool	("Rec::MuidTrackIsolation/MuidTrackIsolation", this),
-	m_cosmics		(false),
-	m_energyLossMeasurement	(true),
-	m_forceIsolationFailure	(false),
-	m_FSRtreatment		(true),
-	m_MOPparametrization	(true),
-	m_trackIsolation	(false),
-	m_emEtCut		(2.5*Units::GeV),
-	m_emF1Cut		(0.15),
-	m_emMinEnergy		( 2.*Units::GeV),
-	m_hecMinEnergy		(10.*Units::GeV),
-	m_maxNTracksIso		(2),
-	m_minFinalEnergy	( 0.*Units::GeV),
-	m_minMuonPt		(15.*Units::GeV),
-	m_countMean		(0),
-	m_countMeasurement	(0),
-	m_countMop		(0)
+namespace Rec {
+
+MuidCaloEnergyTool::MuidCaloEnergyTool(const std::string& type, const std::string& name, const IInterface* parent)
+    : AthAlgTool(type, name, parent),
+      m_cosmics(false),
+      m_energyLossMeasurement(true),
+      m_forceIsolationFailure(false),
+      m_FSRtreatment(true),
+      m_MOPparametrization(true),
+      m_trackIsolation(false),
+      m_emEtCut(2.5 * Units::GeV),
+      m_emF1Cut(0.15),
+      m_emMinEnergy(2. * Units::GeV),
+      m_hecMinEnergy(10. * Units::GeV),
+      m_maxNTracksIso(2),
+      m_minFinalEnergy(0. * Units::GeV),
+      m_minMuonPt(15. * Units::GeV),
+      m_countMean(0),
+      m_countMeasurement(0),
+      m_countMop(0)
 {
     declareInterface<IMuidCaloEnergy>(this);
-    declareProperty ("CaloMeasTool",		m_caloMeasTool);
-    declareProperty ("CaloParamTool",		m_caloParamTool);
-    declareProperty ("TrackIsolationTool",	m_trackIsolationTool);
-    declareProperty ("Cosmics",			m_cosmics);
-    declareProperty ("EnergyLossMeasurement",	m_energyLossMeasurement);
-    declareProperty ("ForceIsolationFailure",	m_forceIsolationFailure);
-    declareProperty ("FSRtreatment",		m_FSRtreatment);
-    declareProperty ("MopParametrization",	m_MOPparametrization);
-    declareProperty ("TrackIsolation",		m_trackIsolation);
-    declareProperty ("EmEtCut",			m_emEtCut);
-    declareProperty ("EmF1Cut",			m_emF1Cut);
-    declareProperty ("EmMinEnergy",		m_emMinEnergy);
-    declareProperty ("HecMinEnergy",		m_hecMinEnergy);
-    declareProperty ("MaxNTracksIso",		m_maxNTracksIso);
-    declareProperty ("MinFinalEnergy",		m_minFinalEnergy);
-    declareProperty ("MinMuonPt",		m_minMuonPt);
+    declareProperty("Cosmics", m_cosmics);
+    declareProperty("EnergyLossMeasurement", m_energyLossMeasurement);
+    declareProperty("ForceIsolationFailure", m_forceIsolationFailure);
+    declareProperty("FSRtreatment", m_FSRtreatment);
+    declareProperty("MopParametrization", m_MOPparametrization);
+    declareProperty("TrackIsolation", m_trackIsolation);
+    declareProperty("EmEtCut", m_emEtCut);
+    declareProperty("EmF1Cut", m_emF1Cut);
+    declareProperty("EmMinEnergy", m_emMinEnergy);
+    declareProperty("HecMinEnergy", m_hecMinEnergy);
+    declareProperty("MaxNTracksIso", m_maxNTracksIso);
+    declareProperty("MinFinalEnergy", m_minFinalEnergy);
+    declareProperty("MinMuonPt", m_minMuonPt);
 }
 
-MuidCaloEnergyTool::~MuidCaloEnergyTool (void) 
-{}
+MuidCaloEnergyTool::~MuidCaloEnergyTool(void) {}
 
 //<<<<<< PUBLIC MEMBER FUNCTION DEFINITIONS                             >>>>>>
 
-StatusCode MuidCaloEnergyTool::initialize()
+StatusCode
+MuidCaloEnergyTool::initialize()
 {
-    if (m_energyLossMeasurement)
-    {
-	ATH_MSG_INFO( "Initializing MuidCaloEnergyTool"
-		       << " - package version " << PACKAGE_VERSION
-		       << " - measured calorimeter energy deposition " );
-    }
-    else
-    {
-	ATH_MSG_INFO( "Initializing MuidCaloEnergyTool"
-		       << " - package version " << PACKAGE_VERSION
-		       << " - parametrized calorimeter energy deposition " );
+    if (m_energyLossMeasurement) {
+        ATH_MSG_INFO("Initializing MuidCaloEnergyTool"
+                     << " - package version " << PACKAGE_VERSION << " - measured calorimeter energy deposition ");
+    } else {
+        ATH_MSG_INFO("Initializing MuidCaloEnergyTool"
+                     << " - package version " << PACKAGE_VERSION << " - parametrized calorimeter energy deposition ");
     }
 
     // get the Tools
-    if (m_caloParamTool.retrieve().isFailure())
-    {
-	ATH_MSG_FATAL( "Failed to retrieve tool " << m_caloParamTool );
-        return StatusCode::FAILURE;
-    }
-    else
-    {
-	ATH_MSG_INFO( "Retrieved tool " << m_caloParamTool );
-    }
-    
-    if (m_energyLossMeasurement)
-    {
-	if (m_caloMeasTool.retrieve().isFailure())
-	{
-	    ATH_MSG_FATAL( "Failed to retrieve tool " << m_caloMeasTool );
-	    return StatusCode::FAILURE;
-	}
-	else
-	{
-	    ATH_MSG_INFO( "Retrieved tool " << m_caloMeasTool );
-	}
-	
-	if (m_trackIsolation)
-	{
-	    if (m_trackIsolationTool.retrieve().isFailure())
-	    {
-		ATH_MSG_FATAL( "Failed to retrieve tool " << m_trackIsolationTool );
-		return StatusCode::FAILURE;
-	    }
-	    else
-	    {
-		ATH_MSG_INFO( "Retrieved tool " << m_trackIsolationTool );
-	    }
-	}
-	else
-	{
-	    ATH_MSG_WARNING( " Using energy measurement without trackIsolation " );
-	    m_trackIsolationTool.disable();
-	}
-    }
-    else{
-      m_trackIsolationTool.disable();
-      m_caloMeasTool.disable();
+    ATH_CHECK(m_caloParamTool.retrieve());
+    ATH_MSG_INFO("Retrieved tool " << m_caloParamTool);
+
+    if (m_energyLossMeasurement) {
+        ATH_CHECK(m_caloMeasTool.retrieve());
+        ATH_MSG_INFO("Retrieved tool " << m_caloMeasTool);
+
+        if (m_trackIsolation) {
+            ATH_CHECK(m_trackIsolationTool.retrieve());
+            ATH_MSG_INFO("Retrieved tool " << m_trackIsolationTool);
+        } else {
+            ATH_MSG_WARNING(" Using energy measurement without trackIsolation ");
+            m_trackIsolationTool.disable();
+        }
+    } else {
+        m_trackIsolationTool.disable();
+        m_caloMeasTool.disable();
     }
 
     return StatusCode::SUCCESS;
@@ -153,89 +115,73 @@ StatusCode MuidCaloEnergyTool::initialize()
 StatusCode
 MuidCaloEnergyTool::finalize()
 {
-    ATH_MSG_INFO( "Finalizing MuidCaloEnergyTool." 
-		   << "  Tracks used mean: "		<< m_countMean 
-		   << ",  tracks used mop: "		<< m_countMop 
-		   << ",  tracks used measurement: "	<< m_countMeasurement );
- 
+    ATH_MSG_INFO("Finalizing MuidCaloEnergyTool."
+                 << "  Tracks used mean: " << m_countMean << ",  tracks used mop: " << m_countMop
+                 << ",  tracks used measurement: " << m_countMeasurement);
+
     return StatusCode::SUCCESS;
 }
 
 CaloEnergy*
-MuidCaloEnergyTool::energyLoss(double trackMomentum,
-			       double eta,
-			       double phi) const
+MuidCaloEnergyTool::energyLoss(double trackMomentum, double eta, double phi) const
 {
     // debug
-    ATH_MSG_VERBOSE( "Muon with : p = " << trackMomentum/Units::GeV
-		     << " Phi = " << phi
-		     << " Eta =  " << eta );
+    ATH_MSG_VERBOSE("Muon with : p = " << trackMomentum / Units::GeV << " Phi = " << phi << " Eta =  " << eta);
+
 
-    
     CaloEnergy* caloEnergy = 0;
-    if (m_energyLossMeasurement)
-    {
-	// Energy Dep/Iso from calorimeters (projective assumption)
-	CaloMeas* caloMeas	= m_caloMeasTool->energyMeasurement(eta,phi,eta,phi);
-	if (caloMeas)
-	{
-	    caloEnergy		= measurement(trackMomentum,eta,phi,caloMeas);
-	    delete caloMeas;
-	}
+    if (m_energyLossMeasurement) {
+        // Energy Dep/Iso from calorimeters (projective assumption)
+        CaloMeas* caloMeas = m_caloMeasTool->energyMeasurement(eta, phi, eta, phi);
+        if (caloMeas) {
+            caloEnergy = measurement(trackMomentum, eta, phi, caloMeas);
+            delete caloMeas;
+        }
     }
 
-    if (! caloEnergy)
-    {
-	if (m_MOPparametrization)
-	{
-	    ++m_countMop;
-	    caloEnergy		= m_caloParamTool->mopParametrizedEnergy(trackMomentum,eta,phi);
-	    ATH_MSG_VERBOSE( "Selected the Mop Parametrization value! ==> " );
-	}
-	else
-	{
-	    ++m_countMean;
-	    caloEnergy		= m_caloParamTool->meanParametrizedEnergy(trackMomentum,eta,phi);
-	    ATH_MSG_VERBOSE( "Selected the Mean Parametrization value! ==> " );
-	}
+    if (!caloEnergy) {
+        if (m_MOPparametrization) {
+            ++m_countMop;
+            caloEnergy = m_caloParamTool->mopParametrizedEnergy(trackMomentum, eta, phi);
+            ATH_MSG_VERBOSE("Selected the Mop Parametrization value! ==> ");
+        } else {
+            ++m_countMean;
+            caloEnergy = m_caloParamTool->meanParametrizedEnergy(trackMomentum, eta, phi);
+            ATH_MSG_VERBOSE("Selected the Mean Parametrization value! ==> ");
+        }
     }
-    
-    if (msgLvl(MSG::DEBUG))
-    {
-	std::string eLossType = "  no Calo !!";
-	switch (caloEnergy->energyLossType())
-	{
-	case CaloEnergy::Parametrized:
-	    eLossType = "Parametrized";
-	    break;
-	case CaloEnergy::NotIsolated:
-	    eLossType = "NotIsolated ";
-	    break;
-	case CaloEnergy::MOP:
-	    eLossType = "MOP         ";
-	    break;
-	case CaloEnergy::Tail:   
-	    eLossType = "Tail        ";
-	    break;
-	case CaloEnergy::FSRcandidate:
-	    eLossType = "FSRcandidate";
-	    break;
-	default:
-	    break;
-	};
-	ATH_MSG_DEBUG( std::setiosflags(std::ios::fixed) << " energyLoss with"
-		       << " momentum ="	<< std::setw(6) << std::setprecision(1) << trackMomentum/Units::GeV
-		       << "  phi ="	<< std::setw(6) << std::setprecision(3) << phi
-		       << "  eta ="	<< std::setw(6) << std::setprecision(3) << eta
-		       << ".  CaloEnergy: deltaE = "	<< std::setw(8) << std::setprecision(3)
-		       << caloEnergy->deltaE()/Units::GeV
-		       << "  +"		<< std::setw(5) << std::setprecision(3)
-		       << caloEnergy->sigmaPlusDeltaE()/Units::GeV
-		       << "  -"		<< std::setw(5) << std::setprecision(3)
-		       << caloEnergy->sigmaMinusDeltaE()/Units::GeV
-		       << " ("		<< std::setw(5) << std::setprecision(3)
-		       << caloEnergy->sigmaDeltaE()/Units::GeV
-		       << ") GeV,  CaloEnergy::Type " << eLossType );
+
+    if (msgLvl(MSG::DEBUG)) {
+        std::string eLossType = "  no Calo !!";
+        switch (caloEnergy->energyLossType()) {
+            case CaloEnergy::Parametrized:
+                eLossType = "Parametrized";
+                break;
+            case CaloEnergy::NotIsolated:
+                eLossType = "NotIsolated ";
+                break;
+            case CaloEnergy::MOP:
+                eLossType = "MOP         ";
+                break;
+            case CaloEnergy::Tail:
+                eLossType = "Tail        ";
+                break;
+            case CaloEnergy::FSRcandidate:
+                eLossType = "FSRcandidate";
+                break;
+            default:
+                break;
+        };
+        ATH_MSG_DEBUG(std::setiosflags(std::ios::fixed)
+                      << " energyLoss with"
+                      << " momentum =" << std::setw(6) << std::setprecision(1) << trackMomentum / Units::GeV
+                      << "  phi =" << std::setw(6) << std::setprecision(3) << phi << "  eta =" << std::setw(6)
+                      << std::setprecision(3) << eta << ".  CaloEnergy: deltaE = " << std::setw(8)
+                      << std::setprecision(3) << caloEnergy->deltaE() / Units::GeV << "  +" << std::setw(5)
+                      << std::setprecision(3) << caloEnergy->sigmaPlusDeltaE() / Units::GeV << "  -" << std::setw(5)
+                      << std::setprecision(3) << caloEnergy->sigmaMinusDeltaE() / Units::GeV << " (" << std::setw(5)
+                      << std::setprecision(3) << caloEnergy->sigmaDeltaE() / Units::GeV << ") GeV,  CaloEnergy::Type "
+                      << eLossType);
     }
 
     return caloEnergy;
@@ -243,216 +189,182 @@ MuidCaloEnergyTool::energyLoss(double trackMomentum,
 
 const Trk::TrackStateOnSurface*
 MuidCaloEnergyTool::trackStateOnSurface(const Trk::TrackParameters& middleParameters,
-					const Trk::TrackParameters* innerParameters,
-					const Trk::TrackParameters* outerParameters) const
+                                        const Trk::TrackParameters* innerParameters,
+                                        const Trk::TrackParameters* outerParameters) const
 {
-    ATH_MSG_VERBOSE( "Muon with : p = " << middleParameters.momentum().mag()/Units::GeV
-		     << " Phi = " << middleParameters.position().phi()
-		     << " Eta =  " << middleParameters.position().eta() );
+    ATH_MSG_VERBOSE("Muon with : p = " << middleParameters.momentum().mag() / Units::GeV
+                                       << " Phi = " << middleParameters.position().phi()
+                                       << " Eta =  " << middleParameters.position().eta());
 
     CaloEnergy* caloEnergy = 0;
-    if (m_energyLossMeasurement)
-    {
-	// energy deposition according to the calo measurement
-	double eta	= middleParameters.position().eta();
-	double phi	= middleParameters.position().phi();
-	double etaEM	= eta;
-	double phiEM	= phi;
-	double etaHad	= eta;
-	double phiHad	= phi;
-	if (innerParameters)
-	{
-	    etaEM	= innerParameters->position().eta();
-	    phiEM	= innerParameters->position().phi();
-	}
-	if (outerParameters)
-	{
-	    etaHad	= outerParameters->position().eta();
-	    phiHad	= outerParameters->position().phi();
-	}
-	CaloMeas* caloMeas = m_caloMeasTool->energyMeasurement(etaEM,phiEM,etaHad,phiHad);
-	if (caloMeas)
-	{
-	    caloEnergy = measurement(middleParameters.momentum().mag(),
-				     eta,
-				     phi,
-				     caloMeas);
-	    delete caloMeas;
-	}
+    if (m_energyLossMeasurement) {
+        // energy deposition according to the calo measurement
+        double eta    = middleParameters.position().eta();
+        double phi    = middleParameters.position().phi();
+        double etaEM  = eta;
+        double phiEM  = phi;
+        double etaHad = eta;
+        double phiHad = phi;
+        if (innerParameters) {
+            etaEM = innerParameters->position().eta();
+            phiEM = innerParameters->position().phi();
+        }
+        if (outerParameters) {
+            etaHad = outerParameters->position().eta();
+            phiHad = outerParameters->position().phi();
+        }
+        CaloMeas* caloMeas = m_caloMeasTool->energyMeasurement(etaEM, phiEM, etaHad, phiHad);
+        if (caloMeas) {
+            caloEnergy = measurement(middleParameters.momentum().mag(), eta, phi, caloMeas);
+            delete caloMeas;
+        }
     }
-    
-    if (! caloEnergy)
-    {
-	// parametrized energy deposition
-	caloEnergy = energyLoss(middleParameters.momentum().mag(),
-				middleParameters.position().eta(),
-				middleParameters.position().phi());
-
-	// WARN in case of anomalously high loss
-	if (caloEnergy->deltaE() > 8.*Units::GeV && middleParameters.momentum().mag() < 500.*Units::GeV)
-	    ATH_MSG_WARNING(" high parametrized energy loss: "
-			    << caloEnergy->deltaE()/Units::GeV << " GeV"
-			    << "   for p " << middleParameters.momentum().mag()/Units::GeV << " GeV"
-			    << "   eta " << middleParameters.position().eta() );
+
+    if (!caloEnergy) {
+        // parametrized energy deposition
+        caloEnergy = energyLoss(middleParameters.momentum().mag(), middleParameters.position().eta(),
+                                middleParameters.position().phi());
+
+        // WARN in case of anomalously high loss
+        if (caloEnergy->deltaE() > 8. * Units::GeV && middleParameters.momentum().mag() < 500. * Units::GeV)
+            ATH_MSG_WARNING(" high parametrized energy loss: "
+                            << caloEnergy->deltaE() / Units::GeV << " GeV"
+                            << "   for p " << middleParameters.momentum().mag() / Units::GeV << " GeV"
+                            << "   eta " << middleParameters.position().eta());
     }
 
     // create MEOT owning CaloEnergy
     std::bitset<Trk::MaterialEffectsBase::NumberOfMaterialEffectsTypes> typePattern(0);
     typePattern.set(Trk::MaterialEffectsBase::EnergyLossEffects);
-    const Trk::MaterialEffectsOnTrack*	materialEffects =
-	new const Trk::MaterialEffectsOnTrack(0.,
-					      caloEnergy,
-					      middleParameters.associatedSurface(),
-					      typePattern);
-    
+    const Trk::MaterialEffectsOnTrack* materialEffects =
+        new const Trk::MaterialEffectsOnTrack(0., caloEnergy, middleParameters.associatedSurface(), typePattern);
+
     // create TSOS
-    const Trk::FitQualityOnSurface*	fitQoS		= 0;
-    const Trk::MeasurementBase*		measurementBase	= 0;
+    const Trk::FitQualityOnSurface*                                         fitQoS          = 0;
+    const Trk::MeasurementBase*                                             measurementBase = 0;
     std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> pattern(0);
     pattern.set(Trk::TrackStateOnSurface::CaloDeposit);
 
     // debugging
-    if (msgLvl(MSG::DEBUG))
-    {
-	std::string eLossType = "  no Calo !!";
-	switch (caloEnergy->energyLossType())
-	{
-	case CaloEnergy::Parametrized:
-	    eLossType = "Parametrized";
-	    break;
-	case CaloEnergy::NotIsolated:
-	    eLossType = "NotIsolated ";
-	    break;
-	case CaloEnergy::MOP:
-	    eLossType = "MOP         ";
-	    break;
-	case CaloEnergy::Tail:   
-	    eLossType = "Tail        ";
-	    break;
-	case CaloEnergy::FSRcandidate:
-	    eLossType = "FSRcandidate";
-	    break;
-	default:
-	    break;
-	};
-
-	ATH_MSG_DEBUG( std::setiosflags(std::ios::fixed) << " trackStateOnSurface with"
-		       << " momentum ="	<< std::setw(6) << std::setprecision(1)
-		       << middleParameters.momentum().mag()/Units::GeV
-		       << "  phi ="	<< std::setw(6) << std::setprecision(3)
-		       << middleParameters.position().phi()
-		       << "  eta ="	<< std::setw(6) << std::setprecision(3)
-		       << middleParameters.position().eta()
-		       << ".  CaloEnergy: deltaE = "	<< std::setw(8) << std::setprecision(3)
-		       << caloEnergy->deltaE()/Units::GeV
-		       << "  +"		<< std::setw(5) << std::setprecision(3)
-		       << caloEnergy->sigmaPlusDeltaE()/Units::GeV
-		       << "  -"		<< std::setw(5) << std::setprecision(3)
-		       << caloEnergy->sigmaMinusDeltaE()/Units::GeV
-		       << " ("		<< std::setw(5) << std::setprecision(3)
-		       << caloEnergy->sigmaDeltaE()/Units::GeV
-		       << ") GeV,  CaloEnergy::Type " << eLossType );
-    }
-
-    return new const Trk::TrackStateOnSurface(measurementBase,
-					      &middleParameters,
-					      fitQoS,
-					      materialEffects,
-					      pattern);
+    if (msgLvl(MSG::DEBUG)) {
+        std::string eLossType = "  no Calo !!";
+        switch (caloEnergy->energyLossType()) {
+            case CaloEnergy::Parametrized:
+                eLossType = "Parametrized";
+                break;
+            case CaloEnergy::NotIsolated:
+                eLossType = "NotIsolated ";
+                break;
+            case CaloEnergy::MOP:
+                eLossType = "MOP         ";
+                break;
+            case CaloEnergy::Tail:
+                eLossType = "Tail        ";
+                break;
+            case CaloEnergy::FSRcandidate:
+                eLossType = "FSRcandidate";
+                break;
+            default:
+                break;
+        };
+
+        ATH_MSG_DEBUG(std::setiosflags(std::ios::fixed)
+                      << " trackStateOnSurface with"
+                      << " momentum =" << std::setw(6) << std::setprecision(1)
+                      << middleParameters.momentum().mag() / Units::GeV << "  phi =" << std::setw(6)
+                      << std::setprecision(3) << middleParameters.position().phi() << "  eta =" << std::setw(6)
+                      << std::setprecision(3) << middleParameters.position().eta()
+                      << ".  CaloEnergy: deltaE = " << std::setw(8) << std::setprecision(3)
+                      << caloEnergy->deltaE() / Units::GeV << "  +" << std::setw(5) << std::setprecision(3)
+                      << caloEnergy->sigmaPlusDeltaE() / Units::GeV << "  -" << std::setw(5) << std::setprecision(3)
+                      << caloEnergy->sigmaMinusDeltaE() / Units::GeV << " (" << std::setw(5) << std::setprecision(3)
+                      << caloEnergy->sigmaDeltaE() / Units::GeV << ") GeV,  CaloEnergy::Type " << eLossType);
+    }
+
+    return new const Trk::TrackStateOnSurface(measurementBase, &middleParameters, fitQoS, materialEffects, pattern);
 }
 
 //<<<<<< PRIVATE MEMBER FUNCTION DEFINITIONS                            >>>>>>
 
 CaloEnergy*
-MuidCaloEnergyTool::measurement(double		trackMomentum,
-				double		eta,
-				double		phi,
-				CaloMeas*	caloMeas) const
+MuidCaloEnergyTool::measurement(double trackMomentum, double eta, double phi, CaloMeas* caloMeas) const
 {
     // Mean Energy Loss parametrization
-    CaloEnergy* caloParamMean		= m_caloParamTool->meanParametrizedEnergy(trackMomentum,eta,phi);
+    CaloEnergy* caloParamMean = m_caloParamTool->meanParametrizedEnergy(trackMomentum, eta, phi);
     // Mop Energy Loss parametrization
-    CaloEnergy* caloParamMop		= m_caloParamTool->mopParametrizedEnergy(trackMomentum,eta,phi);
+    CaloEnergy* caloParamMop = m_caloParamTool->mopParametrizedEnergy(trackMomentum, eta, phi);
     // Mip Energy Loss
-    CaloEnergy* caloParamMip		= m_caloParamTool->meanParametrizedEnergy(10.*Units::GeV,eta,phi);
+    CaloEnergy* caloParamMip = m_caloParamTool->meanParametrizedEnergy(10. * Units::GeV, eta, phi);
     // Mop Energy Loss peak
-    CaloEnergy* mopPeak			= m_caloParamTool->mopPeakEnergy(trackMomentum,eta,phi);
-    
+    CaloEnergy* mopPeak = m_caloParamTool->mopPeakEnergy(trackMomentum, eta, phi);
+
     // // flag upper hemisphere cosmic
     // bool cosmic			= false;
     // if (caloParamMop->deltaE() < 0.) cosmic = true;
 
     // mop energy deposition
-    double MopLoss		= fabs(caloParamMop->deltaE());
+    double MopLoss = fabs(caloParamMop->deltaE());
     // mop energy deposition uncertainty
-    double MopError	        = mopPeak->sigmaDeltaE();
+    double MopError = mopPeak->sigmaDeltaE();
     // mop energy deposition corrected
-    double MopLossCorrected	= paramCorrection(trackMomentum,eta,MopLoss,MopError);
-    
+    double MopLossCorrected = paramCorrection(trackMomentum, eta, MopLoss, MopError);
+
     // percentage of inert material
-    const double InertMaterial		= m_caloParamTool->x0mapInertMaterial(eta);
+    const double InertMaterial = m_caloParamTool->x0mapInertMaterial(eta);
     // percentage of em calorimeter material
-    const double EmMaterial		= m_caloParamTool->x0mapEmMaterial(eta);
+    const double EmMaterial = m_caloParamTool->x0mapEmMaterial(eta);
     // percentage of hec calorimeter material
-    const double HECMaterial		= m_caloParamTool->x0mapHecMaterial(eta);
+    const double HECMaterial = m_caloParamTool->x0mapHecMaterial(eta);
     // correction for the inert material
-    double MaterialCorrection		= InertMaterial * MopLossCorrected;
+    double MaterialCorrection = InertMaterial * MopLossCorrected;
     // scale to get mop loss in em calo
-    double MopLossEm			= MopLoss*m_caloParamTool->emMopFraction(eta);
+    double MopLossEm = MopLoss * m_caloParamTool->emMopFraction(eta);
     // fraction of Tile used for the measurement
-    const double TileMeasurementMaterial	= caloMeas->Tile_SamplingFraction();
+    const double TileMeasurementMaterial = caloMeas->Tile_SamplingFraction();
     // fraction of LArHEC used for the measurement
-    const double LArHECMeasurementMaterial	= caloMeas->LArHEC_SamplingFraction();
+    const double LArHECMeasurementMaterial = caloMeas->LArHEC_SamplingFraction();
     // fraction of LArEM used for the measurement
-    const double LArEmMeasurementMaterial	= caloMeas->LArEM_SamplingFraction();
+    const double LArEmMeasurementMaterial = caloMeas->LArEM_SamplingFraction();
     // Measured energy deposition in Tile
-    const double TileEnergy			= caloMeas->Tile_EnergyMeasured();
+    const double TileEnergy = caloMeas->Tile_EnergyMeasured();
     // Measured energy deposition in E/M
-    const double EmEnergy			= caloMeas->LArEM_EnergyMeasured();
+    const double EmEnergy = caloMeas->LArEM_EnergyMeasured();
 
     // Correction for forward calorimetry
-    double ForwardHECCorrection	= 0.;
-    if (fabs(eta)>2. && caloMeas->LArHEC_EnergyMeasured()>100.)
-	ForwardHECCorrection	= (1. - LArHECMeasurementMaterial) * HECMaterial * MopLossCorrected;
-    const double LArHECEnergy	= caloMeas->LArHEC_EnergyMeasured() + ForwardHECCorrection;	// Measured energy deposition in LArHEC
-
-    double TotalMeasuredEnergy	= TileEnergy + EmEnergy + LArHECEnergy;
-        
-
-    ATH_MSG_VERBOSE( "Energy Deposition:Tile= " 	<< TileEnergy/Units::GeV
-		     << ",LArHEC= "			<< LArHECEnergy/Units::GeV
-		     << ",EM= "				<< EmEnergy/Units::GeV
-		     << "  ForwardHECCorrection "	<< ForwardHECCorrection/Units::GeV
-		     << "  HECMaterial "		<< HECMaterial
-		     << "  MopLossCorrected "		<< MopLossCorrected/Units::GeV );
-    
-    bool bHEC	= false; // performed HEC measurement?
-    bool bEM	= false; // performed Em measurement?
-  
+    double ForwardHECCorrection = 0.;
+    if (fabs(eta) > 2. && caloMeas->LArHEC_EnergyMeasured() > 100.)
+        ForwardHECCorrection = (1. - LArHECMeasurementMaterial) * HECMaterial * MopLossCorrected;
+    const double LArHECEnergy =
+        caloMeas->LArHEC_EnergyMeasured() + ForwardHECCorrection;  // Measured energy deposition in LArHEC
+
+    double TotalMeasuredEnergy = TileEnergy + EmEnergy + LArHECEnergy;
+
+
+    ATH_MSG_VERBOSE("Energy Deposition:Tile= " << TileEnergy / Units::GeV << ",LArHEC= " << LArHECEnergy / Units::GeV
+                                               << ",EM= " << EmEnergy / Units::GeV << "  ForwardHECCorrection "
+                                               << ForwardHECCorrection / Units::GeV << "  HECMaterial " << HECMaterial
+                                               << "  MopLossCorrected " << MopLossCorrected / Units::GeV);
+
+    bool bHEC = false;  // performed HEC measurement?
+    bool bEM  = false;  // performed Em measurement?
+
     // If muon isolated, and no significant measurement is made then use the mop parameterization, else the mean
-    if (fabs(eta)<1.4)
-    {
-	if (LArHECEnergy + TileEnergy > 0.1 * MopLoss * HECMaterial)	bHEC= true;
-    }	
-    else if (fabs(eta)>1.8)
-    {
-	if (LArHECEnergy + TileEnergy > 0.2 * MopLoss * HECMaterial)	bHEC= true;
-    }
-    else
-    {
-	if (LArHECEnergy + TileEnergy > 0.25 * MopLoss * HECMaterial)	bHEC= true;
+    if (fabs(eta) < 1.4) {
+        if (LArHECEnergy + TileEnergy > 0.1 * MopLoss * HECMaterial) bHEC = true;
+    } else if (fabs(eta) > 1.8) {
+        if (LArHECEnergy + TileEnergy > 0.2 * MopLoss * HECMaterial) bHEC = true;
+    } else {
+        if (LArHECEnergy + TileEnergy > 0.25 * MopLoss * HECMaterial) bHEC = true;
     }
-    if (EmEnergy > 0.5 * MopLoss * EmMaterial)				bEM = true;
+    if (EmEnergy > 0.5 * MopLoss * EmMaterial) bEM = true;
 
-    if (!bHEC)
-    {
-//	TotalMeasuredEnergy -= TileEnergy + LArHECEnergy;
-//	MaterialCorrection  += HECMaterial * MopLossCorrected;
+    if (!bHEC) {
+        //	TotalMeasuredEnergy -= TileEnergy + LArHECEnergy;
+        //	MaterialCorrection  += HECMaterial * MopLossCorrected;
     }
-    if (!bEM)
-    {
-//	TotalMeasuredEnergy -= EmEnergy;
-//	MaterialCorrection  += EmMaterial * MopLossCorrected;
+    if (!bEM) {
+        //	TotalMeasuredEnergy -= EmEnergy;
+        //	MaterialCorrection  += EmMaterial * MopLossCorrected;
     }
 
     double MeasCorrected = TotalMeasuredEnergy + MaterialCorrection;
@@ -460,221 +372,173 @@ MuidCaloEnergyTool::measurement(double		trackMomentum,
     // Muons of 10 GeV are already in the relativistic rise region
     // in order to obtain the mip deposition from the mean energy deposition of 10 GeV muons
     // should divide by approximately 1.4 (Review of Particle Physics Figure 27.3 p.243)
-    const double IonizationLoss	= (1./1.4) * fabs(caloParamMip->deltaE());
-  
-    double eOverMipCorrectionEm   = 0.;
-    double eOverMipCorrectionHEC  = 0.;	
+    const double IonizationLoss = (1. / 1.4) * fabs(caloParamMip->deltaE());
+
+    double eOverMipCorrectionEm  = 0.;
+    double eOverMipCorrectionHEC = 0.;
 
     // Etrue = emip * Emeas
     // -DE = Emeas - Etrue = Etrue ( 1./emip -1.)
-    if (bEM)
-    {
-	const double emipEM    = 0.78; 
-	eOverMipCorrectionEm   = - (1./emipEM-1.) * IonizationLoss * EmMaterial * LArEmMeasurementMaterial;
-	if (EmEnergy + eOverMipCorrectionEm<0.)eOverMipCorrectionEm=0.;
+    if (bEM) {
+        const double emipEM  = 0.78;
+        eOverMipCorrectionEm = -(1. / emipEM - 1.) * IonizationLoss * EmMaterial * LArEmMeasurementMaterial;
+        if (EmEnergy + eOverMipCorrectionEm < 0.) eOverMipCorrectionEm = 0.;
     }
-    if (bHEC)
-    {
-	const double emipTile  = 0.86;
-	const double emipLAr   = 0.94;
-	const double HECEnergy = TileEnergy + LArHECEnergy;
-	const double eOverMipCorrectionTile = - (1./emipTile-1.) * TileEnergy / HECEnergy * IonizationLoss * HECMaterial * TileMeasurementMaterial;
-	const double eOverMipCorrectionLAr  = - (1./emipLAr-1.) * LArHECEnergy / HECEnergy * IonizationLoss * HECMaterial * LArHECMeasurementMaterial;
-	eOverMipCorrectionHEC  = eOverMipCorrectionTile + eOverMipCorrectionLAr;
-	if (LArHECEnergy + TileEnergy + eOverMipCorrectionHEC<0.)eOverMipCorrectionHEC=0.;
+    if (bHEC) {
+        const double emipTile  = 0.86;
+        const double emipLAr   = 0.94;
+        const double HECEnergy = TileEnergy + LArHECEnergy;
+        const double eOverMipCorrectionTile =
+            -(1. / emipTile - 1.) * TileEnergy / HECEnergy * IonizationLoss * HECMaterial * TileMeasurementMaterial;
+        const double eOverMipCorrectionLAr =
+            -(1. / emipLAr - 1.) * LArHECEnergy / HECEnergy * IonizationLoss * HECMaterial * LArHECMeasurementMaterial;
+        eOverMipCorrectionHEC = eOverMipCorrectionTile + eOverMipCorrectionLAr;
+        if (LArHECEnergy + TileEnergy + eOverMipCorrectionHEC < 0.) eOverMipCorrectionHEC = 0.;
     }
-    const double eOverMipCorrection	= eOverMipCorrectionEm + eOverMipCorrectionHEC;
+    const double eOverMipCorrection = eOverMipCorrectionEm + eOverMipCorrectionHEC;
+
 
-    
     //  additional offset from high-statistics Z->mumu MC (measured by Peter K 30/11/2011)
-    double fix1FromPeter[26]	= {  0.424104 ,  0.479637 ,  0.483419 ,  0.490242 ,  0.52806  ,
-				     0.573582 ,  0.822098 ,  0.767301 ,  0.809919 ,  0.658745 ,
-				     0.157187 ,  0.413214 ,  0.771074 ,  0.61815  ,  0.350113 ,
-				     0.322785 ,  0.479294 ,  0.806183 ,  0.822161 ,  0.757731 ,
-				    -0.0857186, -0.0992693, -0.0492252,  0.0650174,  0.261538 ,
-				     0.360413 };
+    double fix1FromPeter[26] = {0.424104,   0.479637,   0.483419,  0.490242, 0.52806,  0.573582, 0.822098,
+                                0.767301,   0.809919,   0.658745,  0.157187, 0.413214, 0.771074, 0.61815,
+                                0.350113,   0.322785,   0.479294,  0.806183, 0.822161, 0.757731, -0.0857186,
+                                -0.0992693, -0.0492252, 0.0650174, 0.261538, 0.360413};
     //  (update from Peter K 09/12/2011)
-    double fix2FromPeter[26]	= { -0.647703 , -0.303498 , -0.268645 , -0.261292 , -0.260152 ,
-				    -0.269253 , -0.266212 , -0.240837 , -0.130172 , -0.111638 ,
-				    -0.329423 , -0.321011 , -0.346050 , -0.305592 , -0.313293 ,
-				    -0.317111 , -0.428393 , -0.524839 , -0.599547 , -0.464013 ,
-				    -0.159663 , -0.140879 , -0.0975618,  0.0225352,  0.0701925,
-				    -0.24778 };
-    int ieta			=  static_cast<int> (fabs(eta)/0.10);
-    if (ieta > 25) ieta		=  25;
-    double FinalMeasuredEnergy	= MeasCorrected + eOverMipCorrection +
-				  (fix1FromPeter[ieta] + fix2FromPeter[ieta])*Units::GeV;
-
-    ATH_MSG_VERBOSE( "Sum of cells "			<< (TileEnergy + EmEnergy + LArHECEnergy)/Units::GeV
-		     << " Total energy deposition "	<< TotalMeasuredEnergy/Units::GeV
-		     << " corrected energy deposition "	<< MeasCorrected/Units::GeV
-		     << " e/mip corre "			<< FinalMeasuredEnergy/Units::GeV << std::endl
-		     << "\nFinal Energy Measurement  = " << FinalMeasuredEnergy /Units::GeV
-		     //<< "\nMean Energy Deposition    = " << MeanLoss/Units::GeV
-		     //<< " - " << MeanErrorLeft/Units::GeV << " + "<< MeanErrorRight/Units::GeV
-		     << "\nMop Energy Deposition     = " << MopLoss/Units::GeV << " +- " << MopError/Units::GeV
-		     //<< "\nOld parametrization energy= " << m_caloParamOld->deltaE()/Units::GeV
-		     //<< " +- " <<  m_caloParamOld->sigmaDeltaE()/Units::GeV
-		     //<< "\nTrack Momentum            = "  <<  trackMomentum/Units::GeV
-		     //<< " Eta= " << eta << "  Phi= " << phi
-		     << std::endl
-		     << "Final Meas = "			<< FinalMeasuredEnergy / Units::GeV
-		     << " Mop Dep = "			<< MopLoss/Units::GeV << " +- " << MopError/Units::GeV );
-    
-    const double HECIso	= caloMeas->Tile_Isolation() + caloMeas->LArHEC_Isolation();
-    const double EmIso	= caloMeas->LArEM_Isolation();
-
-    const double Theta	= 2.*atan(exp(-eta));
-    const double pT	= trackMomentum*sin(Theta)*Units::MeV;
-    const double EmCut	= m_emMinEnergy + (3.-2.)/(100.-15.)*(pT/Units::GeV-15.)*Units::GeV;
-    const double HECCut	= m_hecMinEnergy;
-    const double pTCut	= m_minMuonPt;
-    bool PassCut	= true;
-    if (m_forceIsolationFailure
-	|| EmIso > EmCut
-	|| HECIso > HECCut
-	|| pT < pTCut
-	|| FinalMeasuredEnergy < m_minFinalEnergy )	PassCut = false;
-
-    int nTracks 	= 0;
+    double fix2FromPeter[26] = {-0.647703, -0.303498,  -0.268645, -0.261292, -0.260152, -0.269253, -0.266212,
+                                -0.240837, -0.130172,  -0.111638, -0.329423, -0.321011, -0.346050, -0.305592,
+                                -0.313293, -0.317111,  -0.428393, -0.524839, -0.599547, -0.464013, -0.159663,
+                                -0.140879, -0.0975618, 0.0225352, 0.0701925, -0.24778};
+    int    ieta              = static_cast<int>(fabs(eta) / 0.10);
+    if (ieta > 25) ieta = 25;
+    double FinalMeasuredEnergy =
+        MeasCorrected + eOverMipCorrection + (fix1FromPeter[ieta] + fix2FromPeter[ieta]) * Units::GeV;
+
+    ATH_MSG_VERBOSE("Sum of cells " << (TileEnergy + EmEnergy + LArHECEnergy) / Units::GeV
+                                    << " Total energy deposition " << TotalMeasuredEnergy / Units::GeV
+                                    << " corrected energy deposition " << MeasCorrected / Units::GeV << " e/mip corre "
+                                    << FinalMeasuredEnergy / Units::GeV << std::endl
+                                    << "\nFinal Energy Measurement  = "
+                                    << FinalMeasuredEnergy / Units::GeV
+                                    //<< "\nMean Energy Deposition    = " << MeanLoss/Units::GeV
+                                    //<< " - " << MeanErrorLeft/Units::GeV << " + "<< MeanErrorRight/Units::GeV
+                                    << "\nMop Energy Deposition     = " << MopLoss / Units::GeV << " +- "
+                                    << MopError / Units::GeV
+                                    //<< "\nOld parametrization energy= " << m_caloParamOld->deltaE()/Units::GeV
+                                    //<< " +- " <<  m_caloParamOld->sigmaDeltaE()/Units::GeV
+                                    //<< "\nTrack Momentum            = "  <<  trackMomentum/Units::GeV
+                                    //<< " Eta= " << eta << "  Phi= " << phi
+                                    << std::endl
+                                    << "Final Meas = " << FinalMeasuredEnergy / Units::GeV
+                                    << " Mop Dep = " << MopLoss / Units::GeV << " +- " << MopError / Units::GeV);
+
+    const double HECIso = caloMeas->Tile_Isolation() + caloMeas->LArHEC_Isolation();
+    const double EmIso  = caloMeas->LArEM_Isolation();
+
+    const double Theta   = 2. * atan(exp(-eta));
+    const double pT      = trackMomentum * sin(Theta) * Units::MeV;
+    const double EmCut   = m_emMinEnergy + (3. - 2.) / (100. - 15.) * (pT / Units::GeV - 15.) * Units::GeV;
+    const double HECCut  = m_hecMinEnergy;
+    const double pTCut   = m_minMuonPt;
+    bool         PassCut = true;
+    if (m_forceIsolationFailure || EmIso > EmCut || HECIso > HECCut || pT < pTCut
+        || FinalMeasuredEnergy < m_minFinalEnergy)
+        PassCut = false;
+
+    int nTracks = 0;
     // double tracksEnergy = 0.;
-    if (m_trackIsolation)
-    {
-	std::pair<int,double> inner = m_trackIsolationTool->trackIsolation(eta,phi);
-	// double maxP 	= m_trackIsolationTool->maxP();
-	nTracks 	= inner.first;
-	// tracksEnergy	= inner.second - maxP;
-	if (pT < 100.*Units::GeV && nTracks > m_maxNTracksIso)	PassCut = false;
+    if (m_trackIsolation) {
+        std::pair<int, double> inner = m_trackIsolationTool->trackIsolation(eta, phi);
+        // double maxP 	= m_trackIsolationTool->maxP();
+        nTracks = inner.first;
+        // tracksEnergy	= inner.second - maxP;
+        if (pT < 100. * Units::GeV && nTracks > m_maxNTracksIso) PassCut = false;
     }
 
-    ATH_MSG_VERBOSE( "pT= " << pT/Units::GeV << ",HECIso= " << HECIso/Units::GeV
-		     << ",EmIso= " <<EmIso/Units::GeV << ", nTracks= "<< nTracks
-		     << ",PassCut= " << PassCut );
+    ATH_MSG_VERBOSE("pT= " << pT / Units::GeV << ",HECIso= " << HECIso / Units::GeV << ",EmIso= " << EmIso / Units::GeV
+                           << ", nTracks= " << nTracks << ",PassCut= " << PassCut);
+
+    CaloEnergy::EnergyLossType lossType   = CaloEnergy::NotIsolated;
+    CaloEnergy*                caloEnergy = 0;
 
-    CaloEnergy::EnergyLossType lossType = CaloEnergy::NotIsolated;
-    CaloEnergy* caloEnergy		= 0;
-    
     // choose between lossTypes MOP, Tail, FSR and NotIsolated according
     // to measured energy, isolation cut and Et in em
-    if (FinalMeasuredEnergy	< MopLoss + 2. * MopError
-	&& FinalMeasuredEnergy	> m_minFinalEnergy)
-    {
-	++m_countMop;
-	caloEnergy			= mopPeak;
-	mopPeak				= 0;
-    }
-    else if (PassCut) 
-    {
-	//  tail offset from high-statistics Z->mumu MC (measured by Peter K 09/12/2011),
-	//  but next we try to separate any FSR contribution from the Landau tail
-	double F1			= 0.;
-	if (caloMeas->LArEM_EnergyMeasured() > m_emEtCut)
-	    F1		= caloMeas->LArEM_FirstCompartmentEnergy()/caloMeas->LArEM_EnergyMeasured();
-	ATH_MSG_VERBOSE( " start Tail and FSR treatment: Et in e.m. " << EmEnergy*sin(Theta)/Units::GeV
-			 << "  F1 ratio " << F1);
-        if (! m_FSRtreatment
-	    || EmEnergy*sin(Theta)	< m_emEtCut
-	    || F1			< m_emF1Cut)
-	{
-	    ++m_countMeasurement;
-	    double FinalEnergyErrorMinus= 0.50 * sqrt(FinalMeasuredEnergy/Units::GeV) * Units::GeV;
-	    double FinalEnergyErrorPlus	= 0.50 * sqrt(FinalMeasuredEnergy/Units::GeV) * Units::GeV;
-
-	    // overall also have 50% resolution in EC rather than the 70% naively expected from LArHEC
-	    if (LArHECEnergy > 1.*Units::GeV)
-	    {
-              FinalEnergyErrorMinus	= 0.50 * sqrt(FinalMeasuredEnergy/Units::GeV) * Units::GeV;
-              FinalEnergyErrorPlus	= 0.50 * sqrt(FinalMeasuredEnergy/Units::GeV) * Units::GeV;
-	    }
-	    double FinalEnergyError	= 0.5*(FinalEnergyErrorMinus + FinalEnergyErrorPlus);
-	    lossType			= CaloEnergy::Tail;
-	    caloEnergy			= new CaloEnergy(FinalMeasuredEnergy,
-							 FinalEnergyError,
-							 FinalEnergyErrorMinus,
-							 FinalEnergyErrorPlus,
-							 lossType);
-	    ATH_MSG_VERBOSE( " CaloEnergy Tail : " << FinalMeasuredEnergy );
+    if (FinalMeasuredEnergy < MopLoss + 2. * MopError && FinalMeasuredEnergy > m_minFinalEnergy) {
+        ++m_countMop;
+        caloEnergy = mopPeak;
+        mopPeak    = 0;
+    } else if (PassCut) {
+        //  tail offset from high-statistics Z->mumu MC (measured by Peter K 09/12/2011),
+        //  but next we try to separate any FSR contribution from the Landau tail
+        double F1 = 0.;
+        if (caloMeas->LArEM_EnergyMeasured() > m_emEtCut)
+            F1 = caloMeas->LArEM_FirstCompartmentEnergy() / caloMeas->LArEM_EnergyMeasured();
+        ATH_MSG_VERBOSE(" start Tail and FSR treatment: Et in e.m. " << EmEnergy * sin(Theta) / Units::GeV
+                                                                     << "  F1 ratio " << F1);
+        if (!m_FSRtreatment || EmEnergy * sin(Theta) < m_emEtCut || F1 < m_emF1Cut) {
+            ++m_countMeasurement;
+            double FinalEnergyErrorMinus = 0.50 * sqrt(FinalMeasuredEnergy / Units::GeV) * Units::GeV;
+            double FinalEnergyErrorPlus  = 0.50 * sqrt(FinalMeasuredEnergy / Units::GeV) * Units::GeV;
+
+            // overall also have 50% resolution in EC rather than the 70% naively expected from LArHEC
+            if (LArHECEnergy > 1. * Units::GeV) {
+                FinalEnergyErrorMinus = 0.50 * sqrt(FinalMeasuredEnergy / Units::GeV) * Units::GeV;
+                FinalEnergyErrorPlus  = 0.50 * sqrt(FinalMeasuredEnergy / Units::GeV) * Units::GeV;
+            }
+            double FinalEnergyError = 0.5 * (FinalEnergyErrorMinus + FinalEnergyErrorPlus);
+            lossType                = CaloEnergy::Tail;
+            caloEnergy              = new CaloEnergy(FinalMeasuredEnergy, FinalEnergyError, FinalEnergyErrorMinus,
+                                        FinalEnergyErrorPlus, lossType);
+            ATH_MSG_VERBOSE(" CaloEnergy Tail : " << FinalMeasuredEnergy);
+        } else {
+            // significant e.m. deposit and high F1
+            double MopErrorEm              = MopError * m_caloParamTool->emMopFraction(eta);
+            double FinalMeasuredEnergyNoEm = FinalMeasuredEnergy - EmEnergy + MopLossEm;
+            // lossType				= CaloEnergy::FSRcandidate;
+
+            ATH_MSG_VERBOSE(" CaloEnergy FSR :  EmEnergy "
+                            << EmEnergy << "  FinalMeasuredEnergy " << FinalMeasuredEnergy << "  MopLossEm "
+                            << MopLossEm << "  MopErrorEm " << MopErrorEm << "  FinalMeasuredEnergyNoEm "
+                            << FinalMeasuredEnergyNoEm);
+            if (FinalMeasuredEnergyNoEm < MopLoss + 2. * MopError) {
+                // small hadronic energy deposit: like NotIsolated (MOP or Mean according to configuration)
+                lossType = CaloEnergy::NotIsolated;
+                if (m_MOPparametrization) {
+                    ++m_countMop;
+                    caloEnergy =
+                        new CaloEnergy(caloParamMop->deltaE(), caloParamMop->sigmaDeltaE(),
+                                       caloParamMop->sigmaMinusDeltaE(), caloParamMop->sigmaPlusDeltaE(), lossType);
+                } else {
+                    ++m_countMean;
+                    caloEnergy =
+                        new CaloEnergy(caloParamMean->deltaE(), caloParamMean->sigmaDeltaE(),
+                                       caloParamMean->sigmaMinusDeltaE(), caloParamMean->sigmaPlusDeltaE(), lossType);
+                }
+                ATH_MSG_VERBOSE(" CaloEnergy FSR : Small deposit, FinalMeasuredEnergyNoEm "
+                                << FinalMeasuredEnergyNoEm << " using Eloss " << caloEnergy->deltaE());
+            } else {
+                //  significant hadronic energy deposit
+                ++m_countMeasurement;
+                lossType                    = CaloEnergy::FSRcandidate;
+                double FinalEnergyErrorNoEm = 0.50 * sqrt(FinalMeasuredEnergyNoEm / Units::GeV) * Units::GeV;
+                FinalEnergyErrorNoEm = sqrt(FinalEnergyErrorNoEm * FinalEnergyErrorNoEm + MopErrorEm * MopErrorEm);
+                caloEnergy = new CaloEnergy(FinalMeasuredEnergyNoEm, FinalEnergyErrorNoEm, FinalEnergyErrorNoEm,
+                                            FinalEnergyErrorNoEm, lossType);
+                ATH_MSG_VERBOSE(" CaloEnergy FSR : Large deposit, FinalMeasuredEnergyNoEm " << FinalMeasuredEnergyNoEm);
+            }
+        }
+    } else {
+        // lossType NotIsolated: MOP or Mean according to configuration
+        if (m_MOPparametrization) {
+            ++m_countMop;
+            caloEnergy = new CaloEnergy(caloParamMop->deltaE(), caloParamMop->sigmaDeltaE(),
+                                        caloParamMop->sigmaMinusDeltaE(), caloParamMop->sigmaPlusDeltaE(), lossType);
+        } else {
+            ++m_countMean;
+            caloEnergy = new CaloEnergy(caloParamMean->deltaE(), caloParamMean->sigmaDeltaE(),
+                                        caloParamMean->sigmaMinusDeltaE(), caloParamMean->sigmaPlusDeltaE(), lossType);
         }
-	else
-	{
-	    // significant e.m. deposit and high F1
-	    double MopErrorEm			= MopError*m_caloParamTool->emMopFraction(eta);
-	    double FinalMeasuredEnergyNoEm	= FinalMeasuredEnergy - EmEnergy + MopLossEm;
-	    //lossType				= CaloEnergy::FSRcandidate;
-
-	    ATH_MSG_VERBOSE( " CaloEnergy FSR :  EmEnergy "	<< EmEnergy
-			     << "  FinalMeasuredEnergy "	<< FinalMeasuredEnergy
-			     << "  MopLossEm "			<< MopLossEm
-			     << "  MopErrorEm "			<< MopErrorEm
-			     << "  FinalMeasuredEnergyNoEm "	<< FinalMeasuredEnergyNoEm );
-	    if (FinalMeasuredEnergyNoEm < MopLoss + 2.*MopError)
-	    {
-		// small hadronic energy deposit: like NotIsolated (MOP or Mean according to configuration)
-		lossType			= CaloEnergy::NotIsolated;
-		if (m_MOPparametrization)
-		{
-		    ++m_countMop;
-		    caloEnergy			= new CaloEnergy(caloParamMop->deltaE(),
-								 caloParamMop->sigmaDeltaE(),
-								 caloParamMop->sigmaMinusDeltaE(),
-								 caloParamMop->sigmaPlusDeltaE(),
-								 lossType);
-		}
-		else
-		{
-		    ++m_countMean;
-		    caloEnergy			= new CaloEnergy(caloParamMean->deltaE(),
-								 caloParamMean->sigmaDeltaE(),
-								 caloParamMean->sigmaMinusDeltaE(),
-								 caloParamMean->sigmaPlusDeltaE(),
-								 lossType);
-		}
-		ATH_MSG_VERBOSE( " CaloEnergy FSR : Small deposit, FinalMeasuredEnergyNoEm "
-				 << FinalMeasuredEnergyNoEm
-				 << " using Eloss " << caloEnergy->deltaE());
-	    }
-	    else
-	    {
-		//  significant hadronic energy deposit
-		++m_countMeasurement;
-		lossType			= CaloEnergy::FSRcandidate;
-		double FinalEnergyErrorNoEm	= 0.50 * sqrt(FinalMeasuredEnergyNoEm/Units::GeV) * Units::GeV;
-		FinalEnergyErrorNoEm		= sqrt(FinalEnergyErrorNoEm*FinalEnergyErrorNoEm +
-						       MopErrorEm*MopErrorEm);
-		caloEnergy			= new CaloEnergy(FinalMeasuredEnergyNoEm,
-								 FinalEnergyErrorNoEm,
-								 FinalEnergyErrorNoEm,
-								 FinalEnergyErrorNoEm,
-								 lossType);
-		ATH_MSG_VERBOSE( " CaloEnergy FSR : Large deposit, FinalMeasuredEnergyNoEm "
-				 << FinalMeasuredEnergyNoEm );
-
-	    }
-        } 
-    }
-    else
-    {
-	// lossType NotIsolated: MOP or Mean according to configuration
-	if (m_MOPparametrization)
-	{
-	    ++m_countMop;
-	    caloEnergy			= new CaloEnergy(caloParamMop->deltaE(),
-							 caloParamMop->sigmaDeltaE(),
-							 caloParamMop->sigmaMinusDeltaE(),
-							 caloParamMop->sigmaPlusDeltaE(),
-							 lossType);
-	}
-	else
-	{
-	    ++m_countMean;
-	    caloEnergy			= new CaloEnergy(caloParamMean->deltaE(),
-							 caloParamMean->sigmaDeltaE(),
-							 caloParamMean->sigmaMinusDeltaE(),
-							 caloParamMean->sigmaPlusDeltaE(),
-							 lossType);
-	}
     }
-    
+
     // delete the various parametrized CaloEnergy's before return
     delete caloParamMean;
     delete caloParamMop;
@@ -684,57 +548,47 @@ MuidCaloEnergyTool::measurement(double		trackMomentum,
     return caloEnergy;
 }
 
-double 
-MuidCaloEnergyTool::muSpecResolParam(double trackMomentum,
-				     double eta) const
+double
+MuidCaloEnergyTool::muSpecResolParam(double trackMomentum, double eta) const
 {
-    const double Theta    = 2.*atan(exp(-eta));
-    const double pT       = trackMomentum*sin(Theta)/Units::GeV; // pt in GeV
-    double a              = 0.;
-    double b              = 0.;
-    if (fabs(eta)<1.)
-    {
-	a = 0.02255;
-	b = 7.708e-5;
-    }
-    else if (fabs(eta)>1. && fabs(eta)<2.)
-    {
-	a = 0.04198;
-	b = 8.912e-5;
-    }
-    else
-    {
-	a = 0.02181;
-	b = 7.282e-5;
-    }
-    return sqrt(a*a+ (b*pT)*(b*pT));
+    const double Theta = 2. * atan(exp(-eta));
+    const double pT    = trackMomentum * sin(Theta) / Units::GeV;  // pt in GeV
+    double       a     = 0.;
+    double       b     = 0.;
+    if (fabs(eta) < 1.) {
+        a = 0.02255;
+        b = 7.708e-5;
+    } else if (fabs(eta) > 1. && fabs(eta) < 2.) {
+        a = 0.04198;
+        b = 8.912e-5;
+    } else {
+        a = 0.02181;
+        b = 7.282e-5;
+    }
+    return sqrt(a * a + (b * pT) * (b * pT));
 }
 
-double 
-MuidCaloEnergyTool::paramCorrection(double trackMomentum,
-				    double eta,
-				    double MopLoss,
-				    double MopLossSigma) const
+double
+MuidCaloEnergyTool::paramCorrection(double trackMomentum, double eta, double MopLoss, double MopLossSigma) const
 {
-    const double Nsigma	= 2.;
-    double MSres	= muSpecResolParam(trackMomentum,eta);
-    double MSsigma	= trackMomentum*MSres;
-    double sigma	= sqrt(MSsigma*MSsigma + MopLossSigma*MopLossSigma);
-    double sum		= 0.;
-    double weight	= 0.;
-    double xlow		= MopLoss - Nsigma * sigma;
-    if (xlow<0.) xlow	= 0.;
-    double xup		= MopLoss + Nsigma * sigma;
-    int Na		= 50;
-    const double inv_Na = 1. / static_cast<double> (Na);
-    for (int j = 0; j < Na; ++j)
-    {
-        double x = xlow + j*(xup-xlow)*inv_Na;
-	double w = landau(x,MopLoss,MopLossSigma,true);
-	sum     += x*w;
-	weight  += w;
-    }
-    double MopStat	= sum/weight;              
+    const double Nsigma  = 2.;
+    double       MSres   = muSpecResolParam(trackMomentum, eta);
+    double       MSsigma = trackMomentum * MSres;
+    double       sigma   = sqrt(MSsigma * MSsigma + MopLossSigma * MopLossSigma);
+    double       sum     = 0.;
+    double       weight  = 0.;
+    double       xlow    = MopLoss - Nsigma * sigma;
+    if (xlow < 0.) xlow = 0.;
+    double       xup    = MopLoss + Nsigma * sigma;
+    int          Na     = 50;
+    const double inv_Na = 1. / static_cast<double>(Na);
+    for (int j = 0; j < Na; ++j) {
+        double x = xlow + j * (xup - xlow) * inv_Na;
+        double w = landau(x, MopLoss, MopLossSigma, true);
+        sum += x * w;
+        weight += w;
+    }
+    double MopStat = sum / weight;
     return MopStat;
 }
 
@@ -745,81 +599,65 @@ MuidCaloEnergyTool::landau(double x, double mpv, double sigma, bool norm) const
     // This function has been adapted from the CERNLIB routine G110 denlan.
     // If norm=kTRUE (default is kFALSE) the result is divided by sigma
 
-    double p1[5] = {0.4259894875,-0.1249762550, 0.03984243700, -0.006298287635,   0.001511162253};
-    double q1[5] = {1.0         ,-0.3388260629, 0.09594393323, -0.01608042283,    0.003778942063};
+    double p1[5] = {0.4259894875, -0.1249762550, 0.03984243700, -0.006298287635, 0.001511162253};
+    double q1[5] = {1.0, -0.3388260629, 0.09594393323, -0.01608042283, 0.003778942063};
 
-    double p2[5] = {0.1788541609, 0.1173957403, 0.01488850518, -0.001394989411,   0.0001283617211};
-    double q2[5] = {1.0         , 0.7428795082, 0.3153932961,   0.06694219548,    0.008790609714};
+    double p2[5] = {0.1788541609, 0.1173957403, 0.01488850518, -0.001394989411, 0.0001283617211};
+    double q2[5] = {1.0, 0.7428795082, 0.3153932961, 0.06694219548, 0.008790609714};
 
-    double p3[5] = {0.1788544503, 0.09359161662,0.006325387654, 0.00006611667319,-0.000002031049101};
-    double q3[5] = {1.0         , 0.6097809921, 0.2560616665,   0.04746722384,    0.006957301675};
+    double p3[5] = {0.1788544503, 0.09359161662, 0.006325387654, 0.00006611667319, -0.000002031049101};
+    double q3[5] = {1.0, 0.6097809921, 0.2560616665, 0.04746722384, 0.006957301675};
 
-    double p4[5] = {0.9874054407, 118.6723273,  849.2794360,   -743.7792444,      427.0262186};
-    double q4[5] = {1.0         , 106.8615961,  337.6496214,    2016.712389,      1597.063511};
+    double p4[5] = {0.9874054407, 118.6723273, 849.2794360, -743.7792444, 427.0262186};
+    double q4[5] = {1.0, 106.8615961, 337.6496214, 2016.712389, 1597.063511};
 
-    double p5[5] = {1.003675074,  167.5702434,  4789.711289,    21217.86767,     -22324.94910};
-    double q5[5] = {1.0         , 156.9424537,  3745.310488,    9834.698876,      66924.28357};
+    double p5[5] = {1.003675074, 167.5702434, 4789.711289, 21217.86767, -22324.94910};
+    double q5[5] = {1.0, 156.9424537, 3745.310488, 9834.698876, 66924.28357};
 
-    double p6[5] = {1.000827619,  664.9143136,  62972.92665,    475554.6998,     -5743609.109};
-    double q6[5] = {1.0         , 651.4101098,  56974.73333,    165917.4725,     -2815759.939};
+    double p6[5] = {1.000827619, 664.9143136, 62972.92665, 475554.6998, -5743609.109};
+    double q6[5] = {1.0, 651.4101098, 56974.73333, 165917.4725, -2815759.939};
 
-    double a1[3] = {0.04166666667,-0.01996527778, 0.02709538966};
+    double a1[3] = {0.04166666667, -0.01996527778, 0.02709538966};
 
-    double a2[2] = {-1.845568670,-4.284640743};
+    double a2[2] = {-1.845568670, -4.284640743};
 
     if (sigma <= 0) return 0.;
-    double v = (x-mpv)/sigma;
+    double v = (x - mpv) / sigma;
     double u, ue, us, den;
-    if (v < -5.5)
-    {
-	u   = exp(v+1.0);
-	if (u < 1e-10) return 0.0;
-	ue  = exp(-1/u);
-	us  = sqrt(u);
-	den = 0.3989422803*(ue/us)*(1+(a1[0]+(a1[1]+a1[2]*u)*u)*u);
-    }
-    else if (v < -1)
-    {
-	u   = exp(-v-1);
-	den = exp(-u)*sqrt(u)*
-	      (p1[0]+(p1[1]+(p1[2]+(p1[3]+p1[4]*v)*v)*v)*v)/
-	      (q1[0]+(q1[1]+(q1[2]+(q1[3]+q1[4]*v)*v)*v)*v);
-    }
-    else if (v < 1)
-    {
-	den = (p2[0]+(p2[1]+(p2[2]+(p2[3]+p2[4]*v)*v)*v)*v)/
-	      (q2[0]+(q2[1]+(q2[2]+(q2[3]+q2[4]*v)*v)*v)*v);
-    }
-    else if (v < 5)
-    {
-	den = (p3[0]+(p3[1]+(p3[2]+(p3[3]+p3[4]*v)*v)*v)*v)/
-	      (q3[0]+(q3[1]+(q3[2]+(q3[3]+q3[4]*v)*v)*v)*v);
-    }
-    else if (v < 12)
-    {
-	u   = 1/v;
-	den = u*u*(p4[0]+(p4[1]+(p4[2]+(p4[3]+p4[4]*u)*u)*u)*u)/
-	      (q4[0]+(q4[1]+(q4[2]+(q4[3]+q4[4]*u)*u)*u)*u);
-    }
-    else if (v < 50)
-    {
-	u   = 1/v;
-	den = u*u*(p5[0]+(p5[1]+(p5[2]+(p5[3]+p5[4]*u)*u)*u)*u)/
-	      (q5[0]+(q5[1]+(q5[2]+(q5[3]+q5[4]*u)*u)*u)*u);
-    }
-    else if (v < 300)
-    {
-	u   = 1/v;
-	den = u*u*(p6[0]+(p6[1]+(p6[2]+(p6[3]+p6[4]*u)*u)*u)*u)/
-	      (q6[0]+(q6[1]+(q6[2]+(q6[3]+q6[4]*u)*u)*u)*u);
-    }
-    else
-    {
-	u   = 1/(v-v*log(v)/(v+1));
-	den = u*u*(1+(a2[0]+a2[1]*u)*u);
+    if (v < -5.5) {
+        u = exp(v + 1.0);
+        if (u < 1e-10) return 0.0;
+        ue  = exp(-1 / u);
+        us  = sqrt(u);
+        den = 0.3989422803 * (ue / us) * (1 + (a1[0] + (a1[1] + a1[2] * u) * u) * u);
+    } else if (v < -1) {
+        u   = exp(-v - 1);
+        den = exp(-u) * sqrt(u) * (p1[0] + (p1[1] + (p1[2] + (p1[3] + p1[4] * v) * v) * v) * v)
+              / (q1[0] + (q1[1] + (q1[2] + (q1[3] + q1[4] * v) * v) * v) * v);
+    } else if (v < 1) {
+        den = (p2[0] + (p2[1] + (p2[2] + (p2[3] + p2[4] * v) * v) * v) * v)
+              / (q2[0] + (q2[1] + (q2[2] + (q2[3] + q2[4] * v) * v) * v) * v);
+    } else if (v < 5) {
+        den = (p3[0] + (p3[1] + (p3[2] + (p3[3] + p3[4] * v) * v) * v) * v)
+              / (q3[0] + (q3[1] + (q3[2] + (q3[3] + q3[4] * v) * v) * v) * v);
+    } else if (v < 12) {
+        u   = 1 / v;
+        den = u * u * (p4[0] + (p4[1] + (p4[2] + (p4[3] + p4[4] * u) * u) * u) * u)
+              / (q4[0] + (q4[1] + (q4[2] + (q4[3] + q4[4] * u) * u) * u) * u);
+    } else if (v < 50) {
+        u   = 1 / v;
+        den = u * u * (p5[0] + (p5[1] + (p5[2] + (p5[3] + p5[4] * u) * u) * u) * u)
+              / (q5[0] + (q5[1] + (q5[2] + (q5[3] + q5[4] * u) * u) * u) * u);
+    } else if (v < 300) {
+        u   = 1 / v;
+        den = u * u * (p6[0] + (p6[1] + (p6[2] + (p6[3] + p6[4] * u) * u) * u) * u)
+              / (q6[0] + (q6[1] + (q6[2] + (q6[3] + q6[4] * u) * u) * u) * u);
+    } else {
+        u   = 1 / (v - v * log(v) / (v + 1));
+        den = u * u * (1 + (a2[0] + a2[1] * u) * u);
     }
     if (!norm) return den;
-    return den/sigma;
+    return den / sigma;
 }
 
-}	// end of namespace
+}  // namespace Rec
diff --git a/Reconstruction/MuonIdentification/MuidCaloScatteringTools/MuidCaloScatteringTools/MuidCaloMaterialParam.h b/Reconstruction/MuonIdentification/MuidCaloScatteringTools/MuidCaloScatteringTools/MuidCaloMaterialParam.h
index 18a452c18204848c66ca37454d6358f121c4085f..c3421cb17aea2f772a4c201b76fcae07f2ebaab0 100755
--- a/Reconstruction/MuonIdentification/MuidCaloScatteringTools/MuidCaloScatteringTools/MuidCaloMaterialParam.h
+++ b/Reconstruction/MuonIdentification/MuidCaloScatteringTools/MuidCaloScatteringTools/MuidCaloMaterialParam.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////////////////
@@ -13,18 +13,19 @@
  taken from an inner and an outer layer.
 
  Tabulated info taken from a geantino map
-  
+
   @author Konstantinos.Nikolopoulos@cern.ch, Alan.Poppleton@cern.ch
  (c) ATLAS Combined Muon software
 */
 //////////////////////////////////////////////////////////////////////////////
 
 #ifndef MUIDCALOSCATTERINGTOOLS_MUIDCALOMATERIALPARAM_H
-# define MUIDCALOSCATTERINGTOOLS_MUIDCALOMATERIALPARAM_H
+#define MUIDCALOSCATTERINGTOOLS_MUIDCALOMATERIALPARAM_H
 
 //<<<<<< INCLUDES                                                       >>>>>>
 
 #include <vector>
+
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ToolHandle.h"
 #include "MuidInterfaces/IMuidCaloMaterialParam.h"
@@ -32,68 +33,63 @@
 
 //<<<<<< CLASS DECLARATIONS                                             >>>>>>
 
-namespace Rec
-{
+namespace Rec {
 
 class CaloLayer;
-    
-class MuidCaloMaterialParam: public AthAlgTool,
-			     virtual public IMuidCaloMaterialParam
-{
-
-public:
-    MuidCaloMaterialParam (const std::string& type, 
-			   const std::string& name,
-			   const IInterface* parent);
-    ~MuidCaloMaterialParam (void); // destructor
-  
-    StatusCode				initialize();
-    StatusCode				finalize();
+
+class MuidCaloMaterialParam : public AthAlgTool, virtual public IMuidCaloMaterialParam {
+
+  public:
+    MuidCaloMaterialParam(const std::string& type, const std::string& name, const IInterface* parent);
+    ~MuidCaloMaterialParam(void);  // destructor
+
+    StatusCode initialize();
+    StatusCode finalize();
 
     /**IMuidCaloMaterialParam interface:
        return inner/middle/outer surface corresponding to eta value */
-    const Trk::Surface*			innerSurface (double eta) const;
-    const Trk::Surface*			middleSurface (double eta) const;
-    const Trk::Surface*			outerSurface (double eta) const;
- 
+    const Trk::Surface* innerSurface(double eta) const;
+    const Trk::Surface* middleSurface(double eta) const;
+    const Trk::Surface* outerSurface(double eta) const;
+
     /**IMuidCaloMaterialParam interface:
        calorimeter layer radiation thickness corresponding to eta value */
-    double				radiationThickness (double eta) const;
-    
+    double radiationThickness(double eta) const;
+
     /**IMuidCaloMaterialParam interface:
        TrackStateOnSurface for parameters at a scattering surface */
-    const Trk::TrackStateOnSurface*	trackStateOnSurface (
-	const Trk::TrackParameters* parameters) const;
+    const Trk::TrackStateOnSurface* trackStateOnSurface(const Trk::TrackParameters* parameters) const;
 
-private:
+  private:
     // private methods
-    Trk::Surface*		createSurface (double eta, double r, double z, double cotThetaWidth);
-    StatusCode			defineCaloMaterial (void);
-           
+    Trk::Surface* createSurface(double eta, double r, double z, double cotThetaWidth);
+    StatusCode    defineCaloMaterial(void);
+
     // helpers, managers, tools
-    // ToolHandle<Trk::ITrackingVolumeDisplayer>	m_surfaceDisplayTool;
-    ToolHandle<Trk::IGeometryProcessor>		m_surfaceDisplayTool;
+    ToolHandle<Trk::IGeometryProcessor> m_surfaceDisplayTool {
+       this,
+       "SurfaceDisplayTool",
+       "Trk::TrackingVolumeDisplayer/TrackingVolumeDisplayer",
+    };
 
     // configuration
     /** if true (set in jobOptions), use TrackingVolumeDisplayer to produce ROOT output.*/
-    bool					m_produceSurfacesDisplay;
+    bool m_produceSurfacesDisplay;
 
     // data from geantino map - organized at initialize
-    double					m_binSize;
-    std::vector<const CaloLayer*>		m_caloInnerLayers;
-    std::vector<const CaloLayer*>		m_caloOuterLayers;
-    std::vector<const Trk::Surface*>		m_innerBackwardSurfaces;
-    std::vector<const Trk::Surface*>		m_innerForwardSurfaces;
-    std::vector<const Trk::Surface*>		m_middleBackwardSurfaces;
-    std::vector<const Trk::Surface*>		m_middleForwardSurfaces;
-    const unsigned				m_numberBins;
-    std::vector<const Trk::Surface*>		m_outerBackwardSurfaces;
-    std::vector<const Trk::Surface*>		m_outerForwardSurfaces;
-    std::vector<double>				m_radiationThickness;
+    double                           m_binSize;
+    std::vector<const CaloLayer*>    m_caloInnerLayers;
+    std::vector<const CaloLayer*>    m_caloOuterLayers;
+    std::vector<const Trk::Surface*> m_innerBackwardSurfaces;
+    std::vector<const Trk::Surface*> m_innerForwardSurfaces;
+    std::vector<const Trk::Surface*> m_middleBackwardSurfaces;
+    std::vector<const Trk::Surface*> m_middleForwardSurfaces;
+    const unsigned                   m_numberBins;
+    std::vector<const Trk::Surface*> m_outerBackwardSurfaces;
+    std::vector<const Trk::Surface*> m_outerForwardSurfaces;
+    std::vector<double>              m_radiationThickness;
 };
- 
-}	// end of namespace
-
-#endif	// MUIDCALOSCATTERINGTOOLS_MUIDCALOMATERIALPARAM_H
 
+}  // namespace Rec
 
+#endif  // MUIDCALOSCATTERINGTOOLS_MUIDCALOMATERIALPARAM_H
diff --git a/Reconstruction/MuonIdentification/MuidCaloScatteringTools/MuidCaloScatteringTools/MuidCaloTrackStateOnSurface.h b/Reconstruction/MuonIdentification/MuidCaloScatteringTools/MuidCaloScatteringTools/MuidCaloTrackStateOnSurface.h
index e5ba69501f5e74437c42fee75aff70365a294c7a..a52c1da685a76ce1799bbcad757c61a80a040aa0 100755
--- a/Reconstruction/MuonIdentification/MuidCaloScatteringTools/MuidCaloScatteringTools/MuidCaloTrackStateOnSurface.h
+++ b/Reconstruction/MuonIdentification/MuidCaloScatteringTools/MuidCaloScatteringTools/MuidCaloTrackStateOnSurface.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////////////////
@@ -11,7 +11,7 @@
   This tool retrieves the appropriate parametrized scattering centres and
   hybrid (measured + parametrized) energy deposit evaluation
   using the IMuidCaloMaterialParam and IMuidCaloEnergy interfaces
-  
+
    @author Alan.Poppleton@cern.ch
   (c) ATLAS Combined Muon software
 */
@@ -24,92 +24,102 @@
 
 #include "AthenaBaseComps/AthAlgTool.h"
 // For magneticfield
-#include "MagFieldConditions/AtlasFieldCacheCondObj.h"
-#include "MuidInterfaces/IMuidCaloTrackStateOnSurface.h"
+#include <atomic>
+
 #include "GaudiKernel/ServiceHandle.h"
 #include "GaudiKernel/ToolHandle.h"
-#include <atomic>
+#include "MagFieldConditions/AtlasFieldCacheCondObj.h"
+#include "MuidInterfaces/IMuidCaloEnergy.h"
+#include "MuidInterfaces/IMuidCaloMaterialParam.h"
+#include "MuidInterfaces/IMuidCaloTrackStateOnSurface.h"
+#include "TrkExInterfaces/IPropagator.h"
 
 //<<<<<< CLASS DECLARATIONS                                             >>>>>>
 
-namespace Trk
-{
-    class IPropagator;
-    class MagneticFieldProperties;
-}
+namespace Trk {
+class MagneticFieldProperties;
+}  // namespace Trk
+
+namespace Rec {
 
-namespace Rec
-{
 
-class IMuidCaloEnergy;   
-class IMuidCaloMaterialParam;
+class MuidCaloTrackStateOnSurface : public AthAlgTool, virtual public IMuidCaloTrackStateOnSurface {
 
-class MuidCaloTrackStateOnSurface: public AthAlgTool,
-				   virtual public IMuidCaloTrackStateOnSurface
-{
+  public:
+    MuidCaloTrackStateOnSurface(const std::string& type, const std::string& name, const IInterface* parent);
+    ~MuidCaloTrackStateOnSurface(void);  // destructor
 
-public:
-    MuidCaloTrackStateOnSurface (const std::string&	type, 
-				 const std::string&	name,
-				 const IInterface*	parent);
-    ~MuidCaloTrackStateOnSurface (void); // destructor
-  
-    StatusCode				initialize();
-    StatusCode				finalize();
+    StatusCode initialize();
+    StatusCode finalize();
 
     /**IMuidCaloTrackStateOnSurface interface:
        to get the 3 scattering and energy deposit TSOS'es representing the calorimeter.
        The input TrackParameters may be anywhere along the track. */
-    std::vector<const Trk::TrackStateOnSurface*>* caloTSOS(
-	const Trk::TrackParameters& parameters) const;
-    
+    std::vector<const Trk::TrackStateOnSurface*>* caloTSOS(const Trk::TrackParameters& parameters) const;
+
     /**IMuidCaloTrackStateOnSurface interface:
        to get individually the scattering TSOS'es representing the calorimeter.
        The input TrackParameters may be anywhere along the track. */
-    const Trk::TrackStateOnSurface*	innerTSOS (const Trk::TrackParameters& parameters) const;
-    const Trk::TrackStateOnSurface*	outerTSOS (const Trk::TrackParameters& parameters) const;
-    
+    const Trk::TrackStateOnSurface* innerTSOS(const Trk::TrackParameters& parameters) const;
+    const Trk::TrackStateOnSurface* outerTSOS(const Trk::TrackParameters& parameters) const;
+
     /**IMuidCaloTrackStateOnSurface interface:
        to get the energy deposit TSOS representing the calorimeter.
        The input TrackParameters may be anywhere along the track, but when the inner
        or outer parameters are provided they must be expressed at the appropriate surface.
        The return TSOS surface is at the material midpoint. */
-    const Trk::TrackStateOnSurface*	middleTSOS(const Trk::TrackParameters& middleParameters,
-						   const Trk::TrackParameters* innerParameters,
-						   const Trk::TrackParameters* outerParameters) const;
-    
-private:
+    const Trk::TrackStateOnSurface* middleTSOS(const Trk::TrackParameters& middleParameters,
+                                               const Trk::TrackParameters* innerParameters,
+                                               const Trk::TrackParameters* outerParameters) const;
+
+  private:
     // private methods
-    const Trk::TrackParameters*		innerParameters  (const Trk::TrackParameters& parameters) const;
-    const Trk::TrackParameters*		middleParameters (const Trk::TrackParameters& parameters) const;
-    const Trk::TrackParameters*		outerParameters  (const Trk::TrackParameters& parameters) const;
-    bool				useEtaPhiFromDirection (
-	const Trk::TrackParameters& parameters) const;
-    
+    const Trk::TrackParameters* innerParameters(const Trk::TrackParameters& parameters) const;
+    const Trk::TrackParameters* middleParameters(const Trk::TrackParameters& parameters) const;
+    const Trk::TrackParameters* outerParameters(const Trk::TrackParameters& parameters) const;
+    bool                        useEtaPhiFromDirection(const Trk::TrackParameters& parameters) const;
+
     // helpers, managers, tools
-    ToolHandle<Rec::IMuidCaloEnergy>		m_caloEnergyDeposit;
-    ToolHandle<Rec::IMuidCaloEnergy>		m_caloEnergyParam;
-    ToolHandle<Rec::IMuidCaloMaterialParam>	m_caloMaterialParam;
-    Trk::MagneticFieldProperties*		m_magFieldProperties;
-    ToolHandle<Trk::IPropagator>		m_propagator;
+    ToolHandle<Rec::IMuidCaloEnergy> m_caloEnergyDeposit{
+        this,
+        "CaloEnergyDeposit",
+        "Rec::MuidCaloEnergyTool/MuidCaloEnergyTool",
+    };
+    ToolHandle<Rec::IMuidCaloEnergy> m_caloEnergyParam{
+        this,
+        "CaloEnergyParam",
+        "Rec::MuidCaloEnergyTool/MuidCaloEnergyToolParam",
+    };
+    ToolHandle<Rec::IMuidCaloMaterialParam> m_caloMaterialParam{
+        this,
+        "CaloMaterialParam",
+        "Rec::MuidCaloMaterialParam/MuidCaloMaterialParam",
+    };
+    ToolHandle<Trk::IPropagator> m_propagator{
+        this,
+        "Propagator",
+        "Trk::IntersectorWrapper/IntersectorWrapper",
+    };
+
+    Trk::MagneticFieldProperties* m_magFieldProperties;
+
     // Read handle for conditions object to get the field cache
-    SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"};
+    SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCacheCondObjInputKey{
+        this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"};
 
     // configurable cut-off values
-    double					m_minCaloRadius;
-    double					m_minRemainingEnergy;
-    double					m_paramPtCut;
-    
+    double m_minCaloRadius;
+    double m_minRemainingEnergy;
+    double m_paramPtCut;
+
     // counters (for finalize)
-    mutable std::atomic_int			m_count;
-    mutable std::atomic_int			m_countArbitrarySolution;
-    mutable std::atomic_int			m_countCompleteFailure;
-    mutable std::atomic_int			m_countInnerFailure;
-    mutable std::atomic_int			m_countOuterFailure;
+    mutable std::atomic_int m_count;
+    mutable std::atomic_int m_countArbitrarySolution;
+    mutable std::atomic_int m_countCompleteFailure;
+    mutable std::atomic_int m_countInnerFailure;
+    mutable std::atomic_int m_countOuterFailure;
 };
 
-}	// end of namespace
-
-#endif	// MUIDCALOSCATTERINGTOOLS_MUIDCALOTRACKSTATEONSURFACE_H
-
+}  // namespace Rec
 
+#endif  // MUIDCALOSCATTERINGTOOLS_MUIDCALOTRACKSTATEONSURFACE_H
diff --git a/Reconstruction/MuonIdentification/MuidCaloScatteringTools/MuidCaloScatteringTools/MuidMaterialEffectsOnTrackProvider.h b/Reconstruction/MuonIdentification/MuidCaloScatteringTools/MuidCaloScatteringTools/MuidMaterialEffectsOnTrackProvider.h
index c2a7ab47be2e9db669aa0320029f7eba6c4616bd..d75fa583793dda3c3843258e9e88a474dd97b73e 100644
--- a/Reconstruction/MuonIdentification/MuidCaloScatteringTools/MuidCaloScatteringTools/MuidMaterialEffectsOnTrackProvider.h
+++ b/Reconstruction/MuonIdentification/MuidCaloScatteringTools/MuidCaloScatteringTools/MuidMaterialEffectsOnTrackProvider.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -11,57 +11,64 @@
 
 // Gaudi
 #include "AthenaBaseComps/AthAlgTool.h"
-#include "TrkDetDescrInterfaces/IMaterialEffectsOnTrackProvider.h"
-#include "TrkSurfaces/PlaneSurface.h"
-
-#include "TrkParameters/TrackParameters.h"
+#include "GaudiKernel/ToolHandle.h"
 #include "MuidInterfaces/IMuidCaloTrackStateOnSurface.h"
+#include "TrkDetDescrInterfaces/IMaterialEffectsOnTrackProvider.h"
 #include "TrkExInterfaces/IMultipleScatteringUpdator.h"
-
-#include "GaudiKernel/ToolHandle.h"
+#include "TrkParameters/TrackParameters.h"
+#include "TrkSurfaces/PlaneSurface.h"
 
 namespace Trk {
-    class Surface;
+class Surface;
 }
 
-  /** @class MuidMaterialEffectsOnTrackProvider
-      
-  @author thijs.cornelissen@cern.ch
-  */
-namespace Rec{  
-  class MuidMaterialEffectsOnTrackProvider : public AthAlgTool,
-    virtual public Trk::IMaterialEffectsOnTrackProvider {
-      
+/** @class MuidMaterialEffectsOnTrackProvider
+
+@author thijs.cornelissen@cern.ch
+*/
+namespace Rec {
+class MuidMaterialEffectsOnTrackProvider : public AthAlgTool, virtual public Trk::IMaterialEffectsOnTrackProvider {
+
   public:
-      
-      /** AlgTool like constructor */
-      MuidMaterialEffectsOnTrackProvider(const std::string&,const std::string&,const IInterface*);
-      
-      /**Virtual destructor*/
-      virtual ~MuidMaterialEffectsOnTrackProvider();
-      
-      /** AlgTool initailize method.*/
-      StatusCode initialize();
-      /** AlgTool finalize method */
-      StatusCode finalize();
-      
-      /** return all MaterialLayers associated to this track **/
-      std::vector< Trk::MaterialEffectsOnTrack > extrapolationSurfacesAndEffects(const Trk::TrackingVolume& ,
-														  const Trk::IPropagator& ,
-														  const Trk::TrackParameters& ,
-														  const Trk::Surface& ,
-														  Trk::PropDirection ,
-									
-				  Trk::ParticleHypothesis ) const;
-  private:      
-      
-     ToolHandle< Rec::IMuidCaloTrackStateOnSurface > m_calotsos;
-     ToolHandle< Rec::IMuidCaloTrackStateOnSurface > m_calotsosparam;
-     ToolHandle< Trk::IMultipleScatteringUpdator > m_scattool;
-     
-     
-     bool m_cosmics;
+    /** AlgTool like constructor */
+    MuidMaterialEffectsOnTrackProvider(const std::string&, const std::string&, const IInterface*);
+
+    /**Virtual destructor*/
+    virtual ~MuidMaterialEffectsOnTrackProvider();
+
+    /** AlgTool initailize method.*/
+    StatusCode initialize();
+    /** AlgTool finalize method */
+    StatusCode finalize();
+
+    /** return all MaterialLayers associated to this track **/
+    std::vector<Trk::MaterialEffectsOnTrack> extrapolationSurfacesAndEffects(const Trk::TrackingVolume&,
+                                                                             const Trk::IPropagator&,
+                                                                             const Trk::TrackParameters&,
+                                                                             const Trk::Surface&, Trk::PropDirection,
+
+                                                                             Trk::ParticleHypothesis) const;
+
+  private:
+    ToolHandle<Rec::IMuidCaloTrackStateOnSurface> m_calotsos{
+        this,
+        "TSOSTool",
+        "Rec::MuidCaloTrackStateOnSurface/MuidCaloTrackStateOnSurface",
+    };
+    ToolHandle<Rec::IMuidCaloTrackStateOnSurface> m_calotsosparam{
+        this,
+        "TSOSToolParam",
+        "",
+    };
+    ToolHandle<Trk::IMultipleScatteringUpdator> m_scattool{
+        this,
+        "MultipleScatteringTool",
+        "Trk::MultipleScatteringUpdator/AtlasMultipleScatteringUpdator",
     };
-  } // end namespace
 
-#endif // MuidMaterialEffectsOnTrackProvider_H
+
+    bool m_cosmics;
+};
+}  // namespace Rec
+
+#endif  // MuidMaterialEffectsOnTrackProvider_H
diff --git a/Reconstruction/MuonIdentification/MuidCaloScatteringTools/src/MuidCaloMaterialParam.cxx b/Reconstruction/MuonIdentification/MuidCaloScatteringTools/src/MuidCaloMaterialParam.cxx
index 608b90f3a496ec2283fede9fff5c9fd955afe033..23e030f7e57e94b33b02e08048c466d95d4aae9a 100755
--- a/Reconstruction/MuonIdentification/MuidCaloScatteringTools/src/MuidCaloMaterialParam.cxx
+++ b/Reconstruction/MuonIdentification/MuidCaloScatteringTools/src/MuidCaloMaterialParam.cxx
@@ -7,7 +7,7 @@
 //  AlgTool containing a calorimeter material parametrization.
 //  This parametrization represents the Coulomb scattering between the InDet
 //  and MuonSpectrometer entrance.
-// 
+//
 //  Parametrized positions and thicknesses (CaloLayers) are stored
 //  as a function of eta assuming any track will 'see' 2 scattering centres,
 //  taken from an inner and an outer layer.
@@ -20,12 +20,14 @@
 
 //<<<<<< INCLUDES                                                       >>>>>>
 
+#include "MuidCaloScatteringTools/MuidCaloMaterialParam.h"
+
 #include <cmath>
 #include <iomanip>
 #include <iostream>
+
 #include "GaudiKernel/SystemOfUnits.h"
 #include "GeoPrimitives/GeoPrimitives.h"
-#include "MuidCaloScatteringTools/MuidCaloMaterialParam.h"
 #include "MuidEvent/CaloLayer.h"
 #include "TrkMaterialOnTrack/MaterialEffectsOnTrack.h"
 #include "TrkSurfaces/CylinderSurface.h"
@@ -35,53 +37,35 @@
 
 //<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>
 
-namespace Rec
-{
- 
-MuidCaloMaterialParam::MuidCaloMaterialParam (const std::string&	type,
-					      const std::string&	name, 
-					      const IInterface*		parent)
-    :	AthAlgTool			(type, name, parent),
-	m_surfaceDisplayTool		("Trk::TrackingVolumeDisplayer/TrackingVolumeDisplayer"),
-	m_produceSurfacesDisplay	(false),
-	m_binSize                       (1),
-	m_numberBins			(277)
+namespace Rec {
+
+MuidCaloMaterialParam::MuidCaloMaterialParam(const std::string& type, const std::string& name, const IInterface* parent)
+    : AthAlgTool(type, name, parent), m_produceSurfacesDisplay(false), m_binSize(1), m_numberBins(277)
 {
     declareInterface<IMuidCaloMaterialParam>(this);
-    declareProperty("SurfaceDisplayTool",	m_surfaceDisplayTool);
-    declareProperty("ProduceSurfacesFile",	m_produceSurfacesDisplay);
+    declareProperty("ProduceSurfacesFile", m_produceSurfacesDisplay);
 }
 
-MuidCaloMaterialParam::~MuidCaloMaterialParam (void) 
-{}
+MuidCaloMaterialParam::~MuidCaloMaterialParam(void) {}
 
 //<<<<<< PUBLIC MEMBER FUNCTION DEFINITIONS                             >>>>>>
 
 StatusCode
 MuidCaloMaterialParam::initialize()
 {
-    ATH_MSG_INFO( "Initializing MuidCaloMaterialParam" );
+    ATH_MSG_INFO("Initializing MuidCaloMaterialParam");
 
     // get the display tool
-    if (m_produceSurfacesDisplay)	
-    {
-	if (m_surfaceDisplayTool.retrieve().isFailure())
-	{
-	    ATH_MSG_FATAL( "Failed to retrieve tool " << m_surfaceDisplayTool );
-	    return StatusCode::FAILURE;
-	}
-	else
-	{
-	    ATH_MSG_INFO( "Retrieved tool " << m_surfaceDisplayTool );
-	}
+    if (m_produceSurfacesDisplay) {
+        ATH_CHECK(m_surfaceDisplayTool.retrieve());
+        ATH_MSG_INFO("Retrieved tool " << m_surfaceDisplayTool);
+    } else {
+        m_surfaceDisplayTool.disable();
     }
-    else{
-      m_surfaceDisplayTool.disable();
-    }
-	
+
     // setup up CaloMaterial
-    m_caloInnerLayers.reserve(2*m_numberBins);
-    m_caloOuterLayers.reserve(2*m_numberBins);
+    m_caloInnerLayers.reserve(2 * m_numberBins);
+    m_caloOuterLayers.reserve(2 * m_numberBins);
     m_innerBackwardSurfaces.reserve(m_numberBins);
     m_innerForwardSurfaces.reserve(m_numberBins);
     m_middleBackwardSurfaces.reserve(m_numberBins);
@@ -89,25 +73,21 @@ MuidCaloMaterialParam::initialize()
     m_outerBackwardSurfaces.reserve(m_numberBins);
     m_outerForwardSurfaces.reserve(m_numberBins);
     m_radiationThickness.reserve(m_numberBins);
-    
-    if (StatusCode::SUCCESS != defineCaloMaterial())
-    {
-	ATH_MSG_FATAL( " inconsistent eta binning - check setup " );
-	return StatusCode::FAILURE;
+
+    if (StatusCode::SUCCESS != defineCaloMaterial()) {
+        ATH_MSG_FATAL(" inconsistent eta binning - check setup ");
+        return StatusCode::FAILURE;
     }
 
-    if (msgLvl(MSG::DEBUG))
-    {
-	for (std::vector<const CaloLayer*>::const_iterator lay = m_caloOuterLayers.begin();
-	     lay != m_caloOuterLayers.end();
-	     ++lay)
-	{    
-	    //if((**lay).Zmax()>0.)
-	    if ((**lay).Z()>0.)
-	    {
-		(**lay).print();
-	    }
-	}	    
+    if (msgLvl(MSG::DEBUG)) {
+        for (std::vector<const CaloLayer*>::const_iterator lay = m_caloOuterLayers.begin();
+             lay != m_caloOuterLayers.end(); ++lay)
+        {
+            // if((**lay).Zmax()>0.)
+            if ((**lay).Z() > 0.) {
+                (**lay).print();
+            }
+        }
     }
 
     return StatusCode::SUCCESS;
@@ -116,346 +96,377 @@ MuidCaloMaterialParam::initialize()
 StatusCode
 MuidCaloMaterialParam::finalize()
 {
-    ATH_MSG_DEBUG( "Finalizing MuidCaloMaterialParam" );
-    
+    ATH_MSG_DEBUG("Finalizing MuidCaloMaterialParam");
+
     for (std::vector<const Trk::Surface*>::iterator s = m_innerBackwardSurfaces.begin();
-	 s != m_innerBackwardSurfaces.end();
-	 ++s)
-	delete *s;
+         s != m_innerBackwardSurfaces.end(); ++s)
+        delete *s;
     for (std::vector<const Trk::Surface*>::iterator s = m_innerForwardSurfaces.begin();
-	 s != m_innerForwardSurfaces.end();
-	 ++s)
-	delete *s;
+         s != m_innerForwardSurfaces.end(); ++s)
+        delete *s;
     for (std::vector<const Trk::Surface*>::iterator s = m_middleBackwardSurfaces.begin();
-	 s != m_middleBackwardSurfaces.end();
-	 ++s)
-	delete *s;
+         s != m_middleBackwardSurfaces.end(); ++s)
+        delete *s;
     for (std::vector<const Trk::Surface*>::iterator s = m_middleForwardSurfaces.begin();
-	 s != m_middleForwardSurfaces.end();
-	 ++s)
-	delete *s;
+         s != m_middleForwardSurfaces.end(); ++s)
+        delete *s;
     for (std::vector<const Trk::Surface*>::iterator s = m_outerBackwardSurfaces.begin();
-	 s != m_outerBackwardSurfaces.end();
-	 ++s)
-	delete *s;
+         s != m_outerBackwardSurfaces.end(); ++s)
+        delete *s;
     for (std::vector<const Trk::Surface*>::iterator s = m_outerForwardSurfaces.begin();
-	 s != m_outerForwardSurfaces.end();
-	 ++s)
-	delete *s;
-
-    for (std::vector<const CaloLayer*>::const_iterator lay = m_caloInnerLayers.begin();
-	 lay != m_caloInnerLayers.end();
-	 ++lay)
-	delete *lay;
-    for (std::vector<const CaloLayer*>::const_iterator lay = m_caloOuterLayers.begin();
-	 lay != m_caloOuterLayers.end();
-	 ++lay)
-	delete *lay;
-    
+         s != m_outerForwardSurfaces.end(); ++s)
+        delete *s;
+
+    for (std::vector<const CaloLayer*>::const_iterator lay = m_caloInnerLayers.begin(); lay != m_caloInnerLayers.end();
+         ++lay)
+        delete *lay;
+    for (std::vector<const CaloLayer*>::const_iterator lay = m_caloOuterLayers.begin(); lay != m_caloOuterLayers.end();
+         ++lay)
+        delete *lay;
+
     return StatusCode::SUCCESS;
 }
 
 const Trk::Surface*
-MuidCaloMaterialParam::innerSurface (double eta) const
+MuidCaloMaterialParam::innerSurface(double eta) const
 {
-    if (eta < 0.)
-    {
-	unsigned bin = static_cast<unsigned>(-eta/m_binSize);
-	if (bin >= m_numberBins) bin = m_numberBins - 1;
-	
-	ATH_MSG_VERBOSE( std::setiosflags(std::ios::fixed)
-			 << " innerSurface:  eta " << std::setw(7) << std::setprecision(3) << eta
-			 << "   backwards bin " << bin );
-	return m_innerBackwardSurfaces[bin];
+    if (eta < 0.) {
+        unsigned bin = static_cast<unsigned>(-eta / m_binSize);
+        if (bin >= m_numberBins) bin = m_numberBins - 1;
+
+        ATH_MSG_VERBOSE(std::setiosflags(std::ios::fixed) << " innerSurface:  eta " << std::setw(7)
+                                                          << std::setprecision(3) << eta << "   backwards bin " << bin);
+        return m_innerBackwardSurfaces[bin];
+    } else if (eta > 0.) {
+        unsigned bin = static_cast<unsigned>(eta / m_binSize);
+        if (bin >= m_numberBins) bin = m_numberBins - 1;
+
+        ATH_MSG_VERBOSE(std::setiosflags(std::ios::fixed) << " innerSurface:  eta " << std::setw(7)
+                                                          << std::setprecision(3) << eta << "   forward bin " << bin);
+        return m_innerForwardSurfaces[bin];
     }
-    else if (eta > 0.)
-    {
-	unsigned bin = static_cast<unsigned>(eta/m_binSize);
-	if (bin >= m_numberBins) bin = m_numberBins - 1;
-	
-	ATH_MSG_VERBOSE( std::setiosflags(std::ios::fixed)
-			 << " innerSurface:  eta " << std::setw(7) << std::setprecision(3) << eta
-			 << "   forward bin " << bin );
-	return m_innerForwardSurfaces[bin];
-    }
-    
-    ATH_MSG_VERBOSE( std::setiosflags(std::ios::fixed)
-		     << " innerSurface:  eta " << std::setw(7) << std::setprecision(3) << eta
-		     << "   forward bin 0" );
-    
+
+    ATH_MSG_VERBOSE(std::setiosflags(std::ios::fixed)
+                    << " innerSurface:  eta " << std::setw(7) << std::setprecision(3) << eta << "   forward bin 0");
+
     return m_innerForwardSurfaces[0];
 }
 
 const Trk::Surface*
-MuidCaloMaterialParam::middleSurface (double eta) const
+MuidCaloMaterialParam::middleSurface(double eta) const
 {
-    if (eta < 0.)
-    {
-	unsigned bin = static_cast<unsigned>(-eta/m_binSize);
-	if (bin >= m_numberBins) bin = m_numberBins - 1;
-	
-	ATH_MSG_VERBOSE( std::setiosflags(std::ios::fixed)
-			 << " middleSurface:  eta " << std::setw(7) << std::setprecision(3) << eta
-			 << "   backwards bin " << bin );
-	return m_middleBackwardSurfaces[bin];
-    }
-    else if (eta > 0.)
-    {
-	unsigned bin = static_cast<unsigned>(eta/m_binSize);
-	if (bin >= m_numberBins) bin = m_numberBins - 1;
-	
-	ATH_MSG_VERBOSE( std::setiosflags(std::ios::fixed)
-			 << " middleSurface:  eta " << std::setw(7) << std::setprecision(3) << eta
-			 << "   forward bin " << bin );
-	return m_middleForwardSurfaces[bin];
+    if (eta < 0.) {
+        unsigned bin = static_cast<unsigned>(-eta / m_binSize);
+        if (bin >= m_numberBins) bin = m_numberBins - 1;
+
+        ATH_MSG_VERBOSE(std::setiosflags(std::ios::fixed) << " middleSurface:  eta " << std::setw(7)
+                                                          << std::setprecision(3) << eta << "   backwards bin " << bin);
+        return m_middleBackwardSurfaces[bin];
+    } else if (eta > 0.) {
+        unsigned bin = static_cast<unsigned>(eta / m_binSize);
+        if (bin >= m_numberBins) bin = m_numberBins - 1;
+
+        ATH_MSG_VERBOSE(std::setiosflags(std::ios::fixed) << " middleSurface:  eta " << std::setw(7)
+                                                          << std::setprecision(3) << eta << "   forward bin " << bin);
+        return m_middleForwardSurfaces[bin];
     }
-    
-    
-	ATH_MSG_VERBOSE( std::setiosflags(std::ios::fixed)
-			  << " middleSurface:  eta " << std::setw(7) << std::setprecision(3) << eta
-			  << "   forward bin 0" );
-    
+
+
+    ATH_MSG_VERBOSE(std::setiosflags(std::ios::fixed)
+                    << " middleSurface:  eta " << std::setw(7) << std::setprecision(3) << eta << "   forward bin 0");
+
     return m_middleForwardSurfaces[0];
 }
 
 const Trk::Surface*
-MuidCaloMaterialParam::outerSurface (double eta) const
+MuidCaloMaterialParam::outerSurface(double eta) const
 {
-    if (eta < 0.)
-    {
-	unsigned bin = static_cast<unsigned>(-eta/m_binSize);
-	if (bin >= m_numberBins) bin = m_numberBins - 1;
-	
-	ATH_MSG_VERBOSE( std::setiosflags(std::ios::fixed)
-			 << " outerSurface:  eta " << std::setw(7) << std::setprecision(3) << eta
-			 << "   backwards bin " << bin );
-	return m_outerBackwardSurfaces[bin];
-    }
-    else if (eta > 0.)
-    {
-	unsigned bin = static_cast<unsigned>(eta/m_binSize);
-	if (bin >= m_numberBins) bin = m_numberBins - 1;
-	
-	ATH_MSG_VERBOSE( std::setiosflags(std::ios::fixed)
-			 << " outerSurface:  eta " << std::setw(7) << std::setprecision(3) << eta
-			 << "   forward bin " << bin );
-	return m_outerForwardSurfaces[bin];
+    if (eta < 0.) {
+        unsigned bin = static_cast<unsigned>(-eta / m_binSize);
+        if (bin >= m_numberBins) bin = m_numberBins - 1;
+
+        ATH_MSG_VERBOSE(std::setiosflags(std::ios::fixed) << " outerSurface:  eta " << std::setw(7)
+                                                          << std::setprecision(3) << eta << "   backwards bin " << bin);
+        return m_outerBackwardSurfaces[bin];
+    } else if (eta > 0.) {
+        unsigned bin = static_cast<unsigned>(eta / m_binSize);
+        if (bin >= m_numberBins) bin = m_numberBins - 1;
+
+        ATH_MSG_VERBOSE(std::setiosflags(std::ios::fixed) << " outerSurface:  eta " << std::setw(7)
+                                                          << std::setprecision(3) << eta << "   forward bin " << bin);
+        return m_outerForwardSurfaces[bin];
     }
 
-    ATH_MSG_VERBOSE( std::setiosflags(std::ios::fixed)
-		     << " outerSurface:  eta " << std::setw(7) << std::setprecision(3) << eta
-		     << "   forward bin 0" );
-    
+    ATH_MSG_VERBOSE(std::setiosflags(std::ios::fixed)
+                    << " outerSurface:  eta " << std::setw(7) << std::setprecision(3) << eta << "   forward bin 0");
+
     return m_outerForwardSurfaces[0];
 }
 
 double
-MuidCaloMaterialParam::radiationThickness (double eta) const
+MuidCaloMaterialParam::radiationThickness(double eta) const
 {
-    if (eta < 0.)
-    {
-	unsigned bin = static_cast<unsigned>(-eta/m_binSize);
-	if (bin >= m_numberBins) bin = m_numberBins - 1;
+    if (eta < 0.) {
+        unsigned bin = static_cast<unsigned>(-eta / m_binSize);
+        if (bin >= m_numberBins) bin = m_numberBins - 1;
 
-	return m_radiationThickness[bin];
-    }
-    else if (eta > 0.)
-    {
-	unsigned bin = static_cast<unsigned>(eta/m_binSize);
-	if (bin >= m_numberBins) bin = m_numberBins - 1;
+        return m_radiationThickness[bin];
+    } else if (eta > 0.) {
+        unsigned bin = static_cast<unsigned>(eta / m_binSize);
+        if (bin >= m_numberBins) bin = m_numberBins - 1;
 
-	return m_radiationThickness[bin];
+        return m_radiationThickness[bin];
     }
     return m_radiationThickness[0];
 }
 
 const Trk::TrackStateOnSurface*
-MuidCaloMaterialParam::trackStateOnSurface (const Trk::TrackParameters* trackParameters) const
+MuidCaloMaterialParam::trackStateOnSurface(const Trk::TrackParameters* trackParameters) const
 {
     // find radiationThickness corresponding to surface
     // FIXME: use Surface* look-up method for execution speed
-    double thickness = radiationThickness(trackParameters->position().eta());
-    const Trk::MaterialEffectsBase*	materialEffects =
-	new const Trk::MaterialEffectsOnTrack(thickness,trackParameters->associatedSurface());
-    
+    double                          thickness = radiationThickness(trackParameters->position().eta());
+    const Trk::MaterialEffectsBase* materialEffects =
+        new const Trk::MaterialEffectsOnTrack(thickness, trackParameters->associatedSurface());
+
     // create TSOS
-    const Trk::FitQualityOnSurface*	fitQoS		= 0;
-    const Trk::MeasurementBase*		measurementBase	= 0;
+    const Trk::FitQualityOnSurface*                                         fitQoS          = 0;
+    const Trk::MeasurementBase*                                             measurementBase = 0;
     std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> pattern(0);
     pattern.set(Trk::TrackStateOnSurface::Scatterer);
 
-    ATH_MSG_VERBOSE( " trackStateOnSurface::Scatterer with radiationThickness " << thickness );
-    
-    return new const Trk::TrackStateOnSurface(measurementBase,
-					      trackParameters,
-					      fitQoS,
-					      materialEffects,
-					      pattern);
+    ATH_MSG_VERBOSE(" trackStateOnSurface::Scatterer with radiationThickness " << thickness);
+
+    return new const Trk::TrackStateOnSurface(measurementBase, trackParameters, fitQoS, materialEffects, pattern);
 }
 
 //<<<<<< PRIVATE MEMBER FUNCTION DEFINITIONS                            >>>>>>
 
 Trk::Surface*
-MuidCaloMaterialParam::createSurface (double eta, double r, double z, double cotThetaWidth)
+MuidCaloMaterialParam::createSurface(double eta, double r, double z, double cotThetaWidth)
 {
-    Amg::Transform3D* transform		= new Amg::Transform3D;
+    Amg::Transform3D* transform = new Amg::Transform3D;
     transform->setIdentity();
-    (*transform)			= Amg::Translation3D(0.,0.,z);
-    double halfZLength			= cotThetaWidth*r;
-    if (std::abs(eta) < 1.4)
-    {
-	Trk::CylinderSurface* surf	= new Trk::CylinderSurface(transform,r,halfZLength);
-	if (m_produceSurfacesDisplay) m_surfaceDisplayTool->process(*surf).ignore();
-	return surf;
-    }
-    else
-    {
-	double halfRLength		= halfZLength*r/std::abs(z);
-	Trk::DiscSurface* surf = new Trk::DiscSurface(transform, r-halfRLength, r+halfRLength);
-	if (m_produceSurfacesDisplay) m_surfaceDisplayTool->process(*surf).ignore();
-	return surf;
+    (*transform)       = Amg::Translation3D(0., 0., z);
+    double halfZLength = cotThetaWidth * r;
+    if (std::abs(eta) < 1.4) {
+        Trk::CylinderSurface* surf = new Trk::CylinderSurface(transform, r, halfZLength);
+        if (m_produceSurfacesDisplay) m_surfaceDisplayTool->process(*surf).ignore();
+        return surf;
+    } else {
+        double            halfRLength = halfZLength * r / std::abs(z);
+        Trk::DiscSurface* surf        = new Trk::DiscSurface(transform, r - halfRLength, r + halfRLength);
+        if (m_produceSurfacesDisplay) m_surfaceDisplayTool->process(*surf).ignore();
+        return surf;
     }
 }
 
 StatusCode
-MuidCaloMaterialParam::defineCaloMaterial (void)
+MuidCaloMaterialParam::defineCaloMaterial(void)
 {
     // careful - need const int declaration for array => check consistency
-    const int N	= 277;
+    const int N = 277;
     if (static_cast<int>(m_numberBins) != N) return StatusCode::FAILURE;
-    
-    // In meters... be careful!!!
-    //const double mean[N] = {2.90771,2.78248,2.83172,2.7975,2.76139,2.88316,2.83738,2.81438,2.83947,2.87006,2.8278,2.85738,2.86536,2.94242,2.83682,2.96257,2.96406,2.86074,2.89693,2.83767,2.85071,2.99601,3.01353,2.89679,2.90693,2.93785,2.93202,2.93902,2.95558,2.91682,2.96795,3.07245,2.99349,2.98052,3.11216,3.02759,3.12314,2.99859,3.14099,3.04129,3.17957,3.07913,3.20328,3.11009,3.12813,3.24812,3.26814,3.17714,3.16095,3.3125,3.32224,3.19366,3.21848,3.21796,3.25126,3.268,3.31347,3.42457,3.29278,3.33556,3.3819,3.39939,3.51691,3.36272,3.37978,3.39153,3.38534,3.50773,3.61067,3.30092,3.5418,3.49208,3.53835,3.53299,3.60777,3.32772,3.38532,3.48208,3.54515,3.77164,3.71523,3.91961,3.80365,3.84777,3.88416,4.06013,4.1111,3.94053,3.9722,3.96949,4.03478,4.09423,4.14198,4.38723,4.28485,4.33281,4.3333,4.41784,4.43311,4.45871,4.54202,4.64106,4.69047,4.65375,4.77979,4.78705,4.82244,4.883,4.89827,4.94015,4.92729,4.97583,4.97669,4.99448,5.25401,5.29072,5.10841,5.32148,5.22758,5.26328,5.28108,5.49924,5.49748,5.18736,5.18277,5.4169,5.31641,5.33159,5.20546,5.21829,5.21831,5.24387,5.25622,5.26771,5.29139,5.31036,5.33198,5.34383,5.34278,5.33719,5.34692,5.34394,5.34866,5.35532,5.38633,5.35792,5.40507,5.44075,5.43697,5.36688,5.3615,5.34395,5.351,5.33692,5.40554,5.32767,5.30937,5.27858,5.24888,5.22321,5.18993,5.16593,5.15314,5.19365,5.10601,5.09906,5.14761,5.11907,5.09005,5.08759,5.12649,5.09114,5.10094,5.11952,5.14246,5.15773,5.20285,5.23313,5.26284,5.29047,5.31104,5.31609,5.34698,5.32669,5.32644,5.33017,5.32103,5.3161,5.30679,5.29896,5.28471,5.29577,5.28692,5.28526,5.28018,5.25654,5.27276,5.26505,5.25626,5.25022,5.22271,5.23219,5.24233,5.23496,5.22445,5.22157,5.22442,5.21315,5.19474,5.20876,5.20789,5.18328,5.19939,5.19362,5.1882,5.17646,5.18578,5.21858,5.30511,5.28661,5.28584,5.3002,5.29541,5.28864,5.30157,5.28195,5.29587,5.28504,5.29397,5.29198,5.28954,5.28545,5.28473,5.28091,5.27896,5.281,5.28209,5.27643,5.27176,5.28034,5.26778,5.26428,5.27236,5.26271,5.25728,5.20309,5.26363,5.25403,5.26598,5.27713,5.2639,5.34616,5.34954,5.34928,5.34872,5.34628,5.34574,5.3471,5.35188,5.34754,5.34501,5.34445,5.34497,5.34499,5.34479,5.33511,5.34532,5.33912,5.3364,5.34464,5.34311,5.27807,5.31777,5.3388,5.33045,5.32491,5.33117,5.33274};
-
-    const double mean[N] = {2.90896,2.85532,2.83093,2.8064,2.76147,2.77842,2.84819,2.85462,2.84207,2.8698,2.85196,2.85928,2.86565,2.85887,2.86074,2.86888,2.87614,2.88714,2.89461,2.88509,2.89893,2.90348,2.9149,2.92062,2.93808,2.93909,2.95316,2.96446,2.95808,2.9744,2.98252,2.99579,3.0031,3.00655,3.01533,3.02955,3.0375,3.04185,3.04363,3.06828,3.07989,3.08877,3.10764,3.11947,3.14111,3.14608,3.16545,3.1774,3.19129,3.20832,3.21966,3.2294,3.2477,3.26422,3.28213,3.29407,3.31355,3.31759,3.33572,3.36416,3.38337,3.40047,3.42178,3.44093,3.46112,3.469,3.48594,3.50981,3.49446,3.48858,3.47374,3.5025,3.53872,3.53273,3.47625,3.44053,3.44348,3.49941,3.54464,3.60332,3.71618,3.75569,3.80481,3.84988,3.88482,3.90896,3.93518,3.96212,3.98705,4.03085,4.0863,4.1386,4.18874,4.24235,4.28526,4.33191,4.37922,4.42264,4.47627,4.52819,4.58994,4.64149,4.69026,4.74336,4.78171,4.81408,4.84981,4.88344,4.9096,4.94122,4.96842,4.99079,5.02283,5.06858,5.08828,5.12193,5.15831,5.1959,5.22796,5.26302,5.28034,5.31236,5.30035,5.28938,5.30971,5.30201,5.3224,5.33088,5.27099,5.21831,5.23592,5.24828,5.26303,5.26884,5.29259,5.30454,5.32996,5.34636,5.34636,5.36077,5.36379,5.3704,5.37932,5.38896,5.39967,5.40373,5.41283,5.44188,5.42873,5.43097,5.4239,5.40874,5.41333,5.40596,5.39171,5.37567,5.35638,5.31926,5.29116,5.26111,5.23343,5.20337,5.17801,5.15636,5.14166,5.16448,5.16522,5.13663,5.11057,5.09843,5.14826,5.11023,5.11505,5.13523,5.15454,5.17912,5.21404,5.246,5.27176,5.29481,5.31911,5.33475,5.35133,5.34602,5.33701,5.3328,5.32425,5.32026,5.31533,5.31104,5.30473,5.30016,5.29413,5.28658,5.28047,5.27475,5.2677,5.26156,5.25584,5.24831,5.24262,5.23702,5.23091,5.22422,5.21841,5.21265,5.2077,5.20334,5.19879,5.19395,5.18991,5.18564,5.18073,5.17633,5.17276,5.16907,5.1658,5.29633,5.29401,5.29103,5.29047,5.2896,5.28996,5.2899,5.28791,5.28734,5.28593,5.28437,5.28506,5.28519,5.28436,5.2837,5.28259,5.28195,5.28128,5.28153,5.28072,5.28068,5.28069,5.27997,5.27685,5.27733,5.27693,5.27541,5.27407,5.27409,5.27443,5.27419,5.27407,5.27377,5.27264,5.34869,5.3483,5.34923,5.34963,5.34951,5.34925,5.34931,5.34959,5.34892,5.34872,5.34848,5.34837,5.34681,5.34619,5.34639,5.34711,5.34672,5.34638,5.34594,5.3456,5.34591,5.34566,5.34428,5.33676,5.3333,5.33278};
 
-
-    //const double rms[N] = {0.824679,0.782446,0.818811,0.806885,0.803704,0.871136,0.813056,0.788195,0.814913,0.827358,0.803204,0.822611,0.823937,0.856411,0.809335,0.856246,0.863831,0.814316,0.837086,0.816152,0.827546,0.856583,0.868094,0.818259,0.827974,0.836275,0.827927,0.830695,0.841271,0.837476,0.853636,0.887113,0.852725,0.85005,0.889713,0.863394,0.906837,0.858824,0.905646,0.864854,0.916142,0.884857,0.92623,0.890286,0.893136,0.927233,0.93955,0.901352,0.910599,0.946087,0.953492,0.914146,0.919538,0.922878,0.926503,0.92716,0.941653,0.985742,0.947067,0.9437,0.968053,0.97057,1.01549,0.935575,0.936608,0.942302,0.937645,1.00356,1.05201,0.883722,1.04139,1.02598,1.04668,1.0511,1.09945,0.968244,1.01134,1.07265,1.10059,1.18976,1.13585,1.20976,1.17207,1.18968,1.2017,1.27592,1.28886,1.26559,1.28489,1.29385,1.30249,1.30601,1.31771,1.37203,1.34166,1.34777,1.3422,1.36425,1.35728,1.36912,1.38495,1.40415,1.40586,1.40536,1.40853,1.40943,1.4182,1.40153,1.40832,1.40528,1.3878,1.41426,1.39917,1.4051,1.46129,1.46377,1.41189,1.46455,1.44021,1.44527,1.44781,1.51096,1.50057,1.3753,1.34927,1.4508,1.40248,1.38909,1.31386,1.29765,1.29552,1.28221,1.27349,1.25879,1.25227,1.23533,1.22174,1.21283,1.19403,1.18947,1.16907,1.16221,1.14786,1.13494,1.13355,1.10559,1.09656,1.06811,1.06088,1.0577,1.04911,1.05024,1.02118,1.00554,0.989293,0.972336,0.961332,0.954117,0.955509,0.942485,0.927889,0.923071,0.910241,0.906156,0.895033,0.959418,0.948962,0.93796,0.926793,0.899814,0.911334,0.867638,0.867571,0.862463,0.854489,0.857443,0.866902,0.872196,0.86776,0.882162,0.898834,0.898431,0.900525,0.899913,0.892846,0.885463,0.896011,0.897224,0.898276,0.894747,0.891653,0.889951,0.889985,0.890034,0.889848,0.891503,0.881424,0.886063,0.883189,0.887374,0.889464,0.885434,0.880578,0.881069,0.879039,0.880486,0.877794,0.882369,0.879658,0.879052,0.875904,0.882218,0.869874,0.874634,0.873405,0.878323,0.864371,0.936041,0.982519,0.983783,0.984115,0.983673,0.987755,0.987389,0.989652,0.991566,0.982455,0.99419,0.990369,0.991263,0.984783,0.992409,0.994242,0.99489,0.996674,0.995799,0.994068,0.995591,1.00187,0.989916,1.00784,1.00462,1.00311,1.00495,1.00595,0.960289,1.00732,1.01066,1.00818,1.00171,1.01199,0.992116,0.990814,0.994797,0.995172,0.996153,0.996694,0.997064,0.986833,0.994606,0.998802,1.00438,1.00174,1.00119,1.00289,1.00228,1.00238,1.00678,1.00794,1.00604,1.00861,0.963929,1.01359,1.01218,1.01762,1.02796,1.02562,1.02};
-    const double rms[N] = {0.823689,0.805241,0.817758,0.805648,0.802719,0.829411,0.808234,0.796944,0.813095,0.826435,0.811776,0.819873,0.823283,0.818004,0.819796,0.820846,0.82749,0.822357,0.818303,0.822916,0.834238,0.821518,0.835878,0.826969,0.83787,0.835485,0.837178,0.842465,0.839582,0.850781,0.847032,0.848794,0.849601,0.85978,0.85481,0.86164,0.866302,0.866074,0.869195,0.874239,0.880656,0.881667,0.888438,0.886809,0.89286,0.892054,0.903708,0.900372,0.904276,0.912044,0.917285,0.92219,0.927522,0.931037,0.935044,0.938616,0.941711,0.946958,0.950666,0.95474,0.967182,0.970128,0.975676,0.97931,0.984179,0.988279,0.995269,1.00143,0.999232,0.998867,0.999908,1.02241,1.0462,1.05131,1.03541,1.02535,1.03805,1.07367,1.09972,1.12079,1.13208,1.15175,1.17083,1.18699,1.20095,1.22169,1.24418,1.26595,1.28708,1.30303,1.31279,1.32175,1.329,1.33418,1.34,1.34675,1.35284,1.36086,1.368,1.37633,1.39387,1.40353,1.40547,1.40902,1.40658,1.40523,1.40309,1.40089,1.40122,1.40212,1.40281,1.40877,1.40972,1.41208,1.41789,1.42165,1.42453,1.42954,1.43856,1.44613,1.44894,1.45408,1.4347,1.41351,1.41201,1.40167,1.39811,1.38846,1.34956,1.29556,1.28353,1.27768,1.26644,1.25752,1.24987,1.23723,1.22353,1.20934,1.19558,1.18253,1.17099,1.15867,1.15074,1.13651,1.12275,1.10774,1.09431,1.06622,1.06609,1.06611,1.06505,1.05314,1.0261,1.00457,0.990423,0.968341,0.964148,0.959084,0.956413,0.943587,0.935617,0.923163,0.913453,0.903224,0.896578,0.925755,0.95124,0.939449,0.925327,0.898027,0.91426,0.875688,0.862338,0.858283,0.857438,0.86037,0.862203,0.870719,0.876149,0.887925,0.895045,0.898852,0.90329,0.895159,0.892505,0.893056,0.900081,0.896356,0.895693,0.891834,0.893339,0.888931,0.888282,0.890026,0.888641,0.886521,0.887356,0.885548,0.882484,0.88512,0.882618,0.88119,0.880995,0.88102,0.88134,0.88315,0.8824,0.880437,0.879697,0.879628,0.878431,0.877552,0.878481,0.878691,0.877373,0.876806,0.875456,0.978556,0.981988,0.985465,0.985556,0.986936,0.984079,0.982189,0.984073,0.984913,0.987486,0.989538,0.987139,0.985936,0.987119,0.988206,0.990297,0.991416,0.992575,0.991251,0.992607,0.992754,0.993668,0.994706,0.996367,0.996439,0.997143,1.0003,1.00234,1.0024,1.00091,1.00194,1.00287,1.00385,1.00475,0.986361,0.988892,0.989372,0.989529,0.989478,0.990144,0.9908,0.990212,0.991309,0.992435,0.993439,0.994017,0.997914,0.99955,0.999073,0.997491,0.99844,0.999279,1.00009,1.00086,1.0004,1.00093,1.00345,1.01321,1.01864,1.0196};
-    //const double eta[N] = {0.005,0.015,0.025,0.035,0.045,0.055,0.065,0.075,0.085,0.095,0.105,0.115,0.125,0.135,0.145,0.155,0.165,0.175,0.185,0.195,0.205,0.215,0.225,0.235,0.245,0.255,0.265,0.275,0.285,0.295,0.305,0.315,0.325,0.335,0.345,0.355,0.365,0.375,0.385,0.395,0.405,0.415,0.425,0.435,0.445,0.455,0.465,0.475,0.485,0.495,0.505,0.515,0.525,0.535,0.545,0.555,0.565,0.575,0.585,0.595,0.605,0.615,0.625,0.635,0.645,0.655,0.665,0.675,0.685,0.695,0.705,0.715,0.725,0.735,0.745,0.755,0.765,0.775,0.785,0.795,0.805,0.815,0.825,0.835,0.845,0.855,0.865,0.875,0.885,0.895,0.905,0.915,0.925,0.935,0.945,0.955,0.965,0.975,0.985,0.995,1.005,1.015,1.025,1.035,1.045,1.055,1.065,1.075,1.085,1.095,1.105,1.115,1.125,1.135,1.145,1.155,1.165,1.175,1.185,1.195,1.205,1.215,1.225,1.235,1.245,1.255,1.265,1.275,1.285,1.295,1.305,1.315,1.325,1.335,1.345,1.355,1.365,1.375,1.385,1.395,1.405,1.415,1.425,1.435,1.445,1.455,1.465,1.475,1.485,1.495,1.505,1.515,1.525,1.535,1.545,1.555,1.565,1.575,1.585,1.595,1.605,1.615,1.625,1.635,1.645,1.655,1.665,1.675,1.685,1.695,1.705,1.715,1.725,1.735,1.745,1.755,1.765,1.775,1.785,1.795,1.805,1.815,1.825,1.835,1.845,1.855,1.865,1.875,1.885,1.895,1.905,1.915,1.925,1.935,1.945,1.955,1.965,1.975,1.985,1.995,2.005,2.015,2.025,2.035,2.045,2.055,2.065,2.075,2.085,2.095,2.105,2.115,2.125,2.135,2.145,2.155,2.165,2.175,2.185,2.195,2.205,2.215,2.225,2.235,2.245,2.255,2.265,2.275,2.285,2.295,2.305,2.315,2.325,2.335,2.345,2.355,2.365,2.375,2.385,2.395,2.405,2.415,2.425,2.435,2.445,2.455,2.465,2.475,2.485,2.495,2.505,2.515,2.525,2.535,2.545,2.555,2.565,2.575,2.585,2.595,2.605,2.615,2.625,2.635,2.645,2.655,2.665,2.675,2.685,2.695,2.705,2.715,2.725,2.735,2.745,2.755,2.765,2.775};
-    const double eta[N] = {0.005,0.015,0.025,0.035,0.045,0.055,0.065,0.075,0.085,0.095,0.105,0.115,0.125,0.135,0.145,0.155,0.165,0.175,0.185,0.195,0.205,0.215,0.225,0.235,0.245,0.255,0.265,0.275,0.285,0.295,0.305,0.315,0.325,0.335,0.345,0.355,0.365,0.375,0.385,0.395,0.405,0.415,0.425,0.435,0.445,0.455,0.465,0.475,0.485,0.495,0.505,0.515,0.525,0.535,0.545,0.555,0.565,0.575,0.585,0.595,0.605,0.615,0.625,0.635,0.645,0.655,0.665,0.675,0.685,0.695,0.705,0.715,0.725,0.735,0.745,0.755,0.765,0.775,0.785,0.795,0.805,0.815,0.825,0.835,0.845,0.855,0.865,0.875,0.885,0.895,0.905,0.915,0.925,0.935,0.945,0.955,0.965,0.975,0.985,0.995,1.005,1.015,1.025,1.035,1.045,1.055,1.065,1.075,1.085,1.095,1.105,1.115,1.125,1.135,1.145,1.155,1.165,1.175,1.185,1.195,1.205,1.215,1.225,1.235,1.245,1.255,1.265,1.275,1.285,1.295,1.305,1.315,1.325,1.335,1.345,1.355,1.365,1.375,1.385,1.395,1.405,1.415,1.425,1.435,1.445,1.455,1.465,1.475,1.485,1.495,1.505,1.515,1.525,1.535,1.545,1.555,1.565,1.575,1.585,1.595,1.605,1.615,1.625,1.635,1.645,1.655,1.665,1.675,1.685,1.695,1.705,1.715,1.725,1.735,1.745,1.755,1.765,1.775,1.785,1.795,1.805,1.815,1.825,1.835,1.845,1.855,1.865,1.875,1.885,1.895,1.905,1.915,1.925,1.935,1.945,1.955,1.965,1.975,1.985,1.995,2.005,2.015,2.025,2.035,2.045,2.055,2.065,2.075,2.085,2.095,2.105,2.115,2.125,2.135,2.145,2.155,2.165,2.175,2.185,2.195,2.205,2.215,2.225,2.235,2.245,2.255,2.265,2.275,2.285,2.295,2.305,2.315,2.325,2.335,2.345,2.355,2.365,2.375,2.385,2.395,2.405,2.415,2.425,2.435,2.445,2.455,2.465,2.475,2.485,2.495,2.505,2.515,2.525,2.535,2.545,2.555,2.565,2.575,2.585,2.595,2.605,2.615,2.625,2.635,2.645,2.655,2.665,2.675,2.685,2.695,2.705,2.715,2.725,2.735,2.745,2.755,2.765};
+    // In meters... be careful!!!
+    // const double mean[N] =
+    // {2.90771,2.78248,2.83172,2.7975,2.76139,2.88316,2.83738,2.81438,2.83947,2.87006,2.8278,2.85738,2.86536,2.94242,2.83682,2.96257,2.96406,2.86074,2.89693,2.83767,2.85071,2.99601,3.01353,2.89679,2.90693,2.93785,2.93202,2.93902,2.95558,2.91682,2.96795,3.07245,2.99349,2.98052,3.11216,3.02759,3.12314,2.99859,3.14099,3.04129,3.17957,3.07913,3.20328,3.11009,3.12813,3.24812,3.26814,3.17714,3.16095,3.3125,3.32224,3.19366,3.21848,3.21796,3.25126,3.268,3.31347,3.42457,3.29278,3.33556,3.3819,3.39939,3.51691,3.36272,3.37978,3.39153,3.38534,3.50773,3.61067,3.30092,3.5418,3.49208,3.53835,3.53299,3.60777,3.32772,3.38532,3.48208,3.54515,3.77164,3.71523,3.91961,3.80365,3.84777,3.88416,4.06013,4.1111,3.94053,3.9722,3.96949,4.03478,4.09423,4.14198,4.38723,4.28485,4.33281,4.3333,4.41784,4.43311,4.45871,4.54202,4.64106,4.69047,4.65375,4.77979,4.78705,4.82244,4.883,4.89827,4.94015,4.92729,4.97583,4.97669,4.99448,5.25401,5.29072,5.10841,5.32148,5.22758,5.26328,5.28108,5.49924,5.49748,5.18736,5.18277,5.4169,5.31641,5.33159,5.20546,5.21829,5.21831,5.24387,5.25622,5.26771,5.29139,5.31036,5.33198,5.34383,5.34278,5.33719,5.34692,5.34394,5.34866,5.35532,5.38633,5.35792,5.40507,5.44075,5.43697,5.36688,5.3615,5.34395,5.351,5.33692,5.40554,5.32767,5.30937,5.27858,5.24888,5.22321,5.18993,5.16593,5.15314,5.19365,5.10601,5.09906,5.14761,5.11907,5.09005,5.08759,5.12649,5.09114,5.10094,5.11952,5.14246,5.15773,5.20285,5.23313,5.26284,5.29047,5.31104,5.31609,5.34698,5.32669,5.32644,5.33017,5.32103,5.3161,5.30679,5.29896,5.28471,5.29577,5.28692,5.28526,5.28018,5.25654,5.27276,5.26505,5.25626,5.25022,5.22271,5.23219,5.24233,5.23496,5.22445,5.22157,5.22442,5.21315,5.19474,5.20876,5.20789,5.18328,5.19939,5.19362,5.1882,5.17646,5.18578,5.21858,5.30511,5.28661,5.28584,5.3002,5.29541,5.28864,5.30157,5.28195,5.29587,5.28504,5.29397,5.29198,5.28954,5.28545,5.28473,5.28091,5.27896,5.281,5.28209,5.27643,5.27176,5.28034,5.26778,5.26428,5.27236,5.26271,5.25728,5.20309,5.26363,5.25403,5.26598,5.27713,5.2639,5.34616,5.34954,5.34928,5.34872,5.34628,5.34574,5.3471,5.35188,5.34754,5.34501,5.34445,5.34497,5.34499,5.34479,5.33511,5.34532,5.33912,5.3364,5.34464,5.34311,5.27807,5.31777,5.3388,5.33045,5.32491,5.33117,5.33274};
+
+    const double mean[N] = {
+        2.90896, 2.85532, 2.83093, 2.8064,  2.76147, 2.77842, 2.84819, 2.85462, 2.84207, 2.8698,  2.85196, 2.85928,
+        2.86565, 2.85887, 2.86074, 2.86888, 2.87614, 2.88714, 2.89461, 2.88509, 2.89893, 2.90348, 2.9149,  2.92062,
+        2.93808, 2.93909, 2.95316, 2.96446, 2.95808, 2.9744,  2.98252, 2.99579, 3.0031,  3.00655, 3.01533, 3.02955,
+        3.0375,  3.04185, 3.04363, 3.06828, 3.07989, 3.08877, 3.10764, 3.11947, 3.14111, 3.14608, 3.16545, 3.1774,
+        3.19129, 3.20832, 3.21966, 3.2294,  3.2477,  3.26422, 3.28213, 3.29407, 3.31355, 3.31759, 3.33572, 3.36416,
+        3.38337, 3.40047, 3.42178, 3.44093, 3.46112, 3.469,   3.48594, 3.50981, 3.49446, 3.48858, 3.47374, 3.5025,
+        3.53872, 3.53273, 3.47625, 3.44053, 3.44348, 3.49941, 3.54464, 3.60332, 3.71618, 3.75569, 3.80481, 3.84988,
+        3.88482, 3.90896, 3.93518, 3.96212, 3.98705, 4.03085, 4.0863,  4.1386,  4.18874, 4.24235, 4.28526, 4.33191,
+        4.37922, 4.42264, 4.47627, 4.52819, 4.58994, 4.64149, 4.69026, 4.74336, 4.78171, 4.81408, 4.84981, 4.88344,
+        4.9096,  4.94122, 4.96842, 4.99079, 5.02283, 5.06858, 5.08828, 5.12193, 5.15831, 5.1959,  5.22796, 5.26302,
+        5.28034, 5.31236, 5.30035, 5.28938, 5.30971, 5.30201, 5.3224,  5.33088, 5.27099, 5.21831, 5.23592, 5.24828,
+        5.26303, 5.26884, 5.29259, 5.30454, 5.32996, 5.34636, 5.34636, 5.36077, 5.36379, 5.3704,  5.37932, 5.38896,
+        5.39967, 5.40373, 5.41283, 5.44188, 5.42873, 5.43097, 5.4239,  5.40874, 5.41333, 5.40596, 5.39171, 5.37567,
+        5.35638, 5.31926, 5.29116, 5.26111, 5.23343, 5.20337, 5.17801, 5.15636, 5.14166, 5.16448, 5.16522, 5.13663,
+        5.11057, 5.09843, 5.14826, 5.11023, 5.11505, 5.13523, 5.15454, 5.17912, 5.21404, 5.246,   5.27176, 5.29481,
+        5.31911, 5.33475, 5.35133, 5.34602, 5.33701, 5.3328,  5.32425, 5.32026, 5.31533, 5.31104, 5.30473, 5.30016,
+        5.29413, 5.28658, 5.28047, 5.27475, 5.2677,  5.26156, 5.25584, 5.24831, 5.24262, 5.23702, 5.23091, 5.22422,
+        5.21841, 5.21265, 5.2077,  5.20334, 5.19879, 5.19395, 5.18991, 5.18564, 5.18073, 5.17633, 5.17276, 5.16907,
+        5.1658,  5.29633, 5.29401, 5.29103, 5.29047, 5.2896,  5.28996, 5.2899,  5.28791, 5.28734, 5.28593, 5.28437,
+        5.28506, 5.28519, 5.28436, 5.2837,  5.28259, 5.28195, 5.28128, 5.28153, 5.28072, 5.28068, 5.28069, 5.27997,
+        5.27685, 5.27733, 5.27693, 5.27541, 5.27407, 5.27409, 5.27443, 5.27419, 5.27407, 5.27377, 5.27264, 5.34869,
+        5.3483,  5.34923, 5.34963, 5.34951, 5.34925, 5.34931, 5.34959, 5.34892, 5.34872, 5.34848, 5.34837, 5.34681,
+        5.34619, 5.34639, 5.34711, 5.34672, 5.34638, 5.34594, 5.3456,  5.34591, 5.34566, 5.34428, 5.33676, 5.3333,
+        5.33278};
+
+
+    // const double rms[N] =
+    // {0.824679,0.782446,0.818811,0.806885,0.803704,0.871136,0.813056,0.788195,0.814913,0.827358,0.803204,0.822611,0.823937,0.856411,0.809335,0.856246,0.863831,0.814316,0.837086,0.816152,0.827546,0.856583,0.868094,0.818259,0.827974,0.836275,0.827927,0.830695,0.841271,0.837476,0.853636,0.887113,0.852725,0.85005,0.889713,0.863394,0.906837,0.858824,0.905646,0.864854,0.916142,0.884857,0.92623,0.890286,0.893136,0.927233,0.93955,0.901352,0.910599,0.946087,0.953492,0.914146,0.919538,0.922878,0.926503,0.92716,0.941653,0.985742,0.947067,0.9437,0.968053,0.97057,1.01549,0.935575,0.936608,0.942302,0.937645,1.00356,1.05201,0.883722,1.04139,1.02598,1.04668,1.0511,1.09945,0.968244,1.01134,1.07265,1.10059,1.18976,1.13585,1.20976,1.17207,1.18968,1.2017,1.27592,1.28886,1.26559,1.28489,1.29385,1.30249,1.30601,1.31771,1.37203,1.34166,1.34777,1.3422,1.36425,1.35728,1.36912,1.38495,1.40415,1.40586,1.40536,1.40853,1.40943,1.4182,1.40153,1.40832,1.40528,1.3878,1.41426,1.39917,1.4051,1.46129,1.46377,1.41189,1.46455,1.44021,1.44527,1.44781,1.51096,1.50057,1.3753,1.34927,1.4508,1.40248,1.38909,1.31386,1.29765,1.29552,1.28221,1.27349,1.25879,1.25227,1.23533,1.22174,1.21283,1.19403,1.18947,1.16907,1.16221,1.14786,1.13494,1.13355,1.10559,1.09656,1.06811,1.06088,1.0577,1.04911,1.05024,1.02118,1.00554,0.989293,0.972336,0.961332,0.954117,0.955509,0.942485,0.927889,0.923071,0.910241,0.906156,0.895033,0.959418,0.948962,0.93796,0.926793,0.899814,0.911334,0.867638,0.867571,0.862463,0.854489,0.857443,0.866902,0.872196,0.86776,0.882162,0.898834,0.898431,0.900525,0.899913,0.892846,0.885463,0.896011,0.897224,0.898276,0.894747,0.891653,0.889951,0.889985,0.890034,0.889848,0.891503,0.881424,0.886063,0.883189,0.887374,0.889464,0.885434,0.880578,0.881069,0.879039,0.880486,0.877794,0.882369,0.879658,0.879052,0.875904,0.882218,0.869874,0.874634,0.873405,0.878323,0.864371,0.936041,0.982519,0.983783,0.984115,0.983673,0.987755,0.987389,0.989652,0.991566,0.982455,0.99419,0.990369,0.991263,0.984783,0.992409,0.994242,0.99489,0.996674,0.995799,0.994068,0.995591,1.00187,0.989916,1.00784,1.00462,1.00311,1.00495,1.00595,0.960289,1.00732,1.01066,1.00818,1.00171,1.01199,0.992116,0.990814,0.994797,0.995172,0.996153,0.996694,0.997064,0.986833,0.994606,0.998802,1.00438,1.00174,1.00119,1.00289,1.00228,1.00238,1.00678,1.00794,1.00604,1.00861,0.963929,1.01359,1.01218,1.01762,1.02796,1.02562,1.02};
+    const double rms[N] = {
+        0.823689, 0.805241, 0.817758, 0.805648, 0.802719, 0.829411, 0.808234, 0.796944, 0.813095, 0.826435, 0.811776,
+        0.819873, 0.823283, 0.818004, 0.819796, 0.820846, 0.82749,  0.822357, 0.818303, 0.822916, 0.834238, 0.821518,
+        0.835878, 0.826969, 0.83787,  0.835485, 0.837178, 0.842465, 0.839582, 0.850781, 0.847032, 0.848794, 0.849601,
+        0.85978,  0.85481,  0.86164,  0.866302, 0.866074, 0.869195, 0.874239, 0.880656, 0.881667, 0.888438, 0.886809,
+        0.89286,  0.892054, 0.903708, 0.900372, 0.904276, 0.912044, 0.917285, 0.92219,  0.927522, 0.931037, 0.935044,
+        0.938616, 0.941711, 0.946958, 0.950666, 0.95474,  0.967182, 0.970128, 0.975676, 0.97931,  0.984179, 0.988279,
+        0.995269, 1.00143,  0.999232, 0.998867, 0.999908, 1.02241,  1.0462,   1.05131,  1.03541,  1.02535,  1.03805,
+        1.07367,  1.09972,  1.12079,  1.13208,  1.15175,  1.17083,  1.18699,  1.20095,  1.22169,  1.24418,  1.26595,
+        1.28708,  1.30303,  1.31279,  1.32175,  1.329,    1.33418,  1.34,     1.34675,  1.35284,  1.36086,  1.368,
+        1.37633,  1.39387,  1.40353,  1.40547,  1.40902,  1.40658,  1.40523,  1.40309,  1.40089,  1.40122,  1.40212,
+        1.40281,  1.40877,  1.40972,  1.41208,  1.41789,  1.42165,  1.42453,  1.42954,  1.43856,  1.44613,  1.44894,
+        1.45408,  1.4347,   1.41351,  1.41201,  1.40167,  1.39811,  1.38846,  1.34956,  1.29556,  1.28353,  1.27768,
+        1.26644,  1.25752,  1.24987,  1.23723,  1.22353,  1.20934,  1.19558,  1.18253,  1.17099,  1.15867,  1.15074,
+        1.13651,  1.12275,  1.10774,  1.09431,  1.06622,  1.06609,  1.06611,  1.06505,  1.05314,  1.0261,   1.00457,
+        0.990423, 0.968341, 0.964148, 0.959084, 0.956413, 0.943587, 0.935617, 0.923163, 0.913453, 0.903224, 0.896578,
+        0.925755, 0.95124,  0.939449, 0.925327, 0.898027, 0.91426,  0.875688, 0.862338, 0.858283, 0.857438, 0.86037,
+        0.862203, 0.870719, 0.876149, 0.887925, 0.895045, 0.898852, 0.90329,  0.895159, 0.892505, 0.893056, 0.900081,
+        0.896356, 0.895693, 0.891834, 0.893339, 0.888931, 0.888282, 0.890026, 0.888641, 0.886521, 0.887356, 0.885548,
+        0.882484, 0.88512,  0.882618, 0.88119,  0.880995, 0.88102,  0.88134,  0.88315,  0.8824,   0.880437, 0.879697,
+        0.879628, 0.878431, 0.877552, 0.878481, 0.878691, 0.877373, 0.876806, 0.875456, 0.978556, 0.981988, 0.985465,
+        0.985556, 0.986936, 0.984079, 0.982189, 0.984073, 0.984913, 0.987486, 0.989538, 0.987139, 0.985936, 0.987119,
+        0.988206, 0.990297, 0.991416, 0.992575, 0.991251, 0.992607, 0.992754, 0.993668, 0.994706, 0.996367, 0.996439,
+        0.997143, 1.0003,   1.00234,  1.0024,   1.00091,  1.00194,  1.00287,  1.00385,  1.00475,  0.986361, 0.988892,
+        0.989372, 0.989529, 0.989478, 0.990144, 0.9908,   0.990212, 0.991309, 0.992435, 0.993439, 0.994017, 0.997914,
+        0.99955,  0.999073, 0.997491, 0.99844,  0.999279, 1.00009,  1.00086,  1.0004,   1.00093,  1.00345,  1.01321,
+        1.01864,  1.0196};
+    // const double eta[N] =
+    // {0.005,0.015,0.025,0.035,0.045,0.055,0.065,0.075,0.085,0.095,0.105,0.115,0.125,0.135,0.145,0.155,0.165,0.175,0.185,0.195,0.205,0.215,0.225,0.235,0.245,0.255,0.265,0.275,0.285,0.295,0.305,0.315,0.325,0.335,0.345,0.355,0.365,0.375,0.385,0.395,0.405,0.415,0.425,0.435,0.445,0.455,0.465,0.475,0.485,0.495,0.505,0.515,0.525,0.535,0.545,0.555,0.565,0.575,0.585,0.595,0.605,0.615,0.625,0.635,0.645,0.655,0.665,0.675,0.685,0.695,0.705,0.715,0.725,0.735,0.745,0.755,0.765,0.775,0.785,0.795,0.805,0.815,0.825,0.835,0.845,0.855,0.865,0.875,0.885,0.895,0.905,0.915,0.925,0.935,0.945,0.955,0.965,0.975,0.985,0.995,1.005,1.015,1.025,1.035,1.045,1.055,1.065,1.075,1.085,1.095,1.105,1.115,1.125,1.135,1.145,1.155,1.165,1.175,1.185,1.195,1.205,1.215,1.225,1.235,1.245,1.255,1.265,1.275,1.285,1.295,1.305,1.315,1.325,1.335,1.345,1.355,1.365,1.375,1.385,1.395,1.405,1.415,1.425,1.435,1.445,1.455,1.465,1.475,1.485,1.495,1.505,1.515,1.525,1.535,1.545,1.555,1.565,1.575,1.585,1.595,1.605,1.615,1.625,1.635,1.645,1.655,1.665,1.675,1.685,1.695,1.705,1.715,1.725,1.735,1.745,1.755,1.765,1.775,1.785,1.795,1.805,1.815,1.825,1.835,1.845,1.855,1.865,1.875,1.885,1.895,1.905,1.915,1.925,1.935,1.945,1.955,1.965,1.975,1.985,1.995,2.005,2.015,2.025,2.035,2.045,2.055,2.065,2.075,2.085,2.095,2.105,2.115,2.125,2.135,2.145,2.155,2.165,2.175,2.185,2.195,2.205,2.215,2.225,2.235,2.245,2.255,2.265,2.275,2.285,2.295,2.305,2.315,2.325,2.335,2.345,2.355,2.365,2.375,2.385,2.395,2.405,2.415,2.425,2.435,2.445,2.455,2.465,2.475,2.485,2.495,2.505,2.515,2.525,2.535,2.545,2.555,2.565,2.575,2.585,2.595,2.605,2.615,2.625,2.635,2.645,2.655,2.665,2.675,2.685,2.695,2.705,2.715,2.725,2.735,2.745,2.755,2.765,2.775};
+    const double eta[N] = {
+        0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.075, 0.085, 0.095, 0.105, 0.115, 0.125, 0.135, 0.145, 0.155,
+        0.165, 0.175, 0.185, 0.195, 0.205, 0.215, 0.225, 0.235, 0.245, 0.255, 0.265, 0.275, 0.285, 0.295, 0.305, 0.315,
+        0.325, 0.335, 0.345, 0.355, 0.365, 0.375, 0.385, 0.395, 0.405, 0.415, 0.425, 0.435, 0.445, 0.455, 0.465, 0.475,
+        0.485, 0.495, 0.505, 0.515, 0.525, 0.535, 0.545, 0.555, 0.565, 0.575, 0.585, 0.595, 0.605, 0.615, 0.625, 0.635,
+        0.645, 0.655, 0.665, 0.675, 0.685, 0.695, 0.705, 0.715, 0.725, 0.735, 0.745, 0.755, 0.765, 0.775, 0.785, 0.795,
+        0.805, 0.815, 0.825, 0.835, 0.845, 0.855, 0.865, 0.875, 0.885, 0.895, 0.905, 0.915, 0.925, 0.935, 0.945, 0.955,
+        0.965, 0.975, 0.985, 0.995, 1.005, 1.015, 1.025, 1.035, 1.045, 1.055, 1.065, 1.075, 1.085, 1.095, 1.105, 1.115,
+        1.125, 1.135, 1.145, 1.155, 1.165, 1.175, 1.185, 1.195, 1.205, 1.215, 1.225, 1.235, 1.245, 1.255, 1.265, 1.275,
+        1.285, 1.295, 1.305, 1.315, 1.325, 1.335, 1.345, 1.355, 1.365, 1.375, 1.385, 1.395, 1.405, 1.415, 1.425, 1.435,
+        1.445, 1.455, 1.465, 1.475, 1.485, 1.495, 1.505, 1.515, 1.525, 1.535, 1.545, 1.555, 1.565, 1.575, 1.585, 1.595,
+        1.605, 1.615, 1.625, 1.635, 1.645, 1.655, 1.665, 1.675, 1.685, 1.695, 1.705, 1.715, 1.725, 1.735, 1.745, 1.755,
+        1.765, 1.775, 1.785, 1.795, 1.805, 1.815, 1.825, 1.835, 1.845, 1.855, 1.865, 1.875, 1.885, 1.895, 1.905, 1.915,
+        1.925, 1.935, 1.945, 1.955, 1.965, 1.975, 1.985, 1.995, 2.005, 2.015, 2.025, 2.035, 2.045, 2.055, 2.065, 2.075,
+        2.085, 2.095, 2.105, 2.115, 2.125, 2.135, 2.145, 2.155, 2.165, 2.175, 2.185, 2.195, 2.205, 2.215, 2.225, 2.235,
+        2.245, 2.255, 2.265, 2.275, 2.285, 2.295, 2.305, 2.315, 2.325, 2.335, 2.345, 2.355, 2.365, 2.375, 2.385, 2.395,
+        2.405, 2.415, 2.425, 2.435, 2.445, 2.455, 2.465, 2.475, 2.485, 2.495, 2.505, 2.515, 2.525, 2.535, 2.545, 2.555,
+        2.565, 2.575, 2.585, 2.595, 2.605, 2.615, 2.625, 2.635, 2.645, 2.655, 2.665, 2.675, 2.685, 2.695, 2.705, 2.715,
+        2.725, 2.735, 2.745, 2.755, 2.765};
     // X0tot/2.
-    //const double X0CaloLayers[N] = {54.0718,53.6793,51.1026,52.7207,54.3121,54.5799,54.6933,57.3391,55.3929,52.7291,54.9498,54.8578,53.7012,59.4177,53.3716,59.0585,58.9992,54.2931,59.6594,57.9365,55.2779,61.2433,59.3145,55.276,54.9965,56.4419,55.5374,54.9552,57.0007,54.7047,57.678,63.3163,58.3533,55.4158,62.8817,57.7717,63.6192,58.9201,64.8709,58.0192,63.7163,59.1298,63.678,60.302,59.8701,65.7836,64.7294,60.9158,62.8989,66.3413,66.4773,60.4863,60.8472,61.9235,61.3218,62.1608,63.7831,70.1807,64.1836,64.124,64.3934,64.8063,71.6659,62.5457,63.0828,63.2448,62.6003,67.0684,72.1467,57.8225,67.3932,63.7332,63.74,62.1021,64.3551,55.0171,56.196,59.2418,58.633,64.674,55.9855,62.6046,57.0551,57.7426,57.8879,63.9515,62.4365,56.502,55.5581,53.9051,54.201,54.8809,55.8935,66.3435,59.7587,60.5284,59.6337,62.1275,60.5448,61.3072,59.5853,61.4811,62.1179,62.5012,64.0563,66.8948,68.5185,69.5734,71.4861,73.1542,73.3252,77.6957,77.3028,79.1056,90.128,92.1165,84.2486,94.0138,88.9091,90.6579,91.6065,102.636,102.664,88.2848,86.3781,94.2899,88.1281,85.8002,78.7165,77.144,76.019,73.3795,71.3756,69.5571,68.0864,66.248,64.2698,62.5635,61.8486,61.3565,60.0822,59.4924,58.6984,56.8871,54.5453,56.0838,52.6754,50.3197,49.6728,51.8083,50.7692,50.7799,50.0932,50.1331,45.6858,48.7889,48.6627,48.7291,49.0538,49.2277,49.8541,49.9372,49.3862,46.1696,50.63,52.8881,51.5254,52.3118,52.7285,52.5438,54.6988,54.5386,55.3539,57.0784,58.8203,61.5868,62.9939,65.5747,67.574,69.2886,71.3357,73.9579,74.7242,75.5187,75.1089,74.582,74.3894,74.3444,74.5447,74.7789,75.3804,74.2035,74.4863,74.2174,74.193,75.42,74.1402,74.1646,74.8089,74.4747,75.9973,75.1384,74.1878,74.4443,74.9275,74.7224,74.8561,74.693,75.8353,74.5733,74.4269,75.7665,74.5918,74.8829,74.8254,75.2599,74.9678,79.3404,80.8504,82.0182,82.0322,81.0368,81.3742,81.8718,81.3208,82.4715,81.6779,82.3247,81.8919,82.4235,82.3492,82.8106,82.9172,83.0532,83.3448,82.9899,83.4892,83.7382,83.9838,83.1928,84.5102,84.7175,84.3154,84.8548,85.3676,81.9878,85.0532,85.7296,85.0054,84.6196,85.3146,80.0937,80.1703,80.2248,80.288,80.3804,80.4301,80.5178,80.5528,80.6757,80.7319,80.9331,81.0151,80.9382,81.1191,81.7465,81.2769,81.8252,81.8298,81.5847,81.6739,78.9587,83.4391,81.9643,82.5875,82.835,82.5863,82.5761};
-    //double X0CaloLayers[N] = {54.0318,57.0076,51.1641,51.9894,54.2876,49.952,53.8047,57.2497,55.2898,52.7514,55.8,54.8088,53.6844,54.3315,54.3281,54.3618,53.9736,55.5616,56.9004,57.4635,55.1762,56.5239,54.5526,56.377,55.1761,56.4038,56.7003,55.9741,56.9054,55.7233,57.0343,57.5817,57.8638,56.6075,58.0273,57.7163,58.1165,59.0785,59.8935,59.0176,58.7498,58.6666,58.3886,59.805,59.6712,60.6292,59.6653,60.9436,61.1729,61.1569,61.3458,61.1481,61.7262,62.1086,62.5146,63.3828,63.7797,64.8631,64.7619,65.4139,64.3393,64.7386,64.9614,65.6181,66.3964,66.1061,66.2985,66.9995,65.645,64.6098,63.1061,63.2137,63.7249,62.1394,59.6448,57.7733,57.1382,58.1615,58.6362,58.5288,56.0052,56.3635,57.0303,57.6919,57.8765,57.0406,56.0918,55.5172,54.763,54.9269,55.8817,56.6677,57.4943,58.3997,59.691,60.5222,61.3415,61.9216,61.8989,62.2833,61.2856,61.4755,62.0896,62.4886,64.0289,65.8034,67.7021,69.5661,71.0834,73.1107,75.0314,77.1124,79.0793,80.3072,82.1783,84.109,85.864,87.4737,88.7524,90.6428,91.6288,93.3277,93.5435,91.7726,91.8272,90.0656,87.8999,85.8715,81.4497,77.1833,75.3942,73.2785,71.9156,69.5589,68.0715,66.4536,64.2158,62.5124,61.4201,60.4425,59.1743,57.9759,56.9582,55.6219,54.3818,53.4652,52.348,50.246,49.5853,48.3385,47.7049,47.4402,46.9385,46.6683,46.3137,46.1782,46.2934,46.54,46.7983,47.1935,47.4539,47.6234,47.8758,48.2112,48.9842,50.2923,50.7137,51.236,51.8725,51.9032,53.3274,53.0254,54.5411,56.0885,57.9211,59.9838,62.3384,64.7229,66.7132,68.802,70.8444,72.5567,74.2853,74.1679,73.9891,74.025,74.0642,73.9976,73.9452,73.903,73.9035,73.9069,73.938,74.0291,74.1017,74.1701,74.2725,74.3826,74.4966,74.6262,74.7497,74.8589,74.9857,75.1326,75.2356,75.3198,75.3945,75.4574,75.5176,75.5841,75.6295,75.6865,75.7506,75.8005,75.8371,75.8714,75.8979,81.4955,81.6415,81.8159,81.9223,82.0275,82.1279,82.4254,82.7708,82.8566,82.8978,82.9502,83.0259,83.1228,83.2364,83.3429,83.4584,83.5643,83.6706,83.7648,83.8748,83.966,84.1007,84.156,84.0657,84.1141,84.2062,84.32,84.4591,84.5376,84.6284,84.6993,84.7651,84.8456,85.002,80.2595,80.3031,80.3048,80.3629,80.4524,80.5409,80.6004,80.6759,80.7758,80.8384,80.913,80.991,81.0944,81.183,81.26,81.3277,81.4144,81.501,81.5922,81.6799,81.754,81.8414,81.9578,82.287,82.469,82.5641};
-
-    const double X0CaloLayers[N] = {54.1,57.1,51.25,52.1,54.4,50.05,53.9,57.4,55.4,52.9,55.95,54.95,53.85,54.45,54.45,54.5,54.1,55.7,56.7,57.3,54.95,56.3,54.65,56.5,55.25,56.5,56.8,56.05,57,55.8,57.1,57.65,57.95,56.7,58.1,57.85,58.25,59.2,60,59.15,58.85,58.75,58.5,59.9,59.75,60.7,59.75,61.05,61.3,61.3,61.45,61.25,61.85,62.25,62.65,63.5,63.9,65,64.9,65.55,64.5,64.9,65.1,65.75,66.5,66.2,66.4,67.15,65.75,64.7,63.2,63.3,63.85,62.25,59.75,57.9,57.25,58.25,58.75,58.65,56.15,56.7,58.25,59.85,60.9,61,60.8,59.95,58.75,58.45,58.95,59.3,59.9,60.75,61.9,62.65,63.35,63.8,63.7,64,62.9,63.05,63.55,63.85,65.55,67.6,69.65,71.55,72.95,75,76.9,79,81,82.2,84.05,85.95,87.75,89.35,90.65,92.5,93.5,95.15,95.35,93.6,93.65,91.85,89.65,87.65,83.25,78.95,77.2,75.05,73.65,71.3,69.85,68.2,65.95,64.25,63.1,62.15,60.85,59.65,58.55,57.25,56,55.1,53.95,51.85,51.15,49.96,49.29,49.08,48.515,48.24,47.92,47.765,47.875,48.095,48.355,48.78,49.015,49.14,48.98,48.77,49.03,49.515,49.245,49.78,50.45,50.45,51.9,51.65,53.15,54.65,56.5,58.55,60.9,63.3,65.25,67.35,69.4,71.15,72.85,72.75,72.55,72.6,72.6,72.55,72.55,72.5,72.55,72.55,72.6,72.65,72.75,72.8,72.9,73.1,73.25,73.4,73.5,73.65,73.75,73.9,74,74.1,74.2,74.35,74.4,74.45,74.5,74.7,74.95,75,75.05,75.05,75.1,75.1,75.15,75.25,75.2,75.25,75.05,75.05,75.3,75.3,75.3,75.25,75.25,75.25,75.3,75.35,75.4,75.4,75.4,75.4,75.45,75.45,75.5,75.45,75.3,75.3,75.3,75.35,75.4,75.4,75.45,75.45,75.5,75.5,75.6,70.8,70.75,70.7,70.7,70.7,70.75,70.75,70.7,70.75,70.7,70.75,70.85,71.05,71.1,71.1,71.15,71.15,71.2,71.25,71.25,71.25,71.3,71.3,71.6,71.65,71.7};
+    // const double X0CaloLayers[N] =
+    // {54.0718,53.6793,51.1026,52.7207,54.3121,54.5799,54.6933,57.3391,55.3929,52.7291,54.9498,54.8578,53.7012,59.4177,53.3716,59.0585,58.9992,54.2931,59.6594,57.9365,55.2779,61.2433,59.3145,55.276,54.9965,56.4419,55.5374,54.9552,57.0007,54.7047,57.678,63.3163,58.3533,55.4158,62.8817,57.7717,63.6192,58.9201,64.8709,58.0192,63.7163,59.1298,63.678,60.302,59.8701,65.7836,64.7294,60.9158,62.8989,66.3413,66.4773,60.4863,60.8472,61.9235,61.3218,62.1608,63.7831,70.1807,64.1836,64.124,64.3934,64.8063,71.6659,62.5457,63.0828,63.2448,62.6003,67.0684,72.1467,57.8225,67.3932,63.7332,63.74,62.1021,64.3551,55.0171,56.196,59.2418,58.633,64.674,55.9855,62.6046,57.0551,57.7426,57.8879,63.9515,62.4365,56.502,55.5581,53.9051,54.201,54.8809,55.8935,66.3435,59.7587,60.5284,59.6337,62.1275,60.5448,61.3072,59.5853,61.4811,62.1179,62.5012,64.0563,66.8948,68.5185,69.5734,71.4861,73.1542,73.3252,77.6957,77.3028,79.1056,90.128,92.1165,84.2486,94.0138,88.9091,90.6579,91.6065,102.636,102.664,88.2848,86.3781,94.2899,88.1281,85.8002,78.7165,77.144,76.019,73.3795,71.3756,69.5571,68.0864,66.248,64.2698,62.5635,61.8486,61.3565,60.0822,59.4924,58.6984,56.8871,54.5453,56.0838,52.6754,50.3197,49.6728,51.8083,50.7692,50.7799,50.0932,50.1331,45.6858,48.7889,48.6627,48.7291,49.0538,49.2277,49.8541,49.9372,49.3862,46.1696,50.63,52.8881,51.5254,52.3118,52.7285,52.5438,54.6988,54.5386,55.3539,57.0784,58.8203,61.5868,62.9939,65.5747,67.574,69.2886,71.3357,73.9579,74.7242,75.5187,75.1089,74.582,74.3894,74.3444,74.5447,74.7789,75.3804,74.2035,74.4863,74.2174,74.193,75.42,74.1402,74.1646,74.8089,74.4747,75.9973,75.1384,74.1878,74.4443,74.9275,74.7224,74.8561,74.693,75.8353,74.5733,74.4269,75.7665,74.5918,74.8829,74.8254,75.2599,74.9678,79.3404,80.8504,82.0182,82.0322,81.0368,81.3742,81.8718,81.3208,82.4715,81.6779,82.3247,81.8919,82.4235,82.3492,82.8106,82.9172,83.0532,83.3448,82.9899,83.4892,83.7382,83.9838,83.1928,84.5102,84.7175,84.3154,84.8548,85.3676,81.9878,85.0532,85.7296,85.0054,84.6196,85.3146,80.0937,80.1703,80.2248,80.288,80.3804,80.4301,80.5178,80.5528,80.6757,80.7319,80.9331,81.0151,80.9382,81.1191,81.7465,81.2769,81.8252,81.8298,81.5847,81.6739,78.9587,83.4391,81.9643,82.5875,82.835,82.5863,82.5761};
+    // double X0CaloLayers[N] =
+    // {54.0318,57.0076,51.1641,51.9894,54.2876,49.952,53.8047,57.2497,55.2898,52.7514,55.8,54.8088,53.6844,54.3315,54.3281,54.3618,53.9736,55.5616,56.9004,57.4635,55.1762,56.5239,54.5526,56.377,55.1761,56.4038,56.7003,55.9741,56.9054,55.7233,57.0343,57.5817,57.8638,56.6075,58.0273,57.7163,58.1165,59.0785,59.8935,59.0176,58.7498,58.6666,58.3886,59.805,59.6712,60.6292,59.6653,60.9436,61.1729,61.1569,61.3458,61.1481,61.7262,62.1086,62.5146,63.3828,63.7797,64.8631,64.7619,65.4139,64.3393,64.7386,64.9614,65.6181,66.3964,66.1061,66.2985,66.9995,65.645,64.6098,63.1061,63.2137,63.7249,62.1394,59.6448,57.7733,57.1382,58.1615,58.6362,58.5288,56.0052,56.3635,57.0303,57.6919,57.8765,57.0406,56.0918,55.5172,54.763,54.9269,55.8817,56.6677,57.4943,58.3997,59.691,60.5222,61.3415,61.9216,61.8989,62.2833,61.2856,61.4755,62.0896,62.4886,64.0289,65.8034,67.7021,69.5661,71.0834,73.1107,75.0314,77.1124,79.0793,80.3072,82.1783,84.109,85.864,87.4737,88.7524,90.6428,91.6288,93.3277,93.5435,91.7726,91.8272,90.0656,87.8999,85.8715,81.4497,77.1833,75.3942,73.2785,71.9156,69.5589,68.0715,66.4536,64.2158,62.5124,61.4201,60.4425,59.1743,57.9759,56.9582,55.6219,54.3818,53.4652,52.348,50.246,49.5853,48.3385,47.7049,47.4402,46.9385,46.6683,46.3137,46.1782,46.2934,46.54,46.7983,47.1935,47.4539,47.6234,47.8758,48.2112,48.9842,50.2923,50.7137,51.236,51.8725,51.9032,53.3274,53.0254,54.5411,56.0885,57.9211,59.9838,62.3384,64.7229,66.7132,68.802,70.8444,72.5567,74.2853,74.1679,73.9891,74.025,74.0642,73.9976,73.9452,73.903,73.9035,73.9069,73.938,74.0291,74.1017,74.1701,74.2725,74.3826,74.4966,74.6262,74.7497,74.8589,74.9857,75.1326,75.2356,75.3198,75.3945,75.4574,75.5176,75.5841,75.6295,75.6865,75.7506,75.8005,75.8371,75.8714,75.8979,81.4955,81.6415,81.8159,81.9223,82.0275,82.1279,82.4254,82.7708,82.8566,82.8978,82.9502,83.0259,83.1228,83.2364,83.3429,83.4584,83.5643,83.6706,83.7648,83.8748,83.966,84.1007,84.156,84.0657,84.1141,84.2062,84.32,84.4591,84.5376,84.6284,84.6993,84.7651,84.8456,85.002,80.2595,80.3031,80.3048,80.3629,80.4524,80.5409,80.6004,80.6759,80.7758,80.8384,80.913,80.991,81.0944,81.183,81.26,81.3277,81.4144,81.501,81.5922,81.6799,81.754,81.8414,81.9578,82.287,82.469,82.5641};
+
+    const double X0CaloLayers[N] = {
+        54.1,   57.1,   51.25,  52.1,  54.4,  50.05,  53.9,   57.4,   55.4,   52.9,  55.95,  54.95, 53.85, 54.45, 54.45,
+        54.5,   54.1,   55.7,   56.7,  57.3,  54.95,  56.3,   54.65,  56.5,   55.25, 56.5,   56.8,  56.05, 57,    55.8,
+        57.1,   57.65,  57.95,  56.7,  58.1,  57.85,  58.25,  59.2,   60,     59.15, 58.85,  58.75, 58.5,  59.9,  59.75,
+        60.7,   59.75,  61.05,  61.3,  61.3,  61.45,  61.25,  61.85,  62.25,  62.65, 63.5,   63.9,  65,    64.9,  65.55,
+        64.5,   64.9,   65.1,   65.75, 66.5,  66.2,   66.4,   67.15,  65.75,  64.7,  63.2,   63.3,  63.85, 62.25, 59.75,
+        57.9,   57.25,  58.25,  58.75, 58.65, 56.15,  56.7,   58.25,  59.85,  60.9,  61,     60.8,  59.95, 58.75, 58.45,
+        58.95,  59.3,   59.9,   60.75, 61.9,  62.65,  63.35,  63.8,   63.7,   64,    62.9,   63.05, 63.55, 63.85, 65.55,
+        67.6,   69.65,  71.55,  72.95, 75,    76.9,   79,     81,     82.2,   84.05, 85.95,  87.75, 89.35, 90.65, 92.5,
+        93.5,   95.15,  95.35,  93.6,  93.65, 91.85,  89.65,  87.65,  83.25,  78.95, 77.2,   75.05, 73.65, 71.3,  69.85,
+        68.2,   65.95,  64.25,  63.1,  62.15, 60.85,  59.65,  58.55,  57.25,  56,    55.1,   53.95, 51.85, 51.15, 49.96,
+        49.29,  49.08,  48.515, 48.24, 47.92, 47.765, 47.875, 48.095, 48.355, 48.78, 49.015, 49.14, 48.98, 48.77, 49.03,
+        49.515, 49.245, 49.78,  50.45, 50.45, 51.9,   51.65,  53.15,  54.65,  56.5,  58.55,  60.9,  63.3,  65.25, 67.35,
+        69.4,   71.15,  72.85,  72.75, 72.55, 72.6,   72.6,   72.55,  72.55,  72.5,  72.55,  72.55, 72.6,  72.65, 72.75,
+        72.8,   72.9,   73.1,   73.25, 73.4,  73.5,   73.65,  73.75,  73.9,   74,    74.1,   74.2,  74.35, 74.4,  74.45,
+        74.5,   74.7,   74.95,  75,    75.05, 75.05,  75.1,   75.1,   75.15,  75.25, 75.2,   75.25, 75.05, 75.05, 75.3,
+        75.3,   75.3,   75.25,  75.25, 75.25, 75.3,   75.35,  75.4,   75.4,   75.4,  75.4,   75.45, 75.45, 75.5,  75.45,
+        75.3,   75.3,   75.3,   75.35, 75.4,  75.4,   75.45,  75.45,  75.5,   75.5,  75.6,   70.8,  70.75, 70.7,  70.7,
+        70.7,   70.75,  70.75,  70.7,  70.75, 70.7,   70.75,  70.85,  71.05,  71.1,  71.1,   71.15, 71.15, 71.2,  71.25,
+        71.25,  71.25,  71.3,   71.3,  71.6,  71.65,  71.7};
 
 
     // check regular eta look-up is setup OK
-    m_binSize		= (eta[N-1]-eta[0])/(static_cast<double>(N-1));
-    for (unsigned i = 0; i != m_numberBins; ++i)
-    {
-	double etaBin = m_binSize*(static_cast<double>(i) + 0.5);
-	if (std::abs(eta[i] - etaBin) < 0.001*m_binSize) continue;
-	ATH_MSG_ERROR( " have " << m_numberBins << " eta bins of width " << m_binSize 
-			<< endmsg << " for bin " << i << ": expected/found eta "
-			<< etaBin << "/" << eta[i]
-			);
-	
-	return StatusCode::FAILURE;    
+    m_binSize = (eta[N - 1] - eta[0]) / (static_cast<double>(N - 1));
+    for (unsigned i = 0; i != m_numberBins; ++i) {
+        double etaBin = m_binSize * (static_cast<double>(i) + 0.5);
+        if (std::abs(eta[i] - etaBin) < 0.001 * m_binSize) continue;
+        ATH_MSG_ERROR(" have " << m_numberBins << " eta bins of width " << m_binSize << endmsg << " for bin " << i
+                               << ": expected/found eta " << etaBin << "/" << eta[i]);
+
+        return StatusCode::FAILURE;
     }
-  
+
     // populate radiationThickness and Trk::Surface vectors
-    for (int i = 0; i != N; ++i)
-    {
-	// radiationThickness
-	m_radiationThickness.push_back(X0CaloLayers[i]);
-
-	// polar angle of bin centre
-	double theta		= 2.* std::atan(std::exp(-eta[i]));
-	double cosTheta		= std::cos(theta);
-	double sinTheta		= std::sin(theta);
-	double thetaNext	= 2.* std::atan(std::exp(-eta[i]-m_binSize));
-	double cotThetaWidth	= 1./std::tan(thetaNext) - cosTheta/sinTheta;
-
-	// inner surfaces
-	double r	= sinTheta*(mean[i] - rms[i])*Gaudi::Units::meter;
-	double z	= cosTheta*(mean[i] - rms[i])*Gaudi::Units::meter;
-	m_innerBackwardSurfaces.push_back(createSurface(eta[i], r, -z, cotThetaWidth));
-	m_innerForwardSurfaces.push_back(createSurface(eta[i], r, z, cotThetaWidth));
-	
-	// middle surfaces
-	r	= sinTheta*mean[i]*Gaudi::Units::meter;
-	z	= cosTheta*mean[i]*Gaudi::Units::meter;
-	m_middleBackwardSurfaces.push_back(createSurface(eta[i], r, -z, cotThetaWidth));
-	m_middleForwardSurfaces.push_back(createSurface(eta[i], r, z, cotThetaWidth));
-	
-	// outer surfaces
-	r	= sinTheta*(mean[i] + rms[i])*Gaudi::Units::meter;
-	z	= cosTheta*(mean[i] + rms[i])*Gaudi::Units::meter;
-	m_outerBackwardSurfaces.push_back(createSurface(eta[i], r, -z, cotThetaWidth));
-	m_outerForwardSurfaces.push_back(createSurface(eta[i], r, z, cotThetaWidth));
+    for (int i = 0; i != N; ++i) {
+        // radiationThickness
+        m_radiationThickness.push_back(X0CaloLayers[i]);
+
+        // polar angle of bin centre
+        double theta         = 2. * std::atan(std::exp(-eta[i]));
+        double cosTheta      = std::cos(theta);
+        double sinTheta      = std::sin(theta);
+        double thetaNext     = 2. * std::atan(std::exp(-eta[i] - m_binSize));
+        double cotThetaWidth = 1. / std::tan(thetaNext) - cosTheta / sinTheta;
+
+        // inner surfaces
+        double r = sinTheta * (mean[i] - rms[i]) * Gaudi::Units::meter;
+        double z = cosTheta * (mean[i] - rms[i]) * Gaudi::Units::meter;
+        m_innerBackwardSurfaces.push_back(createSurface(eta[i], r, -z, cotThetaWidth));
+        m_innerForwardSurfaces.push_back(createSurface(eta[i], r, z, cotThetaWidth));
+
+        // middle surfaces
+        r = sinTheta * mean[i] * Gaudi::Units::meter;
+        z = cosTheta * mean[i] * Gaudi::Units::meter;
+        m_middleBackwardSurfaces.push_back(createSurface(eta[i], r, -z, cotThetaWidth));
+        m_middleForwardSurfaces.push_back(createSurface(eta[i], r, z, cotThetaWidth));
+
+        // outer surfaces
+        r = sinTheta * (mean[i] + rms[i]) * Gaudi::Units::meter;
+        z = cosTheta * (mean[i] + rms[i]) * Gaudi::Units::meter;
+        m_outerBackwardSurfaces.push_back(createSurface(eta[i], r, -z, cotThetaWidth));
+        m_outerForwardSurfaces.push_back(createSurface(eta[i], r, z, cotThetaWidth));
     }
-  
+
     // fill Calo Layers with R,Z centre, surface, etc
-    double innerR[N]	= {0.};	
-    double innerZ[N]	= {0.};
-    // double middleR[N]	= {0.};	
+    double innerR[N] = {0.};
+    double innerZ[N] = {0.};
+    // double middleR[N]	= {0.};
     // double middleZ[N]	= {0.};
-    double outerR[N]	= {0.};
-    double outerZ[N]	= {0.};	
-    for (int i = 0; i != N; ++i)
-    {
-	double theta	= 2.* std::atan(std::exp(-eta[i]));
-	double cosTheta	= std::cos(theta);
-	double sinTheta	= std::sin(theta);
-	innerR[i]	= sinTheta*(mean[i] - rms[i])*Gaudi::Units::meter;
-	innerZ[i]	= cosTheta*(mean[i] - rms[i])*Gaudi::Units::meter;
-	// middleR[i]	= sinTheta*mean[i]*Gaudi::Units::meter;
-	// middleZ[i]	= cosTheta*mean[i]*Gaudi::Units::meter;
-	outerR[i]	= sinTheta*(mean[i] + rms[i])*Gaudi::Units::meter;
-	outerZ[i]	= cosTheta*(mean[i] + rms[i])*Gaudi::Units::meter;
-	bool barrel 	= true;
-	if (eta[i] > 1.4) barrel = false;
-
-	// outer layer
-	m_caloOuterLayers.push_back(new CaloLayer(outerSurface(-eta[i]),
-						  i,
-						  outerR[i],
-						  -outerZ[i],
-						  X0CaloLayers[i],
-						  barrel));
-	m_caloOuterLayers.push_back(new CaloLayer(outerSurface(eta[i]),
-						  i+N,
-						  outerR[i],
-						  outerZ[i],
-						  X0CaloLayers[i],
-						  barrel));
-
-	// same thing for inner layer
-	m_caloInnerLayers.push_back(new CaloLayer(innerSurface(-eta[i]),
-						  i,
-						  innerR[i],
-						  -innerZ[i],
-						  X0CaloLayers[i],
-						  barrel));
-	m_caloInnerLayers.push_back(new CaloLayer(innerSurface(eta[i]),
-						  i+N,
-						  innerR[i],
-						  innerZ[i],
-						  X0CaloLayers[i],
-						  barrel));
-
-	// check
-	const Trk::Surface* surfM = innerSurface(-eta[i]);
-	if (std::abs(surfM->center().z() + innerZ[i]) > 0.001)
-	{
-	    ATH_MSG_ERROR( " wrong surface " << i << " at eta " << eta[i] << endmsg
-			    << ": expected/found z " << -innerZ[i] << "/" << surfM->center().z()
-			    );
-	    return StatusCode::FAILURE;    
-	}
-	const Trk::Surface* surfP = innerSurface(eta[i]);
-	if (std::abs(surfP->center().z() - innerZ[i]) > 0.001)
-	{
-	    ATH_MSG_ERROR( " wrong surface " << i << " at eta " << eta[i] << endmsg
-			    << ": expected/found z " << innerZ[i] << "/" << surfP->center().z()
-			    );
-	    return StatusCode::FAILURE;    
-	}
+    double outerR[N] = {0.};
+    double outerZ[N] = {0.};
+    for (int i = 0; i != N; ++i) {
+        double theta    = 2. * std::atan(std::exp(-eta[i]));
+        double cosTheta = std::cos(theta);
+        double sinTheta = std::sin(theta);
+        innerR[i]       = sinTheta * (mean[i] - rms[i]) * Gaudi::Units::meter;
+        innerZ[i]       = cosTheta * (mean[i] - rms[i]) * Gaudi::Units::meter;
+        // middleR[i]	= sinTheta*mean[i]*Gaudi::Units::meter;
+        // middleZ[i]	= cosTheta*mean[i]*Gaudi::Units::meter;
+        outerR[i]   = sinTheta * (mean[i] + rms[i]) * Gaudi::Units::meter;
+        outerZ[i]   = cosTheta * (mean[i] + rms[i]) * Gaudi::Units::meter;
+        bool barrel = true;
+        if (eta[i] > 1.4) barrel = false;
+
+        // outer layer
+        m_caloOuterLayers.push_back(
+            new CaloLayer(outerSurface(-eta[i]), i, outerR[i], -outerZ[i], X0CaloLayers[i], barrel));
+        m_caloOuterLayers.push_back(
+            new CaloLayer(outerSurface(eta[i]), i + N, outerR[i], outerZ[i], X0CaloLayers[i], barrel));
+
+        // same thing for inner layer
+        m_caloInnerLayers.push_back(
+            new CaloLayer(innerSurface(-eta[i]), i, innerR[i], -innerZ[i], X0CaloLayers[i], barrel));
+        m_caloInnerLayers.push_back(
+            new CaloLayer(innerSurface(eta[i]), i + N, innerR[i], innerZ[i], X0CaloLayers[i], barrel));
+
+        // check
+        const Trk::Surface* surfM = innerSurface(-eta[i]);
+        if (std::abs(surfM->center().z() + innerZ[i]) > 0.001) {
+            ATH_MSG_ERROR(" wrong surface " << i << " at eta " << eta[i] << endmsg << ": expected/found z "
+                                            << -innerZ[i] << "/" << surfM->center().z());
+            return StatusCode::FAILURE;
+        }
+        const Trk::Surface* surfP = innerSurface(eta[i]);
+        if (std::abs(surfP->center().z() - innerZ[i]) > 0.001) {
+            ATH_MSG_ERROR(" wrong surface " << i << " at eta " << eta[i] << endmsg << ": expected/found z " << innerZ[i]
+                                            << "/" << surfP->center().z());
+            return StatusCode::FAILURE;
+        }
     }
 
     return StatusCode::SUCCESS;
 }
- 
-}	// end of namespace
+
+}  // namespace Rec
diff --git a/Reconstruction/MuonIdentification/MuidCaloScatteringTools/src/MuidCaloTrackStateOnSurface.cxx b/Reconstruction/MuonIdentification/MuidCaloScatteringTools/src/MuidCaloTrackStateOnSurface.cxx
index 530444413cc199bc85df968883e5a371793ad962..49a36aae0267e9252e6a66855b304244df5c1897 100755
--- a/Reconstruction/MuonIdentification/MuidCaloScatteringTools/src/MuidCaloTrackStateOnSurface.cxx
+++ b/Reconstruction/MuonIdentification/MuidCaloScatteringTools/src/MuidCaloTrackStateOnSurface.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////////////////
@@ -11,20 +11,19 @@
 //  This tool retrieves the appropriate parametrized scattering centres and
 //  hybrid (measured + parametrized) energy deposit evaluation
 //  using the IMuidCaloMaterialParam and IMuidCaloEnergy interfaces
-//  
+//
 //  (c) ATLAS Combined Muon software
 //////////////////////////////////////////////////////////////////////////////
 
 //<<<<<< INCLUDES                                                       >>>>>>
 
+#include "MuidCaloScatteringTools/MuidCaloTrackStateOnSurface.h"
+
 #include <cmath>
 #include <iomanip>
+
 #include "GaudiKernel/SystemOfUnits.h"
 #include "GeoPrimitives/GeoPrimitives.h"
-#include "MuidCaloScatteringTools/MuidCaloTrackStateOnSurface.h"
-#include "MuidInterfaces/IMuidCaloEnergy.h"
-#include "MuidInterfaces/IMuidCaloMaterialParam.h"
-#include "TrkExInterfaces/IPropagator.h"
 #include "TrkExUtils/TrackSurfaceIntersection.h"
 #include "TrkGeometry/MagneticFieldProperties.h"
 #include "TrkMaterialOnTrack/EnergyLoss.h"
@@ -36,459 +35,332 @@
 
 //<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>
 
-namespace Rec
-{
-
-MuidCaloTrackStateOnSurface::MuidCaloTrackStateOnSurface (const std::string&	type,
-							  const std::string&	name,
-							  const IInterface*	parent)
-    :	AthAlgTool		(type, name, parent),
-	m_caloEnergyDeposit	("Rec::MuidCaloEnergyTool/MuidCaloEnergyTool", this),
-	m_caloEnergyParam	("Rec::MuidCaloEnergyTool/MuidCaloEnergyToolParam", this),
-	m_caloMaterialParam	("Rec::MuidCaloMaterialParam/MuidCaloMaterialParam", this),
-	m_magFieldProperties    (0),
-	m_propagator            ("Trk::IntersectorWrapper/IntersectorWrapper", this),
-	m_minCaloRadius		(0.4*Gaudi::Units::meter),
-	m_minRemainingEnergy	(0.5*Gaudi::Units::GeV),
-	m_paramPtCut		(15.0*Gaudi::Units::GeV),
-	m_count			(0),
-	m_countArbitrarySolution(0),
-	m_countCompleteFailure	(0),
-	m_countInnerFailure	(0),
-	m_countOuterFailure	(0)
+namespace Rec {
+
+MuidCaloTrackStateOnSurface::MuidCaloTrackStateOnSurface(const std::string& type, const std::string& name,
+                                                         const IInterface* parent)
+    : AthAlgTool(type, name, parent),
+      m_magFieldProperties(0),
+      m_minCaloRadius(0.4 * Gaudi::Units::meter),
+      m_minRemainingEnergy(0.5 * Gaudi::Units::GeV),
+      m_paramPtCut(15.0 * Gaudi::Units::GeV),
+      m_count(0),
+      m_countArbitrarySolution(0),
+      m_countCompleteFailure(0),
+      m_countInnerFailure(0),
+      m_countOuterFailure(0)
 {
     declareInterface<IMuidCaloTrackStateOnSurface>(this);
-    declareProperty("CaloEnergyDeposit",	m_caloEnergyDeposit) ;
-    declareProperty("CaloEnergyParam",		m_caloEnergyParam);
-    declareProperty("CaloMaterialParam",	m_caloMaterialParam);
-    declareProperty("Propagator",		m_propagator);
-    declareProperty("MinCaloRadius",		m_minCaloRadius);
-    declareProperty("MinRemainingEnergy",	m_minRemainingEnergy);
-    declareProperty("ParamPtCut",		m_paramPtCut);
+    declareProperty("MinCaloRadius", m_minCaloRadius);
+    declareProperty("MinRemainingEnergy", m_minRemainingEnergy);
+    declareProperty("ParamPtCut", m_paramPtCut);
 }
 
-MuidCaloTrackStateOnSurface::~MuidCaloTrackStateOnSurface (void) 
-{}
+MuidCaloTrackStateOnSurface::~MuidCaloTrackStateOnSurface(void) {}
 
 //<<<<<< PUBLIC MEMBER FUNCTION DEFINITIONS                             >>>>>>
 
 StatusCode
 MuidCaloTrackStateOnSurface::initialize()
 {
-    ATH_MSG_DEBUG( "Initializing CombinedMuonTrackStateOnSurface"
-		  << " - package version " << PACKAGE_VERSION );
+    ATH_MSG_DEBUG("Initializing CombinedMuonTrackStateOnSurface"
+                  << " - package version " << PACKAGE_VERSION);
 
     // get the Tools
-    if (m_caloEnergyDeposit.retrieve().isFailure())
-    {
-	ATH_MSG_FATAL( "Failed to retrieve tool " << m_caloEnergyDeposit );
-	return StatusCode::FAILURE;
-    }
-    else
-    {
-	ATH_MSG_DEBUG( "Retrieved tool " << m_caloEnergyDeposit );
-    }
-    if (m_caloEnergyParam.retrieve().isFailure())
-    {
-	ATH_MSG_FATAL( "Failed to retrieve tool " << m_caloEnergyParam );
-	return StatusCode::FAILURE;
-    }
-    else
-    {
-	ATH_MSG_DEBUG( "Retrieved tool " << m_caloEnergyParam );
-    }
-    if (m_caloMaterialParam.retrieve().isFailure())
-    {
-	ATH_MSG_FATAL( "Failed to retrieve tool " << m_caloMaterialParam );
-	return StatusCode::FAILURE;
-    }
-    else
-    {
-	ATH_MSG_DEBUG( "Retrieved tool " << m_caloMaterialParam );
-    }
+    ATH_CHECK(m_caloEnergyDeposit.retrieve());
+    ATH_MSG_DEBUG("Retrieved tool " << m_caloEnergyDeposit);
+
+    ATH_CHECK(m_caloEnergyParam.retrieve());
+    ATH_MSG_DEBUG("Retrieved tool " << m_caloEnergyParam);
+
+    ATH_CHECK(m_caloMaterialParam.retrieve());
+    ATH_MSG_DEBUG("Retrieved tool " << m_caloMaterialParam);
+
     /// handle to the magnetic field cache
-    ATH_CHECK( m_fieldCacheCondObjInputKey.initialize() );
-    if (m_propagator.retrieve().isFailure())
-    {
-	ATH_MSG_FATAL( "Failed to retrieve tool " << m_propagator );
-        return StatusCode::FAILURE;
-    }
-    else
-    {
-	ATH_MSG_DEBUG( "Retrieved tool " << m_propagator );
-    }
+    ATH_CHECK(m_fieldCacheCondObjInputKey.initialize());
+
+    ATH_CHECK(m_propagator.retrieve());
+    ATH_MSG_DEBUG("Retrieved tool " << m_propagator);
+
+    m_magFieldProperties = new Trk::MagneticFieldProperties(Trk::FullField);
 
-    m_magFieldProperties = new Trk::MagneticFieldProperties( Trk::FullField );
-    
     return StatusCode::SUCCESS;
 }
 
 StatusCode
 MuidCaloTrackStateOnSurface::finalize()
 {
-    ATH_MSG_INFO( "finalized with "
-		  << m_count << " muons asking for calo association, out of which: " << endmsg
-		  << "     " << m_countInnerFailure
-		  << " failed to find the inner calo scattering plane," << endmsg
-		  << "     " << m_countOuterFailure
-		  << " failed to find the outer calo scattering plane," << endmsg
-		  << "     while another " << m_countCompleteFailure
-		  << " completely failed to intersect the calorimeter."	<< endmsg
-		  << "     " << m_countArbitrarySolution
-		  << " with oscillation resolved by taking an arbitrary solution");
-    
+    ATH_MSG_INFO(
+        "finalized with " << m_count << " muons asking for calo association, out of which: " << endmsg << "     "
+                          << m_countInnerFailure << " failed to find the inner calo scattering plane," << endmsg
+                          << "     " << m_countOuterFailure << " failed to find the outer calo scattering plane,"
+                          << endmsg << "     while another " << m_countCompleteFailure
+                          << " completely failed to intersect the calorimeter." << endmsg << "     "
+                          << m_countArbitrarySolution << " with oscillation resolved by taking an arbitrary solution");
+
     delete m_magFieldProperties;
-    
+
     return StatusCode::SUCCESS;
 }
 
 std::vector<const Trk::TrackStateOnSurface*>*
 MuidCaloTrackStateOnSurface::caloTSOS(const Trk::TrackParameters& parameters) const
 {
-    const Trk::TrackStateOnSurface* innerTS	= 0;
-    const Trk::TrackStateOnSurface* middleTS	= 0;
-    const Trk::TrackStateOnSurface* outerTS	= 0;
-    const Trk::TrackParameters* innerParams	= 0;
-    const Trk::TrackParameters* middleParams	= 0;
-    const Trk::TrackParameters* outerParams	= 0;
-
-    MagField::AtlasFieldCache    fieldCache;
+    const Trk::TrackStateOnSurface* innerTS      = 0;
+    const Trk::TrackStateOnSurface* middleTS     = 0;
+    const Trk::TrackStateOnSurface* outerTS      = 0;
+    const Trk::TrackParameters*     innerParams  = 0;
+    const Trk::TrackParameters*     middleParams = 0;
+    const Trk::TrackParameters*     outerParams  = 0;
+
+    MagField::AtlasFieldCache fieldCache;
     // Get field cache object
-    EventContext ctx = Gaudi::Hive::currentContext();
+    EventContext                               ctx = Gaudi::Hive::currentContext();
     SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCacheCondObjInputKey, ctx};
-    const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
-   
+    const AtlasFieldCacheCondObj*              fieldCondObj{*readHandle};
+
     if (fieldCondObj == nullptr) {
-      ATH_MSG_ERROR("Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
-      return nullptr;
-    }
-    fieldCondObj->getInitializedCache (fieldCache);
-    
-    // track to calo surfaces - first decide in or outwards
-    bool trackOutwards	= true;
-    if (dynamic_cast<const Trk::PerigeeSurface*>(&parameters.associatedSurface()))
-    {
-	if (parameters.associatedSurface().center().perp()	> 0.5*Gaudi::Units::meter) trackOutwards = false;
-    }
-    else if (std::abs(parameters.position().z())	> 4.0*Gaudi::Units::meter
-	     || parameters.position().perp()		> 1.2*Gaudi::Units::meter)
-    {
-	trackOutwards	= false;
+        ATH_MSG_ERROR("Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
+        return nullptr;
     }
+    fieldCondObj->getInitializedCache(fieldCache);
 
-    if (trackOutwards)	// forward tracking
-    {
-	innerTS	= innerTSOS(parameters);
-	if (innerTS)
-	{
-	    innerParams		= innerTS->trackParameters();
-	    if (innerParams->momentum().dot(innerParams->position()) > 0.)
-	    {
-		middleParams	= middleParameters(*innerParams);
-	    }
-	    else
-	    {
-		ATH_MSG_VERBOSE( " quit as looper " << innerParams );
-	    }
-	    if (middleParams)
-	    {
-		// get calo energy deposit
-		middleTS	= m_caloEnergyParam->trackStateOnSurface(*middleParams,
-									 innerParams,
-									 outerParams);
-		if (! middleTS)
-		{
-		    delete middleParams;
-		    middleParams	= 0;
-		}
-	    }
-	    if (middleParams)
-	    {
-		// apply energy deposit to give outgoing middleParams,
-		// note the iteration required to get optimum energy correction
-		const Trk::TrackParameters* params	= 0;
-		for (int iterate = 0; iterate !=2; ++iterate)
-		{
-		    double energyDeposit = 0.;
-		    if (! middleTS)	break;
-		    const Trk::MaterialEffectsOnTrack* meot =
-			dynamic_cast<const Trk::MaterialEffectsOnTrack*>
-			(middleTS->materialEffectsOnTrack());
-		    if (meot) energyDeposit		= meot->energyLoss()->deltaE();
-		    middleParams			= middleTS->trackParameters();
-		    Amg::Vector3D momentum		= middleParams->momentum();
-		    double correctedEnergy		= innerParams->momentum().mag() - energyDeposit;
-
-		    // fail potential loopers
-		    if (fieldCache.toroidOn()
-		    	&& correctedEnergy < m_minRemainingEnergy)
-		    {
-		    	delete middleTS;
-		    	middleTS	= 0;
-		    	ATH_MSG_VERBOSE( " fail tracking outwards: momentum " << momentum.mag()/Gaudi::Units::GeV
-		    			 << "   energyDeposit " << energyDeposit/Gaudi::Units::GeV
-		    			 << "   correctedEnergy " << correctedEnergy/Gaudi::Units::GeV
-		    			 << " (GeV units)" );
-		    	break;
-		    }
-		    else
-		    {
-		    	// toroid off: set floor for remaining energy
-		    	if (correctedEnergy < m_minRemainingEnergy)
-		    	{
-		    	    momentum	*= m_minRemainingEnergy/momentum.mag();
-		    	}
-		    	else
-		    	{
-		    	    momentum	*= correctedEnergy/momentum.mag();
-		    	}
-		    
-		    	const Trk::CylinderSurface* cylinder	=
-		    	    dynamic_cast<const Trk::CylinderSurface*>(&middleParams->associatedSurface());
-		    	if (cylinder)
-		    	{
-		    	    params = new const Trk::AtaCylinder(middleParams->position(),
-		    						momentum,
-		    						middleParams->charge(),
-		    						*cylinder);
-		    	}
-		    	else
-		    	{
-		    	    const Trk::DiscSurface* disc =
-		    		dynamic_cast<const Trk::DiscSurface*>(&middleParams->associatedSurface());
-		    	    if (disc)
-		    	    {
-		    		params = new const Trk::AtaDisc(middleParams->position(),
-		    						momentum,
-		    						middleParams->charge(),
-								*disc);
-			    }
-			    else
-			    {
-				ATH_MSG_WARNING( " caloTSOS: unexpected TrackParameters type " );
-			    }
-			}
-
-			// delete middle and outer,
-			// then recompute with parameters as for backwards tracking
-			delete middleTS;
-			if (! params)
-			{
-			    middleTS = 0;
-			}
-			else if (params->momentum().perp() > m_paramPtCut)
-			{
-		    	    middleTS = m_caloEnergyDeposit->trackStateOnSurface(*params,
-		    								innerParams,
-		    								outerParams);
-		    	}
-		    	else
-		    	{
-		    	    middleTS = m_caloEnergyParam->trackStateOnSurface(*params,
-		    							      innerParams,
-		    							      outerParams);
-		    	}
-		    }
-		    delete outerTS;
-		    if (middleTS)
-		    {
-			outerTS = outerTSOS(*params);
-		    }
-		    else
-		    {
-			delete params;
-		    }
-		}
-	    }
-	    if (! middleTS)
-	    {
-		ATH_MSG_VERBOSE( " fail tracking outwards: no intersect at middle surface" );
-	    }
-	}
-	else
-	{
-	    ATH_MSG_VERBOSE( " fail tracking ouwards: no intersect at inner surface" );
-	}
-    }
-    else					// backward tracking
-    {
-	outerTS	= outerTSOS(parameters);
-	if (outerTS)
-	{
-	    outerParams		= outerTS->trackParameters();
-	    middleParams	= middleParameters(*outerParams);
-	    if (middleParams)
-	    {
-		innerParams	= innerParameters(*middleParams);
-		if (innerParams)
-		{
-		    // get calo energy deposit
-		    if (middleParams->momentum().perp() > m_paramPtCut)
-		    {
-			middleTS = m_caloEnergyDeposit->trackStateOnSurface(*middleParams,
-									    innerParams,
-									    outerParams);
-		    }
-		    else
-		    {
-			middleTS = m_caloEnergyParam->trackStateOnSurface(*middleParams,
-									  innerParams,
-									  outerParams);
-		    }
-		    delete innerParams;	// these will be recomputed below
-
-		    // apply energy deposit
-		    const Trk::MaterialEffectsOnTrack* meot = 0;
-		    if (middleTS) meot			= dynamic_cast<const Trk::MaterialEffectsOnTrack*>
-							  (middleTS->materialEffectsOnTrack());
-		    double energyDeposit		= 0.;
-		    if (meot) energyDeposit		= meot->energyLoss()->deltaE();
-		    Amg::Vector3D momentum		= middleParams->momentum();
-		    double correctedEnergy		= momentum.mag() + energyDeposit;
-
-		    // fail potential loopers
-		    if (correctedEnergy < 0.5*Gaudi::Units::GeV)
-		    {
-			delete middleTS;
-			middleTS	= 0;
-			ATH_MSG_VERBOSE( " fail tracking inwards: momentum " << momentum.mag()/Gaudi::Units::GeV
-					 << "   energyDeposit " << energyDeposit/Gaudi::Units::GeV
-					 << "   correctedEnergy " << correctedEnergy/Gaudi::Units::GeV
-					 << " (GeV units)"	);
-		    }
-		    else
-		    {
-			momentum *= 1. + energyDeposit/momentum.mag();
-			const Trk::TrackParameters* params	= 0;
-			const Trk::CylinderSurface* cylinder	=
-			    dynamic_cast<const Trk::CylinderSurface*>(&middleParams->associatedSurface());
-                        AmgSymMatrix(5)* cov = middleParams->covariance() ? new AmgSymMatrix(5)(*middleParams->covariance()) : 0;
+    // track to calo surfaces - first decide in or outwards
+    bool trackOutwards = true;
+    if (dynamic_cast<const Trk::PerigeeSurface*>(&parameters.associatedSurface())) {
+        if (parameters.associatedSurface().center().perp() > 0.5 * Gaudi::Units::meter) trackOutwards = false;
+    } else if (std::abs(parameters.position().z()) > 4.0 * Gaudi::Units::meter
+               || parameters.position().perp() > 1.2 * Gaudi::Units::meter)
+    {
+        trackOutwards = false;
+    }
+
+    if (trackOutwards)  // forward tracking
+    {
+        innerTS = innerTSOS(parameters);
+        if (innerTS) {
+            innerParams = innerTS->trackParameters();
+            if (innerParams->momentum().dot(innerParams->position()) > 0.) {
+                middleParams = middleParameters(*innerParams);
+            } else {
+                ATH_MSG_VERBOSE(" quit as looper " << innerParams);
+            }
+            if (middleParams) {
+                // get calo energy deposit
+                middleTS = m_caloEnergyParam->trackStateOnSurface(*middleParams, innerParams, outerParams);
+                if (!middleTS) {
+                    delete middleParams;
+                    middleParams = 0;
+                }
+            }
+            if (middleParams) {
+                // apply energy deposit to give outgoing middleParams,
+                // note the iteration required to get optimum energy correction
+                const Trk::TrackParameters* params = 0;
+                for (int iterate = 0; iterate != 2; ++iterate) {
+                    double energyDeposit = 0.;
+                    if (!middleTS) break;
+                    const Trk::MaterialEffectsOnTrack* meot =
+                        dynamic_cast<const Trk::MaterialEffectsOnTrack*>(middleTS->materialEffectsOnTrack());
+                    if (meot) energyDeposit = meot->energyLoss()->deltaE();
+                    middleParams                  = middleTS->trackParameters();
+                    Amg::Vector3D momentum        = middleParams->momentum();
+                    double        correctedEnergy = innerParams->momentum().mag() - energyDeposit;
+
+                    // fail potential loopers
+                    if (fieldCache.toroidOn() && correctedEnergy < m_minRemainingEnergy) {
+                        delete middleTS;
+                        middleTS = 0;
+                        ATH_MSG_VERBOSE(" fail tracking outwards: momentum "
+                                        << momentum.mag() / Gaudi::Units::GeV << "   energyDeposit "
+                                        << energyDeposit / Gaudi::Units::GeV << "   correctedEnergy "
+                                        << correctedEnergy / Gaudi::Units::GeV << " (GeV units)");
+                        break;
+                    } else {
+                        // toroid off: set floor for remaining energy
+                        if (correctedEnergy < m_minRemainingEnergy) {
+                            momentum *= m_minRemainingEnergy / momentum.mag();
+                        } else {
+                            momentum *= correctedEnergy / momentum.mag();
+                        }
+
+                        const Trk::CylinderSurface* cylinder =
+                            dynamic_cast<const Trk::CylinderSurface*>(&middleParams->associatedSurface());
+                        if (cylinder) {
+                            params = new const Trk::AtaCylinder(middleParams->position(), momentum,
+                                                                middleParams->charge(), *cylinder);
+                        } else {
+                            const Trk::DiscSurface* disc =
+                                dynamic_cast<const Trk::DiscSurface*>(&middleParams->associatedSurface());
+                            if (disc) {
+                                params = new const Trk::AtaDisc(middleParams->position(), momentum,
+                                                                middleParams->charge(), *disc);
+                            } else {
+                                ATH_MSG_WARNING(" caloTSOS: unexpected TrackParameters type ");
+                            }
+                        }
+
+                        // delete middle and outer,
+                        // then recompute with parameters as for backwards tracking
+                        delete middleTS;
+                        if (!params) {
+                            middleTS = 0;
+                        } else if (params->momentum().perp() > m_paramPtCut) {
+                            middleTS = m_caloEnergyDeposit->trackStateOnSurface(*params, innerParams, outerParams);
+                        } else {
+                            middleTS = m_caloEnergyParam->trackStateOnSurface(*params, innerParams, outerParams);
+                        }
+                    }
+                    delete outerTS;
+                    if (middleTS) {
+                        outerTS = outerTSOS(*params);
+                    } else {
+                        delete params;
+                    }
+                }
+            }
+            if (!middleTS) {
+                ATH_MSG_VERBOSE(" fail tracking outwards: no intersect at middle surface");
+            }
+        } else {
+            ATH_MSG_VERBOSE(" fail tracking ouwards: no intersect at inner surface");
+        }
+    } else  // backward tracking
+    {
+        outerTS = outerTSOS(parameters);
+        if (outerTS) {
+            outerParams  = outerTS->trackParameters();
+            middleParams = middleParameters(*outerParams);
+            if (middleParams) {
+                innerParams = innerParameters(*middleParams);
+                if (innerParams) {
+                    // get calo energy deposit
+                    if (middleParams->momentum().perp() > m_paramPtCut) {
+                        middleTS = m_caloEnergyDeposit->trackStateOnSurface(*middleParams, innerParams, outerParams);
+                    } else {
+                        middleTS = m_caloEnergyParam->trackStateOnSurface(*middleParams, innerParams, outerParams);
+                    }
+                    delete innerParams;  // these will be recomputed below
+
+                    // apply energy deposit
+                    const Trk::MaterialEffectsOnTrack* meot = 0;
+                    if (middleTS)
+                        meot = dynamic_cast<const Trk::MaterialEffectsOnTrack*>(middleTS->materialEffectsOnTrack());
+                    double energyDeposit = 0.;
+                    if (meot) energyDeposit = meot->energyLoss()->deltaE();
+                    Amg::Vector3D momentum        = middleParams->momentum();
+                    double        correctedEnergy = momentum.mag() + energyDeposit;
+
+                    // fail potential loopers
+                    if (correctedEnergy < 0.5 * Gaudi::Units::GeV) {
+                        delete middleTS;
+                        middleTS = 0;
+                        ATH_MSG_VERBOSE(" fail tracking inwards: momentum "
+                                        << momentum.mag() / Gaudi::Units::GeV << "   energyDeposit "
+                                        << energyDeposit / Gaudi::Units::GeV << "   correctedEnergy "
+                                        << correctedEnergy / Gaudi::Units::GeV << " (GeV units)");
+                    } else {
+                        momentum *= 1. + energyDeposit / momentum.mag();
+                        const Trk::TrackParameters* params = 0;
+                        const Trk::CylinderSurface* cylinder =
+                            dynamic_cast<const Trk::CylinderSurface*>(&middleParams->associatedSurface());
+                        AmgSymMatrix(5)* cov =
+                            middleParams->covariance() ? new AmgSymMatrix(5)(*middleParams->covariance()) : 0;
                         bool deleteCov = true;
-			if (cylinder)
-			{
-			    params = new const Trk::AtaCylinder(middleParams->position(),
-								momentum,
-								middleParams->charge(),
-								*cylinder,
-                                                                cov);
-                             deleteCov = false;
-			}
-			else
-			{
-			    const Trk::DiscSurface* disc =
-				dynamic_cast<const Trk::DiscSurface*>(&middleParams->associatedSurface());
-			    if (disc)
-			    {
-				params = new const Trk::AtaDisc(middleParams->position(),
-								momentum,
-								middleParams->charge(),
-								*disc,
-                                                                cov);
+                        if (cylinder) {
+                            params    = new const Trk::AtaCylinder(middleParams->position(), momentum,
+                                                                middleParams->charge(), *cylinder, cov);
+                            deleteCov = false;
+                        } else {
+                            const Trk::DiscSurface* disc =
+                                dynamic_cast<const Trk::DiscSurface*>(&middleParams->associatedSurface());
+                            if (disc) {
+                                params    = new const Trk::AtaDisc(middleParams->position(), momentum,
+                                                                middleParams->charge(), *disc, cov);
                                 deleteCov = false;
-			    }
-			    else
-			    {
-				ATH_MSG_WARNING( " caloTSOS: unexpected TrackParameters type " );
-			    }
-			}
-			if (params && middleTS) innerTS = innerTSOS(*params);
-                        if(deleteCov) delete cov;
-			delete params;
-		    }
-		}
-		else
-		{
-		    ATH_MSG_VERBOSE( " fail tracking inwards: no intersect at inner surface" );
-		    delete middleParams;
-		}
-	    }
-	    else
-	    {
-		ATH_MSG_VERBOSE( " fail tracking inwards: no intersect at middle surface" );
-	    }
-	}
-    }
-    
-    std::vector<const Trk::TrackStateOnSurface*>* caloTSOS =
-	new std::vector<const Trk::TrackStateOnSurface*>;
+                            } else {
+                                ATH_MSG_WARNING(" caloTSOS: unexpected TrackParameters type ");
+                            }
+                        }
+                        if (params && middleTS) innerTS = innerTSOS(*params);
+                        if (deleteCov) delete cov;
+                        delete params;
+                    }
+                } else {
+                    ATH_MSG_VERBOSE(" fail tracking inwards: no intersect at inner surface");
+                    delete middleParams;
+                }
+            } else {
+                ATH_MSG_VERBOSE(" fail tracking inwards: no intersect at middle surface");
+            }
+        }
+    }
+
+    std::vector<const Trk::TrackStateOnSurface*>* caloTSOS = new std::vector<const Trk::TrackStateOnSurface*>;
     caloTSOS->reserve(3);
-    if (innerTS)	caloTSOS->push_back(innerTS);
-    if (middleTS)	caloTSOS->push_back(middleTS);
-    if (outerTS)	caloTSOS->push_back(outerTS);
+    if (innerTS) caloTSOS->push_back(innerTS);
+    if (middleTS) caloTSOS->push_back(middleTS);
+    if (outerTS) caloTSOS->push_back(outerTS);
 
     // keep some statistics
     ++m_count;
-    if (caloTSOS->size() < 3)
-    {
-	if (caloTSOS->size() == 0)
-	{
-	    ++m_countCompleteFailure;
-	}
-	else
-	{
-	    if (! innerTS) ++m_countInnerFailure;
-	    if (! outerTS) ++m_countOuterFailure;
-	}
-
-	ATH_MSG_DEBUG( " caloTSOS:  only " << caloTSOS->size() << " calo surfaces associated" );
+    if (caloTSOS->size() < 3) {
+        if (caloTSOS->size() == 0) {
+            ++m_countCompleteFailure;
+        } else {
+            if (!innerTS) ++m_countInnerFailure;
+            if (!outerTS) ++m_countOuterFailure;
+        }
+
+        ATH_MSG_DEBUG(" caloTSOS:  only " << caloTSOS->size() << " calo surfaces associated");
     }
-    
+
     return caloTSOS;
 }
 
 const Trk::TrackStateOnSurface*
-MuidCaloTrackStateOnSurface::innerTSOS (const Trk::TrackParameters& parameters) const 
+MuidCaloTrackStateOnSurface::innerTSOS(const Trk::TrackParameters& parameters) const
 {
-    const Trk::TrackParameters*  extrapolation = innerParameters(parameters);
-    if (! extrapolation || extrapolation->position().perp() < m_minCaloRadius)
-    {
-	ATH_MSG_DEBUG( " innerTSOS:  extrapolation fails " );
-	delete extrapolation;
-	return nullptr;
+    const Trk::TrackParameters* extrapolation = innerParameters(parameters);
+    if (!extrapolation || extrapolation->position().perp() < m_minCaloRadius) {
+        ATH_MSG_DEBUG(" innerTSOS:  extrapolation fails ");
+        delete extrapolation;
+        return nullptr;
     }
 
     return m_caloMaterialParam->trackStateOnSurface(extrapolation);
 }
 
 const Trk::TrackStateOnSurface*
-MuidCaloTrackStateOnSurface::outerTSOS (const Trk::TrackParameters& parameters) const
+MuidCaloTrackStateOnSurface::outerTSOS(const Trk::TrackParameters& parameters) const
 {
-    const Trk::TrackParameters*  extrapolation = outerParameters(parameters);
-    if (! extrapolation || extrapolation->position().perp() < m_minCaloRadius)
-    {
-	ATH_MSG_DEBUG( " outerTSOS:  extrapolation fails " );
-	delete extrapolation;
-	return nullptr;
+    const Trk::TrackParameters* extrapolation = outerParameters(parameters);
+    if (!extrapolation || extrapolation->position().perp() < m_minCaloRadius) {
+        ATH_MSG_DEBUG(" outerTSOS:  extrapolation fails ");
+        delete extrapolation;
+        return nullptr;
     }
 
     return m_caloMaterialParam->trackStateOnSurface(extrapolation);
 }
 
 const Trk::TrackStateOnSurface*
-MuidCaloTrackStateOnSurface::middleTSOS (const Trk::TrackParameters& middleParams,
-					 const Trk::TrackParameters* innerParams,
-					 const Trk::TrackParameters* outerParams) const
+MuidCaloTrackStateOnSurface::middleTSOS(const Trk::TrackParameters& middleParams,
+                                        const Trk::TrackParameters* innerParams,
+                                        const Trk::TrackParameters* outerParams) const
 {
-    const Trk::TrackParameters*  extrapolation = middleParameters(middleParams);
-    if (! extrapolation || extrapolation->position().perp() < m_minCaloRadius)
-    {
-	ATH_MSG_DEBUG( " middleTSOS:  extrapolation fails " );
-	delete extrapolation;
-	return nullptr;
+    const Trk::TrackParameters* extrapolation = middleParameters(middleParams);
+    if (!extrapolation || extrapolation->position().perp() < m_minCaloRadius) {
+        ATH_MSG_DEBUG(" middleTSOS:  extrapolation fails ");
+        delete extrapolation;
+        return nullptr;
     }
 
     const Trk::TrackStateOnSurface* TSOS = 0;
-    if (extrapolation->momentum().perp() > m_paramPtCut)
-    {
-	TSOS = m_caloEnergyDeposit->trackStateOnSurface(*extrapolation,
-							innerParams,
-							outerParams);
-    }
-    else
-    {
-	TSOS = m_caloEnergyParam->trackStateOnSurface(*extrapolation,
-						      innerParams,
-						      outerParams);
+    if (extrapolation->momentum().perp() > m_paramPtCut) {
+        TSOS = m_caloEnergyDeposit->trackStateOnSurface(*extrapolation, innerParams, outerParams);
+    } else {
+        TSOS = m_caloEnergyParam->trackStateOnSurface(*extrapolation, innerParams, outerParams);
     }
 
     return TSOS;
@@ -497,519 +369,396 @@ MuidCaloTrackStateOnSurface::middleTSOS (const Trk::TrackParameters& middleParam
 //<<<<<< PRIVATE MEMBER FUNCTION DEFINITIONS                            >>>>>>
 
 const Trk::TrackParameters*
-MuidCaloTrackStateOnSurface::innerParameters (const Trk::TrackParameters& parameters) const
+MuidCaloTrackStateOnSurface::innerParameters(const Trk::TrackParameters& parameters) const
 {
     // will need to know whether forward or back tracking
-    Trk::PropDirection momentumDirection	= Trk::alongMomentum;
-    Trk::PropDirection oppositeDirection	= Trk::oppositeMomentum;
-    Trk::PropDirection propDirection		= Trk::anyDirection;
-    
+    Trk::PropDirection momentumDirection = Trk::alongMomentum;
+    Trk::PropDirection oppositeDirection = Trk::oppositeMomentum;
+    Trk::PropDirection propDirection     = Trk::anyDirection;
+
     // initial surface at track eta -
     //   using position or direction according to distance from origin
-    double startingPhi		= 0.;
-    const Trk::Surface* surface	= 0;
-    if (useEtaPhiFromDirection(parameters))
-    {
-	startingPhi	= parameters.momentum().phi();
-	surface		= m_caloMaterialParam->innerSurface(parameters.momentum().eta());
-    }
-    else
-    {
-	startingPhi	= parameters.position().phi();   
-	surface		= m_caloMaterialParam->innerSurface(parameters.position().eta());
-	if (parameters.momentum().dot(parameters.position()) < 0.)
-	{
-	    momentumDirection = Trk::oppositeMomentum;
-	    oppositeDirection = Trk::alongMomentum;
-	}
-    }	
-    if (! surface) return nullptr;
+    double              startingPhi = 0.;
+    const Trk::Surface* surface     = 0;
+    if (useEtaPhiFromDirection(parameters)) {
+        startingPhi = parameters.momentum().phi();
+        surface     = m_caloMaterialParam->innerSurface(parameters.momentum().eta());
+    } else {
+        startingPhi = parameters.position().phi();
+        surface     = m_caloMaterialParam->innerSurface(parameters.position().eta());
+        if (parameters.momentum().dot(parameters.position()) < 0.) {
+            momentumDirection = Trk::oppositeMomentum;
+            oppositeDirection = Trk::alongMomentum;
+        }
+    }
+    if (!surface) return nullptr;
 
     // extrapolate to calo surface (take care to get correct cylinder intersect)
-    unsigned extrapolations	= 0;
-    const Trk::CylinderSurface* cylinder = dynamic_cast<const Trk::CylinderSurface*>(surface);
-    if (cylinder)
-    {
-	if (parameters.position().perp() < cylinder->globalReferencePoint().perp())
-	{
-	    propDirection	= momentumDirection;
-	}
-	else
-	{
-	    propDirection	= oppositeDirection;
-	}
-    }
-    const Trk::TrackParameters*  extrapolation =
-	m_propagator->propagate(parameters,
-				*surface,
-				propDirection,
-				false,
-				*m_magFieldProperties,
-				Trk::nonInteracting);
-    if (! extrapolation) return nullptr;
+    unsigned                    extrapolations = 0;
+    const Trk::CylinderSurface* cylinder       = dynamic_cast<const Trk::CylinderSurface*>(surface);
+    if (cylinder) {
+        if (parameters.position().perp() < cylinder->globalReferencePoint().perp()) {
+            propDirection = momentumDirection;
+        } else {
+            propDirection = oppositeDirection;
+        }
+    }
+    const Trk::TrackParameters* extrapolation =
+        m_propagator->propagate(parameters, *surface, propDirection, false, *m_magFieldProperties, Trk::nonInteracting);
+    if (!extrapolation) return nullptr;
 
     // phi flip means track has crossed beam-axis (so quit)
     double deltaPhi = std::abs(extrapolation->position().phi() - startingPhi);
-    if (deltaPhi > 0.5*M_PI && deltaPhi < 1.5*M_PI)
-    {
-	delete extrapolation;
-	return nullptr;
+    if (deltaPhi > 0.5 * M_PI && deltaPhi < 1.5 * M_PI) {
+        delete extrapolation;
+        return nullptr;
     }
 
     // also quit wrong rz-direction in endcap
-    if (! cylinder)
-    {
-	double signRZ = (extrapolation->position().perp() - parameters.position().perp()) *
-			 (extrapolation->position().z() - parameters.position().z());
-	if (signRZ*extrapolation->position().z() < 0.)
-	{
-	    ATH_MSG_VERBOSE( " wrong way in endcap " );
-	    delete extrapolation;
-	    return nullptr;
-	}
+    if (!cylinder) {
+        double signRZ = (extrapolation->position().perp() - parameters.position().perp())
+                        * (extrapolation->position().z() - parameters.position().z());
+        if (signRZ * extrapolation->position().z() < 0.) {
+            ATH_MSG_VERBOSE(" wrong way in endcap ");
+            delete extrapolation;
+            return nullptr;
+        }
     }
-    
+
     // iterate if extrapolated surface is different
-    bool restart				= false;
-    const Trk::Surface* oldSurface		= surface;
-    const Trk::Surface* extrapolatedSurface	=
-	m_caloMaterialParam->innerSurface(extrapolation->position().eta());
-    while (++extrapolations < 5
-	   && extrapolatedSurface != oldSurface
-	   && extrapolatedSurface != surface)
-    {
-	// take care to get correct solution for cylinder when starting from inside
-	const Trk::CylinderSurface* cylinder =
-	    dynamic_cast<const Trk::CylinderSurface*>(extrapolatedSurface);
-	if (cylinder)
-	{
-	    if (extrapolation->position().perp() < cylinder->globalReferencePoint().perp())
-	    {
-		propDirection = momentumDirection;
-	    }
-	    else
-	    {
-		propDirection = oppositeDirection;
-	    }
-	}
-	else
-	{
-	    propDirection	= Trk::anyDirection;
-	}
-	
-	const Trk::TrackParameters* oldParameters = extrapolation;
-	extrapolation = m_propagator->propagate(*oldParameters,
-						*extrapolatedSurface,
-						propDirection,
-						false,
-						*m_magFieldProperties,
-						Trk::nonInteracting);
-	if (! extrapolation)
-	{
-	    // restart from input parameters (if not already done)
-	    //   trap no solution after restart
-	    if (oldParameters == &parameters)
-	    {
-		ATH_MSG_VERBOSE( " innerParameters:  extrap fails " );
-		return nullptr;
-	    }
-	    if (restart)
-	    {
-		ATH_MSG_DEBUG( " innerParameters:  oscillating => arbitrary solution chosen" );
-		++m_countArbitrarySolution;
-		extrapolation		= oldParameters;
-		extrapolatedSurface	= &extrapolation->associatedSurface();
-		surface			= extrapolatedSurface;
-	    }
-	    else
-	    {
-		ATH_MSG_VERBOSE( " innerParameters:  restart extrap after "
-				 << extrapolations << " extrapolations" );
-		delete oldParameters;
-		restart		=  true;
-		extrapolations	-= 2;
-		extrapolation	=  &parameters;
-		surface		=  oldSurface;
-	    }
-	}
-	else
-	{
-	    // update surface
-	    if (oldParameters != &parameters) delete oldParameters;
-	    oldSurface		= surface;
-	    surface		= extrapolatedSurface;
-	    extrapolatedSurface	= m_caloMaterialParam->innerSurface(extrapolation->position().eta());
-	}
+    bool                restart             = false;
+    const Trk::Surface* oldSurface          = surface;
+    const Trk::Surface* extrapolatedSurface = m_caloMaterialParam->innerSurface(extrapolation->position().eta());
+    while (++extrapolations < 5 && extrapolatedSurface != oldSurface && extrapolatedSurface != surface) {
+        // take care to get correct solution for cylinder when starting from inside
+        const Trk::CylinderSurface* cylinder = dynamic_cast<const Trk::CylinderSurface*>(extrapolatedSurface);
+        if (cylinder) {
+            if (extrapolation->position().perp() < cylinder->globalReferencePoint().perp()) {
+                propDirection = momentumDirection;
+            } else {
+                propDirection = oppositeDirection;
+            }
+        } else {
+            propDirection = Trk::anyDirection;
+        }
+
+        const Trk::TrackParameters* oldParameters = extrapolation;
+        extrapolation = m_propagator->propagate(*oldParameters, *extrapolatedSurface, propDirection, false,
+                                                *m_magFieldProperties, Trk::nonInteracting);
+        if (!extrapolation) {
+            // restart from input parameters (if not already done)
+            //   trap no solution after restart
+            if (oldParameters == &parameters) {
+                ATH_MSG_VERBOSE(" innerParameters:  extrap fails ");
+                return nullptr;
+            }
+            if (restart) {
+                ATH_MSG_DEBUG(" innerParameters:  oscillating => arbitrary solution chosen");
+                ++m_countArbitrarySolution;
+                extrapolation       = oldParameters;
+                extrapolatedSurface = &extrapolation->associatedSurface();
+                surface             = extrapolatedSurface;
+            } else {
+                ATH_MSG_VERBOSE(" innerParameters:  restart extrap after " << extrapolations << " extrapolations");
+                delete oldParameters;
+                restart = true;
+                extrapolations -= 2;
+                extrapolation = &parameters;
+                surface       = oldSurface;
+            }
+        } else {
+            // update surface
+            if (oldParameters != &parameters) delete oldParameters;
+            oldSurface          = surface;
+            surface             = extrapolatedSurface;
+            extrapolatedSurface = m_caloMaterialParam->innerSurface(extrapolation->position().eta());
+        }
     }
 
     // final check for phi flip
     deltaPhi = std::abs(extrapolation->position().phi() - startingPhi);
-    if (deltaPhi > 0.5*M_PI && deltaPhi < 1.5*M_PI)
-    {
-	delete extrapolation;
-	return nullptr;
+    if (deltaPhi > 0.5 * M_PI && deltaPhi < 1.5 * M_PI) {
+        delete extrapolation;
+        return nullptr;
     }
 
-    ATH_MSG_VERBOSE( " innerParameters:  success after "
-		     <<  extrapolations << " extrapolation step(s). "
-		     << std::setiosflags(std::ios::fixed) << "  Intersection at: r,phi,z "
-		     << std::setw(7) << std::setprecision(1) << extrapolation->position().perp()
-		     << std::setw(7) << std::setprecision(3) << extrapolation->position().phi()
-		     << std::setw(8) << std::setprecision(1) << extrapolation->position().z()
-		     << "  Direction: eta,phi "
-		     << std::setw(7) << std::setprecision(3) << extrapolation->momentum().eta()
-		     << std::setw(7) << std::setprecision(3) << extrapolation->momentum().phi() );
-        
+    ATH_MSG_VERBOSE(" innerParameters:  success after "
+                    << extrapolations << " extrapolation step(s). " << std::setiosflags(std::ios::fixed)
+                    << "  Intersection at: r,phi,z " << std::setw(7) << std::setprecision(1)
+                    << extrapolation->position().perp() << std::setw(7) << std::setprecision(3)
+                    << extrapolation->position().phi() << std::setw(8) << std::setprecision(1)
+                    << extrapolation->position().z() << "  Direction: eta,phi " << std::setw(7) << std::setprecision(3)
+                    << extrapolation->momentum().eta() << std::setw(7) << std::setprecision(3)
+                    << extrapolation->momentum().phi());
+
     return extrapolation;
 }
 
 const Trk::TrackParameters*
-MuidCaloTrackStateOnSurface::middleParameters (const Trk::TrackParameters& parameters) const
+MuidCaloTrackStateOnSurface::middleParameters(const Trk::TrackParameters& parameters) const
 {
     // will need to know whether forward or back tracking
-    Trk::PropDirection momentumDirection	= Trk::alongMomentum;
-    Trk::PropDirection oppositeDirection	= Trk::oppositeMomentum;
-    Trk::PropDirection propDirection		= Trk::anyDirection;
- 
+    Trk::PropDirection momentumDirection = Trk::alongMomentum;
+    Trk::PropDirection oppositeDirection = Trk::oppositeMomentum;
+    Trk::PropDirection propDirection     = Trk::anyDirection;
+
     // initial surface at track eta -
     //   using position or direction according to distance from origin
-    double startingPhi		= 0.;
-    const Trk::Surface* surface	= 0;
-    if (useEtaPhiFromDirection(parameters))
-    {
-	startingPhi	= parameters.momentum().phi();
-	surface	= m_caloMaterialParam->middleSurface(parameters.momentum().eta());
-    }
-    else
-    {
-	startingPhi	= parameters.position().phi();
-	surface		= m_caloMaterialParam->middleSurface(parameters.position().eta());
-	if (parameters.momentum().dot(parameters.position()) < 0.)
-	{
-	    momentumDirection = Trk::oppositeMomentum;
-	    oppositeDirection = Trk::alongMomentum;
-	}
-    }	
-    if (! surface) return nullptr;
+    double              startingPhi = 0.;
+    const Trk::Surface* surface     = 0;
+    if (useEtaPhiFromDirection(parameters)) {
+        startingPhi = parameters.momentum().phi();
+        surface     = m_caloMaterialParam->middleSurface(parameters.momentum().eta());
+    } else {
+        startingPhi = parameters.position().phi();
+        surface     = m_caloMaterialParam->middleSurface(parameters.position().eta());
+        if (parameters.momentum().dot(parameters.position()) < 0.) {
+            momentumDirection = Trk::oppositeMomentum;
+            oppositeDirection = Trk::alongMomentum;
+        }
+    }
+    if (!surface) return nullptr;
 
     // extrapolate to calo surface (take care to get correct cylinder intersect)
-    unsigned extrapolations	= 0;
-    const Trk::CylinderSurface* cylinder = dynamic_cast<const Trk::CylinderSurface*>(surface);
-    if (cylinder)
-    {
-	if (parameters.position().perp() < cylinder->globalReferencePoint().perp())
-	{
-	    propDirection	= momentumDirection;
-	}
-	else
-	{
-	    propDirection	= oppositeDirection;
-	}
-    }
-    const Trk::TrackParameters*  extrapolation =
-	m_propagator->propagate(parameters,
-				*surface,
-				propDirection,
-				false,
-				*m_magFieldProperties,
-				Trk::nonInteracting);
-    if (! extrapolation) return nullptr;
+    unsigned                    extrapolations = 0;
+    const Trk::CylinderSurface* cylinder       = dynamic_cast<const Trk::CylinderSurface*>(surface);
+    if (cylinder) {
+        if (parameters.position().perp() < cylinder->globalReferencePoint().perp()) {
+            propDirection = momentumDirection;
+        } else {
+            propDirection = oppositeDirection;
+        }
+    }
+    const Trk::TrackParameters* extrapolation =
+        m_propagator->propagate(parameters, *surface, propDirection, false, *m_magFieldProperties, Trk::nonInteracting);
+    if (!extrapolation) return nullptr;
 
     // phi flip means track has crossed beam-axis (so quit)
     double deltaPhi = std::abs(extrapolation->position().phi() - startingPhi);
-    if (deltaPhi > 0.5*M_PI && deltaPhi < 1.5*M_PI)
-    {
-	delete extrapolation;
-	return nullptr;
+    if (deltaPhi > 0.5 * M_PI && deltaPhi < 1.5 * M_PI) {
+        delete extrapolation;
+        return nullptr;
     }
 
     // also quit wrong rz-direction in endcap
-    if (! cylinder)
-    {
-	double signRZ = (extrapolation->position().perp() - parameters.position().perp()) *
-			 (extrapolation->position().z() - parameters.position().z());
-	if (signRZ*extrapolation->position().z() < 0.)
-	{
-	    ATH_MSG_VERBOSE( " wrong way in endcap " );
-	    delete extrapolation;
-	    return nullptr;
-	}
+    if (!cylinder) {
+        double signRZ = (extrapolation->position().perp() - parameters.position().perp())
+                        * (extrapolation->position().z() - parameters.position().z());
+        if (signRZ * extrapolation->position().z() < 0.) {
+            ATH_MSG_VERBOSE(" wrong way in endcap ");
+            delete extrapolation;
+            return nullptr;
+        }
     }
-    
+
     // iterate if extrapolated surface is different
-    bool restart				= false;
-    const Trk::Surface* oldSurface		= surface;
-    const Trk::Surface* extrapolatedSurface	=
-	m_caloMaterialParam->middleSurface(extrapolation->position().eta());
-    while (++extrapolations < 5
-	   && extrapolatedSurface != oldSurface
-	   && extrapolatedSurface != surface)
-    {
-	// take care to get correct solution for cylinder when starting from inside
-	const Trk::CylinderSurface* cylinder =
-	    dynamic_cast<const Trk::CylinderSurface*>(extrapolatedSurface);
-	if (cylinder)
-	{
-	    if (extrapolation->position().perp() < cylinder->globalReferencePoint().perp())
-	    {
-		propDirection	= momentumDirection;
-	    }
-	    else
-	    {
-		propDirection	= oppositeDirection;
-	    }
-	}
-	else
-	{
-	    propDirection	= Trk::anyDirection;
-	}
-	
-	const Trk::TrackParameters* oldParameters = extrapolation;
-	extrapolation = m_propagator->propagate(*oldParameters,
-						*extrapolatedSurface,
-						propDirection,
-						false,
-						*m_magFieldProperties,
-						Trk::nonInteracting);
-	if (! extrapolation)
-	{
-	    // restart from input parameters (if not already done)
-	    //   trap no solution after restart
-	    if (oldParameters == &parameters)
-	    {
-		ATH_MSG_VERBOSE( " middleParameters:  extrap fails " );
-		return nullptr;
-	    }
-	    //   arbitrary choice for oscillating solutions (i.e. following restart)
-	    if (restart)
-	    {
-		ATH_MSG_DEBUG( " middleParameters:  oscillating => arbitrary solution chosen" );
-		++m_countArbitrarySolution;
-		extrapolation		= oldParameters;
-		extrapolatedSurface	= &extrapolation->associatedSurface();
-		surface			= extrapolatedSurface;
-	    }
-	    else
-	    {
-		ATH_MSG_VERBOSE( " middleParameters:  restart extrap after "
-				 << extrapolations << " extrapolations" );
-		delete oldParameters;
-		restart		=  true;
-		extrapolations	-= 2;
-		extrapolation	=  &parameters;
-		surface		=  oldSurface;
-	    }
-	}
-	else
-	{
-	    // update surface
-	    if (oldParameters != &parameters) delete oldParameters;
-	    oldSurface		= surface;
-	    surface		= extrapolatedSurface;
-	    extrapolatedSurface	= m_caloMaterialParam->middleSurface(extrapolation->position().eta());
-	}
+    bool                restart             = false;
+    const Trk::Surface* oldSurface          = surface;
+    const Trk::Surface* extrapolatedSurface = m_caloMaterialParam->middleSurface(extrapolation->position().eta());
+    while (++extrapolations < 5 && extrapolatedSurface != oldSurface && extrapolatedSurface != surface) {
+        // take care to get correct solution for cylinder when starting from inside
+        const Trk::CylinderSurface* cylinder = dynamic_cast<const Trk::CylinderSurface*>(extrapolatedSurface);
+        if (cylinder) {
+            if (extrapolation->position().perp() < cylinder->globalReferencePoint().perp()) {
+                propDirection = momentumDirection;
+            } else {
+                propDirection = oppositeDirection;
+            }
+        } else {
+            propDirection = Trk::anyDirection;
+        }
+
+        const Trk::TrackParameters* oldParameters = extrapolation;
+        extrapolation = m_propagator->propagate(*oldParameters, *extrapolatedSurface, propDirection, false,
+                                                *m_magFieldProperties, Trk::nonInteracting);
+        if (!extrapolation) {
+            // restart from input parameters (if not already done)
+            //   trap no solution after restart
+            if (oldParameters == &parameters) {
+                ATH_MSG_VERBOSE(" middleParameters:  extrap fails ");
+                return nullptr;
+            }
+            //   arbitrary choice for oscillating solutions (i.e. following restart)
+            if (restart) {
+                ATH_MSG_DEBUG(" middleParameters:  oscillating => arbitrary solution chosen");
+                ++m_countArbitrarySolution;
+                extrapolation       = oldParameters;
+                extrapolatedSurface = &extrapolation->associatedSurface();
+                surface             = extrapolatedSurface;
+            } else {
+                ATH_MSG_VERBOSE(" middleParameters:  restart extrap after " << extrapolations << " extrapolations");
+                delete oldParameters;
+                restart = true;
+                extrapolations -= 2;
+                extrapolation = &parameters;
+                surface       = oldSurface;
+            }
+        } else {
+            // update surface
+            if (oldParameters != &parameters) delete oldParameters;
+            oldSurface          = surface;
+            surface             = extrapolatedSurface;
+            extrapolatedSurface = m_caloMaterialParam->middleSurface(extrapolation->position().eta());
+        }
     }
 
     // final check for phi flip
     deltaPhi = std::abs(extrapolation->position().phi() - startingPhi);
-    if (deltaPhi > 0.5*M_PI && deltaPhi < 1.5*M_PI)
-    {
-	delete extrapolation;
-	return nullptr;
+    if (deltaPhi > 0.5 * M_PI && deltaPhi < 1.5 * M_PI) {
+        delete extrapolation;
+        return nullptr;
     }
 
-    ATH_MSG_VERBOSE( " middleParameters: success after "
-		     <<  extrapolations << " extrapolation step(s). "
-		     << std::setiosflags(std::ios::fixed) << "  Intersection at: r,phi,z "
-		     << std::setw(7) << std::setprecision(1) << extrapolation->position().perp()
-		     << std::setw(7) << std::setprecision(3) << extrapolation->position().phi()
-		     << std::setw(8) << std::setprecision(1) << extrapolation->position().z()
-		     << "  Direction: eta,phi "
-		     << std::setw(7) << std::setprecision(3) << extrapolation->momentum().eta()
-		     << std::setw(7) << std::setprecision(3) << extrapolation->momentum().phi() );
+    ATH_MSG_VERBOSE(" middleParameters: success after "
+                    << extrapolations << " extrapolation step(s). " << std::setiosflags(std::ios::fixed)
+                    << "  Intersection at: r,phi,z " << std::setw(7) << std::setprecision(1)
+                    << extrapolation->position().perp() << std::setw(7) << std::setprecision(3)
+                    << extrapolation->position().phi() << std::setw(8) << std::setprecision(1)
+                    << extrapolation->position().z() << "  Direction: eta,phi " << std::setw(7) << std::setprecision(3)
+                    << extrapolation->momentum().eta() << std::setw(7) << std::setprecision(3)
+                    << extrapolation->momentum().phi());
 
     return extrapolation;
 }
 
 const Trk::TrackParameters*
-MuidCaloTrackStateOnSurface::outerParameters (const Trk::TrackParameters& parameters) const
+MuidCaloTrackStateOnSurface::outerParameters(const Trk::TrackParameters& parameters) const
 {
     // will need to know whether forward or back tracking
-    Trk::PropDirection momentumDirection	= Trk::alongMomentum;
-    Trk::PropDirection oppositeDirection	= Trk::oppositeMomentum;
-    Trk::PropDirection propDirection		= Trk::anyDirection;
-    
+    Trk::PropDirection momentumDirection = Trk::alongMomentum;
+    Trk::PropDirection oppositeDirection = Trk::oppositeMomentum;
+    Trk::PropDirection propDirection     = Trk::anyDirection;
+
     // initial surface at track eta -
     //   using position or direction according to distance from origin
-    double startingPhi		= 0.;
-    const Trk::Surface* surface	= 0;
-    if (useEtaPhiFromDirection(parameters))
-    {
-	startingPhi	= parameters.momentum().phi();
-	surface		= m_caloMaterialParam->outerSurface(parameters.momentum().eta());
-    }
-    else
-    {
-	startingPhi	= parameters.position().phi();
-	surface		= m_caloMaterialParam->outerSurface(parameters.position().eta());
-	if (parameters.momentum().dot(parameters.position()) < 0.)
-	{
-	    momentumDirection = Trk::oppositeMomentum;
-	    oppositeDirection = Trk::alongMomentum;
-	}
-    }	
-    if (! surface) return nullptr;
+    double              startingPhi = 0.;
+    const Trk::Surface* surface     = 0;
+    if (useEtaPhiFromDirection(parameters)) {
+        startingPhi = parameters.momentum().phi();
+        surface     = m_caloMaterialParam->outerSurface(parameters.momentum().eta());
+    } else {
+        startingPhi = parameters.position().phi();
+        surface     = m_caloMaterialParam->outerSurface(parameters.position().eta());
+        if (parameters.momentum().dot(parameters.position()) < 0.) {
+            momentumDirection = Trk::oppositeMomentum;
+            oppositeDirection = Trk::alongMomentum;
+        }
+    }
+    if (!surface) return nullptr;
 
     // extrapolate to calo surface (take care to get correct cylinder intersect)
-    unsigned extrapolations	= 0;
-    const Trk::CylinderSurface* cylinder = dynamic_cast<const Trk::CylinderSurface*>(surface);
-    if (cylinder)
-    {
-	if (parameters.position().perp() < cylinder->globalReferencePoint().perp())
-	{
-	    propDirection	= momentumDirection;
-	}
-	else
-	{
-	    propDirection	= oppositeDirection;
-	}
-    }
-    const Trk::TrackParameters*  extrapolation =
-	m_propagator->propagate(parameters,
-				*surface,
-				propDirection,
-				false,
-				*m_magFieldProperties,
-				Trk::nonInteracting);
-    if (! extrapolation) return nullptr;
+    unsigned                    extrapolations = 0;
+    const Trk::CylinderSurface* cylinder       = dynamic_cast<const Trk::CylinderSurface*>(surface);
+    if (cylinder) {
+        if (parameters.position().perp() < cylinder->globalReferencePoint().perp()) {
+            propDirection = momentumDirection;
+        } else {
+            propDirection = oppositeDirection;
+        }
+    }
+    const Trk::TrackParameters* extrapolation =
+        m_propagator->propagate(parameters, *surface, propDirection, false, *m_magFieldProperties, Trk::nonInteracting);
+    if (!extrapolation) return nullptr;
 
     // phi flip means track has crossed beam-axis (so quit)
     double deltaPhi = std::abs(extrapolation->position().phi() - startingPhi);
-    if (deltaPhi > 0.5*M_PI && deltaPhi < 1.5*M_PI)
-    {
-	delete extrapolation;
-	return nullptr;
+    if (deltaPhi > 0.5 * M_PI && deltaPhi < 1.5 * M_PI) {
+        delete extrapolation;
+        return nullptr;
     }
-    
+
     // also quit wrong rz-direction in endcap
-    if (! cylinder)
-    {
-	double signRZ = (extrapolation->position().perp() - parameters.position().perp()) *
-			 (extrapolation->position().z() - parameters.position().z());
-	if (signRZ*extrapolation->position().z() < 0.)
-	{
-	    ATH_MSG_VERBOSE( " wrong way in endcap " );
-	    delete extrapolation;
-	    return nullptr;
-	}
+    if (!cylinder) {
+        double signRZ = (extrapolation->position().perp() - parameters.position().perp())
+                        * (extrapolation->position().z() - parameters.position().z());
+        if (signRZ * extrapolation->position().z() < 0.) {
+            ATH_MSG_VERBOSE(" wrong way in endcap ");
+            delete extrapolation;
+            return nullptr;
+        }
     }
- 
+
     // iterate if extrapolated surface is different
-    bool restart				= false;
-    const Trk::Surface* oldSurface		= surface;
-    const Trk::Surface* extrapolatedSurface	=
-	m_caloMaterialParam->outerSurface(extrapolation->position().eta());
-    while (++extrapolations < 5
-	   && extrapolatedSurface != oldSurface
-	   && extrapolatedSurface != surface)
-    {
-	// take care to get correct solution for cylinder when starting from inside
-	const Trk::CylinderSurface* cylinder =
-	    dynamic_cast<const Trk::CylinderSurface*>(extrapolatedSurface);
-	if (cylinder)
-	{
-	    if (extrapolation->position().perp() < cylinder->globalReferencePoint().perp())
-	    {
-		propDirection	= momentumDirection;
-	    }
-	    else
-	    {
-		propDirection	= oppositeDirection;
-	    }
-	}
-	else
-	{
-	    propDirection	= Trk::anyDirection;
-	}
-
-	const Trk::TrackParameters* oldParameters = extrapolation;
-	extrapolation = m_propagator->propagate(*oldParameters,
-						*extrapolatedSurface,
-						propDirection,
-						false,
-						*m_magFieldProperties,
-						Trk::nonInteracting);
-	if (! extrapolation)
-	{
-	    // restart from input parameters (if not already done)
-	    //   trap no solution after restart
-	    if (oldParameters == &parameters)
-	    {
-		ATH_MSG_VERBOSE( " outerParameters:  extrap fails " );
-		return nullptr;
-	    }
-	    //   arbitrary choice for oscillating solutions (i.e. following restart)
-	    if (restart)
-	    {
-		ATH_MSG_DEBUG( " outerParameters:  oscillating => arbitrary solution chosen" );
-		++m_countArbitrarySolution;
-		extrapolation		= oldParameters;
-		extrapolatedSurface	= &extrapolation->associatedSurface();
-		surface			= extrapolatedSurface;
-	    }
-	    else
-	    {
-		ATH_MSG_VERBOSE( " outerParameters:  restart extrap after "
-				 << extrapolations << " extrapolations" );
-		delete oldParameters;
-		restart		=  true;
-		extrapolations	-= 2;
-		extrapolation	=  &parameters;
-		surface		=  oldSurface;
-	    }
-	}
-	else
-	{
-	    // update surface
-	    if (oldParameters != &parameters) delete oldParameters;
-	    oldSurface		= surface;
-	    surface		= extrapolatedSurface;
-	    extrapolatedSurface	= m_caloMaterialParam->outerSurface(extrapolation->position().eta());
-	}
+    bool                restart             = false;
+    const Trk::Surface* oldSurface          = surface;
+    const Trk::Surface* extrapolatedSurface = m_caloMaterialParam->outerSurface(extrapolation->position().eta());
+    while (++extrapolations < 5 && extrapolatedSurface != oldSurface && extrapolatedSurface != surface) {
+        // take care to get correct solution for cylinder when starting from inside
+        const Trk::CylinderSurface* cylinder = dynamic_cast<const Trk::CylinderSurface*>(extrapolatedSurface);
+        if (cylinder) {
+            if (extrapolation->position().perp() < cylinder->globalReferencePoint().perp()) {
+                propDirection = momentumDirection;
+            } else {
+                propDirection = oppositeDirection;
+            }
+        } else {
+            propDirection = Trk::anyDirection;
+        }
+
+        const Trk::TrackParameters* oldParameters = extrapolation;
+        extrapolation = m_propagator->propagate(*oldParameters, *extrapolatedSurface, propDirection, false,
+                                                *m_magFieldProperties, Trk::nonInteracting);
+        if (!extrapolation) {
+            // restart from input parameters (if not already done)
+            //   trap no solution after restart
+            if (oldParameters == &parameters) {
+                ATH_MSG_VERBOSE(" outerParameters:  extrap fails ");
+                return nullptr;
+            }
+            //   arbitrary choice for oscillating solutions (i.e. following restart)
+            if (restart) {
+                ATH_MSG_DEBUG(" outerParameters:  oscillating => arbitrary solution chosen");
+                ++m_countArbitrarySolution;
+                extrapolation       = oldParameters;
+                extrapolatedSurface = &extrapolation->associatedSurface();
+                surface             = extrapolatedSurface;
+            } else {
+                ATH_MSG_VERBOSE(" outerParameters:  restart extrap after " << extrapolations << " extrapolations");
+                delete oldParameters;
+                restart = true;
+                extrapolations -= 2;
+                extrapolation = &parameters;
+                surface       = oldSurface;
+            }
+        } else {
+            // update surface
+            if (oldParameters != &parameters) delete oldParameters;
+            oldSurface          = surface;
+            surface             = extrapolatedSurface;
+            extrapolatedSurface = m_caloMaterialParam->outerSurface(extrapolation->position().eta());
+        }
     }
 
     // final check for phi flip
     deltaPhi = std::abs(extrapolation->position().phi() - startingPhi);
-    if (deltaPhi > 0.5*M_PI && deltaPhi < 1.5*M_PI)
-    {
-	delete extrapolation;
-	return nullptr;
+    if (deltaPhi > 0.5 * M_PI && deltaPhi < 1.5 * M_PI) {
+        delete extrapolation;
+        return nullptr;
     }
 
-    ATH_MSG_VERBOSE( " outerParameters:  success after "
-		     <<  extrapolations << " extrapolation step(s). "
-		     << std::setiosflags(std::ios::fixed) << "  Intersection at: r,phi,z "
-		     << std::setw(7) << std::setprecision(1) << extrapolation->position().perp()
-		     << std::setw(7) << std::setprecision(3) << extrapolation->position().phi()
-		     << std::setw(8) << std::setprecision(1) << extrapolation->position().z()
-		     << "  Direction: eta,phi "
-		     << std::setw(7) << std::setprecision(3) << extrapolation->momentum().eta()
-		     << std::setw(7) << std::setprecision(3) << extrapolation->momentum().phi() );
-        
+    ATH_MSG_VERBOSE(" outerParameters:  success after "
+                    << extrapolations << " extrapolation step(s). " << std::setiosflags(std::ios::fixed)
+                    << "  Intersection at: r,phi,z " << std::setw(7) << std::setprecision(1)
+                    << extrapolation->position().perp() << std::setw(7) << std::setprecision(3)
+                    << extrapolation->position().phi() << std::setw(8) << std::setprecision(1)
+                    << extrapolation->position().z() << "  Direction: eta,phi " << std::setw(7) << std::setprecision(3)
+                    << extrapolation->momentum().eta() << std::setw(7) << std::setprecision(3)
+                    << extrapolation->momentum().phi());
+
     return extrapolation;
 }
 
 bool
-MuidCaloTrackStateOnSurface::useEtaPhiFromDirection (const Trk::TrackParameters& parameters) const
+MuidCaloTrackStateOnSurface::useEtaPhiFromDirection(const Trk::TrackParameters& parameters) const
 {
-    // estimate eta,phi for the track intersect with the calo from the track direction when the 
+    // estimate eta,phi for the track intersect with the calo from the track direction when the
     // parameters are expressed near the beam-line, further out it's better to use the track position
-    double parameterDistance	= parameters.position().mag();
+    double parameterDistance = parameters.position().mag();
     if (dynamic_cast<const Trk::PerigeeSurface*>(&parameters.associatedSurface()))
-	parameterDistance = parameters.associatedSurface().center().perp();
-    
-    if (parameterDistance < 0.5*Gaudi::Units::meter) return true;
+        parameterDistance = parameters.associatedSurface().center().perp();
+
+    if (parameterDistance < 0.5 * Gaudi::Units::meter) return true;
     return false;
 }
 
-}	// end of namespace
+}  // namespace Rec
diff --git a/Reconstruction/MuonIdentification/MuidCaloScatteringTools/src/MuidMaterialEffectsOnTrackProvider.cxx b/Reconstruction/MuonIdentification/MuidCaloScatteringTools/src/MuidMaterialEffectsOnTrackProvider.cxx
index 2163443c04da9841f251c458d71b572e2420b7e1..efe6628c48c347dda38b7fcf1b6869a6ef64cda3 100644
--- a/Reconstruction/MuonIdentification/MuidCaloScatteringTools/src/MuidMaterialEffectsOnTrackProvider.cxx
+++ b/Reconstruction/MuonIdentification/MuidCaloScatteringTools/src/MuidMaterialEffectsOnTrackProvider.cxx
@@ -1,13 +1,14 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
 // MuidMaterialEffectsOnTrackProvider.cxx, (c) ATLAS Detector software
 ///////////////////////////////////////////////////////////////////
 
-#include "GeoPrimitives/GeoPrimitives.h"
 #include "MuidCaloScatteringTools/MuidMaterialEffectsOnTrackProvider.h"
+
+#include "GeoPrimitives/GeoPrimitives.h"
 #include "TrkGeometry/CylinderLayer.h"
 #include "TrkGeometry/DiscLayer.h"
 // #include "TrkGeometry/HomogenousLayerMaterial.h"
@@ -23,56 +24,34 @@
 #include "muonEvent/CaloEnergy.h"
 
 // constructor
-Rec::MuidMaterialEffectsOnTrackProvider::MuidMaterialEffectsOnTrackProvider(
-    const std::string& t, const std::string& n, const IInterface* p)
-    :	AthAlgTool(t,n,p),
-	m_calotsos("Rec::MuidCaloTrackStateOnSurface/MuidCaloTrackStateOnSurface"),
-	m_calotsosparam(""),
-        m_scattool("Trk::MultipleScatteringUpdator/AtlasMultipleScatteringUpdator")
+Rec::MuidMaterialEffectsOnTrackProvider::MuidMaterialEffectsOnTrackProvider(const std::string& t, const std::string& n,
+                                                                            const IInterface* p)
+    : AthAlgTool(t, n, p)
 {
-    m_cosmics=false;
-    declareProperty("Cosmics",m_cosmics);
-    declareProperty("TSOSTool",m_calotsos);
-    declareProperty("TSOSToolParam",m_calotsosparam);
-    declareProperty("MultipleScatteringTool",m_scattool);
+    m_cosmics = false;
+    declareProperty("Cosmics", m_cosmics);
     declareInterface<IMaterialEffectsOnTrackProvider>(this);
-         
 }
 
 // destructor
-Rec::MuidMaterialEffectsOnTrackProvider::~MuidMaterialEffectsOnTrackProvider()
-{}
+Rec::MuidMaterialEffectsOnTrackProvider::~MuidMaterialEffectsOnTrackProvider() {}
 
 // Athena standard methods
 // initialize
 StatusCode
 Rec::MuidMaterialEffectsOnTrackProvider::initialize()
 {
-    if (!m_cosmics){ 
-    if (m_calotsos.retrieve().isFailure())
-    {
-	ATH_MSG_FATAL( "Failed to retrieve tool " << m_calotsos.name() );
-        return StatusCode::FAILURE;
-    }
-    else
-    {
-	ATH_MSG_INFO( "Retrieved tool " << m_calotsos.name() );
-    }
-    if (!m_calotsosparam.empty()) {
-    if (m_calotsosparam.retrieve().isFailure())
-    {
-	ATH_MSG_FATAL( "Failed to retrieve tool " << m_calotsosparam.name() );
-        return StatusCode::FAILURE;
-    }
-    else
-    {
-	ATH_MSG_INFO( "Retrieved tool " << m_calotsosparam.name() );
-    }
-    }
-    if (m_scattool.retrieve().isFailure()) { 
-      ATH_MSG_FATAL( "Could not get " << m_scattool.type() );
-      return StatusCode::FAILURE; 
-    }
+    if (!m_cosmics) {
+
+        ATH_CHECK(m_calotsos.retrieve());
+        ATH_MSG_INFO("Retrieved tool " << m_calotsos.name());
+
+        if (!m_calotsosparam.empty()) {
+            ATH_CHECK(m_calotsosparam.retrieve());
+            ATH_MSG_INFO("Retrieved tool " << m_calotsosparam.name());
+        }
+
+        ATH_CHECK(m_scattool.retrieve());
     }
     return StatusCode::SUCCESS;
 }
@@ -81,88 +60,89 @@ Rec::MuidMaterialEffectsOnTrackProvider::initialize()
 StatusCode
 Rec::MuidMaterialEffectsOnTrackProvider::finalize()
 {
-    ATH_MSG_DEBUG( name() << " finalize() successful" );
+    ATH_MSG_DEBUG(name() << " finalize() successful");
     return StatusCode::SUCCESS;
 }
 
-std::vector< Trk::MaterialEffectsOnTrack>
-Rec::MuidMaterialEffectsOnTrackProvider::extrapolationSurfacesAndEffects (
-    const Trk::TrackingVolume&	/*vol*/,
-    const Trk::IPropagator&	/*prop*/,
-    const Trk::TrackParameters&	parm,
-    const Trk::Surface&		/*surf*/,
-    Trk::PropDirection		/*dir*/,
-    Trk::ParticleHypothesis	/*mateffects*/)  const
+std::vector<Trk::MaterialEffectsOnTrack>
+Rec::MuidMaterialEffectsOnTrackProvider::extrapolationSurfacesAndEffects(
+    const Trk::TrackingVolume& /*vol*/, const Trk::IPropagator& /*prop*/, const Trk::TrackParameters& parm,
+    const Trk::Surface& /*surf*/, Trk::PropDirection /*dir*/, Trk::ParticleHypothesis /*mateffects*/) const
 {
 
     std::vector<Trk::MaterialEffectsOnTrack> meots;
-    if (m_cosmics){
-	Amg::Vector3D position(0,-3700,0);
-   
-   
-        double X0outer=60;
-        double X0inner=60;
-   
-        Trk::CylinderSurface outersurf(3700,5000);
-        Trk::CylinderSurface innersurf(2000,5000);
-        Trk::CylinderSurface middlesurf(2850,5000);
-    
-        std::pair<double,double> energy;
-  
-        energy.first=-3000;
-        energy.second=500; // ???
+    if (m_cosmics) {
+        Amg::Vector3D position(0, -3700, 0);
+
+
+        double X0outer = 60;
+        double X0inner = 60;
+
+        Trk::CylinderSurface outersurf(3700, 5000);
+        Trk::CylinderSurface innersurf(2000, 5000);
+        Trk::CylinderSurface middlesurf(2850, 5000);
+
+        std::pair<double, double> energy;
+
+        energy.first  = -3000;
+        energy.second = 500;  // ???
 
         // log << MSG::DEBUG << " returning " << matLayers->size() << " materialLayers " << endmsg;
-        ATH_MSG_DEBUG( "first x0: " << X0inner << " second x0: " << X0outer << " eloss: " << energy.first << " sigma: " << energy.second );
-  
-        Trk::MaterialProperties matprop(X0outer,1.,0.,0.,0.,0.);
-        double sigmascat=std::sqrt(m_scattool->sigmaSquare(matprop,std::abs(1./parm.parameters()[Trk::qOverP]),1.,Trk::muon));
+        ATH_MSG_DEBUG("first x0: " << X0inner << " second x0: " << X0outer << " eloss: " << energy.first
+                                   << " sigma: " << energy.second);
+
+        Trk::MaterialProperties matprop(X0outer, 1., 0., 0., 0., 0.);
+        double                  sigmascat =
+            std::sqrt(m_scattool->sigmaSquare(matprop, std::abs(1. / parm.parameters()[Trk::qOverP]), 1., Trk::muon));
 
-        Trk::ScatteringAngles   *newsa=new Trk::ScatteringAngles(0,0,sigmascat/std::sin(parm.parameters()[Trk::theta]),sigmascat);
-        Trk::ScatteringAngles   *newsa2=new Trk::ScatteringAngles(0,0,sigmascat/std::sin(parm.parameters()[Trk::theta]),sigmascat);
+        Trk::ScatteringAngles* newsa =
+            new Trk::ScatteringAngles(0, 0, sigmascat / std::sin(parm.parameters()[Trk::theta]), sigmascat);
+        Trk::ScatteringAngles* newsa2 =
+            new Trk::ScatteringAngles(0, 0, sigmascat / std::sin(parm.parameters()[Trk::theta]), sigmascat);
 
-   
-	meots.push_back(Trk::MaterialEffectsOnTrack(X0inner,newsa,innersurf));
-	meots.push_back(Trk::MaterialEffectsOnTrack(0,new Trk::EnergyLoss(energy.first,energy.second),middlesurf,Trk::MaterialEffectsBase::EnergyLossEffects));
-	meots.push_back(Trk::MaterialEffectsOnTrack(X0outer,newsa2,outersurf));
 
-        for (int i=0;i<3;i++){
-          //std::cout << "meot: " << meots[i] << std::endl;
+        meots.push_back(Trk::MaterialEffectsOnTrack(X0inner, newsa, innersurf));
+        meots.push_back(Trk::MaterialEffectsOnTrack(0, new Trk::EnergyLoss(energy.first, energy.second), middlesurf,
+                                                    Trk::MaterialEffectsBase::EnergyLossEffects));
+        meots.push_back(Trk::MaterialEffectsOnTrack(X0outer, newsa2, outersurf));
 
+        for (int i = 0; i < 3; i++) {
+            // std::cout << "meot: " << meots[i] << std::endl;
         }
-    }
-    else{
-	std::vector<const Trk::TrackStateOnSurface*>* tsosvec=m_calotsos->caloTSOS(parm);
-        if ((!tsosvec || tsosvec->size()!=3) && !m_calotsosparam.empty()) {
-          if (tsosvec) {
-            for (int i=0;i< (int)tsosvec->size() ;i++) delete (*tsosvec)[i];
-          }
-          delete tsosvec;
-          tsosvec=m_calotsosparam->caloTSOS(parm);        
+    } else {
+        std::vector<const Trk::TrackStateOnSurface*>* tsosvec = m_calotsos->caloTSOS(parm);
+        if ((!tsosvec || tsosvec->size() != 3) && !m_calotsosparam.empty()) {
+            if (tsosvec) {
+                for (int i = 0; i < (int)tsosvec->size(); i++) delete (*tsosvec)[i];
+            }
+            delete tsosvec;
+            tsosvec = m_calotsosparam->caloTSOS(parm);
         }
-	for (int i=0;i< (tsosvec ? (int)tsosvec->size() : 0) ;i++){
-	    const Trk::MaterialEffectsOnTrack *meot=dynamic_cast<const Trk::MaterialEffectsOnTrack *>((*tsosvec)[i]->materialEffectsOnTrack());
-            if(!meot) continue;
-            double sintheta=std::sin((*tsosvec)[i]->trackParameters()->parameters()[Trk::theta]);
-            double qoverp=(*tsosvec)[i]->trackParameters()->parameters()[Trk::qOverP];
-            const CaloEnergy *eloss=0;
-	    if (meot) eloss=dynamic_cast<const CaloEnergy *>(meot->energyLoss());
-            
-            Trk::EnergyLoss *neweloss=0;
-            Trk::ScatteringAngles *newsa=0;
-            if (eloss) neweloss = new CaloEnergy(*eloss);
+        for (int i = 0; i < (tsosvec ? (int)tsosvec->size() : 0); i++) {
+            const Trk::MaterialEffectsOnTrack* meot =
+                dynamic_cast<const Trk::MaterialEffectsOnTrack*>((*tsosvec)[i]->materialEffectsOnTrack());
+            if (!meot) continue;
+            double            sintheta = std::sin((*tsosvec)[i]->trackParameters()->parameters()[Trk::theta]);
+            double            qoverp   = (*tsosvec)[i]->trackParameters()->parameters()[Trk::qOverP];
+            const CaloEnergy* eloss    = 0;
+            if (meot) eloss = dynamic_cast<const CaloEnergy*>(meot->energyLoss());
+
+            Trk::EnergyLoss*       neweloss = 0;
+            Trk::ScatteringAngles* newsa    = 0;
+            if (eloss)
+                neweloss = new CaloEnergy(*eloss);
             else {
-              Trk::MaterialProperties matprop(meot->thicknessInX0(),1.,0.,0.,0.,0.);
-              double sigmascat=std::sqrt(m_scattool->sigmaSquare(matprop,std::abs(1./qoverp),1.,Trk::muon));
-              newsa=new Trk::ScatteringAngles(0,0,sigmascat/sintheta,sigmascat);
+                Trk::MaterialProperties matprop(meot->thicknessInX0(), 1., 0., 0., 0., 0.);
+                double sigmascat = std::sqrt(m_scattool->sigmaSquare(matprop, std::abs(1. / qoverp), 1., Trk::muon));
+                newsa            = new Trk::ScatteringAngles(0, 0, sigmascat / sintheta, sigmascat);
             }
-            Trk::MaterialEffectsOnTrack newmeot(meot->thicknessInX0(),newsa,neweloss,(*tsosvec)[i]->trackParameters()->associatedSurface());
-	    meots.push_back(newmeot);
+            Trk::MaterialEffectsOnTrack newmeot(meot->thicknessInX0(), newsa, neweloss,
+                                                (*tsosvec)[i]->trackParameters()->associatedSurface());
+            meots.push_back(newmeot);
             delete (*tsosvec)[i];
-	}
-        delete tsosvec; 
-    }  
-    if (meots.size()<3) meots.clear();
+        }
+        delete tsosvec;
+    }
+    if (meots.size() < 3) meots.clear();
     return meots;
 }
-
diff --git a/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/CombinedMuonTrackBuilder.h b/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/CombinedMuonTrackBuilder.h
index 2d12aad72c002a73ca54badba1c58afa9f67bc4a..a2da5f38073357ab4383fa9c88722009d7de30cf 100755
--- a/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/CombinedMuonTrackBuilder.h
+++ b/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/CombinedMuonTrackBuilder.h
@@ -98,13 +98,13 @@ class CombinedMuonTrackBuilder : public AthAlgTool, virtual public ICombinedMuon
     Trk::Track* fit(Trk::Track& track, const Trk::RunOutlierRemoval runOutlier = false,
                     const Trk::ParticleHypothesis particleHypothesis = Trk::muon) const;
 
-    /** 
+    /**
         fit a set of MeasurementBase objects with starting value for perigeeParameters */
     Trk::Track* fit(const Trk::MeasurementSet& /*measurementSet*/, const Trk::TrackParameters& /*perigeeStartValue*/,
                     const Trk::RunOutlierRemoval /*runOutlier*/,
                     const Trk::ParticleHypothesis /*particleHypothesis*/) const;
 
-    /** 
+    /**
         combined muon fit */
     Trk::Track* fit(const Trk::Track& indetTrack, Trk::Track& extrapolatedTrack,
                     const Trk::RunOutlierRemoval  runOutlier         = false,
@@ -171,29 +171,103 @@ class CombinedMuonTrackBuilder : public AthAlgTool, virtual public ICombinedMuon
     bool checkTrack(std::string txt, Trk::Track* newTrack, Trk::Track* track) const;
 
     // helpers, managers, tools
-    ToolHandle<Rec::IMuidCaloEnergy>                m_caloEnergyParam;
-    ToolHandle<Rec::IMuidCaloTrackStateOnSurface>   m_caloTSOS;
-    ToolHandle<Muon::IMuonTrackCleaner>             m_cleaner;
-    ToolHandle<Muon::IMuonClusterOnTrackCreator>    m_cscRotCreator;
-    ToolHandle<Trk::IExtrapolator>                  m_extrapolator;
-    ToolHandle<Trk::ITrackFitter>                   m_fitter;    // curved track fitter
-    ToolHandle<Trk::ITrackFitter>                   m_fitterSL;  // straight line fitter
-    ToolHandle<Trk::IIntersector>                   m_intersector;
-    ToolHandle<Trk::IMaterialAllocator>             m_materialAllocator;
-    ToolHandle<Muon::IMdtDriftCircleOnTrackCreator> m_mdtRotCreator;
-    ToolHandle<Muon::IMuonErrorOptimisationTool>    m_muonErrorOptimizer;
-    ToolHandle<Muon::IMuonHoleRecoveryTool>         m_muonHoleRecovery;
-    ToolHandle<Trk::IPropagator>                    m_propagator;
-    ToolHandle<Trk::IPropagator>                    m_propagatorSL;
-    ToolHandle<Muon::MuonEDMPrinterTool>            m_printer;
-    ToolHandle<Rec::IMuonTrackQuery>                m_trackQuery;
-    ToolHandle<Trk::ITrackSummaryTool>              m_trackSummary;
-    ToolHandle<Trk::ITrkMaterialProviderTool>       m_materialUpdator;
-
-    ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
+    ToolHandle<Rec::IMuidCaloEnergy> m_caloEnergyParam{
+        this,
+        "CaloEnergyParam",
+        "Rec::MuidCaloEnergyTool/MuidCaloEnergyToolParam",
+    };
+    ToolHandle<Rec::IMuidCaloTrackStateOnSurface> m_caloTSOS{
+        this,
+        "CaloTSOS",
+        "Rec::MuidCaloTrackStateOnSurface/MuidCaloTrackStateOnSurface",
+    };
+    ToolHandle<Muon::IMuonTrackCleaner> m_cleaner{
+        this,
+        "Cleaner",
+        "Muon::MuonTrackCleaner/MuidTrackCleaner",
+    };
+    ToolHandle<Muon::IMuonClusterOnTrackCreator> m_cscRotCreator{
+        this,
+        "CscRotCreator",
+        "",
+    };
+    ToolHandle<Trk::IExtrapolator> m_extrapolator{
+        this,
+        "Extrapolator",
+        "Trk::Extrapolator/AtlasExtrapolator",
+    };
+    ToolHandle<Trk::ITrackFitter> m_fitter{
+        this,
+        "Fitter",
+        "Trk::iPatFitter/iPatFitter",
+    };  // curved track fitter
+    ToolHandle<Trk::ITrackFitter> m_fitterSL{
+        this,
+        "SLFitter",
+        "Trk::iPatFitter/iPatSLFitter",
+    };  // straight line fitter
+    ToolHandle<Trk::IIntersector> m_intersector{
+        this,
+        "Intersector",
+        "Trk::RungeKuttaIntersector/RungeKuttaIntersector",
+    };
+    ToolHandle<Trk::IMaterialAllocator> m_materialAllocator{
+        this,
+        "MaterialAllocator",
+        "",
+    };
+    ToolHandle<Muon::IMdtDriftCircleOnTrackCreator> m_mdtRotCreator{
+        this,
+        "MdtRotCreator",
+        "",
+    };
+    ToolHandle<Muon::IMuonErrorOptimisationTool> m_muonErrorOptimizer{
+        this,
+        "MuonErrorOptimizer",
+        "Muon::MuonErrorOptimisationTool/MuidErrorOptimisationTool",
+    };
+    ToolHandle<Muon::IMuonHoleRecoveryTool> m_muonHoleRecovery{
+        this,
+        "MuonHoleRecovery",
+        "Muon::MuonChamberHoleRecoveryTool/MuonChamberHoleRecoveryTool",
+    };
+    ToolHandle<Trk::IPropagator> m_propagator{
+        this,
+        "Propagator",
+        "Trk::IntersectorWrapper/IntersectorWrapper",
+    };
+    ToolHandle<Trk::IPropagator> m_propagatorSL{
+        this,
+        "SLPropagator",
+        "Trk::StraightLinePropagator/MuonStraightLinePropagator",
+    };
+    ToolHandle<Muon::MuonEDMPrinterTool> m_printer{
+        this,
+        "Printer",
+        "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool",
+    };
+    ToolHandle<Rec::IMuonTrackQuery> m_trackQuery{
+        this,
+        "TrackQuery",
+        "Rec::MuonTrackQuery/MuonTrackQuery",
+    };
+    ToolHandle<Trk::ITrackSummaryTool> m_trackSummary{
+        this,
+        "TrackSummaryTool",
+        "Trk::TrackSummaryTool/MuidTrackSummaryTool",
+    };
+    ToolHandle<Trk::ITrkMaterialProviderTool> m_materialUpdator{
+        this,
+        "CaloMaterialProvider",
+        "Trk::TrkMaterialProviderTool/TrkMaterialProviderTool",
+    };
+
+    ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc",
+                                                        "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
 
     // Read handle for conditions object to get the field cache
-    SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"};
+    SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCacheCondObjInputKey{
+        this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"};
     ServiceHandle<Trk::ITrackingGeometrySvc> m_trackingGeometrySvc;  // init with callback
     ServiceHandle<Trk::ITrackingVolumesSvc>  m_trackingVolumesSvc;
 
@@ -231,8 +305,8 @@ class CombinedMuonTrackBuilder : public AthAlgTool, virtual public ICombinedMuon
     bool m_inputSlimming;
 
     // constants
-    const Trk::Volume* m_calorimeterVolume;
-    const Trk::Volume* m_indetVolume;
+    const Trk::Volume*         m_calorimeterVolume;
+    const Trk::Volume*         m_indetVolume;
     const Trk::TrackingVolume* m_spectrometerEntrance;
 
     // vertex region and phi modularity for pseudo-measurement constraints
diff --git a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx
index bf23fea72aea1662a1191fa558f8cdc6d7c0e772..0cc8a195bbb3241a5ec9bf782cdfeb8f5ed3694d 100755
--- a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx
+++ b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx
@@ -18,7 +18,6 @@
 #include <iomanip>
 #include <memory>
 
-
 #include "AthenaKernel/Units.h"
 #include "EventPrimitives/EventPrimitivesHelpers.h"
 #include "EventPrimitives/EventPrimitivesToStringConverter.h"
@@ -59,24 +58,6 @@ namespace Rec {
 CombinedMuonTrackBuilder::CombinedMuonTrackBuilder(const std::string& type, const std::string& name,
                                                    const IInterface* parent)
     : AthAlgTool(type, name, parent),
-      m_caloEnergyParam("Rec::MuidCaloEnergyTool/MuidCaloEnergyToolParam", this),
-      m_caloTSOS("Rec::MuidCaloTrackStateOnSurface/MuidCaloTrackStateOnSurface", this),
-      m_cleaner("Muon::MuonTrackCleaner/MuidTrackCleaner", this),
-      m_cscRotCreator("", this),
-      m_extrapolator("Trk::Extrapolator/AtlasExtrapolator", this),
-      m_fitter("Trk::iPatFitter/iPatFitter", this),
-      m_fitterSL("Trk::iPatFitter/iPatSLFitter", this),
-      m_intersector("Trk::RungeKuttaIntersector/RungeKuttaIntersector", this),
-      m_materialAllocator("", this),
-      m_mdtRotCreator("", this),
-      m_muonErrorOptimizer("Muon::MuonErrorOptimisationTool/MuidErrorOptimisationTool", this),
-      m_muonHoleRecovery("Muon::MuonChamberHoleRecoveryTool/MuonChamberHoleRecoveryTool", this),
-      m_propagator("Trk::IntersectorWrapper/IntersectorWrapper", this),
-      m_propagatorSL("Trk::StraightLinePropagator/MuonStraightLinePropagator", this),
-      m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool", this),
-      m_trackQuery("Rec::MuonTrackQuery/MuonTrackQuery", this),
-      m_trackSummary("Trk::TrackSummaryTool/MuidTrackSummaryTool", this),
-      m_materialUpdator("Trk::TrkMaterialProviderTool/TrkMaterialProviderTool", this),
       m_trackingGeometrySvc("TrackingGeometrySvc/AtlasTrackingGeometrySvc", name),
       m_trackingVolumesSvc("TrackingVolumesSvc/TrackingVolumesSvc", name),
       m_magFieldProperties(Trk::FullField),
@@ -132,22 +113,7 @@ CombinedMuonTrackBuilder::CombinedMuonTrackBuilder(const std::string& type, cons
     m_messageHelper = new MessageHelper(*this);
 
     declareInterface<ICombinedMuonTrackBuilder>(this);
-    declareProperty("CaloEnergyParam", m_caloEnergyParam);
-    declareProperty("CaloTSOS", m_caloTSOS);
-    declareProperty("Cleaner", m_cleaner);
-    declareProperty("CscRotCreator", m_cscRotCreator);
-    declareProperty("Extrapolator", m_extrapolator);
-    declareProperty("Fitter", m_fitter);
-    declareProperty("SLFitter", m_fitterSL);
-    declareProperty("Intersector", m_intersector);
-    declareProperty("MaterialAllocator", m_materialAllocator);
-    declareProperty("MdtRotCreator", m_mdtRotCreator);
-    declareProperty("MuonErrorOptimizer", m_muonErrorOptimizer);
-    declareProperty("MuonHoleRecovery", m_muonHoleRecovery);
-    declareProperty("Propagator", m_propagator);
-    declareProperty("SLPropagator", m_propagatorSL);
     declareProperty("TrackingVolumesSvc", m_trackingVolumesSvc);
-    declareProperty("TrackSummaryTool", m_trackSummary);
     declareProperty("AllowCleanerVeto", m_allowCleanerVeto);
     declareProperty("CleanCombined", m_cleanCombined);
     declareProperty("CleanStandalone", m_cleanStandalone);
@@ -178,14 +144,12 @@ CombinedMuonTrackBuilder::CombinedMuonTrackBuilder(const std::string& type, cons
 
     declareProperty("UpdateWithCaloTG", m_updateWithCaloTG);
     declareProperty("UseCaloTG", m_useCaloTG);
-    declareProperty("CaloMaterialProvider", m_materialUpdator);
     declareProperty("IterateCombinedTrackFit", m_iterateCombinedTrackFit);
     declareProperty("RefineELossCombinedTrackFit", m_refineELossCombinedTrackFit);
     declareProperty("RefineELossStandAloneTrackFit", m_refineELossStandAloneTrackFit);
     declareProperty("AddElossID", m_addElossID);
     declareProperty("AddIDMSerrors", m_addIDMSerrors);
     declareProperty("UseRefitTrackError", m_useRefitTrackError);
-    declareProperty("TrackQuery", m_trackQuery);
 }
 
 
@@ -294,7 +258,7 @@ CombinedMuonTrackBuilder::initialize()
     ATH_CHECK(m_intersector.retrieve());
     ATH_MSG_DEBUG("Retrieved tool " << m_intersector);
     /// handle to the magnetic field cache
-    ATH_CHECK( m_fieldCacheCondObjInputKey.initialize() );
+    ATH_CHECK(m_fieldCacheCondObjInputKey.initialize());
     ATH_MSG_DEBUG("Setup handle for key " << m_fieldCacheCondObjInputKey);
 
     if (!m_materialAllocator.empty()) {
@@ -371,8 +335,8 @@ CombinedMuonTrackBuilder::initialize()
         // missing TrackingGeometrySvc - no perigee will be added at MS entrance
         m_messageHelper->printWarning(41);
     } else {
-      const Trk::TrackingGeometry* trkGeo = m_trackingGeometrySvc->trackingGeometry();
-      if (trkGeo) m_spectrometerEntrance = trkGeo->trackingVolume("MuonSpectrometerEntrance");
+        const Trk::TrackingGeometry* trkGeo = m_trackingGeometrySvc->trackingGeometry();
+        if (trkGeo) m_spectrometerEntrance = trkGeo->trackingVolume("MuonSpectrometerEntrance");
     }
 
     return StatusCode::SUCCESS;
@@ -449,18 +413,19 @@ CombinedMuonTrackBuilder::combinedFit(const Trk::Track& indetTrack, const Trk::T
 
     // match extrapolated indet track to inner calorimeter scattering surface
     // provided momentum defined (solenoid on)
-    MagField::AtlasFieldCache    fieldCache;
+    MagField::AtlasFieldCache fieldCache;
     // Get field cache object
-    EventContext ctx = Gaudi::Hive::currentContext();
+    EventContext                               ctx = Gaudi::Hive::currentContext();
     SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCacheCondObjInputKey, ctx};
-    const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
-   
+    const AtlasFieldCacheCondObj*              fieldCondObj{*readHandle};
+
     if (fieldCondObj == nullptr) {
-      ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
-      return nullptr;
+        ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key "
+                      << m_fieldCacheCondObjInputKey.key());
+        return nullptr;
     }
-    fieldCondObj->getInitializedCache (fieldCache);
-    
+    fieldCondObj->getInitializedCache(fieldCache);
+
     if (surface && fieldCache.solenoidOn() && !m_updateWithCaloTG) {
         const Trk::TrackStateOnSurface* innerTSOS = nullptr;
 
@@ -517,14 +482,15 @@ CombinedMuonTrackBuilder::combinedFit(const Trk::Track& indetTrack, const Trk::T
         // such as need to replace calorimeter material or presence of pseudomeasurements
         if (!surface) {  // extrapolate outwards to associate calorimeter material effects
             ATH_MSG_VERBOSE("Calling createMuonTrack from " << __func__ << " at line " << __LINE__);
-            muonTrack = createMuonTrack(
-                extrapolatedTrack, indetTrack.perigeeParameters(), nullptr, extrapolatedTrack.trackStateOnSurfaces()->begin(),
-                extrapolatedTrack.trackStateOnSurfaces()->end(), extrapolatedTrack.trackStateOnSurfaces()->size());
-        } else if (m_trackQuery->numberPseudoMeasurements(extrapolatedTrack) > 1) {  // remove pseudo meas
-            ATH_MSG_VERBOSE("Calling createMuonTrack from " << __func__ << " at line " << __LINE__);
-            muonTrack = createMuonTrack(extrapolatedTrack, nullptr, nullptr, extrapolatedTrack.trackStateOnSurfaces()->begin(),
+            muonTrack = createMuonTrack(extrapolatedTrack, indetTrack.perigeeParameters(), nullptr,
+                                        extrapolatedTrack.trackStateOnSurfaces()->begin(),
                                         extrapolatedTrack.trackStateOnSurfaces()->end(),
                                         extrapolatedTrack.trackStateOnSurfaces()->size());
+        } else if (m_trackQuery->numberPseudoMeasurements(extrapolatedTrack) > 1) {  // remove pseudo meas
+            ATH_MSG_VERBOSE("Calling createMuonTrack from " << __func__ << " at line " << __LINE__);
+            muonTrack = createMuonTrack(
+                extrapolatedTrack, nullptr, nullptr, extrapolatedTrack.trackStateOnSurfaces()->begin(),
+                extrapolatedTrack.trackStateOnSurfaces()->end(), extrapolatedTrack.trackStateOnSurfaces()->size());
         } else {  // otherwise can just copy the extrapolated track
             ATH_MSG_VERBOSE("Calling createMuonTrack from " << __func__ << " at line " << __LINE__);
             muonTrack = createMuonTrack(extrapolatedTrack, extrapolatedTrack.perigeeParameters(), nullptr,
@@ -809,18 +775,19 @@ CombinedMuonTrackBuilder::indetExtension(const Trk::Track&           indetTrack,
     // fail when solenoid off and toroid on (as extrapolation from ID is not the correct strategy)
     ToolHandle<Trk::IPropagator> propagator = m_propagatorSL;
 
-    MagField::AtlasFieldCache    fieldCache;
+    MagField::AtlasFieldCache fieldCache;
     // Get field cache object
-    EventContext ctx = Gaudi::Hive::currentContext();
+    EventContext                               ctx = Gaudi::Hive::currentContext();
     SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCacheCondObjInputKey, ctx};
-    const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
-   
+    const AtlasFieldCacheCondObj*              fieldCondObj{*readHandle};
+
     if (fieldCondObj == nullptr) {
-      ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
-      return 0;
+        ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key "
+                      << m_fieldCacheCondObjInputKey.key());
+        return 0;
     }
-    fieldCondObj->getInitializedCache (fieldCache);
-    
+    fieldCondObj->getInitializedCache(fieldCache);
+
     if (fieldCache.toroidOn()) {
         // fail when solenoid off and toroid on - as extrapolation from ID is not the correct strategy
         //   for material effects, fit starting value etc
@@ -975,17 +942,18 @@ CombinedMuonTrackBuilder::standaloneFit(const Trk::Track& inputSpectrometerTrack
                                         float bs_x, float bs_y, float bs_z) const
 {
 
-    MagField::AtlasFieldCache    fieldCache;
+    MagField::AtlasFieldCache fieldCache;
     // Get field cache object
-    EventContext ctx = Gaudi::Hive::currentContext();
+    EventContext                               ctx = Gaudi::Hive::currentContext();
     SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCacheCondObjInputKey, ctx};
-    const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
-   
+    const AtlasFieldCacheCondObj*              fieldCondObj{*readHandle};
+
     if (fieldCondObj == nullptr) {
-      ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
-      return 0;
+        ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key "
+                      << m_fieldCacheCondObjInputKey.key());
+        return 0;
     }
-    fieldCondObj->getInitializedCache (fieldCache);
+    fieldCondObj->getInitializedCache(fieldCache);
 
     // no SA fit with vertex constraint for Toroid off data
     if (m_trackQuery->isLineFit(inputSpectrometerTrack) && !fieldCache.toroidOn()) {
@@ -1179,14 +1147,14 @@ CombinedMuonTrackBuilder::standaloneFit(const Trk::Track& inputSpectrometerTrack
             (beamAxisCovariance)(0, 0) = m_vertex2DSigmaRPhi * m_vertex2DSigmaRPhi;
             (beamAxisCovariance)(1, 1) = m_vertex2DSigmaRPhi * m_vertex2DSigmaRPhi;
             (beamAxisCovariance)(2, 2) = m_vertex2DSigmaZ * m_vertex2DSigmaZ;
-            mbeamAxis = std::make_unique<Trk::RecVertex>(origin, beamAxisCovariance);
+            mbeamAxis                  = std::make_unique<Trk::RecVertex>(origin, beamAxisCovariance);
 
             AmgSymMatrix(3) vertexRegionCovariance;
             vertexRegionCovariance.setZero();
             (vertexRegionCovariance)(0, 0) = m_vertex3DSigmaRPhi * m_vertex3DSigmaRPhi;
             (vertexRegionCovariance)(1, 1) = m_vertex3DSigmaRPhi * m_vertex3DSigmaRPhi;
             (vertexRegionCovariance)(2, 2) = m_vertex3DSigmaZ * m_vertex3DSigmaZ;
-            mvertex = std::make_unique<Trk::RecVertex>(origin, vertexRegionCovariance);
+            mvertex                        = std::make_unique<Trk::RecVertex>(origin, vertexRegionCovariance);
         }
 
         parameters =
@@ -1417,7 +1385,8 @@ CombinedMuonTrackBuilder::standaloneFit(const Trk::Track& inputSpectrometerTrack
                     type.set(Trk::TrackStateOnSurface::Outlier);
                 }
 
-                *t = new const Trk::TrackStateOnSurface(updatedRot, (**t).trackParameters()->clone(), nullptr, nullptr, type);
+                *t = new const Trk::TrackStateOnSurface(updatedRot, (**t).trackParameters()->clone(), nullptr, nullptr,
+                                                        type);
                 delete tsos;
             }
         }
@@ -1716,18 +1685,19 @@ CombinedMuonTrackBuilder::standaloneRefit(const Trk::Track& combinedTrack, float
 
     countAEOTs(&combinedTrack, " in standalone Refit input combinedTrack ");
 
-    MagField::AtlasFieldCache    fieldCache;
+    MagField::AtlasFieldCache fieldCache;
     // Get field cache object
-    EventContext ctx = Gaudi::Hive::currentContext();
+    EventContext                               ctx = Gaudi::Hive::currentContext();
     SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCacheCondObjInputKey, ctx};
-    const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
-   
+    const AtlasFieldCacheCondObj*              fieldCondObj{*readHandle};
+
     if (fieldCondObj == nullptr) {
-      ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
-      return 0;
+        ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key "
+                      << m_fieldCacheCondObjInputKey.key());
+        return 0;
     }
-    fieldCondObj->getInitializedCache (fieldCache);
-    
+    fieldCondObj->getInitializedCache(fieldCache);
+
     if (!fieldCache.toroidOn()) {
         // no standalone refit for Toroid off
         return nullptr;
@@ -2052,7 +2022,8 @@ CombinedMuonTrackBuilder::standaloneRefit(const Trk::Track& combinedTrack, float
         std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> type;
         type.set(Trk::TrackStateOnSurface::Measurement);
 
-        trackStateOnSurfaces->push_back(new const Trk::TrackStateOnSurface(vertexInFit, nullptr, nullptr, nullptr, type));
+        trackStateOnSurfaces->push_back(
+            new const Trk::TrackStateOnSurface(vertexInFit, nullptr, nullptr, nullptr, type));
     }
 
 
@@ -2212,13 +2183,13 @@ CombinedMuonTrackBuilder::standaloneRefit(const Trk::Track& combinedTrack, float
         return nullptr;
     }
 
-    //eventually this whole tool will use unique_ptrs
-    //in the meantime, this allows the MuonErrorOptimisationTool and MuonRefitTool to use them
+    // eventually this whole tool will use unique_ptrs
+    // in the meantime, this allows the MuonErrorOptimisationTool and MuonRefitTool to use them
     std::unique_ptr<Trk::Track> refittedTrackUnique(refittedTrack);
     if (refittedTrackUnique) {
         if (!refittedTrackUnique->fitQuality()) {
-	  delete vertex;
-	  return nullptr;
+            delete vertex;
+            return nullptr;
         }
 
         if (!m_trackQuery->isCaloAssociated(*refittedTrackUnique)) {
@@ -2237,19 +2208,20 @@ CombinedMuonTrackBuilder::standaloneRefit(const Trk::Track& combinedTrack, float
         {
 
             ATH_MSG_VERBOSE(" perform spectrometer error optimization after cleaning ");
-	    std::unique_ptr<Trk::Track> optimizedTrack = m_muonErrorOptimizer->optimiseErrors(refittedTrackUnique.get());
+            std::unique_ptr<Trk::Track> optimizedTrack =
+                m_muonErrorOptimizer->optimiseErrors(refittedTrackUnique.get());
 
             if (optimizedTrack) {
-	      if (checkTrack("standaloneRefitOpt", optimizedTrack.get(), refittedTrackUnique.get())) {
-		refittedTrackUnique.swap(optimizedTrack);
-		countAEOTs(refittedTrackUnique.get(), " standaloneRefit alignment errors Track ");
-	      } 
+                if (checkTrack("standaloneRefitOpt", optimizedTrack.get(), refittedTrackUnique.get())) {
+                    refittedTrackUnique.swap(optimizedTrack);
+                    countAEOTs(refittedTrackUnique.get(), " standaloneRefit alignment errors Track ");
+                }
             }
         }
     }
 
     delete vertex;
-    //have to release it until the whole tool is migrated to unique_ptr
+    // have to release it until the whole tool is migrated to unique_ptr
     return refittedTrackUnique.release();
 }
 
@@ -2273,17 +2245,18 @@ CombinedMuonTrackBuilder::fit(Trk::Track& track, const Trk::RunOutlierRemoval ru
     bool isCombined = m_trackQuery->isCombined(track);
     // select straightLine fitter when magnets downstream of leading measurement are off
     ToolHandle<Trk::ITrackFitter> fitter = m_fitter;
-    MagField::AtlasFieldCache    fieldCache;
+    MagField::AtlasFieldCache     fieldCache;
     // Get field cache object
-    EventContext ctx = Gaudi::Hive::currentContext();
+    EventContext                               ctx = Gaudi::Hive::currentContext();
     SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCacheCondObjInputKey, ctx};
-    const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
-   
+    const AtlasFieldCacheCondObj*              fieldCondObj{*readHandle};
+
     if (fieldCondObj == nullptr) {
-      ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
-      return 0;
+        ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key "
+                      << m_fieldCacheCondObjInputKey.key());
+        return 0;
     }
-    fieldCondObj->getInitializedCache (fieldCache);
+    fieldCondObj->getInitializedCache(fieldCache);
 
     if (!fieldCache.toroidOn() && !(isCombined && fieldCache.solenoidOn())) {
 
@@ -2380,25 +2353,25 @@ CombinedMuonTrackBuilder::fit(Trk::Track& track, const Trk::RunOutlierRemoval ru
         return nullptr;
     }
 
-    //eventually this whole tool will use unique_ptrs
-    //in the meantime, this allows the MuonErrorOptimisationTool and MuonRefitTool to use them
+    // eventually this whole tool will use unique_ptrs
+    // in the meantime, this allows the MuonErrorOptimisationTool and MuonRefitTool to use them
     std::unique_ptr<Trk::Track> fittedTrackUnique(fittedTrack);
     // track cleaning
     if (runOutlier) {
-      // fit with optimized spectrometer errors
+        // fit with optimized spectrometer errors
 
         if (!m_muonErrorOptimizer.empty() && !fittedTrackUnique->info().trackProperties(Trk::TrackInfo::StraightTrack)
             && optimizeErrors(fittedTrackUnique.get()))
         {
 
             ATH_MSG_VERBOSE(" perform spectrometer error optimization after cleaning ");
-	    std::unique_ptr<Trk::Track> optimizedTrack = m_muonErrorOptimizer->optimiseErrors(fittedTrackUnique.get());
+            std::unique_ptr<Trk::Track> optimizedTrack = m_muonErrorOptimizer->optimiseErrors(fittedTrackUnique.get());
 
             if (optimizedTrack) {
-	      if (checkTrack("fitInterface1Opt", optimizedTrack.get(), fittedTrackUnique.get())) {
-		fittedTrackUnique.swap(optimizedTrack);
-		countAEOTs(fittedTrackUnique.get(), " re fit scaled errors Track ");
-	      } 
+                if (checkTrack("fitInterface1Opt", optimizedTrack.get(), fittedTrackUnique.get())) {
+                    fittedTrackUnique.swap(optimizedTrack);
+                    countAEOTs(fittedTrackUnique.get(), " re fit scaled errors Track ");
+                }
             }
         }
 
@@ -2423,7 +2396,7 @@ CombinedMuonTrackBuilder::fit(Trk::Track& track, const Trk::RunOutlierRemoval ru
             if (m_allowCleanerVeto && chi2Before > m_badFitChi2) {
                 ATH_MSG_DEBUG(" cleaner veto A ");
                 ++m_countStandaloneCleanerVeto;
-		fittedTrackUnique.reset();
+                fittedTrackUnique.reset();
             } else {
                 ATH_MSG_DEBUG(" keep original standalone track despite cleaner veto ");
             }
@@ -2432,7 +2405,7 @@ CombinedMuonTrackBuilder::fit(Trk::Track& track, const Trk::RunOutlierRemoval ru
 
             if (chi2After < m_badFitChi2 || chi2After < chi2Before) {
                 ATH_MSG_VERBOSE(" found and removed spectrometer outlier(s) ");
-		fittedTrackUnique.swap(cleanTrack);
+                fittedTrackUnique.swap(cleanTrack);
             } else {
                 ATH_MSG_VERBOSE(" keep original track despite cleaning ");
             }
@@ -2445,11 +2418,11 @@ CombinedMuonTrackBuilder::fit(Trk::Track& track, const Trk::RunOutlierRemoval ru
         }
     }
 
-    //have to use release until the whole tool uses unique_ptr
+    // have to use release until the whole tool uses unique_ptr
     return fittedTrackUnique.release();
 }
 
-/** 
+/**
     fit a set of MeasurementBase objects with starting value for perigeeParameters */
 Trk::Track*
 CombinedMuonTrackBuilder::fit(const Trk::MeasurementSet& measurementSet, const Trk::TrackParameters& perigeeStartValue,
@@ -2466,17 +2439,18 @@ CombinedMuonTrackBuilder::fit(const Trk::MeasurementSet& measurementSet, const T
     }
 
     // select straightLine fitter when magnets downstream of leading measurement are off
-    MagField::AtlasFieldCache    fieldCache;
+    MagField::AtlasFieldCache fieldCache;
     // Get field cache object
-    EventContext ctx = Gaudi::Hive::currentContext();
+    EventContext                               ctx = Gaudi::Hive::currentContext();
     SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCacheCondObjInputKey, ctx};
-    const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
-   
+    const AtlasFieldCacheCondObj*              fieldCondObj{*readHandle};
+
     if (fieldCondObj == nullptr) {
-      ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
-      return 0;
+        ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key "
+                      << m_fieldCacheCondObjInputKey.key());
+        return 0;
     }
-    fieldCondObj->getInitializedCache (fieldCache);
+    fieldCondObj->getInitializedCache(fieldCache);
 
     ToolHandle<Trk::ITrackFitter> fitter = m_fitter;
     if (!fieldCache.toroidOn() || std::abs(perigeeStartValue.position().z()) > m_zECToroid) {
@@ -2516,8 +2490,8 @@ CombinedMuonTrackBuilder::fit(const Trk::MeasurementSet& measurementSet, const T
         return nullptr;
     }
 
-    //eventually this whole tool will use unique_ptrs
-    //in the meantime, this allows the MuonErrorOptimisationTool and MuonRefitTool to use them
+    // eventually this whole tool will use unique_ptrs
+    // in the meantime, this allows the MuonErrorOptimisationTool and MuonRefitTool to use them
     std::unique_ptr<Trk::Track> fittedTrackUnique(fittedTrack);
     // track cleaning
     if (runOutlier) {
@@ -2528,12 +2502,12 @@ CombinedMuonTrackBuilder::fit(const Trk::MeasurementSet& measurementSet, const T
         {
 
             ATH_MSG_VERBOSE(" perform spectrometer error optimization after cleaning ");
-	    std::unique_ptr<Trk::Track> optimizedTrack = m_muonErrorOptimizer->optimiseErrors(fittedTrackUnique.get());
+            std::unique_ptr<Trk::Track> optimizedTrack = m_muonErrorOptimizer->optimiseErrors(fittedTrackUnique.get());
             if (optimizedTrack) {
-	      if (checkTrack("fitInterface2Opt", optimizedTrack.get(), fittedTrackUnique.get())) {
-		fittedTrackUnique.swap(optimizedTrack);
-		countAEOTs(fittedTrackUnique.get(), " fit mstSet scaled errors Track ");
-	      }
+                if (checkTrack("fitInterface2Opt", optimizedTrack.get(), fittedTrackUnique.get())) {
+                    fittedTrackUnique.swap(optimizedTrack);
+                    countAEOTs(fittedTrackUnique.get(), " fit mstSet scaled errors Track ");
+                }
             }
         }
 
@@ -2557,7 +2531,7 @@ CombinedMuonTrackBuilder::fit(const Trk::MeasurementSet& measurementSet, const T
             if (m_allowCleanerVeto && chi2Before > m_badFitChi2) {
                 ATH_MSG_DEBUG(" cleaner veto B");
                 ++m_countExtensionCleanerVeto;
-		fittedTrackUnique.reset();
+                fittedTrackUnique.reset();
             } else {
                 ATH_MSG_DEBUG(" keep original extension track despite cleaner veto ");
             }
@@ -2565,7 +2539,7 @@ CombinedMuonTrackBuilder::fit(const Trk::MeasurementSet& measurementSet, const T
             double chi2After = normalizedChi2(*cleanTrack);
             if (chi2After < m_badFitChi2 || chi2After < chi2Before) {
                 ATH_MSG_VERBOSE(" found and removed spectrometer outlier(s) ");
-		fittedTrackUnique.swap(cleanTrack);
+                fittedTrackUnique.swap(cleanTrack);
             } else {
                 ATH_MSG_VERBOSE(" keep original track despite cleaning ");
             }
@@ -2574,7 +2548,7 @@ CombinedMuonTrackBuilder::fit(const Trk::MeasurementSet& measurementSet, const T
         // FIXME: provide indet cleaner
         ATH_MSG_VERBOSE(" finished cleaning");
     }
-    //have to use release until the whole code uses unique_ptr
+    // have to use release until the whole code uses unique_ptr
     return fittedTrackUnique.release();
 }
 
@@ -2596,17 +2570,18 @@ CombinedMuonTrackBuilder::fit(const Trk::Track& indetTrack, Trk::Track& extrapol
 
     // select straightLine fitter when solenoid and toroid are off
     ToolHandle<Trk::ITrackFitter> fitter = m_fitter;
-    MagField::AtlasFieldCache    fieldCache;
+    MagField::AtlasFieldCache     fieldCache;
     // Get field cache object
-    EventContext ctx = Gaudi::Hive::currentContext();
+    EventContext                               ctx = Gaudi::Hive::currentContext();
     SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCacheCondObjInputKey, ctx};
-    const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
-   
+    const AtlasFieldCacheCondObj*              fieldCondObj{*readHandle};
+
     if (fieldCondObj == nullptr) {
-      ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
-      return 0;
+        ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key "
+                      << m_fieldCacheCondObjInputKey.key());
+        return 0;
     }
-    fieldCondObj->getInitializedCache (fieldCache);
+    fieldCondObj->getInitializedCache(fieldCache);
 
     if (!fieldCache.toroidOn() && !fieldCache.solenoidOn()) {
 
@@ -2637,8 +2612,8 @@ CombinedMuonTrackBuilder::fit(const Trk::Track& indetTrack, Trk::Track& extrapol
 
     if (!fittedTrack) return nullptr;
 
-    //eventually this whole tool will use unique_ptrs
-    //in the meantime, this allows the MuonErrorOptimisationTool and MuonRefitTool to use them
+    // eventually this whole tool will use unique_ptrs
+    // in the meantime, this allows the MuonErrorOptimisationTool and MuonRefitTool to use them
     std::unique_ptr<Trk::Track> fittedTrackUnique(fittedTrack);
 
     // track cleaning
@@ -2649,11 +2624,11 @@ CombinedMuonTrackBuilder::fit(const Trk::Track& indetTrack, Trk::Track& extrapol
             && optimizeErrors(fittedTrackUnique.get()))
         {
             ATH_MSG_VERBOSE(" perform spectrometer error optimization after cleaning ");
-	    std::unique_ptr<Trk::Track> optimizedTrack = m_muonErrorOptimizer->optimiseErrors(fittedTrackUnique.get());
+            std::unique_ptr<Trk::Track> optimizedTrack = m_muonErrorOptimizer->optimiseErrors(fittedTrackUnique.get());
 
             if (optimizedTrack) {
-	      fittedTrackUnique.swap(optimizedTrack);
-	      countAEOTs(fittedTrackUnique.get(), " cbfit scaled errors Track ");
+                fittedTrackUnique.swap(optimizedTrack);
+                countAEOTs(fittedTrackUnique.get(), " cbfit scaled errors Track ");
             }
         }
 
@@ -2665,7 +2640,7 @@ CombinedMuonTrackBuilder::fit(const Trk::Track& indetTrack, Trk::Track& extrapol
                                                       << m_printer->printStations(*fittedTrackUnique));
 
         if (fittedTrackUnique) {
-	  countAEOTs(fittedTrackUnique.get(), " cb before clean Track ");
+            countAEOTs(fittedTrackUnique.get(), " cb before clean Track ");
         }
         std::unique_ptr<Trk::Track> cleanTrack = m_cleaner->clean(*fittedTrackUnique);
         if (cleanTrack) {
@@ -2676,7 +2651,7 @@ CombinedMuonTrackBuilder::fit(const Trk::Track& indetTrack, Trk::Track& extrapol
             if (m_allowCleanerVeto && chi2Before > m_badFitChi2) {
                 ATH_MSG_DEBUG(" cleaner veto C");
                 ++m_countCombinedCleanerVeto;
-		fittedTrackUnique.reset();
+                fittedTrackUnique.reset();
             } else {
                 ATH_MSG_DEBUG(" keep original combined track despite cleaner veto ");
             }
@@ -2684,7 +2659,7 @@ CombinedMuonTrackBuilder::fit(const Trk::Track& indetTrack, Trk::Track& extrapol
             double chi2After = normalizedChi2(*cleanTrack);
             if (chi2After < m_badFitChi2 || chi2After < chi2Before) {
                 ATH_MSG_VERBOSE(" found and removed spectrometer outlier(s) ");
-		fittedTrackUnique.swap(cleanTrack);
+                fittedTrackUnique.swap(cleanTrack);
             } else {
                 ATH_MSG_VERBOSE(" keep original track despite cleaning ");
             }
@@ -2693,7 +2668,7 @@ CombinedMuonTrackBuilder::fit(const Trk::Track& indetTrack, Trk::Track& extrapol
         // FIXME: provide indet cleaner
         ATH_MSG_VERBOSE(" finished cleaning");
     }
-    //have to use release until the whole code uses unique_ptr
+    // have to use release until the whole code uses unique_ptr
     return fittedTrackUnique.release();
 }
 
@@ -3247,17 +3222,18 @@ CombinedMuonTrackBuilder::createExtrapolatedTrack(const Trk::Track&           sp
 
         // if association OK, create perigee surface and back-track to it
         if (caloAssociated) {
-            MagField::AtlasFieldCache    fieldCache;
+            MagField::AtlasFieldCache fieldCache;
             // Get field cache object
-            EventContext ctx = Gaudi::Hive::currentContext();
+            EventContext                               ctx = Gaudi::Hive::currentContext();
             SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCacheCondObjInputKey, ctx};
-            const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
-   
+            const AtlasFieldCacheCondObj*              fieldCondObj{*readHandle};
+
             if (fieldCondObj == nullptr) {
-                ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
+                ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key "
+                              << m_fieldCacheCondObjInputKey.key());
                 return 0;
             }
-            fieldCondObj->getInitializedCache (fieldCache);
+            fieldCondObj->getInitializedCache(fieldCache);
 
             if (fieldCache.toroidOn()) {
                 const Trk::TrackParameters* oldParameters = caloTSOS->front()->trackParameters();
@@ -3411,7 +3387,8 @@ CombinedMuonTrackBuilder::createExtrapolatedTrack(const Trk::Track&           sp
             std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> type;
             type.set(Trk::TrackStateOnSurface::Measurement);
 
-            trackStateOnSurfaces->push_back(new const Trk::TrackStateOnSurface(vertexInFit, nullptr, nullptr, nullptr, type));
+            trackStateOnSurfaces->push_back(
+                new const Trk::TrackStateOnSurface(vertexInFit, nullptr, nullptr, nullptr, type));
         }
     }
 
@@ -3925,7 +3902,7 @@ CombinedMuonTrackBuilder::entrancePerigee(const Trk::TrackParameters* parameters
 
     if (!entranceParameters) return nullptr;
 
-    Trk::PerigeeSurface surface(entranceParameters->position());
+    Trk::PerigeeSurface         surface(entranceParameters->position());
     const Trk::TrackParameters* trackParameters = m_extrapolator->extrapolateDirectly(*entranceParameters, surface);
     delete entranceParameters;
 
@@ -3993,15 +3970,16 @@ CombinedMuonTrackBuilder::extrapolatedParameters(bool& badlyDeterminedCurvature,
     ToolHandle<Trk::IPropagator> propagator = m_propagator;
     MagField::AtlasFieldCache    fieldCache;
     // Get field cache object
-    EventContext ctx = Gaudi::Hive::currentContext();
+    EventContext                               ctx = Gaudi::Hive::currentContext();
     SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCacheCondObjInputKey, ctx};
-    const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
-   
+    const AtlasFieldCacheCondObj*              fieldCondObj{*readHandle};
+
     if (fieldCondObj == nullptr) {
-        ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
+        ATH_MSG_ERROR("SCTSiLorentzAngleCondAlg : Failed to retrieve AtlasFieldCacheCondObj with key "
+                      << m_fieldCacheCondObjInputKey.key());
         return 0;
     }
-    fieldCondObj->getInitializedCache (fieldCache);
+    fieldCondObj->getInitializedCache(fieldCache);
     if (!fieldCache.toroidOn()) {
         curvatureOK = true;
         propagator  = m_propagatorSL;
@@ -4277,25 +4255,25 @@ CombinedMuonTrackBuilder::finalTrackBuild(Trk::Track*& track) const
         ATH_MSG_VERBOSE(" finished hole recovery procedure ");
     }
 
-    //eventually this whole tool will use unique_ptrs
-    //in the meantime, this allows the MuonErrorOptimisationTool and MuonRefitTool to use them
+    // eventually this whole tool will use unique_ptrs
+    // in the meantime, this allows the MuonErrorOptimisationTool and MuonRefitTool to use them
     std::unique_ptr<Trk::Track> trackUnique(track);
     // final fit with optimized spectrometer errors
     if (!m_muonErrorOptimizer.empty() && !trackUnique->info().trackProperties(Trk::TrackInfo::StraightTrack)
         && countAEOTs(trackUnique.get(), " before optimize ") == 0)
     {
         ATH_MSG_VERBOSE(" perform spectrometer error optimization... ");
-	std::unique_ptr<Trk::Track> optimizedTrack = m_muonErrorOptimizer->optimiseErrors(trackUnique.get());
+        std::unique_ptr<Trk::Track> optimizedTrack = m_muonErrorOptimizer->optimiseErrors(trackUnique.get());
         if (optimizedTrack && checkTrack("finalTrackBuild2", optimizedTrack.get(), trackUnique.get())) {
-	  trackUnique.swap(optimizedTrack);
-	  countAEOTs(track, " finalTrackBuilt alignment errors Track ");
+            trackUnique.swap(optimizedTrack);
+            countAEOTs(track, " finalTrackBuilt alignment errors Track ");
         }
     }
 
     // add the track summary
     m_trackSummary->updateTrack(*trackUnique);
-    //have to use release until the whole code uses unique_ptr
-    track=trackUnique.release();
+    // have to use release until the whole code uses unique_ptr
+    track = trackUnique.release();
 }
 
 Trk::Track*
diff --git a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetCandidateAlg.cxx b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetCandidateAlg.cxx
index 25b15081294990e388e06a1029ec0c814b494e50..5d6a2e988d98cffcd5c40ff9f56770d298fc7d12 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetCandidateAlg.cxx
+++ b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetCandidateAlg.cxx
@@ -1,72 +1,74 @@
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonCombinedInDetCandidateAlg.h"
-//#include "MuonCombinedToolInterfaces/IInDetCandidateTool.h"
 #include "MuonLayerEvent/MuonSystemExtension.h"
 #include "xAODTruth/TruthParticleContainer.h"
 
 using namespace MuonCombined;
 
-MuonCombinedInDetCandidateAlg::MuonCombinedInDetCandidateAlg(const std::string& name, ISvcLocator* pSvcLocator):
-  AthAlgorithm(name,pSvcLocator),
-  m_doSiliconForwardMuons(false)
-{  
-  declareProperty("TrackParticleLocation",m_indetTrackParticleLocation = {"InDetTrackParticles"});
-  declareProperty("ForwardParticleLocation",m_indetForwardTrackParticleLocation = "InDetForwardTrackParticles");
-  declareProperty("InDetCandidateLocation", m_candidateCollectionName = "InDetCandidates");
-  declareProperty("DoSiliconAssocForwardMuons", m_doSiliconForwardMuons = false);
-  declareProperty("ExtensionPtThreshold",m_extThreshold=2500);
+MuonCombinedInDetCandidateAlg::MuonCombinedInDetCandidateAlg(const std::string& name, ISvcLocator* pSvcLocator)
+    : AthAlgorithm(name, pSvcLocator), m_doSiliconForwardMuons(false)
+{
+    declareProperty("TrackParticleLocation", m_indetTrackParticleLocation = {"InDetTrackParticles"});
+    declareProperty("ForwardParticleLocation", m_indetForwardTrackParticleLocation = "InDetForwardTrackParticles");
+    declareProperty("InDetCandidateLocation", m_candidateCollectionName = "InDetCandidates");
+    declareProperty("DoSiliconAssocForwardMuons", m_doSiliconForwardMuons = false);
+    declareProperty("ExtensionPtThreshold", m_extThreshold = 2500);
 }
 
-MuonCombinedInDetCandidateAlg::~MuonCombinedInDetCandidateAlg(){}
+MuonCombinedInDetCandidateAlg::~MuonCombinedInDetCandidateAlg() {}
 
-StatusCode MuonCombinedInDetCandidateAlg::initialize()
+StatusCode
+MuonCombinedInDetCandidateAlg::initialize()
 {
-  ATH_CHECK(m_trackSelector.retrieve());
-  ATH_CHECK(m_muonSystemExtensionTool.retrieve());
-  ATH_CHECK(m_indetTrackParticleLocation.initialize());
-  ATH_CHECK(m_indetForwardTrackParticleLocation.initialize());
-  ATH_CHECK(m_candidateCollectionName.initialize());
-
-  ATH_CHECK(m_forwardTrackSelector.retrieve(  DisableTool{!m_doSiliconForwardMuons} ));
-  
-  return StatusCode::SUCCESS; 
+    ATH_CHECK(m_trackSelector.retrieve());
+    ATH_CHECK(m_muonSystemExtensionTool.retrieve());
+    ATH_CHECK(m_indetTrackParticleLocation.initialize());
+    ATH_CHECK(m_indetForwardTrackParticleLocation.initialize());
+    ATH_CHECK(m_candidateCollectionName.initialize());
+
+    ATH_CHECK(m_forwardTrackSelector.retrieve(DisableTool{!m_doSiliconForwardMuons}));
+
+    return StatusCode::SUCCESS;
 }
 
-StatusCode MuonCombinedInDetCandidateAlg::execute()
+StatusCode
+MuonCombinedInDetCandidateAlg::execute()
 {
-  auto collection = std::make_unique<InDetCandidateCollection>(SG::OWN_ELEMENTS);
-
-  m_currentTrackSelector = m_trackSelector;
-  for(auto location : m_indetTrackParticleLocation){
-    if(create(location, collection).isFailure()){
-      ATH_MSG_FATAL("Could not create InDetCandidateCollection");
-      return StatusCode::FAILURE;
+    auto collection = std::make_unique<InDetCandidateCollection>(SG::OWN_ELEMENTS);
+
+    m_currentTrackSelector = m_trackSelector;
+    for (auto location : m_indetTrackParticleLocation) {
+        if (create(location, collection).isFailure()) {
+            ATH_MSG_FATAL("Could not create InDetCandidateCollection");
+            return StatusCode::FAILURE;
+        }
     }
-  }
-  if(m_doSiliconForwardMuons){
-    m_currentTrackSelector = m_forwardTrackSelector;
-    if(create(m_indetForwardTrackParticleLocation, collection, true).isFailure()){
-      ATH_MSG_FATAL("Could not create InDetForwardCandidateCollection");
-      return StatusCode::FAILURE;
+    if (m_doSiliconForwardMuons) {
+        m_currentTrackSelector = m_forwardTrackSelector;
+        if (create(m_indetForwardTrackParticleLocation, collection, true).isFailure()) {
+            ATH_MSG_FATAL("Could not create InDetForwardCandidateCollection");
+            return StatusCode::FAILURE;
+        }
     }
-  }
-  SG::WriteHandle<InDetCandidateCollection> indetCandidateCollection(m_candidateCollectionName);
-  ATH_CHECK(indetCandidateCollection.record(std::move(collection)));
+    SG::WriteHandle<InDetCandidateCollection> indetCandidateCollection(m_candidateCollectionName);
+    ATH_CHECK(indetCandidateCollection.record(std::move(collection)));
 
-  return StatusCode::SUCCESS;
+    return StatusCode::SUCCESS;
 }
 
-StatusCode MuonCombinedInDetCandidateAlg::create(const SG::ReadHandleKey<xAOD::TrackParticleContainer>& location,
-						 std::unique_ptr<InDetCandidateCollection>& collection,
-						 bool flagCandidateAsSiAssociate) const {
+StatusCode
+MuonCombinedInDetCandidateAlg::create(const SG::ReadHandleKey<xAOD::TrackParticleContainer>& location,
+                                      std::unique_ptr<InDetCandidateCollection>&             collection,
+                                      bool flagCandidateAsSiAssociate) const
+{
     SG::ReadHandle<xAOD::TrackParticleContainer> indetTrackParticles(location);
-    if(!indetTrackParticles.isValid()){
-      ATH_MSG_ERROR("Could not read "<< location);
-      return StatusCode::FAILURE;
+    if (!indetTrackParticles.isValid()) {
+        ATH_MSG_ERROR("Could not read " << location);
+        return StatusCode::FAILURE;
     }
     InDetCandidateCollection* tempCandidates = new InDetCandidateCollection(SG::VIEW_ELEMENTS);
     create(*indetTrackParticles, *tempCandidates, flagCandidateAsSiAssociate);
@@ -75,82 +77,91 @@ StatusCode MuonCombinedInDetCandidateAlg::create(const SG::ReadHandleKey<xAOD::T
     return StatusCode::SUCCESS;
 }
 
-void MuonCombinedInDetCandidateAlg::create( const xAOD::TrackParticleContainer& indetTrackParticles,
-					    InDetCandidateCollection& outputContainer,
-					    bool flagCandidateAsSiAssociated) const {
-
-  ATH_MSG_DEBUG("Producing InDetCandidates for " << indetTrackParticles.size() );
-  unsigned int ntracks = 0;
-  int trackIndex = -1;
-  
-  for(auto* tp : indetTrackParticles){
-    ++trackIndex;
-    if(!isValidTrackParticle(tp))
-      continue;
-    
-    ElementLink<xAOD::TrackParticleContainer> link(indetTrackParticles, trackIndex);
-    if(!link.isValid()){
-      ATH_MSG_WARNING("Bad element link ");
-    }
-    else{
-      if(*link != tp) {
-	ATH_MSG_WARNING("Dereferenced Link not equal to TrackParticle, skipping track ");
-	continue;
-      }
+void
+MuonCombinedInDetCandidateAlg::create(const xAOD::TrackParticleContainer& indetTrackParticles,
+                                      InDetCandidateCollection& outputContainer, bool flagCandidateAsSiAssociated) const
+{
+
+    ATH_MSG_DEBUG("Producing InDetCandidates for " << indetTrackParticles.size());
+    unsigned int ntracks    = 0;
+    int          trackIndex = -1;
+
+    for (auto* tp : indetTrackParticles) {
+        ++trackIndex;
+        if (!isValidTrackParticle(tp)) continue;
+
+        ElementLink<xAOD::TrackParticleContainer> link(indetTrackParticles, trackIndex);
+        if (!link.isValid()) {
+            ATH_MSG_WARNING("Bad element link ");
+        } else {
+            if (*link != tp) {
+                ATH_MSG_WARNING("Dereferenced Link not equal to TrackParticle, skipping track ");
+                continue;
+            }
+        }
+        link.toPersistent();
+        printTrackParticleInfo(tp, "Creating");
+
+        if (msgLvl(MSG::VERBOSE) && tp->isAvailable<ElementLink<xAOD::TruthParticleContainer> >("truthParticleLink")) {
+            ElementLink<xAOD::TruthParticleContainer> truthLink =
+                tp->auxdata<ElementLink<xAOD::TruthParticleContainer> >("truthParticleLink");
+            if (truthLink.isValid()) {
+                ATH_MSG_VERBOSE("  Truth particle: pdgId "
+                                << (*truthLink)->pdgId() << " type " << tp->auxdata<int>("truthType") << " origin "
+                                << tp->auxdata<int>("truthOrigin") << " pt " << (*truthLink)->pt() << " eta "
+                                << (*truthLink)->eta() << " phi " << (*truthLink)->phi());
+            }
+        }
+        InDetCandidate* candidate = new InDetCandidate(link);
+        if (flagCandidateAsSiAssociated)
+            candidate->setSiliconAssociated(true);  // Si-associated candidates don't need these
+        else if (tp->pt() > m_extThreshold) {       // MuGirl only operates on ID tracks with pt at least this high
+            const Muon::MuonSystemExtension* muonSystemExtension = 0;
+            m_muonSystemExtensionTool->muonSystemExtension(candidate->indetTrackParticle(), muonSystemExtension);
+            candidate->setExtension(muonSystemExtension);
+        }
+        ++ntracks;
+        outputContainer.push_back(candidate);
     }
-    link.toPersistent();
-    printTrackParticleInfo(tp, "Creating");
-       
-    if(msgLvl(MSG::VERBOSE) && tp->isAvailable<ElementLink< xAOD::TruthParticleContainer > >("truthParticleLink")){
-      ElementLink< xAOD::TruthParticleContainer > truthLink = tp->auxdata<ElementLink< xAOD::TruthParticleContainer > >("truthParticleLink");
-      if(truthLink.isValid()){
-	ATH_MSG_VERBOSE("  Truth particle: pdgId " << (*truthLink)->pdgId() << " type " << tp->auxdata< int >("truthType") 
-			<< " origin " << tp->auxdata< int >("truthOrigin") << " pt "  
-			<< (*truthLink)->pt() << " eta " << (*truthLink)->eta() << " phi " << (*truthLink)->phi() );
-      }
+    ATH_MSG_DEBUG("InDetCandidates selected " << ntracks);
+}
+
+bool
+MuonCombinedInDetCandidateAlg::isValidTrackParticle(const xAOD::TrackParticle* const tp) const
+{
+    if (!tp->perigeeParameters().covariance()) {
+        ATH_MSG_WARNING("InDet TrackParticle without perigee! ");
+        return false;
     }
-    InDetCandidate* candidate = new InDetCandidate(link);
-    if (flagCandidateAsSiAssociated)
-      candidate->setSiliconAssociated(true);  //Si-associated candidates don't need these
-    else if(tp->pt()>m_extThreshold){ //MuGirl only operates on ID tracks with pt at least this high
-      const Muon::MuonSystemExtension* muonSystemExtension = 0;
-      m_muonSystemExtensionTool->muonSystemExtension( candidate->indetTrackParticle(), muonSystemExtension );
-      candidate->setExtension(muonSystemExtension);
+
+    if (!m_currentTrackSelector->decision(*tp)) {
+        if (msgLvl(MSG::VERBOSE) && tp->pt() > 5000.) printTrackParticleInfo(tp, "Discarding");
+        return false;
     }
-    ++ntracks;
-    outputContainer.push_back(candidate);
-  }
-  ATH_MSG_DEBUG("InDetCandidates selected " << ntracks);
-}
 
-bool MuonCombinedInDetCandidateAlg::isValidTrackParticle(const xAOD::TrackParticle* const tp) const{
-  if(!tp->perigeeParameters().covariance()) {
-    ATH_MSG_WARNING("InDet TrackParticle without perigee! ");
-    return false;
-  }
-  
-  if(!m_currentTrackSelector->decision(*tp)) {
-    if(msgLvl(MSG::VERBOSE) &&  tp->pt() > 5000.)
-      printTrackParticleInfo(tp, "Discarding");
-    return false;
-  }
-  
-  return true;
+    return true;
 }
 
-void MuonCombinedInDetCandidateAlg::printTrackParticleInfo(const xAOD::TrackParticle* const tp, const std::string& what) const{
-  ATH_MSG_DEBUG(what << " InDet TrackParticle: pt " << tp->pt() << " eta " << tp->eta() << " phi " << tp->phi() 
-		<< " Pixel " << getCount(*tp,xAOD::numberOfInnermostPixelLayerHits ) + getCount(*tp,xAOD::numberOfPixelHits )
-		<< " SCT "  << getCount(*tp,xAOD::numberOfSCTHits ) << " TRT " << getCount(*tp, xAOD::numberOfTRTHits ) );
+void
+MuonCombinedInDetCandidateAlg::printTrackParticleInfo(const xAOD::TrackParticle* const tp,
+                                                      const std::string&               what) const
+{
+    ATH_MSG_DEBUG(
+        what << " InDet TrackParticle: pt " << tp->pt() << " eta " << tp->eta() << " phi " << tp->phi() << " Pixel "
+             << getCount(*tp, xAOD::numberOfInnermostPixelLayerHits) + getCount(*tp, xAOD::numberOfPixelHits) << " SCT "
+             << getCount(*tp, xAOD::numberOfSCTHits) << " TRT " << getCount(*tp, xAOD::numberOfTRTHits));
 }
 
-int MuonCombinedInDetCandidateAlg::getCount(const xAOD::TrackParticle& tp, xAOD::SummaryType type) const{
-  uint8_t val;
-  if( !tp.summaryValue(val,type) )
-    return 0;
-  return static_cast<int>(val);
+int
+MuonCombinedInDetCandidateAlg::getCount(const xAOD::TrackParticle& tp, xAOD::SummaryType type) const
+{
+    uint8_t val;
+    if (!tp.summaryValue(val, type)) return 0;
+    return static_cast<int>(val);
 }
 
-StatusCode MuonCombinedInDetCandidateAlg::finalize(){
-  return StatusCode::SUCCESS;
+StatusCode
+MuonCombinedInDetCandidateAlg::finalize()
+{
+    return StatusCode::SUCCESS;
 }
diff --git a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetCandidateAlg.h b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetCandidateAlg.h
index 69da8f73696335fab2bae16e5f9b88862ec9a846..fcf4672a02354080f7b6aaad6bc82f9dcc2c8403 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetCandidateAlg.h
+++ b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetCandidateAlg.h
@@ -1,62 +1,68 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef MUONCOMBINEDALGS_MUONCOMBINEDINDETCANDIDATEALG_H
 #define MUONCOMBINEDALGS_MUONCOMBINEDINDETCANDIDATEALG_H
 
+#include <string>
+
 #include "AthenaBaseComps/AthAlgorithm.h"
 #include "GaudiKernel/ToolHandle.h"
+#include "MuonCombinedEvent/InDetCandidateCollection.h"
+#include "MuonRecToolInterfaces/IMuonSystemExtensionTool.h"
 #include "StoreGate/ReadHandleKey.h"
 #include "StoreGate/WriteHandleKey.h"
-#include "xAODTracking/TrackParticleContainer.h"
-#include "MuonCombinedEvent/InDetCandidateCollection.h"
 #include "TrkToolInterfaces/ITrackSelectorTool.h"
-#include "MuonRecToolInterfaces/IMuonSystemExtensionTool.h"
-#include <string>
+#include "xAODTracking/TrackParticleContainer.h"
 
 namespace Trk {
-  class ITrackSelectorTool;
+class ITrackSelectorTool;
 }
 
 namespace Muon {
-  class IMuonSystemExtensionTool;
+class IMuonSystemExtensionTool;
 }
 
-class MuonCombinedInDetCandidateAlg : public AthAlgorithm
-{
- public:
-  MuonCombinedInDetCandidateAlg(const std::string& name, ISvcLocator* pSvcLocator);
-  ~MuonCombinedInDetCandidateAlg();
-
-  StatusCode initialize();
-  StatusCode execute();
-  StatusCode finalize();
-
- private:
-  bool m_doSiliconForwardMuons;
-
-  float m_extThreshold;
-  
-  SG::ReadHandleKeyArray<xAOD::TrackParticleContainer> m_indetTrackParticleLocation;
-  SG::ReadHandleKey<xAOD::TrackParticleContainer>  m_indetForwardTrackParticleLocation;
-  SG::WriteHandleKey<InDetCandidateCollection> m_candidateCollectionName;
-  ToolHandle <Trk::ITrackSelectorTool> m_trackSelector {this, "TrackSelector", "InDet::InDetDetailedTrackSelectorTool/MuonCombinedInDetDetailedTrackSelectorTool", "Track selector tool"};
-  ToolHandle <Trk::ITrackSelectorTool> m_forwardTrackSelector {this, "InDetForwardTrackSelector", "InDet::InDetDetailedTrackSelectorTool/MuonCombinedInDetDetailedForwardTrackSelectorTool", "Forward track selector tool"};
-  ToolHandle <Trk::ITrackSelectorTool> m_currentTrackSelector;
-  ToolHandle <Muon::IMuonSystemExtensionTool> m_muonSystemExtensionTool {this, "MuonSystemExtensionTool", "Muon::MuonSystemExtensionTool/MuonSystemExtensionTool", "Muon system extension tool"};
-
-  void create(const xAOD::TrackParticleContainer& indetTrackParticles,
-	      InDetCandidateCollection& outputContainer,
-	      bool flagCandidateAsSiAssociated=false) const;
-  StatusCode create(const SG::ReadHandleKey<xAOD::TrackParticleContainer>& location,
-		    std::unique_ptr<InDetCandidateCollection>& collection,
-		    bool flagCandidateAsSiAssociate=false) const;
-
-  bool isValidTrackParticle(const xAOD::TrackParticle* const tp) const;
-  void printTrackParticleInfo(const xAOD::TrackParticle* const tp, const std::string& what) const;
-
-  int getCount(const xAOD::TrackParticle& tp, xAOD::SummaryType type) const;
+class MuonCombinedInDetCandidateAlg : public AthAlgorithm {
+  public:
+    MuonCombinedInDetCandidateAlg(const std::string& name, ISvcLocator* pSvcLocator);
+    ~MuonCombinedInDetCandidateAlg();
+
+    StatusCode initialize();
+    StatusCode execute();
+    StatusCode finalize();
+
+  private:
+    bool m_doSiliconForwardMuons;
+
+    float m_extThreshold;
+
+    SG::ReadHandleKeyArray<xAOD::TrackParticleContainer> m_indetTrackParticleLocation;
+    SG::ReadHandleKey<xAOD::TrackParticleContainer>      m_indetForwardTrackParticleLocation;
+    SG::WriteHandleKey<InDetCandidateCollection>         m_candidateCollectionName;
+    ToolHandle<Trk::ITrackSelectorTool>                  m_trackSelector{
+        this, "TrackSelector", "InDet::InDetDetailedTrackSelectorTool/MuonCombinedInDetDetailedTrackSelectorTool",
+        "Track selector tool"};
+    ToolHandle<Trk::ITrackSelectorTool> m_forwardTrackSelector{
+        this, "InDetForwardTrackSelector",
+        "InDet::InDetDetailedTrackSelectorTool/MuonCombinedInDetDetailedForwardTrackSelectorTool",
+        "Forward track selector tool"};
+    ToolHandle<Trk::ITrackSelectorTool>        m_currentTrackSelector;
+    ToolHandle<Muon::IMuonSystemExtensionTool> m_muonSystemExtensionTool{
+        this, "MuonSystemExtensionTool", "Muon::MuonSystemExtensionTool/MuonSystemExtensionTool",
+        "Muon system extension tool"};
+
+    void create(const xAOD::TrackParticleContainer& indetTrackParticles, InDetCandidateCollection& outputContainer,
+                bool flagCandidateAsSiAssociated = false) const;
+    StatusCode create(const SG::ReadHandleKey<xAOD::TrackParticleContainer>& location,
+                      std::unique_ptr<InDetCandidateCollection>&             collection,
+                      bool                                                   flagCandidateAsSiAssociate = false) const;
+
+    bool isValidTrackParticle(const xAOD::TrackParticle* const tp) const;
+    void printTrackParticleInfo(const xAOD::TrackParticle* const tp, const std::string& what) const;
+
+    int getCount(const xAOD::TrackParticle& tp, xAOD::SummaryType type) const;
 };
 
 
diff --git a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetExtensionAlg.cxx b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetExtensionAlg.cxx
index 98c0f12dffd72edae391df40e16b8016abfa5365..57abd92da146e1a130b8d92e93be1b261d7b8abb 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetExtensionAlg.cxx
+++ b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetExtensionAlg.cxx
@@ -1,110 +1,115 @@
 /*
-  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonCombinedInDetExtensionAlg.h"
-#include "MuonCombinedToolInterfaces/IMuonCombinedInDetExtensionTool.h"
+
 #include "MuonCombinedEvent/MuonCandidateCollection.h"
+#include "MuonCombinedToolInterfaces/IMuonCombinedInDetExtensionTool.h"
 
 
-MuonCombinedInDetExtensionAlg::MuonCombinedInDetExtensionAlg(const std::string& name, ISvcLocator* pSvcLocator):
-  AthAlgorithm(name,pSvcLocator)
-{  
-  declareProperty("MuonCombinedInDetExtensionTools",m_muonCombinedInDetExtensionTools);
-  declareProperty("usePRDs",m_usePRDs=false);
-  declareProperty("HasCSC", m_hasCSC=true);
-  declareProperty("HasSTgc", m_hasSTGC=true);
-  declareProperty("HasMM", m_hasMM=true);
+MuonCombinedInDetExtensionAlg::MuonCombinedInDetExtensionAlg(const std::string& name, ISvcLocator* pSvcLocator)
+    : AthAlgorithm(name, pSvcLocator)
+{
+    declareProperty("MuonCombinedInDetExtensionTools", m_muonCombinedInDetExtensionTools);
+    declareProperty("usePRDs", m_usePRDs = false);
+    declareProperty("HasCSC", m_hasCSC = true);
+    declareProperty("HasSTgc", m_hasSTGC = true);
+    declareProperty("HasMM", m_hasMM = true);
 }
 
-MuonCombinedInDetExtensionAlg::~MuonCombinedInDetExtensionAlg(){}
+MuonCombinedInDetExtensionAlg::~MuonCombinedInDetExtensionAlg() {}
 
-StatusCode MuonCombinedInDetExtensionAlg::initialize()
+StatusCode
+MuonCombinedInDetExtensionAlg::initialize()
 {
-  ATH_MSG_VERBOSE(" usePRDs = "<< m_usePRDs);
-  ATH_CHECK(m_muonCombinedInDetExtensionTools.retrieve());
-  ATH_CHECK(m_indetCandidateCollectionName.initialize());
-  ATH_CHECK(m_MDT_ContainerName.initialize(m_usePRDs));
-  ATH_CHECK(m_RPC_ContainerName.initialize(m_usePRDs));
-  ATH_CHECK(m_TGC_ContainerName.initialize(m_usePRDs));
-  ATH_CHECK(m_CSC_ContainerName.initialize(m_usePRDs && m_hasCSC));
-  ATH_CHECK(m_sTGC_ContainerName.initialize(m_usePRDs && m_hasSTGC));
-  ATH_CHECK(m_MM_ContainerName.initialize(m_usePRDs && m_hasMM));
-  ATH_CHECK(m_tagMap.initialize());
-  ATH_CHECK(m_combTracks.initialize(m_combTracks.key()!=""));
-  ATH_CHECK(m_METracks.initialize(m_METracks.key()!=""));
-  ATH_CHECK(m_segments.initialize(m_segments.key()!=""));
-
-  return StatusCode::SUCCESS; 
+    ATH_MSG_VERBOSE(" usePRDs = " << m_usePRDs);
+    ATH_CHECK(m_muonCombinedInDetExtensionTools.retrieve());
+    ATH_CHECK(m_indetCandidateCollectionName.initialize());
+    ATH_CHECK(m_MDT_ContainerName.initialize(m_usePRDs));
+    ATH_CHECK(m_RPC_ContainerName.initialize(m_usePRDs));
+    ATH_CHECK(m_TGC_ContainerName.initialize(m_usePRDs));
+    ATH_CHECK(m_CSC_ContainerName.initialize(m_usePRDs && m_hasCSC));
+    ATH_CHECK(m_sTGC_ContainerName.initialize(m_usePRDs && m_hasSTGC));
+    ATH_CHECK(m_MM_ContainerName.initialize(m_usePRDs && m_hasMM));
+    ATH_CHECK(m_tagMap.initialize());
+    ATH_CHECK(m_combTracks.initialize(m_combTracks.key() != ""));
+    ATH_CHECK(m_METracks.initialize(m_METracks.key() != ""));
+    ATH_CHECK(m_segments.initialize(m_segments.key() != ""));
+
+    return StatusCode::SUCCESS;
 }
 
-StatusCode MuonCombinedInDetExtensionAlg::execute()
+StatusCode
+MuonCombinedInDetExtensionAlg::execute()
 {
 
-  SG::ReadHandle<InDetCandidateCollection> indetCandidateCollection(m_indetCandidateCollectionName);
-  if(!indetCandidateCollection.isValid()){
-    ATH_MSG_ERROR("Could not read "<< m_indetCandidateCollectionName);
-    return StatusCode::FAILURE;
-  }
-  
-  ATH_MSG_VERBOSE("Loaded InDetCandidateCollection "<<m_indetCandidateCollectionName<< " with  "<<indetCandidateCollection->size()<<" elements.");
-  for ( const MuonCombined::InDetCandidate* candidate : *indetCandidateCollection )
-    ATH_MSG_VERBOSE(candidate->toString());
-
-  SG::WriteHandle<MuonCombined::InDetCandidateToTagMap> tagMap(m_tagMap);
-  ATH_CHECK( tagMap.record (std::make_unique<MuonCombined::InDetCandidateToTagMap>()) );
-
-  TrackCollection* combTracks=nullptr;
-  TrackCollection* meTracks=nullptr;
-  Trk::SegmentCollection* segments=nullptr;
-
-  if(m_combTracks.key()!=""){
-    SG::WriteHandle<TrackCollection> wh_combTracks(m_combTracks);
-    ATH_CHECK(wh_combTracks.record(std::make_unique<TrackCollection>()));
-    combTracks=wh_combTracks.ptr();
-  }
-  if(m_METracks.key()!=""){
-    SG::WriteHandle<TrackCollection> wh_meTracks(m_METracks);
-    ATH_CHECK(wh_meTracks.record(std::make_unique<TrackCollection>()));
-    meTracks=wh_meTracks.ptr();
-  }
-
-  if(m_segments.key()!=""){
-    SG::WriteHandle<Trk::SegmentCollection> wh_segs(m_segments);
-    ATH_CHECK(wh_segs.record(std::make_unique<Trk::SegmentCollection>()));
-    segments=wh_segs.ptr();
-  }
-
-  if(m_usePRDs){
-    MuonCombined::IMuonCombinedInDetExtensionTool::MuonPrdData prdData;
-    SG::ReadHandle<Muon::MdtPrepDataContainer> mdtPRDContainer(m_MDT_ContainerName);
-    prdData.mdtPrds=mdtPRDContainer.cptr();
-    if(m_hasCSC){
-      SG::ReadHandle<Muon::CscPrepDataContainer> cscPRDContainer(m_CSC_ContainerName);
-      prdData.cscPrds=cscPRDContainer.cptr();
+    SG::ReadHandle<InDetCandidateCollection> indetCandidateCollection(m_indetCandidateCollectionName);
+    if (!indetCandidateCollection.isValid()) {
+        ATH_MSG_ERROR("Could not read " << m_indetCandidateCollectionName);
+        return StatusCode::FAILURE;
     }
-    if(m_hasSTGC&&m_hasMM) {
-      SG::ReadHandle<Muon::sTgcPrepDataContainer> stgcPRDContainer(m_sTGC_ContainerName);
-      SG::ReadHandle<Muon::MMPrepDataContainer> mmPRDContainer(m_MM_ContainerName);
-      prdData.stgcPrds=stgcPRDContainer.cptr();
-      prdData.mmPrds=mmPRDContainer.cptr();
+
+    ATH_MSG_VERBOSE("Loaded InDetCandidateCollection " << m_indetCandidateCollectionName << " with  "
+                                                       << indetCandidateCollection->size() << " elements.");
+    for (const MuonCombined::InDetCandidate* candidate : *indetCandidateCollection)
+        ATH_MSG_VERBOSE(candidate->toString());
+
+    SG::WriteHandle<MuonCombined::InDetCandidateToTagMap> tagMap(m_tagMap);
+    ATH_CHECK(tagMap.record(std::make_unique<MuonCombined::InDetCandidateToTagMap>()));
+
+    TrackCollection*        combTracks = nullptr;
+    TrackCollection*        meTracks   = nullptr;
+    Trk::SegmentCollection* segments   = nullptr;
+
+    if (m_combTracks.key() != "") {
+        SG::WriteHandle<TrackCollection> wh_combTracks(m_combTracks);
+        ATH_CHECK(wh_combTracks.record(std::make_unique<TrackCollection>()));
+        combTracks = wh_combTracks.ptr();
+    }
+    if (m_METracks.key() != "") {
+        SG::WriteHandle<TrackCollection> wh_meTracks(m_METracks);
+        ATH_CHECK(wh_meTracks.record(std::make_unique<TrackCollection>()));
+        meTracks = wh_meTracks.ptr();
+    }
+
+    if (m_segments.key() != "") {
+        SG::WriteHandle<Trk::SegmentCollection> wh_segs(m_segments);
+        ATH_CHECK(wh_segs.record(std::make_unique<Trk::SegmentCollection>()));
+        segments = wh_segs.ptr();
     }
-    SG::ReadHandle<Muon::RpcPrepDataContainer> rpcPRDContainer(m_RPC_ContainerName);
-    prdData.rpcPrds=rpcPRDContainer.cptr();
-    SG::ReadHandle<Muon::TgcPrepDataContainer> tgcPRDContainer(m_TGC_ContainerName);
-    prdData.tgcPrds=tgcPRDContainer.cptr();
-    for(auto& tool : m_muonCombinedInDetExtensionTools)
-      tool->extendWithPRDs(*indetCandidateCollection,tagMap.ptr(),prdData,combTracks,meTracks,segments); 
-  } else{
-    for(auto& tool : m_muonCombinedInDetExtensionTools)
-      tool->extend(*indetCandidateCollection,tagMap.ptr(),combTracks,meTracks,segments);
-  }
-  
-  return StatusCode::SUCCESS;
+
+    if (m_usePRDs) {
+        MuonCombined::IMuonCombinedInDetExtensionTool::MuonPrdData prdData;
+        SG::ReadHandle<Muon::MdtPrepDataContainer>                 mdtPRDContainer(m_MDT_ContainerName);
+        prdData.mdtPrds = mdtPRDContainer.cptr();
+        if (m_hasCSC) {
+            SG::ReadHandle<Muon::CscPrepDataContainer> cscPRDContainer(m_CSC_ContainerName);
+            prdData.cscPrds = cscPRDContainer.cptr();
+        }
+        if (m_hasSTGC && m_hasMM) {
+            SG::ReadHandle<Muon::sTgcPrepDataContainer> stgcPRDContainer(m_sTGC_ContainerName);
+            SG::ReadHandle<Muon::MMPrepDataContainer>   mmPRDContainer(m_MM_ContainerName);
+            prdData.stgcPrds = stgcPRDContainer.cptr();
+            prdData.mmPrds   = mmPRDContainer.cptr();
+        }
+        SG::ReadHandle<Muon::RpcPrepDataContainer> rpcPRDContainer(m_RPC_ContainerName);
+        prdData.rpcPrds = rpcPRDContainer.cptr();
+        SG::ReadHandle<Muon::TgcPrepDataContainer> tgcPRDContainer(m_TGC_ContainerName);
+        prdData.tgcPrds = tgcPRDContainer.cptr();
+        for (auto& tool : m_muonCombinedInDetExtensionTools)
+            tool->extendWithPRDs(*indetCandidateCollection, tagMap.ptr(), prdData, combTracks, meTracks, segments);
+    } else {
+        for (auto& tool : m_muonCombinedInDetExtensionTools)
+            tool->extend(*indetCandidateCollection, tagMap.ptr(), combTracks, meTracks, segments);
+    }
+
+    return StatusCode::SUCCESS;
 }
 
 
-StatusCode MuonCombinedInDetExtensionAlg::finalize()
+StatusCode
+MuonCombinedInDetExtensionAlg::finalize()
 {
-  return StatusCode::SUCCESS;
+    return StatusCode::SUCCESS;
 }
diff --git a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetExtensionAlg.h b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetExtensionAlg.h
index 16af30cefbfb2d1a83ab7f35fe45fac8df0a9f81..082e5ceef49b3a322961076d2769530607be2883 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetExtensionAlg.h
+++ b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedInDetExtensionAlg.h
@@ -1,55 +1,110 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef MUONCOMBINEDALGS_MUONCOMBINEDINDETEXTENSIONALG_H
 #define MUONCOMBINEDALGS_MUONCOMBINEDINDETEXTENSIONALG_H
 
+#include <string>
+
 #include "AthenaBaseComps/AthAlgorithm.h"
 #include "GaudiKernel/ToolHandle.h"
-#include "StoreGate/ReadHandleKey.h"
 #include "MuonCombinedEvent/InDetCandidateCollection.h"
 #include "MuonCombinedEvent/InDetCandidateToTagMap.h"
-#include "MuonPrepRawData/MuonPrepDataContainer.h"
 #include "MuonPrepRawData/MMPrepDataContainer.h"
+#include "MuonPrepRawData/MuonPrepDataContainer.h"
 #include "MuonPrepRawData/sTgcPrepDataContainer.h"
-#include "TrkTrack/TrackCollection.h"
+#include "StoreGate/ReadHandleKey.h"
 #include "TrkSegment/SegmentCollection.h"
-#include <string>
+#include "TrkTrack/TrackCollection.h"
 
 namespace MuonCombined {
-  class IMuonCombinedInDetExtensionTool;
+class IMuonCombinedInDetExtensionTool;
 }
 
-class MuonCombinedInDetExtensionAlg : public AthAlgorithm
-{
- public:
-  MuonCombinedInDetExtensionAlg(const std::string& name, ISvcLocator* pSvcLocator);
-
-  ~MuonCombinedInDetExtensionAlg();
-
-  StatusCode initialize();
-  StatusCode execute();
-  StatusCode finalize();
-
- private:
-  ToolHandleArray<MuonCombined::IMuonCombinedInDetExtensionTool> m_muonCombinedInDetExtensionTools;
-  SG::ReadHandleKey<InDetCandidateCollection> m_indetCandidateCollectionName{this,"InDetCandidateLocation","InDetCandidates","ID candidates"};
-  SG::ReadHandleKey<Muon::MdtPrepDataContainer> m_MDT_ContainerName{this,"MDTPrepDataLocation","MDT_DriftCircles","MDT prep data"};
-  SG::ReadHandleKey<Muon::CscPrepDataContainer> m_CSC_ContainerName{this,"CSCPrepDataLocation","CSC_Clusters","CSC prep data"};
-  SG::ReadHandleKey<Muon::RpcPrepDataContainer> m_RPC_ContainerName{this,"RPCPrepDataLocation","RPC_Measurements","RPC prep data"};
-  SG::ReadHandleKey<Muon::TgcPrepDataContainer> m_TGC_ContainerName{this,"TGCPrepDataLocation","TGC_Measurements","TGC prep data"};
-  SG::ReadHandleKey<Muon::sTgcPrepDataContainer> m_sTGC_ContainerName{this,"sTGCPrepDataLocation","STGC_Measurements","sTGC prep data"};
-  SG::ReadHandleKey<Muon::MMPrepDataContainer> m_MM_ContainerName{this,"MMPrepDataLocation","MM_Measurements","MM prep data"};
-  SG::WriteHandleKey<MuonCombined::InDetCandidateToTagMap> m_tagMap{this,"TagMap","muGirlTagMap","tag map"};
-  SG::WriteHandleKey<TrackCollection> m_combTracks{this,"CombinedTrackCollection","MuGirlCombinedTracks","combined track collection"};
-  SG::WriteHandleKey<TrackCollection> m_METracks{this,"METrackCollection","MuGirlMETracks","ME track collection"};
-  SG::WriteHandleKey<Trk::SegmentCollection> m_segments{this,"SegmentCollection","MuGirlSegments","Segment collection"};
-
-  bool m_usePRDs;
-  bool m_hasCSC;
-  bool m_hasSTGC;
-  bool m_hasMM;
+class MuonCombinedInDetExtensionAlg : public AthAlgorithm {
+  public:
+    MuonCombinedInDetExtensionAlg(const std::string& name, ISvcLocator* pSvcLocator);
+
+    ~MuonCombinedInDetExtensionAlg();
+
+    StatusCode initialize();
+    StatusCode execute();
+    StatusCode finalize();
+
+  private:
+    ToolHandleArray<MuonCombined::IMuonCombinedInDetExtensionTool> m_muonCombinedInDetExtensionTools;
+    SG::ReadHandleKey<InDetCandidateCollection>                    m_indetCandidateCollectionName{
+        this,
+        "InDetCandidateLocation",
+        "InDetCandidates",
+        "ID candidates",
+    };
+    SG::ReadHandleKey<Muon::MdtPrepDataContainer> m_MDT_ContainerName{
+        this,
+        "MDTPrepDataLocation",
+        "MDT_DriftCircles",
+        "MDT prep data",
+    };
+    SG::ReadHandleKey<Muon::CscPrepDataContainer> m_CSC_ContainerName{
+        this,
+        "CSCPrepDataLocation",
+        "CSC_Clusters",
+        "CSC prep data",
+    };
+    SG::ReadHandleKey<Muon::RpcPrepDataContainer> m_RPC_ContainerName{
+        this,
+        "RPCPrepDataLocation",
+        "RPC_Measurements",
+        "RPC prep data",
+    };
+    SG::ReadHandleKey<Muon::TgcPrepDataContainer> m_TGC_ContainerName{
+        this,
+        "TGCPrepDataLocation",
+        "TGC_Measurements",
+        "TGC prep data",
+    };
+    SG::ReadHandleKey<Muon::sTgcPrepDataContainer> m_sTGC_ContainerName{
+        this,
+        "sTGCPrepDataLocation",
+        "STGC_Measurements",
+        "sTGC prep data",
+    };
+    SG::ReadHandleKey<Muon::MMPrepDataContainer> m_MM_ContainerName{
+        this,
+        "MMPrepDataLocation",
+        "MM_Measurements",
+        "MM prep data",
+    };
+    SG::WriteHandleKey<MuonCombined::InDetCandidateToTagMap> m_tagMap{
+        this,
+        "TagMap",
+        "muGirlTagMap",
+        "tag map",
+    };
+    SG::WriteHandleKey<TrackCollection> m_combTracks{
+        this,
+        "CombinedTrackCollection",
+        "MuGirlCombinedTracks",
+        "combined track collection",
+    };
+    SG::WriteHandleKey<TrackCollection> m_METracks{
+        this,
+        "METrackCollection",
+        "MuGirlMETracks",
+        "ME track collection",
+    };
+    SG::WriteHandleKey<Trk::SegmentCollection> m_segments{
+        this,
+        "SegmentCollection",
+        "MuGirlSegments",
+        "Segment collection",
+    };
+
+    bool m_usePRDs;
+    bool m_hasCSC;
+    bool m_hasSTGC;
+    bool m_hasMM;
 };
 
 
diff --git a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.cxx b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.cxx
index 060d710d458b4f460993a2e2f3a667d5d38abd01..43f0ebe5ad331a8b7676cf5ea47357bd41dac6b0 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.cxx
+++ b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.cxx
@@ -4,38 +4,38 @@
 
 #include "MuonCombinedMuonCandidateAlg.h"
 
-MuonCombinedMuonCandidateAlg::MuonCombinedMuonCandidateAlg(const std::string& name, ISvcLocator* pSvcLocator):
-  AthAlgorithm(name,pSvcLocator),
-  m_muonCandidateTool("MuonCombined::MuonCandidateTool/MuonCandidateTool", this)
+MuonCombinedMuonCandidateAlg::MuonCombinedMuonCandidateAlg(const std::string& name, ISvcLocator* pSvcLocator)
+    : AthAlgorithm(name, pSvcLocator)
 {
-  declareProperty("MuonCandidateTool", m_muonCandidateTool);
 }
 
-StatusCode MuonCombinedMuonCandidateAlg::initialize()
+StatusCode
+MuonCombinedMuonCandidateAlg::initialize()
 {
-  ATH_CHECK(m_muonCandidateTool.retrieve());
-  ATH_CHECK(m_muonTrackParticleLocation.initialize());
-  ATH_CHECK(m_candidateCollectionName.initialize());
-  ATH_CHECK(m_msOnlyTracks.initialize());
-  return StatusCode::SUCCESS; 
+    ATH_CHECK(m_muonCandidateTool.retrieve());
+    ATH_CHECK(m_muonTrackParticleLocation.initialize());
+    ATH_CHECK(m_candidateCollectionName.initialize());
+    ATH_CHECK(m_msOnlyTracks.initialize());
+    return StatusCode::SUCCESS;
 }
 
-StatusCode MuonCombinedMuonCandidateAlg::execute()
+StatusCode
+MuonCombinedMuonCandidateAlg::execute()
 {
-  // retrieve MuonSpectrometer tracks
-  SG::ReadHandle<xAOD::TrackParticleContainer> muonTrackParticles(m_muonTrackParticleLocation);
-  if(!muonTrackParticles.isValid()){
-    ATH_MSG_ERROR("Could not read "<<m_muonTrackParticleLocation);
-    return StatusCode::FAILURE;
-  }
-  if(!muonTrackParticles.isPresent()){
-    ATH_MSG_WARNING(m_muonTrackParticleLocation<<" not present");
+    // retrieve MuonSpectrometer tracks
+    SG::ReadHandle<xAOD::TrackParticleContainer> muonTrackParticles(m_muonTrackParticleLocation);
+    if (!muonTrackParticles.isValid()) {
+        ATH_MSG_ERROR("Could not read " << m_muonTrackParticleLocation);
+        return StatusCode::FAILURE;
+    }
+    if (!muonTrackParticles.isPresent()) {
+        ATH_MSG_WARNING(m_muonTrackParticleLocation << " not present");
+        return StatusCode::SUCCESS;
+    }
+    SG::WriteHandle<MuonCandidateCollection> muonCandidates(m_candidateCollectionName);
+    ATH_CHECK(muonCandidates.record(std::make_unique<MuonCandidateCollection>()));
+    SG::WriteHandle<TrackCollection> msOnlyTracks(m_msOnlyTracks);
+    ATH_CHECK(msOnlyTracks.record(std::make_unique<TrackCollection>()));
+    m_muonCandidateTool->create(*muonTrackParticles, *muonCandidates, *msOnlyTracks);
     return StatusCode::SUCCESS;
-  }
-  SG::WriteHandle<MuonCandidateCollection> muonCandidates(m_candidateCollectionName);
-  ATH_CHECK(muonCandidates.record(std::make_unique<MuonCandidateCollection>()));
-  SG::WriteHandle<TrackCollection> msOnlyTracks(m_msOnlyTracks);
-  ATH_CHECK(msOnlyTracks.record(std::make_unique<TrackCollection>()));
-  m_muonCandidateTool->create(*muonTrackParticles,*muonCandidates,*msOnlyTracks);
-  return StatusCode::SUCCESS;
 }
diff --git a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.h b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.h
index 9b87317b46b117ce78d4ba5f97702b2ca4f71194..79e65f61efda7d286c1cd381e9771420b72d187d 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.h
+++ b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.h
@@ -5,32 +5,50 @@
 #ifndef MUONCOMBINEDALGS_MUONCOMBINEDMUONCANDIDATEALG_H
 #define MUONCOMBINEDALGS_MUONCOMBINEDMUONCANDIDATEALG_H
 
+#include <string>
+
 #include "AthenaBaseComps/AthAlgorithm.h"
 #include "GaudiKernel/ToolHandle.h"
-#include "StoreGate/ReadHandleKey.h"
-#include "StoreGate/WriteHandleKey.h"
-#include "xAODTracking/TrackParticleContainer.h"
 #include "MuonCombinedEvent/MuonCandidateCollection.h"
 #include "MuonCombinedToolInterfaces/IMuonCandidateTool.h"
+#include "StoreGate/ReadHandleKey.h"
+#include "StoreGate/WriteHandleKey.h"
 #include "TrkTrack/TrackCollection.h"
+#include "xAODTracking/TrackParticleContainer.h"
 
-#include <string>
-
-class MuonCombinedMuonCandidateAlg : public AthAlgorithm
-{
- public:
-  MuonCombinedMuonCandidateAlg(const std::string& name, ISvcLocator* pSvcLocator);
-
-  ~MuonCombinedMuonCandidateAlg()=default;
-
-  StatusCode initialize();
-  StatusCode execute();
-
- private:
-  ToolHandle<MuonCombined::IMuonCandidateTool> m_muonCandidateTool;
-  SG::ReadHandleKey<xAOD::TrackParticleContainer> m_muonTrackParticleLocation{this,"MuonSpectrometerTrackParticleLocation","MuonSpectrometerTrackParticles","MS Track Particle collection"};
-  SG::WriteHandleKey<MuonCandidateCollection> m_candidateCollectionName{this,"MuonCandidateLocation","MuonCandidates","Muon candidate collection"};
-  SG::WriteHandleKey<TrackCollection> m_msOnlyTracks{this,"MSOnlyExtrapolatedTrackLocation","MSOnlyExtrapolatedTracks","MS extrapolated muon tracks"};
+class MuonCombinedMuonCandidateAlg : public AthAlgorithm {
+  public:
+    MuonCombinedMuonCandidateAlg(const std::string& name, ISvcLocator* pSvcLocator);
+
+    ~MuonCombinedMuonCandidateAlg() = default;
+
+    StatusCode initialize();
+    StatusCode execute();
+
+  private:
+    ToolHandle<MuonCombined::IMuonCandidateTool> m_muonCandidateTool{
+        this,
+        "MuonCandidateTool",
+        "MuonCombined::MuonCandidateTool/MuonCandidateTool",
+    };
+    SG::ReadHandleKey<xAOD::TrackParticleContainer> m_muonTrackParticleLocation{
+        this,
+        "MuonSpectrometerTrackParticleLocation",
+        "MuonSpectrometerTrackParticles",
+        "MS Track Particle collection",
+    };
+    SG::WriteHandleKey<MuonCandidateCollection> m_candidateCollectionName{
+        this,
+        "MuonCandidateLocation",
+        "MuonCandidates",
+        "Muon candidate collection",
+    };
+    SG::WriteHandleKey<TrackCollection> m_msOnlyTracks{
+        this,
+        "MSOnlyExtrapolatedTrackLocation",
+        "MSOnlyExtrapolatedTracks",
+        "MS extrapolated muon tracks",
+    };
 };
 
 
diff --git a/Reconstruction/MuonIdentification/MuonCombinedTestTools/src/MuonTrackTagTestTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedTestTools/src/MuonTrackTagTestTool.cxx
index b54fdd21c05a0f9a03eb448b91c338f379ed9945..36724f80a97030c80f3fca6e18c9ab94dbb2e392 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedTestTools/src/MuonTrackTagTestTool.cxx
+++ b/Reconstruction/MuonIdentification/MuonCombinedTestTools/src/MuonTrackTagTestTool.cxx
@@ -2,291 +2,313 @@
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
 
-#include "GaudiKernel/MsgStream.h"
-#include "TrkTrack/Track.h"
-#include "TrkParameters/TrackParameters.h"
 #include "MuonTrackTagTestTool.h"
-#include "TrkSurfaces/StraightLineSurface.h"
-#include "TrkSurfaces/CylinderSurface.h"
-#include "TrkSurfaces/DiscSurface.h"
-#include "TrkMeasurementBase/MeasurementBase.h"
-#include "TrkGeometry/TrackingVolume.h"
-#include "TrkGeometry/TrackingGeometry.h"
 
+#include "GaudiKernel/MsgStream.h"
 #include "InDetRIO_OnTrack/PixelClusterOnTrack.h"
 #include "InDetRIO_OnTrack/TRT_DriftCircleOnTrack.h"
+#include "TrkGeometry/TrackingGeometry.h"
+#include "TrkGeometry/TrackingVolume.h"
+#include "TrkMeasurementBase/MeasurementBase.h"
+#include "TrkParameters/TrackParameters.h"
+#include "TrkSurfaces/CylinderSurface.h"
+#include "TrkSurfaces/DiscSurface.h"
+#include "TrkSurfaces/StraightLineSurface.h"
+#include "TrkTrack/Track.h"
 
 #ifdef MUONCOMBDEBUG
-#include "TrkTruthData/TrackTruth.h" 
+#include "AtlasHepMC/GenParticle.h"
+#include "TrkTruthData/TrackTruth.h"
 #include "TrkTruthData/TrackTruthCollection.h"
-#include "AtlasHepMC/GenParticle.h" 
 #endif
 
 using namespace MuonCombined;
-  
 
-MuonTrackTagTestTool::MuonTrackTagTestTool(const std::string& type, const std::string& name, const IInterface* parent) :
-  AthAlgTool(type, name, parent),
-  m_extrapolator("Trk::Extrapolator/AtlasExtrapolator", this),
-  m_trackingGeometrySvc("AtlasTrackingGeometrySvc",name)
+
+MuonTrackTagTestTool::MuonTrackTagTestTool(const std::string &type, const std::string &name, const IInterface *parent)
+    : AthAlgTool(type, name, parent), m_trackingGeometrySvc("AtlasTrackingGeometrySvc", name)
 {
-   
-  declareInterface<IMuonTrackTagTool>(this);
-  declareProperty("Chi2Cut", m_chi2cut=50.);
-  declareProperty("ExtrapolatorTool",m_extrapolator);
-  declareProperty("TrackingGeometrySvc", m_trackingGeometrySvc);
+    declareInterface<IMuonTrackTagTool>(this);
+    declareProperty("Chi2Cut", m_chi2cut = 50.);
+    declareProperty("TrackingGeometrySvc", m_trackingGeometrySvc);
 #ifdef MUONCOMBDEBUG
-  declareProperty("Truth", m_truth=false);
+    declareProperty("Truth", m_truth = false);
 #endif
-  m_msEntrance=0;
-  m_trackingGeometry=0;
-
+    m_msEntrance       = 0;
+    m_trackingGeometry = 0;
 }
 
 
-StatusCode MuonTrackTagTestTool::initialize() {
+StatusCode
+MuonTrackTagTestTool::initialize()
+{
+    ATH_CHECK(m_extrapolator.retrieve());
 
-  StatusCode sc=m_extrapolator.retrieve(); 
-  if (sc==StatusCode::FAILURE){
-    msg(MSG::FATAL) << "Could not retrieve extrapolator tool" << endmsg;
-    return sc;
+    if (!m_trackingGeometrySvc.empty()) {
+        ATH_CHECK(m_trackingGeometrySvc.retrieve());
+        msg(MSG::INFO) << "  geometry Svc " << m_trackingGeometrySvc << " retrieved " << endmsg;
+    }
 
-  }
+    msg(MSG::INFO) << "Initialized successfully" << endmsg;
 
-  if(!m_trackingGeometrySvc.empty()){
-    sc = m_trackingGeometrySvc.retrieve();
-    if( sc.isFailure() ){
-      msg(MSG::ERROR) << " failed to retrieve geometry Svc " << m_trackingGeometrySvc << endmsg;
-      return StatusCode::FAILURE;
-    }
-    msg(MSG::INFO) << "  geometry Svc " << m_trackingGeometrySvc << " retrieved " << endmsg;
-  }
- 
-  msg(MSG::INFO) << "Initialized successfully" << endmsg;
-  
-  return StatusCode::SUCCESS;
+    return StatusCode::SUCCESS;
 }
 
 
-StatusCode MuonTrackTagTestTool::finalize() {
-  
-  msg(MSG::INFO) << "Finalized successfully" << endmsg;
-  
-  
-  return StatusCode::SUCCESS;
+StatusCode
+MuonTrackTagTestTool::finalize()
+{
+
+    msg(MSG::INFO) << "Finalized successfully" << endmsg;
+
+
+    return StatusCode::SUCCESS;
 }
 
 
-double MuonTrackTagTestTool::chi2(const Trk::Track& idTrack, const Trk::Track& msTrack) const {
-  std::call_once(m_trackingOnceFlag, [&](){
-    m_trackingGeometry = m_trackingGeometrySvc->trackingGeometry();
-    if (m_trackingGeometry) m_msEntrance = m_trackingGeometry->trackingVolume("MuonSpectrometerEntrance");
-    if (!m_msEntrance) msg(MSG::ERROR) << "MS entrance not available" << endmsg;
-  });
-  
-  if(idTrack.perigeeParameters()==0) {
-    msg(MSG::WARNING) << "Skipping track combination - no perigee parameters for ID track" << endmsg;
-    return 1e15;
-  }
-  if(msTrack.perigeeParameters()==0) {
-    msg(MSG::WARNING) << "Skipping track combination - no perigee parameters for MS track" << endmsg;
-    return 1e5;
-  }
-  // skip tracks from backtracking
-  if (dynamic_cast<const Trk::StraightLineSurface*>(&(**idTrack.measurementsOnTrack()->begin()).associatedSurface())) return 0;  
-  if (idTrack.measurementsOnTrack()->size()<7 || dynamic_cast<const Trk::StraightLineSurface*>(&(*idTrack.measurementsOnTrack())[6]->associatedSurface()) || !dynamic_cast<const InDet::PixelClusterOnTrack*>(*idTrack.measurementsOnTrack()->begin()) ) return 0;
-  DataVector<const Trk::TrackStateOnSurface>::const_iterator itStates = idTrack.trackStateOnSurfaces()->begin();
-  DataVector<const Trk::TrackStateOnSurface>::const_iterator endState = idTrack.trackStateOnSurfaces()->end();
-  int noutl=0,ntrt=0;
-  for (;itStates!=endState;++itStates){
-    if ((**itStates).measurementOnTrack()) {
-      const InDet::TRT_DriftCircleOnTrack *trthit=dynamic_cast<const InDet::TRT_DriftCircleOnTrack *>((**itStates).measurementOnTrack());
-      if (trthit) {
-        if ((**itStates).type(Trk::TrackStateOnSurface::Outlier)) noutl++;
-        else ntrt++;
-      }
+double
+MuonTrackTagTestTool::chi2(const Trk::Track &idTrack, const Trk::Track &msTrack) const
+{
+    std::call_once(m_trackingOnceFlag, [&]() {
+        m_trackingGeometry = m_trackingGeometrySvc->trackingGeometry();
+        if (m_trackingGeometry) m_msEntrance = m_trackingGeometry->trackingVolume("MuonSpectrometerEntrance");
+        if (!m_msEntrance) msg(MSG::ERROR) << "MS entrance not available" << endmsg;
+    });
+
+    if (idTrack.perigeeParameters() == 0) {
+        msg(MSG::WARNING) << "Skipping track combination - no perigee parameters for ID track" << endmsg;
+        return 1e15;
     }
-  }
-  //std::cout << "noutl: " << noutl << std::endl;
-  double eta=idTrack.perigeeParameters()->eta();
-  if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "ntrt: " << ntrt << " ntrtoutl: " << noutl << " eta: " << eta << endmsg;
-  if (noutl>=15 || (ntrt==0 && std::abs(eta)>.1 && std::abs(eta)<1.9)) return 0;
-
-  // skip tracks below 2.5 GeV
-  double idqoverp=idTrack.perigeeParameters()->parameters()[Trk::qOverP];
-  if (idqoverp!=0 && fabs(1/idqoverp)<2500) return 0;
-
-  const Trk::TrackParameters *muonpar=msTrack.trackParameters()->front();
-
-  bool checkphiflip=false,muonisstraight=false;
-  /* double p_ms= (!idqoverp) ? 1.e9 : fabs(1/idqoverp)-4*GeV;
-  if (p_ms<.5*GeV) p_ms=.5*GeV;
-  double deltatheta=.3e3*10/p_ms;
-  if (idTrack.perigeeParameters()->parameters()[Trk::theta]+deltatheta>M_PI || idTrack.perigeeParameters()->parameters()[Trk::theta]-deltatheta<0) checkphiflip=true;
-  */
-  if (std::abs(muonpar->parameters()[Trk::qOverP])<1.e-9) checkphiflip=muonisstraight=true; 
-
-  double phiID=(**idTrack.trackParameters()->rbegin()).parameters()[Trk::phi],     phiMS=muonpar->position().phi();
-  double thetaID=(**idTrack.trackParameters()->rbegin()).parameters()[Trk::theta], thetaMS=muonpar->parameters()[Trk::theta];
-  if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "phi ID: " << phiID << " phi MS: " << phiMS << " diff: " << phiID-phiMS << " pt ID: " << idTrack.perigeeParameters()->pT() << " pt ms: " << muonpar->pT() << endmsg;
-  if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "theta ID: " << thetaID << " theta MS: " << thetaMS << " diff: " << thetaID-thetaMS << endmsg; 
-  double phidiff=fabs(phiID-phiMS);
-  if (fabs(phidiff-2*M_PI)<phidiff) phidiff=2*M_PI-phidiff;
-  if (checkphiflip && fabs(phidiff-M_PI)<phidiff) phidiff=fabs(M_PI-phidiff);
-  double thetalimit=.6,philimit=.8;
-  if (muonisstraight) {
-    thetalimit=1.;
-    philimit=2;
-  }
-  if (!(fabs(thetaID-thetaMS)<thetalimit && fabs(phidiff)< philimit)) return 0;
-
-  const Trk::TrackParameters *lastmeasidpar=0;
-  int index=(int)idTrack.trackParameters()->size();
-  while (!lastmeasidpar && index>0){
-    index--;
-    lastmeasidpar = (*idTrack.trackParameters())[index]->covariance() ? (*idTrack.trackParameters())[index] : 0;
-  }  
-  if (!lastmeasidpar) {
-     msg(MSG::WARNING) << "ID track parameters don't have error matrix!" << endmsg;
-     return 0;     
-  }
-
-  const Trk::TrackParameters *mspar=0;
-  DataVector<const Trk::TrackStateOnSurface>::const_iterator tsosit=msTrack.trackStateOnSurfaces()->begin();
-
-  while (tsosit!=msTrack.trackStateOnSurfaces()->end() && !mspar) {
-    if ((**tsosit).type(Trk::TrackStateOnSurface::Measurement) && !(**tsosit).type(Trk::TrackStateOnSurface::Outlier)) {
-      mspar=(**tsosit).trackParameters();  
+    if (msTrack.perigeeParameters() == 0) {
+        msg(MSG::WARNING) << "Skipping track combination - no perigee parameters for MS track" << endmsg;
+        return 1e5;
     }
-    tsosit++;
-  }
-
-  if (!mspar) {
-     msg(MSG::WARNING) << "Could not find muon track parameters!" << endmsg;
-     return 0;     
-  }
-
-  std::unique_ptr<const Trk::TrackParameters> idextrapolatedpar =
-    std::unique_ptr<const Trk::TrackParameters>
-    ( m_extrapolator->extrapolateToVolume(*lastmeasidpar,*m_msEntrance,Trk::alongMomentum,Trk::muon) );
-
-  if (!idextrapolatedpar && lastmeasidpar->parameters()[Trk::qOverP]!=0 && std::abs(1./lastmeasidpar->parameters()[Trk::qOverP])<5.*CLHEP::GeV) {
-    if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Extrapolating with p=5 GeV" << endmsg;
-    AmgVector(5) params=lastmeasidpar->parameters();
-    double sign= (params[Trk::qOverP]>0) ? 1 : -1;
-    double newqoverp=sign/(5.*CLHEP::GeV);
-    params[Trk::qOverP]=newqoverp;
-    std::unique_ptr<const Trk::TrackParameters> newlastidpar =
-      std::unique_ptr<const Trk::TrackParameters>
-      ( lastmeasidpar->associatedSurface().createTrackParameters(params[0],params[1],params[2],params[3],params[4],new AmgSymMatrix(5)(*lastmeasidpar->covariance())) );
-    if(newlastidpar) {
-      idextrapolatedpar =
-        std::unique_ptr<const Trk::TrackParameters>
-        ( m_extrapolator->extrapolateToVolume(*newlastidpar,*m_msEntrance,Trk::alongMomentum,Trk::muon) );
+    // skip tracks from backtracking
+    if (dynamic_cast<const Trk::StraightLineSurface *>(&(**idTrack.measurementsOnTrack()->begin()).associatedSurface()))
+        return 0;
+    if (idTrack.measurementsOnTrack()->size() < 7
+        || dynamic_cast<const Trk::StraightLineSurface *>(&(*idTrack.measurementsOnTrack())[6]->associatedSurface())
+        || !dynamic_cast<const InDet::PixelClusterOnTrack *>(*idTrack.measurementsOnTrack()->begin()))
+        return 0;
+    DataVector<const Trk::TrackStateOnSurface>::const_iterator itStates = idTrack.trackStateOnSurfaces()->begin();
+    DataVector<const Trk::TrackStateOnSurface>::const_iterator endState = idTrack.trackStateOnSurfaces()->end();
+    int                                                        noutl = 0, ntrt = 0;
+    for (; itStates != endState; ++itStates) {
+        if ((**itStates).measurementOnTrack()) {
+            const InDet::TRT_DriftCircleOnTrack *trthit =
+                dynamic_cast<const InDet::TRT_DriftCircleOnTrack *>((**itStates).measurementOnTrack());
+            if (trthit) {
+                if ((**itStates).type(Trk::TrackStateOnSurface::Outlier))
+                    noutl++;
+                else
+                    ntrt++;
+            }
+        }
     }
-  }
-
-  if (!idextrapolatedpar || !idextrapolatedpar->covariance()) {
-    if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "ID extrapolated par null or missing error matrix, par: " << idextrapolatedpar.get() << endmsg;
-    return 0;
-  }
-  const Trk::TrackParameters *msparforextrapolator=mspar;
-  std::unique_ptr<const Trk::TrackParameters> created_mspar;
-  if (muonisstraight){
-    const AmgSymMatrix(5) &idcovmat=*idextrapolatedpar->covariance();
-    AmgVector(5) params=mspar->parameters();
-    params[Trk::qOverP]=idextrapolatedpar->parameters()[Trk::qOverP];
-    if(!mspar->covariance()){
-      ATH_MSG_DEBUG( "Muons parameters missing Error matrix: " << mspar);
-      return 1e5; // Sometimes it's 0, sometimes 1e15. Maybe for comparison of chi2? Just in case, will copy this value from earlier check on ms track. EJWM.
-    } 
-    AmgSymMatrix(5) *newcovmat=new AmgSymMatrix(5)(*mspar->covariance());
-    for (int i=0;i<5;i++) (*newcovmat)(i,4)=idcovmat(i,4);
-    created_mspar = 
-      std::unique_ptr<const Trk::TrackParameters>
-      ( msparforextrapolator->associatedSurface().createTrackParameters(params[0],params[1],params[2],params[3],params[4],newcovmat) );
-    msparforextrapolator = created_mspar.get();
-  }
-  Trk::PropDirection propdir=Trk::oppositeMomentum;
-  Trk::DistanceSolution distsol=idextrapolatedpar->associatedSurface().straightLineDistanceEstimate(msparforextrapolator->position(),msparforextrapolator->momentum().unit());
-  double distance=0;
-  if (distsol.numberOfSolutions()==1) distance=distsol.first();
-  else if (distsol.numberOfSolutions()==2) {
-    distance= (std::abs(distsol.first())<std::abs(distsol.second())) ? distsol.first() : distsol.second();
-  }
-  //std::cout << "distance: " << distance << std::endl;
-  if (distance>0 && distsol.numberOfSolutions()>0) propdir=Trk::alongMomentum;
-
-  std::unique_ptr<const Trk::TrackParameters> msextrapolatedpar =
-    std::unique_ptr<const Trk::TrackParameters>
-    ( m_extrapolator->extrapolate(*msparforextrapolator,idextrapolatedpar->associatedSurface(),propdir,false,Trk::muon) );
-    
-  if (muonisstraight){
-    if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Muon track is straight line" << endmsg;
-  }
-  //std::cout << "idpar: " << measidpar << " mspar: " << measmspar << std::endl;
-
-  if ((!msextrapolatedpar && !muonisstraight)){
-    msg(MSG::DEBUG) << "extrapolation failed, id:" << idextrapolatedpar.get() << " ms: " << msextrapolatedpar.get() << endmsg;
-
-    return 0;
-  }
-  double mychi2=1e15;
-  if (msextrapolatedpar) mychi2=chi2(*idextrapolatedpar,*msextrapolatedpar);
-  if (muonisstraight) {
-    std::unique_ptr<const Trk::TrackParameters> idpar_firsthit =
-      std::unique_ptr<const Trk::TrackParameters>
-      ( m_extrapolator->extrapolate(*idextrapolatedpar,mspar->associatedSurface(),Trk::alongMomentum,false,Trk::muon) );
-    if (idpar_firsthit) {
-      double chi2_2=chi2(*idpar_firsthit,*mspar);
-      if (chi2_2<mychi2) mychi2=chi2_2;
+    // std::cout << "noutl: " << noutl << std::endl;
+    double eta = idTrack.perigeeParameters()->eta();
+    if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "ntrt: " << ntrt << " ntrtoutl: " << noutl << " eta: " << eta << endmsg;
+    if (noutl >= 15 || (ntrt == 0 && std::abs(eta) > .1 && std::abs(eta) < 1.9)) return 0;
+
+    // skip tracks below 2.5 GeV
+    double idqoverp = idTrack.perigeeParameters()->parameters()[Trk::qOverP];
+    if (idqoverp != 0 && fabs(1 / idqoverp) < 2500) return 0;
+
+    const Trk::TrackParameters *muonpar = msTrack.trackParameters()->front();
+
+    bool checkphiflip = false, muonisstraight = false;
+    /* double p_ms= (!idqoverp) ? 1.e9 : fabs(1/idqoverp)-4*GeV;
+    if (p_ms<.5*GeV) p_ms=.5*GeV;
+    double deltatheta=.3e3*10/p_ms;
+    if (idTrack.perigeeParameters()->parameters()[Trk::theta]+deltatheta>M_PI ||
+    idTrack.perigeeParameters()->parameters()[Trk::theta]-deltatheta<0) checkphiflip=true;
+    */
+    if (std::abs(muonpar->parameters()[Trk::qOverP]) < 1.e-9) checkphiflip = muonisstraight = true;
+
+    double phiID = (**idTrack.trackParameters()->rbegin()).parameters()[Trk::phi], phiMS = muonpar->position().phi();
+    double thetaID = (**idTrack.trackParameters()->rbegin()).parameters()[Trk::theta],
+           thetaMS = muonpar->parameters()[Trk::theta];
+    if (msgLvl(MSG::DEBUG))
+        msg(MSG::DEBUG) << "phi ID: " << phiID << " phi MS: " << phiMS << " diff: " << phiID - phiMS
+                        << " pt ID: " << idTrack.perigeeParameters()->pT() << " pt ms: " << muonpar->pT() << endmsg;
+    if (msgLvl(MSG::DEBUG))
+        msg(MSG::DEBUG) << "theta ID: " << thetaID << " theta MS: " << thetaMS << " diff: " << thetaID - thetaMS
+                        << endmsg;
+    double phidiff = fabs(phiID - phiMS);
+    if (fabs(phidiff - 2 * M_PI) < phidiff) phidiff = 2 * M_PI - phidiff;
+    if (checkphiflip && fabs(phidiff - M_PI) < phidiff) phidiff = fabs(M_PI - phidiff);
+    double thetalimit = .6, philimit = .8;
+    if (muonisstraight) {
+        thetalimit = 1.;
+        philimit   = 2;
     }
-  }
-  return mychi2;
-}
+    if (!(fabs(thetaID - thetaMS) < thetalimit && fabs(phidiff) < philimit)) return 0;
+
+    const Trk::TrackParameters *lastmeasidpar = 0;
+    int                         index         = (int)idTrack.trackParameters()->size();
+    while (!lastmeasidpar && index > 0) {
+        index--;
+        lastmeasidpar = (*idTrack.trackParameters())[index]->covariance() ? (*idTrack.trackParameters())[index] : 0;
+    }
+    if (!lastmeasidpar) {
+        msg(MSG::WARNING) << "ID track parameters don't have error matrix!" << endmsg;
+        return 0;
+    }
+
+    const Trk::TrackParameters *                               mspar  = 0;
+    DataVector<const Trk::TrackStateOnSurface>::const_iterator tsosit = msTrack.trackStateOnSurfaces()->begin();
+
+    while (tsosit != msTrack.trackStateOnSurfaces()->end() && !mspar) {
+        if ((**tsosit).type(Trk::TrackStateOnSurface::Measurement)
+            && !(**tsosit).type(Trk::TrackStateOnSurface::Outlier)) {
+            mspar = (**tsosit).trackParameters();
+        }
+        tsosit++;
+    }
+
+    if (!mspar) {
+        msg(MSG::WARNING) << "Could not find muon track parameters!" << endmsg;
+        return 0;
+    }
+
+    std::unique_ptr<const Trk::TrackParameters> idextrapolatedpar = std::unique_ptr<const Trk::TrackParameters>(
+        m_extrapolator->extrapolateToVolume(*lastmeasidpar, *m_msEntrance, Trk::alongMomentum, Trk::muon));
+
+    if (!idextrapolatedpar && lastmeasidpar->parameters()[Trk::qOverP] != 0
+        && std::abs(1. / lastmeasidpar->parameters()[Trk::qOverP]) < 5. * CLHEP::GeV)
+    {
+        if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Extrapolating with p=5 GeV" << endmsg;
+        AmgVector(5) params = lastmeasidpar->parameters();
+        double sign         = (params[Trk::qOverP] > 0) ? 1 : -1;
+        double newqoverp    = sign / (5. * CLHEP::GeV);
+        params[Trk::qOverP] = newqoverp;
+        std::unique_ptr<const Trk::TrackParameters> newlastidpar =
+            std::unique_ptr<const Trk::TrackParameters>(lastmeasidpar->associatedSurface().createTrackParameters(
+                params[0], params[1], params[2], params[3], params[4],
+                new AmgSymMatrix(5)(*lastmeasidpar->covariance())));
+        if (newlastidpar) {
+            idextrapolatedpar = std::unique_ptr<const Trk::TrackParameters>(
+                m_extrapolator->extrapolateToVolume(*newlastidpar, *m_msEntrance, Trk::alongMomentum, Trk::muon));
+        }
+    }
+
+    if (!idextrapolatedpar || !idextrapolatedpar->covariance()) {
+        if (msgLvl(MSG::DEBUG))
+            msg(MSG::DEBUG) << "ID extrapolated par null or missing error matrix, par: " << idextrapolatedpar.get()
+                            << endmsg;
+        return 0;
+    }
+    const Trk::TrackParameters *                msparforextrapolator = mspar;
+    std::unique_ptr<const Trk::TrackParameters> created_mspar;
+    if (muonisstraight) {
+        const AmgSymMatrix(5) &idcovmat = *idextrapolatedpar->covariance();
+        AmgVector(5) params             = mspar->parameters();
+        params[Trk::qOverP]             = idextrapolatedpar->parameters()[Trk::qOverP];
+        if (!mspar->covariance()) {
+            ATH_MSG_DEBUG("Muons parameters missing Error matrix: " << mspar);
+            return 1e5;  // Sometimes it's 0, sometimes 1e15. Maybe for comparison of chi2? Just in case, will copy this
+                         // value from earlier check on ms track. EJWM.
+        }
+        AmgSymMatrix(5) *newcovmat = new AmgSymMatrix(5)(*mspar->covariance());
+        for (int i = 0; i < 5; i++) (*newcovmat)(i, 4) = idcovmat(i, 4);
+        created_mspar =
+            std::unique_ptr<const Trk::TrackParameters>(msparforextrapolator->associatedSurface().createTrackParameters(
+                params[0], params[1], params[2], params[3], params[4], newcovmat));
+        msparforextrapolator = created_mspar.get();
+    }
+    Trk::PropDirection    propdir = Trk::oppositeMomentum;
+    Trk::DistanceSolution distsol = idextrapolatedpar->associatedSurface().straightLineDistanceEstimate(
+        msparforextrapolator->position(), msparforextrapolator->momentum().unit());
+    double distance = 0;
+    if (distsol.numberOfSolutions() == 1)
+        distance = distsol.first();
+    else if (distsol.numberOfSolutions() == 2) {
+        distance = (std::abs(distsol.first()) < std::abs(distsol.second())) ? distsol.first() : distsol.second();
+    }
+    // std::cout << "distance: " << distance << std::endl;
+    if (distance > 0 && distsol.numberOfSolutions() > 0) propdir = Trk::alongMomentum;
 
+    std::unique_ptr<const Trk::TrackParameters> msextrapolatedpar =
+        std::unique_ptr<const Trk::TrackParameters>(m_extrapolator->extrapolate(
+            *msparforextrapolator, idextrapolatedpar->associatedSurface(), propdir, false, Trk::muon));
 
+    if (muonisstraight) {
+        if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Muon track is straight line" << endmsg;
+    }
+    // std::cout << "idpar: " << measidpar << " mspar: " << measmspar << std::endl;
 
-double MuonTrackTagTestTool::chi2(const Trk::TrackParameters& idextrapolatedpar,const Trk::TrackParameters& msextrapolatedpar) const{
-  double loc1ID=idextrapolatedpar.parameters()[Trk::loc1];
-  double loc2ID=idextrapolatedpar.parameters()[Trk::loc2];
-  double phiID=idextrapolatedpar.parameters()[Trk::phi];
-  double thetaID=idextrapolatedpar.parameters()[Trk::theta];
-     
-  double loc1MS=msextrapolatedpar.parameters()[Trk::loc1];
-  double loc2MS=msextrapolatedpar.parameters()[Trk::loc2];
-  double phiMS=msextrapolatedpar.parameters()[Trk::phi];
-  double thetaMS=msextrapolatedpar.parameters()[Trk::theta];
-  //std::cout << "idpar: " << *idpar << " mspar: " << *mspar << std::endl;
-  if (!idextrapolatedpar.covariance() || !msextrapolatedpar.covariance()) {
-    if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "track parameters don't have error matrix! id: " << idextrapolatedpar.covariance() << " ms: " << msextrapolatedpar.covariance() << endmsg;
-    return 1e15;
-  }
-  const AmgSymMatrix(5) &idcovmat=*idextrapolatedpar.covariance();
-  const AmgSymMatrix(5) &mscovmat=*msextrapolatedpar.covariance();
-  //std::cout << "idpar: " << *idextrapolatedpar << " pos: " << idextrapolatedpar.position() << " mspar: " << *msextrapolatedpar << " position: " << msextrapolatedpar.position() << std::endl;   
-  double loc1diff=fabs(loc1ID-loc1MS);
-  double loc2diff=fabs(loc2ID-loc2MS);
-  const Trk::CylinderSurface *cylsurf=dynamic_cast<const Trk::CylinderSurface *>(&idextrapolatedpar.associatedSurface());
-  const Trk::DiscSurface *discsurf=dynamic_cast<const Trk::DiscSurface *>(&idextrapolatedpar.associatedSurface());
-  
-  if (cylsurf){
-    double length=2*M_PI*cylsurf->bounds().r();
-    if (fabs(loc1diff-length  )<loc1diff) loc1diff=length-loc1diff;
-  }
-  if (discsurf){
-    if (fabs(loc2diff-2*M_PI)<loc2diff) loc2diff=2*M_PI-loc2diff;
-  }
-  double phidiff=fabs(phiID-phiMS);
-  if (fabs(phidiff-2*M_PI)<phidiff) phidiff=2*M_PI-phidiff;
-  if (fabs(phidiff-M_PI)<phidiff) phidiff-=M_PI;  // catch singularity in phi near theta=0
-  
-  double thetadiff=thetaID-thetaMS;
-  //std::cout << "loc1diff: " << loc1diff << " loc2diff: " << loc2diff << " phidiff: " << phidiff << " thetadiff: " << thetadiff << " idcov: " << idcovmat << " mscov: " << mscovmat << " idcovmat+mscovmat: " << idcovmat+mscovmat << std::endl;
-  double chi2=loc1diff*loc1diff/(idcovmat(0,0)+mscovmat(0,0))+loc2diff*loc2diff/(idcovmat(1,1)+mscovmat(1,1))+phidiff*phidiff/(idcovmat(2,2)+mscovmat(2,2))+thetadiff*thetadiff/(idcovmat(3,3)+mscovmat(3,3));
-  chi2=std::abs(chi2);
-  //if (goodmatch) std::cout << "chi2 " << chi2 << std::endl;
-  if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << " chi2: " << chi2 << endmsg;
-  return chi2;
+    if ((!msextrapolatedpar && !muonisstraight)) {
+        msg(MSG::DEBUG) << "extrapolation failed, id:" << idextrapolatedpar.get() << " ms: " << msextrapolatedpar.get()
+                        << endmsg;
+
+        return 0;
+    }
+    double mychi2 = 1e15;
+    if (msextrapolatedpar) mychi2 = chi2(*idextrapolatedpar, *msextrapolatedpar);
+    if (muonisstraight) {
+        std::unique_ptr<const Trk::TrackParameters> idpar_firsthit =
+            std::unique_ptr<const Trk::TrackParameters>(m_extrapolator->extrapolate(
+                *idextrapolatedpar, mspar->associatedSurface(), Trk::alongMomentum, false, Trk::muon));
+        if (idpar_firsthit) {
+            double chi2_2 = chi2(*idpar_firsthit, *mspar);
+            if (chi2_2 < mychi2) mychi2 = chi2_2;
+        }
+    }
+    return mychi2;
 }
 
+
+double
+MuonTrackTagTestTool::chi2(const Trk::TrackParameters &idextrapolatedpar,
+                           const Trk::TrackParameters &msextrapolatedpar) const
+{
+    double loc1ID  = idextrapolatedpar.parameters()[Trk::loc1];
+    double loc2ID  = idextrapolatedpar.parameters()[Trk::loc2];
+    double phiID   = idextrapolatedpar.parameters()[Trk::phi];
+    double thetaID = idextrapolatedpar.parameters()[Trk::theta];
+
+    double loc1MS  = msextrapolatedpar.parameters()[Trk::loc1];
+    double loc2MS  = msextrapolatedpar.parameters()[Trk::loc2];
+    double phiMS   = msextrapolatedpar.parameters()[Trk::phi];
+    double thetaMS = msextrapolatedpar.parameters()[Trk::theta];
+    // std::cout << "idpar: " << *idpar << " mspar: " << *mspar << std::endl;
+    if (!idextrapolatedpar.covariance() || !msextrapolatedpar.covariance()) {
+        if (msgLvl(MSG::DEBUG))
+            msg(MSG::DEBUG) << "track parameters don't have error matrix! id: " << idextrapolatedpar.covariance()
+                            << " ms: " << msextrapolatedpar.covariance() << endmsg;
+        return 1e15;
+    }
+    const AmgSymMatrix(5) &idcovmat = *idextrapolatedpar.covariance();
+    const AmgSymMatrix(5) &mscovmat = *msextrapolatedpar.covariance();
+    // std::cout << "idpar: " << *idextrapolatedpar << " pos: " << idextrapolatedpar.position() << " mspar: " <<
+    // *msextrapolatedpar << " position: " << msextrapolatedpar.position() << std::endl;
+    double                      loc1diff = fabs(loc1ID - loc1MS);
+    double                      loc2diff = fabs(loc2ID - loc2MS);
+    const Trk::CylinderSurface *cylsurf =
+        dynamic_cast<const Trk::CylinderSurface *>(&idextrapolatedpar.associatedSurface());
+    const Trk::DiscSurface *discsurf = dynamic_cast<const Trk::DiscSurface *>(&idextrapolatedpar.associatedSurface());
+
+    if (cylsurf) {
+        double length = 2 * M_PI * cylsurf->bounds().r();
+        if (fabs(loc1diff - length) < loc1diff) loc1diff = length - loc1diff;
+    }
+    if (discsurf) {
+        if (fabs(loc2diff - 2 * M_PI) < loc2diff) loc2diff = 2 * M_PI - loc2diff;
+    }
+    double phidiff = fabs(phiID - phiMS);
+    if (fabs(phidiff - 2 * M_PI) < phidiff) phidiff = 2 * M_PI - phidiff;
+    if (fabs(phidiff - M_PI) < phidiff) phidiff -= M_PI;  // catch singularity in phi near theta=0
+
+    double thetadiff = thetaID - thetaMS;
+    // std::cout << "loc1diff: " << loc1diff << " loc2diff: " << loc2diff << " phidiff: " << phidiff << " thetadiff: "
+    // << thetadiff << " idcov: " << idcovmat << " mscov: " << mscovmat << " idcovmat+mscovmat: " << idcovmat+mscovmat
+    // << std::endl;
+    double chi2 = loc1diff * loc1diff / (idcovmat(0, 0) + mscovmat(0, 0))
+                  + loc2diff * loc2diff / (idcovmat(1, 1) + mscovmat(1, 1))
+                  + phidiff * phidiff / (idcovmat(2, 2) + mscovmat(2, 2))
+                  + thetadiff * thetadiff / (idcovmat(3, 3) + mscovmat(3, 3));
+    chi2 = std::abs(chi2);
+    // if (goodmatch) std::cout << "chi2 " << chi2 << std::endl;
+    if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << " chi2: " << chi2 << endmsg;
+    return chi2;
+}
diff --git a/Reconstruction/MuonIdentification/MuonCombinedTestTools/src/MuonTrackTagTestTool.h b/Reconstruction/MuonIdentification/MuonCombinedTestTools/src/MuonTrackTagTestTool.h
index f1fc3039c4cc9d87c5106d8f777e6202f06e4672..c80d624db14473f20824d5c1f9adc3ae0c65f7db 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedTestTools/src/MuonTrackTagTestTool.h
+++ b/Reconstruction/MuonIdentification/MuonCombinedTestTools/src/MuonTrackTagTestTool.h
@@ -7,51 +7,56 @@
 
 //#define MUONCOMBDEBUG
 
+#include <mutex>
+#include <string>
+
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ToolHandle.h"
-#include <string>
-#include <mutex>
-#include "TrkExInterfaces/IExtrapolator.h"
+#include "MuonCombinedToolInterfaces/IMuonTrackTagTool.h"
 #include "TrkDetDescrInterfaces/ITrackingGeometrySvc.h"
+#include "TrkExInterfaces/IExtrapolator.h"
 #include "TrkParameters/TrackParameters.h"
-#include "MuonCombinedToolInterfaces/IMuonTrackTagTool.h"
 
-namespace Trk{
-  class TrackingGeometry;
-  class TrackingVolume;
-}
+namespace Trk {
+class TrackingGeometry;
+class TrackingVolume;
+}  // namespace Trk
 
 namespace MuonCombined {
-  
-  class MuonTrackTagTestTool : public AthAlgTool, virtual public IMuonTrackTagTool {
-    
+
+class MuonTrackTagTestTool : public AthAlgTool, virtual public IMuonTrackTagTool {
+
   public:
-    
-    MuonTrackTagTestTool(const std::string& type,const std::string& name, const IInterface* parent);
+    MuonTrackTagTestTool(const std::string& type, const std::string& name, const IInterface* parent);
     ~MuonTrackTagTestTool() {}
-    
+
     StatusCode initialize();
     StatusCode finalize();
-    
-    double chi2(const Trk::TrackParameters& idParsAtEntry,const Trk::TrackParameters& msParsAtEntry) const;
+
+    double chi2(const Trk::TrackParameters& idParsAtEntry, const Trk::TrackParameters& msParsAtEntry) const;
     double chi2(const Trk::Track& id, const Trk::Track& ms) const;
 
   private:
+    ToolHandle<Trk::IExtrapolator> m_extrapolator{
+        this,
+        "ExtrapolatorTool",
+        "Trk::Extrapolator/AtlasExtrapolator",
+    };
+    mutable ServiceHandle<Trk::ITrackingGeometrySvc> m_trackingGeometrySvc
+        ATLAS_THREAD_SAFE;  // Services are assumed to be thread-safe
+    mutable const Trk::TrackingGeometry* m_trackingGeometry
+        ATLAS_THREAD_SAFE;  // Initialized with call_once, then used read-only
+    mutable const Trk::TrackingVolume* m_msEntrance
+                                              ATLAS_THREAD_SAFE;  // Initialized with call_once, then used read-only
+    mutable std::once_flag m_trackingOnceFlag ATLAS_THREAD_SAFE;
 
-    ToolHandle<Trk::IExtrapolator> m_extrapolator;
-    mutable ServiceHandle<Trk::ITrackingGeometrySvc> m_trackingGeometrySvc ATLAS_THREAD_SAFE; // Services are assumed to be thread-safe
-    mutable const Trk::TrackingGeometry*  m_trackingGeometry ATLAS_THREAD_SAFE; // Initialized with call_once, then used read-only
-    mutable const Trk::TrackingVolume*    m_msEntrance ATLAS_THREAD_SAFE; // Initialized with call_once, then used read-only
-    mutable std::once_flag                m_trackingOnceFlag ATLAS_THREAD_SAFE;
-    
     double m_chi2cut;
 #ifdef MUONCOMBDEBUG
     bool m_truth;
 #endif
-    
-  };
+};
 
-}
+}  // namespace MuonCombined
 
 
 #endif
diff --git a/Reconstruction/MuonIdentification/MuonCombinedTimingTools/src/MuonCombinedTimingTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedTimingTools/src/MuonCombinedTimingTool.cxx
index 7a5df34b905a6eaa5a8b22397c34b5740e17610e..ec1dde08a28333ed7594fc215c03ee8a7a78d0f4 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedTimingTools/src/MuonCombinedTimingTool.cxx
+++ b/Reconstruction/MuonIdentification/MuonCombinedTimingTools/src/MuonCombinedTimingTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -7,250 +7,235 @@
 ///////////////////////////////////////////////////////////////////
 
 #include "MuonCombinedTimingTool.h"
-#include "TrkToolInterfaces/ITrackTimingTool.h"
+
 #include "TrkSpaceTimePoint/SpaceTimePoint.h"
 
+
 //================ Constructor =================================================
 
-Rec::MuonCombinedTimingTool::MuonCombinedTimingTool(const std::string& t,
-			  const std::string& n,
-			  const IInterface*  p )
-  :
-  AthAlgTool(t,n,p),
-  m_trtTimingTool("InDet::TRT_TrackTimingTool/TRT_TrackTimingTool"),
-  m_caloTimingTool("Rec::TrackInCaloTimingTool/TrackInCaloTimingTool"),
-  m_mdtSegmentTimingTool("Muon::SegmentTimingTool/SegmentTimingTool"),
-  m_rpcTimingTool("")
+Rec::MuonCombinedTimingTool::MuonCombinedTimingTool(const std::string& t, const std::string& n, const IInterface* p)
+    : AthAlgTool(t, n, p)
 {
-  declareInterface<IMuonCombinedTimingTool>(this);
-  declareProperty("InDetTimingTool",m_trtTimingTool);
-  declareProperty("CaloTimingTool",m_caloTimingTool);
-  declareProperty("MDT_TimingTool",m_mdtSegmentTimingTool);
-  declareProperty("RPC_TimingTool",m_rpcTimingTool);
+    declareInterface<IMuonCombinedTimingTool>(this);
 }
 
 //================ Destructor =================================================
 
-Rec::MuonCombinedTimingTool::~MuonCombinedTimingTool()
-{}
+Rec::MuonCombinedTimingTool::~MuonCombinedTimingTool() {}
 
 
 //================ Initialisation =================================================
 
-StatusCode Rec::MuonCombinedTimingTool::initialize()
+StatusCode
+Rec::MuonCombinedTimingTool::initialize()
 {
-  
-  StatusCode sc = AlgTool::initialize();
-  if (sc.isFailure()) return sc;
 
-  if (!m_trtTimingTool.empty()) {
-      if (m_trtTimingTool.retrieve().isFailure()) {
-        ATH_MSG_ERROR ("Could not retrieve "<<m_trtTimingTool.name());
-        return StatusCode::FAILURE;
-      } else ATH_MSG_DEBUG ("Retrieved " << m_trtTimingTool.name());
-  }
-  if (!m_caloTimingTool.empty()) {
-      if (m_caloTimingTool.retrieve().isFailure()) {
-        ATH_MSG_ERROR ("Could not retrieve "<<m_caloTimingTool.name());
+    StatusCode sc = AlgTool::initialize();
+    if (sc.isFailure()) return sc;
+
+    if (!m_trtTimingTool.empty()) {
+        ATH_CHECK(m_trtTimingTool.retrieve());
+        ATH_MSG_DEBUG("Retrieved " << m_trtTimingTool.name());
+    }
+    if (!m_caloTimingTool.empty()) {
+        ATH_CHECK(m_caloTimingTool.retrieve());
+        ATH_MSG_DEBUG("Retrieved " << m_caloTimingTool.name());
+    }
+    if (!m_mdtSegmentTimingTool.empty()) {
+        ATH_CHECK(m_mdtSegmentTimingTool.retrieve());
+        ATH_MSG_DEBUG("Retrieved " << m_mdtSegmentTimingTool.name());
+    }
+    if (!m_rpcTimingTool.empty()) {
+        ATH_CHECK(m_rpcTimingTool.retrieve());
+        ATH_MSG_DEBUG("Retrieved " << m_rpcTimingTool.name());
+    }
+
+    /*
+    if (!m_cscTimingTool.empty()) {
+      if (m_cscTimingTool.retrieve().isFailure()) {
+        ATH_MSG_ERROR ("Could not retrieve "<<m_cscTimingTool.name());
         return StatusCode::FAILURE;
-      } else ATH_MSG_DEBUG ("Retrieved " << m_caloTimingTool.name());
-  }
-  if (!m_mdtSegmentTimingTool.empty()) {
-    if (m_mdtSegmentTimingTool.retrieve().isFailure()) {
-      ATH_MSG_ERROR ("Could not retrieve "<<m_mdtSegmentTimingTool.name());
-      return StatusCode::FAILURE;
-    } else ATH_MSG_DEBUG ("Retrieved " << m_mdtSegmentTimingTool.name());
-  }
-  if (!m_rpcTimingTool.empty()) {
-    if (m_rpcTimingTool.retrieve().isFailure()) {
-      ATH_MSG_ERROR ("Could not retrieve "<<m_rpcTimingTool.name());
-      return StatusCode::FAILURE;
-    } else ATH_MSG_DEBUG ("Retrieved " << m_rpcTimingTool.name());
-  }
-
-  /*
-  if (!m_cscTimingTool.empty()) {
-    if (m_cscTimingTool.retrieve().isFailure()) {
-      ATH_MSG_ERROR ("Could not retrieve "<<m_cscTimingTool.name());
-      return StatusCode::FAILURE;
-    } else ATH_MSG_DEBUG ("Retrieved " << m_cscTimingTool.name());
-    } */
-
-  ATH_MSG_DEBUG ("initialize() successful in " << name());
-  return StatusCode::SUCCESS;
+      } else ATH_MSG_DEBUG ("Retrieved " << m_cscTimingTool.name());
+      } */
+
+    ATH_MSG_DEBUG("initialize() successful in " << name());
+    return StatusCode::SUCCESS;
 }
 
 //================ Finalisation =================================================
 
-StatusCode Rec::MuonCombinedTimingTool::finalize()
+StatusCode
+Rec::MuonCombinedTimingTool::finalize()
 {
-  return StatusCode::SUCCESS;
+    return StatusCode::SUCCESS;
 }
 
 //============================================================================================
-std::vector<Trk::SpaceTimePoint*> Rec::MuonCombinedTimingTool::timeMeasurements(const xAOD::Muon& ) const
+std::vector<Trk::SpaceTimePoint*>
+Rec::MuonCombinedTimingTool::timeMeasurements(const xAOD::Muon&) const
 {
-  std::vector<Trk::SpaceTimePoint*> spaceTimePoints;  // empty vector
-  ATH_MSG_WARNING("This tool is not migrated to xAOD yet, please volunteer to update it if you need the information filled");
-//   // return empty vector in case no segment container was associated to the muon
-//   if (!getSegmentContainer(muon)) return spaceTimePoints;
-
-//   // ***
-//   // *** first choice: primary author combined muon or MuGirl refitted
-//   // ***
-//   if (muon.hasCombinedMuonTrackParticle() ) {
-// //  || muon.hasInnerExtrapolatedTrackParticle() ) // analysis will be based on MuGirl segments
-    
-//     const Rec::TrackParticle* muonParticle = muon.hasCombinedMuonTrackParticle() ?
-//     muon.combinedMuonTrackParticle() : muon.innerExtrapolatedTrackParticle();
-    
-//     const Trk::Track* combinedTrack = muonParticle ? muonParticle->originalTrack() : NULL;
-    
-//     if (combinedTrack==NULL) return spaceTimePoints;
-    
-//     const Trk::Track* inDetTrack = muon.inDetTrkTrack();
-//     if (!m_trtTimingTool.empty() && inDetTrack!= NULL) {
-//       // in case a refit is attempted, better give only the ID track to the tool.
-//       std::vector<Trk::SpaceTimePoint*> v1 
-// 	= m_trtTimingTool->timeMeasurements(*inDetTrack);
-//       if (!v1.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v1.begin(), v1.end());
-//     }
-    
-//     if (!m_caloTimingTool.empty()) {
-//       std::vector<Trk::SpaceTimePoint*> v2 = m_caloTimingTool->timeMeasurements(*combinedTrack);
-//       if (!v2.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v2.begin(), v2.end());
-//     }
-    
-//     if (!m_mdtSegmentTimingTool.empty()) {
-//       const Trk::SegmentCollection* segments = getSegmentContainer(muon);
-//       std::vector<Trk::SpaceTimePoint*> v3 = m_mdtSegmentTimingTool->timeMeasurements(*combinedTrack, segments);
-//       if (!v3.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v3.begin(), v3.end());
-//       // if at some point consider passing tracks, in case t0 determined on the fly
-//       // std::vector<Trk::SpaceTimePoint*> v3 = m_mdtSegmentTimingTool->timeMeasurements(*combinedTrack);
-//       // if (!v3.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v3.begin(), v3.end());
-//     }
-//     if (!m_rpcTimingTool.empty()) {
-//       std::vector<Trk::SpaceTimePoint*> v4 = m_rpcTimingTool->timeMeasurements(*combinedTrack);
-//       if (!v4.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v4.begin(), v4.end());
-//     }
-//     return spaceTimePoints;
-//   }
-
-//   // ***
-//   // *** second choice: primary author segment-tagger
-//   // ***
-//   if ( (muon.hasInDetTrackParticle() || muon.hasInnerExtrapolatedTrackParticle()) && !muon.isCaloMuonId()) {
-//     const Rec::TrackParticle* idParticle = muon.inDetTrackParticle();
-//     const Trk::Track* idTrack = idParticle ? idParticle->originalTrack() : NULL;
-//     if (idTrack==NULL) return spaceTimePoints;
-//     if (!m_trtTimingTool.empty()) {
-//       std::vector<Trk::SpaceTimePoint*> v1 = m_trtTimingTool->timeMeasurements(*idTrack);
-//       if (!v1.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v1.begin(), v1.end());
-//     }
-//     if (!m_caloTimingTool.empty()) {
-//       std::vector<Trk::SpaceTimePoint*> v2 = m_caloTimingTool->timeMeasurements(*idTrack);
-//       if (!v2.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v2.begin(), v2.end());
-//     }
-//     if (!m_mdtSegmentTimingTool.empty() || !m_rpcTimingTool.empty()) {
-//       std::vector<const Trk::Segment*> segments;
-//       unsigned int nSeg = muon.numberOfSegments();
-//       segments.reserve(nSeg);
-//       for( unsigned int si=0;si<nSeg;++si ) {
-//         const Trk::Segment* seg = muon.muonSegment(si);
-//         if( seg ) segments.push_back(seg);
-//       }
-//       if (!m_mdtSegmentTimingTool.empty()) {
-// 	std::vector<Trk::SpaceTimePoint*> v3 = m_mdtSegmentTimingTool->timeMeasurements(segments);
-//         if (!v3.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v3.begin(), v3.end());
-//       }
-//       if (!m_rpcTimingTool.empty()) {
-//         std::vector<Trk::SpaceTimePoint*> v4 = m_rpcTimingTool->timeMeasurements(segments);
-//         if (!v4.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v4.begin(), v4.end());
-//       }
-//     }
-//     return spaceTimePoints;
-//   }
-
-//   // ***
-//   // *** third choice: standalone muon
-//   // ***
-//   if (muon.hasMuonExtrapolatedTrackParticle()){
-//     const Rec::TrackParticle* muonParticle = muon.muonExtrapolatedTrackParticle();
-//     const Trk::Track* msTrack = muonParticle ? muonParticle->originalTrack() : NULL;
-//     if (msTrack==NULL) {
-//        ATH_MSG_WARNING ("No muon track or segments associated to SA muon !?");
-//        return spaceTimePoints;
-//      }
-//     if (!m_caloTimingTool.empty()) {
-//       std::vector<Trk::SpaceTimePoint*> v2 = m_caloTimingTool->timeMeasurements(*msTrack);
-//       if (!v2.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v2.begin(), v2.end());
-//     }
-//     if (!m_mdtSegmentTimingTool.empty()) {
-//       const Trk::SegmentCollection* segments = getSegmentContainer(muon);
-//       std::vector<Trk::SpaceTimePoint*> v3 = m_mdtSegmentTimingTool->timeMeasurements(*msTrack, segments);
-//       if (!v3.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v3.begin(), v3.end());
-//     }
-//     if (!m_rpcTimingTool.empty()) {
-//       std::vector<Trk::SpaceTimePoint*> v4 = m_rpcTimingTool->timeMeasurements(*msTrack);
-//       if (!v4.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v4.begin(), v4.end());    
-//     }
-//     return spaceTimePoints;
-//   }
-  
-//   // ***
-//   // *** fourth choice: calo tagged muon
-//   // ***
-//   if (muon.hasInDetTrackParticle() && muon.isCaloMuonId()){
-//     const Rec::TrackParticle* idParticle = muon.inDetTrackParticle();
-//     const Trk::Track* idTrack = idParticle ? idParticle->originalTrack() : NULL;
-//     if (idTrack==NULL) return spaceTimePoints;
-//     if (!m_trtTimingTool.empty()) {
-//       std::vector<Trk::SpaceTimePoint*> v1 = m_trtTimingTool->timeMeasurements(*idTrack);
-//       if (!v1.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v1.begin(), v1.end());
-//     }
-//     if (!m_caloTimingTool.empty()) {
-//       std::vector<Trk::SpaceTimePoint*> v2 = m_caloTimingTool->timeMeasurements(*idTrack);
-//       if (!v2.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v2.begin(), v2.end());
-//     }
-//     return spaceTimePoints;
-//   }
-
-  return spaceTimePoints;
+    std::vector<Trk::SpaceTimePoint*> spaceTimePoints;  // empty vector
+    ATH_MSG_WARNING(
+        "This tool is not migrated to xAOD yet, please volunteer to update it if you need the information filled");
+    //   // return empty vector in case no segment container was associated to the muon
+    //   if (!getSegmentContainer(muon)) return spaceTimePoints;
+
+    //   // ***
+    //   // *** first choice: primary author combined muon or MuGirl refitted
+    //   // ***
+    //   if (muon.hasCombinedMuonTrackParticle() ) {
+    // //  || muon.hasInnerExtrapolatedTrackParticle() ) // analysis will be based on MuGirl segments
+
+    //     const Rec::TrackParticle* muonParticle = muon.hasCombinedMuonTrackParticle() ?
+    //     muon.combinedMuonTrackParticle() : muon.innerExtrapolatedTrackParticle();
+
+    //     const Trk::Track* combinedTrack = muonParticle ? muonParticle->originalTrack() : NULL;
+
+    //     if (combinedTrack==NULL) return spaceTimePoints;
+
+    //     const Trk::Track* inDetTrack = muon.inDetTrkTrack();
+    //     if (!m_trtTimingTool.empty() && inDetTrack!= NULL) {
+    //       // in case a refit is attempted, better give only the ID track to the tool.
+    //       std::vector<Trk::SpaceTimePoint*> v1
+    // 	= m_trtTimingTool->timeMeasurements(*inDetTrack);
+    //       if (!v1.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v1.begin(), v1.end());
+    //     }
+
+    //     if (!m_caloTimingTool.empty()) {
+    //       std::vector<Trk::SpaceTimePoint*> v2 = m_caloTimingTool->timeMeasurements(*combinedTrack);
+    //       if (!v2.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v2.begin(), v2.end());
+    //     }
+
+    //     if (!m_mdtSegmentTimingTool.empty()) {
+    //       const Trk::SegmentCollection* segments = getSegmentContainer(muon);
+    //       std::vector<Trk::SpaceTimePoint*> v3 = m_mdtSegmentTimingTool->timeMeasurements(*combinedTrack, segments);
+    //       if (!v3.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v3.begin(), v3.end());
+    //       // if at some point consider passing tracks, in case t0 determined on the fly
+    //       // std::vector<Trk::SpaceTimePoint*> v3 = m_mdtSegmentTimingTool->timeMeasurements(*combinedTrack);
+    //       // if (!v3.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v3.begin(), v3.end());
+    //     }
+    //     if (!m_rpcTimingTool.empty()) {
+    //       std::vector<Trk::SpaceTimePoint*> v4 = m_rpcTimingTool->timeMeasurements(*combinedTrack);
+    //       if (!v4.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v4.begin(), v4.end());
+    //     }
+    //     return spaceTimePoints;
+    //   }
+
+    //   // ***
+    //   // *** second choice: primary author segment-tagger
+    //   // ***
+    //   if ( (muon.hasInDetTrackParticle() || muon.hasInnerExtrapolatedTrackParticle()) && !muon.isCaloMuonId()) {
+    //     const Rec::TrackParticle* idParticle = muon.inDetTrackParticle();
+    //     const Trk::Track* idTrack = idParticle ? idParticle->originalTrack() : NULL;
+    //     if (idTrack==NULL) return spaceTimePoints;
+    //     if (!m_trtTimingTool.empty()) {
+    //       std::vector<Trk::SpaceTimePoint*> v1 = m_trtTimingTool->timeMeasurements(*idTrack);
+    //       if (!v1.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v1.begin(), v1.end());
+    //     }
+    //     if (!m_caloTimingTool.empty()) {
+    //       std::vector<Trk::SpaceTimePoint*> v2 = m_caloTimingTool->timeMeasurements(*idTrack);
+    //       if (!v2.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v2.begin(), v2.end());
+    //     }
+    //     if (!m_mdtSegmentTimingTool.empty() || !m_rpcTimingTool.empty()) {
+    //       std::vector<const Trk::Segment*> segments;
+    //       unsigned int nSeg = muon.numberOfSegments();
+    //       segments.reserve(nSeg);
+    //       for( unsigned int si=0;si<nSeg;++si ) {
+    //         const Trk::Segment* seg = muon.muonSegment(si);
+    //         if( seg ) segments.push_back(seg);
+    //       }
+    //       if (!m_mdtSegmentTimingTool.empty()) {
+    // 	std::vector<Trk::SpaceTimePoint*> v3 = m_mdtSegmentTimingTool->timeMeasurements(segments);
+    //         if (!v3.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v3.begin(), v3.end());
+    //       }
+    //       if (!m_rpcTimingTool.empty()) {
+    //         std::vector<Trk::SpaceTimePoint*> v4 = m_rpcTimingTool->timeMeasurements(segments);
+    //         if (!v4.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v4.begin(), v4.end());
+    //       }
+    //     }
+    //     return spaceTimePoints;
+    //   }
+
+    //   // ***
+    //   // *** third choice: standalone muon
+    //   // ***
+    //   if (muon.hasMuonExtrapolatedTrackParticle()){
+    //     const Rec::TrackParticle* muonParticle = muon.muonExtrapolatedTrackParticle();
+    //     const Trk::Track* msTrack = muonParticle ? muonParticle->originalTrack() : NULL;
+    //     if (msTrack==NULL) {
+    //        ATH_MSG_WARNING ("No muon track or segments associated to SA muon !?");
+    //        return spaceTimePoints;
+    //      }
+    //     if (!m_caloTimingTool.empty()) {
+    //       std::vector<Trk::SpaceTimePoint*> v2 = m_caloTimingTool->timeMeasurements(*msTrack);
+    //       if (!v2.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v2.begin(), v2.end());
+    //     }
+    //     if (!m_mdtSegmentTimingTool.empty()) {
+    //       const Trk::SegmentCollection* segments = getSegmentContainer(muon);
+    //       std::vector<Trk::SpaceTimePoint*> v3 = m_mdtSegmentTimingTool->timeMeasurements(*msTrack, segments);
+    //       if (!v3.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v3.begin(), v3.end());
+    //     }
+    //     if (!m_rpcTimingTool.empty()) {
+    //       std::vector<Trk::SpaceTimePoint*> v4 = m_rpcTimingTool->timeMeasurements(*msTrack);
+    //       if (!v4.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v4.begin(), v4.end());
+    //     }
+    //     return spaceTimePoints;
+    //   }
+
+    //   // ***
+    //   // *** fourth choice: calo tagged muon
+    //   // ***
+    //   if (muon.hasInDetTrackParticle() && muon.isCaloMuonId()){
+    //     const Rec::TrackParticle* idParticle = muon.inDetTrackParticle();
+    //     const Trk::Track* idTrack = idParticle ? idParticle->originalTrack() : NULL;
+    //     if (idTrack==NULL) return spaceTimePoints;
+    //     if (!m_trtTimingTool.empty()) {
+    //       std::vector<Trk::SpaceTimePoint*> v1 = m_trtTimingTool->timeMeasurements(*idTrack);
+    //       if (!v1.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v1.begin(), v1.end());
+    //     }
+    //     if (!m_caloTimingTool.empty()) {
+    //       std::vector<Trk::SpaceTimePoint*> v2 = m_caloTimingTool->timeMeasurements(*idTrack);
+    //       if (!v2.empty()) spaceTimePoints.insert( spaceTimePoints.end(), v2.begin(), v2.end());
+    //     }
+    //     return spaceTimePoints;
+    //   }
+
+    return spaceTimePoints;
 }
 
 
 // Helper function to figure out which is the appropriate segment container to retrieve
-// Based on the muon's author 
-const Trk::SegmentCollection* Rec::MuonCombinedTimingTool::getSegmentContainer(const xAOD::Muon& ) const{
-//   std::string containerName = "";  
- 
-//   MuonParameters::Author auth = muon.author();
-
-//   // FIXME At the moment, space-time points are constructed only for muid. 
-//   // TODO In the future, 3rd muon chain has to be treated as well.
-//   //First check if muon is Muonboy/STACO
-// //  if(auth == MuonParameters::MuonboySP || auth == MuonParameters::Muonboy || 
-// //     auth == MuonParameters::STACO) {// MuonboySP or Muonboy or STACO
-// //    containerName = "ConvertedMBoySegments";
-// //  } else
-//   if (auth == MuonParameters::MOORE || auth == MuonParameters::MuidSA || 
-// 	     auth == MuonParameters::MuidCo) { //MOORE or MuidSA or MuidCo
-//     containerName = "MooreSegments";
-//   }
-
-//   if( evtStore()->contains<Trk::SegmentCollection>(containerName) ){
-//     const Trk::SegmentCollection* segs = NULL;
-    
-//     if( evtStore()->retrieve(segs, containerName).isFailure() ){
-//       ATH_MSG_DEBUG("Could not find segment container");
-//     }else{
-//       ATH_MSG_DEBUG("Successfully retrieved segment container");
-      
-//       return segs;
-//     }
-//   }
-
-  return NULL;
-  
-  
+// Based on the muon's author
+const Trk::SegmentCollection*
+Rec::MuonCombinedTimingTool::getSegmentContainer(const xAOD::Muon&) const
+{
+    //   std::string containerName = "";
+
+    //   MuonParameters::Author auth = muon.author();
+
+    //   // FIXME At the moment, space-time points are constructed only for muid.
+    //   // TODO In the future, 3rd muon chain has to be treated as well.
+    //   //First check if muon is Muonboy/STACO
+    // //  if(auth == MuonParameters::MuonboySP || auth == MuonParameters::Muonboy ||
+    // //     auth == MuonParameters::STACO) {// MuonboySP or Muonboy or STACO
+    // //    containerName = "ConvertedMBoySegments";
+    // //  } else
+    //   if (auth == MuonParameters::MOORE || auth == MuonParameters::MuidSA ||
+    // 	     auth == MuonParameters::MuidCo) { //MOORE or MuidSA or MuidCo
+    //     containerName = "MooreSegments";
+    //   }
+
+    //   if( evtStore()->contains<Trk::SegmentCollection>(containerName) ){
+    //     const Trk::SegmentCollection* segs = NULL;
+
+    //     if( evtStore()->retrieve(segs, containerName).isFailure() ){
+    //       ATH_MSG_DEBUG("Could not find segment container");
+    //     }else{
+    //       ATH_MSG_DEBUG("Successfully retrieved segment container");
+
+    //       return segs;
+    //     }
+    //   }
+
+    return NULL;
 }
diff --git a/Reconstruction/MuonIdentification/MuonCombinedTimingTools/src/MuonCombinedTimingTool.h b/Reconstruction/MuonIdentification/MuonCombinedTimingTools/src/MuonCombinedTimingTool.h
index e29c626aa42fba89373f27be33b7c3c13d58787b..7ed265021db3d76450064a87a847a3ba2b7b9468 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedTimingTools/src/MuonCombinedTimingTool.h
+++ b/Reconstruction/MuonIdentification/MuonCombinedTimingTools/src/MuonCombinedTimingTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -10,55 +10,71 @@
 #define RECMUONCOMBINEDTIMINGTOOL_H
 
 #include "AthenaBaseComps/AthAlgTool.h"
-#include "MuonCombinedToolInterfaces/IMuonCombinedTimingTool.h"
 #include "GaudiKernel/ToolHandle.h"
+#include "MuonCombinedToolInterfaces/IMuonCombinedTimingTool.h"
 #include "TrkSegment/SegmentCollection.h"
+#include "TrkToolInterfaces/ITrackTimingTool.h"
 #include "xAODMuon/Muon.h"
 
-namespace Trk { class ITrackTimingTool; }
+namespace Trk {
+class ITrackTimingTool;
+}
 // namespace Muon { class ISegmentTimingTool; }
 
-namespace Rec 
-{
-  class IMuonPropertiesTool;
+namespace Rec {
+class IMuonPropertiesTool;
+
+/** @class MuonCombinedTimingTool
+
+    Tool to coordinate time-of-flight calculation for various types
+    of muons. It analyses the type of measurements contributing to
+    the muon and calls the appropriate detector tools.
+
+    @author  Wolfgang Liebig <->
+*/
 
-  /** @class MuonCombinedTimingTool 
+class MuonCombinedTimingTool : virtual public IMuonCombinedTimingTool, public AthAlgTool {
+  public:
+    MuonCombinedTimingTool(const std::string&, const std::string&, const IInterface*);
 
-      Tool to coordinate time-of-flight calculation for various types
-      of muons. It analyses the type of measurements contributing to
-      the muon and calls the appropriate detector tools.
-      
-      @author  Wolfgang Liebig <->
-  */  
+    /** default destructor */
+    virtual ~MuonCombinedTimingTool();
 
-  class MuonCombinedTimingTool : virtual public IMuonCombinedTimingTool, public AthAlgTool
-    {
-    public:
-      MuonCombinedTimingTool(const std::string&,const std::string&,const IInterface*);
+    /** standard Athena-Algorithm method */
+    virtual StatusCode initialize();
+    /** standard Athena-Algorithm method */
+    virtual StatusCode finalize();
 
-       /** default destructor */
-      virtual ~MuonCombinedTimingTool ();
-      
-       /** standard Athena-Algorithm method */
-      virtual StatusCode initialize();
-       /** standard Athena-Algorithm method */
-      virtual StatusCode finalize  ();
+    virtual std::vector<Trk::SpaceTimePoint*> timeMeasurements(const xAOD::Muon& muon) const;
 
-      virtual std::vector<Trk::SpaceTimePoint*> timeMeasurements(const xAOD::Muon& muon) const;
-      
-    private:
-      
-      //! time calculation in subdetector responsibility: inner detector
-      ToolHandle<Trk::ITrackTimingTool> m_trtTimingTool;
-      //! time calculation in subdetector responsibility: calorimeter
-      ToolHandle<Trk::ITrackTimingTool> m_caloTimingTool;
-      //! time calculation in subdetector responsibility: muon spectrometer (T0 fit) for MDT and CSC
-      ToolHandle<Trk::ITrackTimingTool> m_mdtSegmentTimingTool;
-      //! time calculation in subdetector responsibility: muon spectrometer (RPC timing)
-      ToolHandle<Trk::ITrackTimingTool> m_rpcTimingTool;
+  private:
+    //! time calculation in subdetector responsibility: inner detector
+    ToolHandle<Trk::ITrackTimingTool> m_trtTimingTool{
+        this,
+        "InDetTimingTool",
+        "InDet::TRT_TrackTimingTool/TRT_TrackTimingTool",
+    };
+    //! time calculation in subdetector responsibility: calorimeter
+    ToolHandle<Trk::ITrackTimingTool> m_caloTimingTool{
+        this,
+        "CaloTimingTool",
+        "Rec::TrackInCaloTimingTool/TrackInCaloTimingTool",
+    };
+    //! time calculation in subdetector responsibility: muon spectrometer (T0 fit) for MDT and CSC
+    ToolHandle<Trk::ITrackTimingTool> m_mdtSegmentTimingTool{
+        this,
+        "MDT_TimingTool",
+        "Muon::SegmentTimingTool/SegmentTimingTool",
+    };
+    //! time calculation in subdetector responsibility: muon spectrometer (RPC timing)
+    ToolHandle<Trk::ITrackTimingTool> m_rpcTimingTool{
+        this,
+        "RPC_TimingTool",
+        "",
+    };
 
-      virtual const Trk::SegmentCollection* getSegmentContainer(const xAOD::Muon& muon) const;
-    }; 
-} // end of namespace
+    virtual const Trk::SegmentCollection* getSegmentContainer(const xAOD::Muon& muon) const;
+};
+}  // namespace Rec
 
-#endif 
+#endif
diff --git a/Reconstruction/RecoTools/IsolationTool/IsolationTool/CaloIsolationTool.h b/Reconstruction/RecoTools/IsolationTool/IsolationTool/CaloIsolationTool.h
index cfb5bcdb4cc5ec8b2ac9f8d9208132c96b4a0c54..9623048b73082067e3651f54fd6c31f7ef717f9f 100644
--- a/Reconstruction/RecoTools/IsolationTool/IsolationTool/CaloIsolationTool.h
+++ b/Reconstruction/RecoTools/IsolationTool/IsolationTool/CaloIsolationTool.h
@@ -6,6 +6,7 @@
 #define ISOLATIONTOOL_CALOISOLATIONTOOL_H
 
 #include "AsgTools/AsgTool.h"
+#include "AsgTools/PropertyWrapper.h"
 #include "AsgTools/ToolHandle.h"
 #include "AsgDataHandles/ReadHandleKey.h"
 
diff --git a/Reconstruction/RecoTools/IsolationTool/IsolationTool/TrackIsolationTool.h b/Reconstruction/RecoTools/IsolationTool/IsolationTool/TrackIsolationTool.h
index 2fd543bc011fecd5e6aa8786fdca8267c1d0559e..f494ff171566c6f4394402b214c9809988c3e46e 100644
--- a/Reconstruction/RecoTools/IsolationTool/IsolationTool/TrackIsolationTool.h
+++ b/Reconstruction/RecoTools/IsolationTool/IsolationTool/TrackIsolationTool.h
@@ -6,6 +6,7 @@
 #define ISOLATIONTOOL_TRACKISOLATIONTOOL_H
 
 #include "AsgTools/AsgTool.h"
+#include "AsgTools/PropertyWrapper.h"
 #include "AsgTools/ToolHandle.h"
 #include "AsgDataHandles/ReadHandleKey.h"
 #include "RecoToolInterfaces/ITrackIsolationTool.h"
diff --git a/Reconstruction/RecoTools/IsolationTool/Root/CaloIsolationTool.cxx b/Reconstruction/RecoTools/IsolationTool/Root/CaloIsolationTool.cxx
index 5061bcef0593931cc7b3609bba493cd19eb02f8f..09b79dc0fc888e104a4861cd1531d16600c5a11f 100644
--- a/Reconstruction/RecoTools/IsolationTool/Root/CaloIsolationTool.cxx
+++ b/Reconstruction/RecoTools/IsolationTool/Root/CaloIsolationTool.cxx
@@ -132,6 +132,11 @@ namespace xAOD {
             CaloCorrection corrlist, 
             const CaloCellContainer* container) const {
 #ifdef XAOD_ANALYSIS
+   (void) result;
+   (void) particle;
+   (void) cones;
+   (void) corrlist;
+   (void) container;
     return false;
 #else // XAOD_ANALYSIS
     derefMap_t derefMap;
diff --git a/Reconstruction/RecoTools/IsolationTool/Root/TrackIsolationTool.cxx b/Reconstruction/RecoTools/IsolationTool/Root/TrackIsolationTool.cxx
index 222499de9dcbf22157c13a403eb9de19c1c86203..db4daaa00cb3acf53360a1285bb6708fa9a62816 100644
--- a/Reconstruction/RecoTools/IsolationTool/Root/TrackIsolationTool.cxx
+++ b/Reconstruction/RecoTools/IsolationTool/Root/TrackIsolationTool.cxx
@@ -9,6 +9,7 @@
 //////////////////////////////////////////////////////////////////////////////
 
 //<<<<<< INCLUDES                                                       >>>>>>
+#include "AsgDataHandles/ReadHandle.h"
 #include "IsolationTool/TrackIsolationTool.h"
 // #include "InDetTrackSelectionTool/IInDetTrackSelectionTool.h"
 #include "xAODTracking/VertexContainer.h"
diff --git a/Simulation/G4Atlas/G4AtlasApps/python/SimConfigFlags.py b/Simulation/G4Atlas/G4AtlasApps/python/SimConfigFlags.py
index 8155a366e6b12aa2c8031d04fca86d7787bf7ea4..2e6e1e4f2b3e1bd63aedb1fec557c813941b30da 100644
--- a/Simulation/G4Atlas/G4AtlasApps/python/SimConfigFlags.py
+++ b/Simulation/G4Atlas/G4AtlasApps/python/SimConfigFlags.py
@@ -77,7 +77,7 @@ def createSimConfigFlags():
 
     # For ISF
     scf.addFlag("Sim.ISFRun",False)
-    scf.addFlag("Sim.ISF.HITSMergingRequired", True)
+    scf.addFlag("Sim.ISF.HITSMergingRequired", {'ID':True, 'CALO':True, 'MUON':True})
     scf.addFlag("Sim.ISF.Simulator", "ATLFASTII")
     scf.addFlag("Sim.ISF.DoTimeMonitoring", True) # bool: run time monitoring
     scf.addFlag("Sim.ISF.DoMemoryMonitoring", True) # bool: run time monitoring
diff --git a/Simulation/ISF/ISF_Config/python/FlagSetters.py b/Simulation/ISF/ISF_Config/python/FlagSetters.py
index b3922c80ef86d013f4fd46961b7d91b99f669650..348a9d8109c3cc6e9466b490c236e99f8e5cc0f0 100644
--- a/Simulation/ISF/ISF_Config/python/FlagSetters.py
+++ b/Simulation/ISF/ISF_Config/python/FlagSetters.py
@@ -46,7 +46,8 @@ def configureFlagsBase():
 def configureFlagsFullG4():
     from G4AtlasApps.SimFlags import simFlags
     simFlags.SimulationFlavour = "FullG4"
-    ISF_Flags.HITSMergingRequired = False
+    mergeDict = {'ID':False, 'CALO':False, 'MUON':False}
+    ISF_Flags.HITSMergingRequired.get_Value().update(mergeDict)
     ISF_Flags.ParticleBroker = "ISF_ParticleBrokerSvcNoOrdering"
     return
 
@@ -126,6 +127,8 @@ def configureFlagsATLFASTII():
     simFlags.SimulationFlavour = "AtlfastII" # TODO: can we rename this to "ATLFASTII" ?
     from ISF_Config.ISF_jobProperties import ISF_Flags
     ISF_Flags.UsingGeant4 = True
+    mergeDict = {'ID':False, 'CALO':True, 'MUON':False}
+    ISF_Flags.HITSMergingRequired.get_Value().update(mergeDict)
     ISF_Flags.ParticleBroker = "ISF_AFIIParticleBrokerSvc"
     return
 
@@ -179,6 +182,9 @@ def configureFlagsATLFASTIIF():
     from TrkDetDescrSvc.TrkDetDescrJobProperties import TrkDetFlags
     TrkDetFlags.MaterialVersion=21
     TrkDetFlags.TRT_BuildStrawLayers=True
+    from ISF_Config.ISF_jobProperties import ISF_Flags
+    mergeDict = {'ID':True, 'CALO':True, 'MUON':True}
+    ISF_Flags.HITSMergingRequired.get_Value().update(mergeDict)
     return
 
 def configureFlagsATLFASTIIFMT():
@@ -212,6 +218,9 @@ def configureFlagsG4HS_FastPileup():
     from TrkDetDescrSvc.TrkDetDescrJobProperties import TrkDetFlags
     TrkDetFlags.MaterialVersion=21
     TrkDetFlags.TRT_BuildStrawLayers=True
+    from ISF_Config.ISF_jobProperties import ISF_Flags
+    mergeDict = {'ID':True, 'CALO':True, 'MUON':True}
+    ISF_Flags.HITSMergingRequired.get_Value().update(mergeDict)
     return
 
 def configureFlagsATLFASTIIF_IDOnly():
@@ -244,6 +253,8 @@ def configureFlagsATLFASTIIF_G4MS():
 def configureFlagsMultiSimTest():
     from ISF_Config.ISF_jobProperties import ISF_Flags
     ISF_Flags.UsingGeant4 = True
+    mergeDict = {'ID':True, 'CALO':True, 'MUON':True}
+    ISF_Flags.HITSMergingRequired.get_Value().update(mergeDict)
     return
 
 def configureFlagsG4GammaCones():
diff --git a/Simulation/ISF/ISF_Config/python/ISF_jobProperties.py b/Simulation/ISF/ISF_Config/python/ISF_jobProperties.py
index 1dd7c0fb9c9481c45fd0f67e73139d26bae26ac2..5878594eb542d7ea8febca1018377b2541e7fdef 100644
--- a/Simulation/ISF/ISF_Config/python/ISF_jobProperties.py
+++ b/Simulation/ISF/ISF_Config/python/ISF_jobProperties.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 ## @file ISF_Config/python/ISF_jobProperties.py
 ## @brief Python module to hold common flags to configure JobOptions
@@ -109,8 +109,13 @@ class Simulator(JobProperty):
 class HITSMergingRequired(JobProperty):
     """The configured set of simulators requires merging of HITS collections"""
     statusOn     = True
-    allowedTypes = ['bool']
-    StoredValue  = True
+    allowedTypes = ['dict']
+    StoredValue = {'ID':True, 'CALO':True, 'MUON':True}
+    def anyOn(self):
+        if self.statusOn:
+            return (True in self.StoredValue.values())
+        else:
+            return False
 
 class UsingGeant4(JobProperty):
     """Will this job be using Geant4?"""
diff --git a/Simulation/ISF/ISF_Config/share/ISF_ConfigJobInclude.py b/Simulation/ISF/ISF_Config/share/ISF_ConfigJobInclude.py
index 6ad25b64c2cea50038562810c651915b1b0f77bc..053b60a529b3974e9f9ad4804058e9cb6445497f 100644
--- a/Simulation/ISF/ISF_Config/share/ISF_ConfigJobInclude.py
+++ b/Simulation/ISF/ISF_Config/share/ISF_ConfigJobInclude.py
@@ -168,7 +168,7 @@ from ISF_Example.ISF_Metadata import createSimulationParametersMetadata, configu
 createSimulationParametersMetadata()
 configureRunNumberOverrides()
 
-if ISF_Flags.HITSMergingRequired():
+if ISF_Flags.HITSMergingRequired.anyOn():
     topSequence += collection_merger_alg
 
 #--------------------------------------------------------------
diff --git a/Simulation/ISF/ISF_Config/test/test_Sim_tf_configuration.py b/Simulation/ISF/ISF_Config/test/test_Sim_tf_configuration.py
index 71b59344e23ac403d75e670d0a7314323a37a17e..c2f2f9c6cc71411071939061b268533c0a321a60 100755
--- a/Simulation/ISF/ISF_Config/test/test_Sim_tf_configuration.py
+++ b/Simulation/ISF/ISF_Config/test/test_Sim_tf_configuration.py
@@ -65,19 +65,19 @@ class TestATLFASTII(unittest.TestCase):
                          actual_last_ath_alg_sequence_entry)
 
     def test___ISF_Collection_merger_InputBCMHits_contains_only_G4_collection(self):
-        expected_input_hits = ['BCMHits_G4']
+        expected_input_hits = []
         self._assert_ISF_CollectionMerger_property_unordered_equal(
             'InputBCMHits',
             expected_input_hits)
 
     def test___ISF_Collection_merger_InputBLMHits_contains_only_G4_collection(self):
-        expected_input_hits = ['BLMHits_G4']
+        expected_input_hits = []
         self._assert_ISF_CollectionMerger_property_unordered_equal(
             'InputBLMHits',
             expected_input_hits)
 
     def test___ISF_Collection_merger_InputCSCHits_contains_only_G4_collection(self):
-        expected_input_hits = ['CSC_Hits_G4']
+        expected_input_hits = []
         self._assert_ISF_CollectionMerger_property_unordered_equal(
             'InputCSCHits',
             expected_input_hits)
@@ -113,37 +113,37 @@ class TestATLFASTII(unittest.TestCase):
             expected_input_hits)
 
     def test___ISF_Collection_merger_InputMDTHits_contains_only_G4_collection(self):
-        expected_input_hits = ['MDT_Hits_G4']
+        expected_input_hits = []
         self._assert_ISF_CollectionMerger_property_unordered_equal(
             'InputMDTHits',
             expected_input_hits)
 
     def test___ISF_Collection_merger_InputPixelHits_contains_only_G4_collection(self):
-        expected_input_hits = ['PixelHits_G4']
+        expected_input_hits = []
         self._assert_ISF_CollectionMerger_property_unordered_equal(
             'InputPixelHits',
             expected_input_hits)
 
     def test___ISF_Collection_merger_InputRPCHits_contains_only_G4_collection(self):
-        expected_input_hits = ['RPC_Hits_G4']
+        expected_input_hits = []
         self._assert_ISF_CollectionMerger_property_unordered_equal(
             'InputRPCHits',
             expected_input_hits)
 
     def test___ISF_Collection_merger_InputSCTHits_contains_only_G4_collection(self):
-        expected_input_hits = ['SCT_Hits_G4']
+        expected_input_hits = []
         self._assert_ISF_CollectionMerger_property_unordered_equal(
             'InputSCTHits',
             expected_input_hits)
 
     def test___ISF_Collection_merger_InputTGCHits_contains_only_G4_collection(self):
-        expected_input_hits = ['TGC_Hits_G4']
+        expected_input_hits = []
         self._assert_ISF_CollectionMerger_property_unordered_equal(
             'InputTGCHits',
             expected_input_hits)
 
     def test___ISF_Collection_merger_InputTRTUncompressedHits_contains_only_G4_collection(self):
-        expected_input_hits = ['TRTUncompressedHits_G4']
+        expected_input_hits = []
         self._assert_ISF_CollectionMerger_property_unordered_equal(
             'InputTRTUncompressedHits',
             expected_input_hits)
diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/python/collection_merger_helpers.py b/Simulation/ISF/ISF_Core/ISF_Algorithms/python/collection_merger_helpers.py
index 7335385ccf145dc2a9579644c607a35cc0e2a929..7f558ad10f2bb69c09b9eae8f7b7263e7feb2dd9 100644
--- a/Simulation/ISF/ISF_Core/ISF_Algorithms/python/collection_merger_helpers.py
+++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/python/collection_merger_helpers.py
@@ -6,7 +6,8 @@ from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
 
 def generate_mergeable_collection_name(bare_collection_name,
                                        mergeable_collection_suffix,
-                                       merger_input_property):
+                                       merger_input_property,
+                                       region):
     """
     Generates and returns a collection name that is also registered to
     the ISF CollectionMerger algorithm.
@@ -19,7 +20,7 @@ def generate_mergeable_collection_name(bare_collection_name,
         CollectionMerger algorithm to add the mergeable collection to.
     """
     hardscatterSG = "OriginalEvent_SG+"
-    if simFlags.ISFRun() and ISF_Flags.HITSMergingRequired():
+    if simFlags.ISFRun() and ISF_Flags.HITSMergingRequired.get_Value().get(region,True):
         mergeable_collection = '{bare}{suffix}'.format(
             bare=bare_collection_name,
             suffix=mergeable_collection_suffix
diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/python/collection_merger_helpersNew.py b/Simulation/ISF/ISF_Core/ISF_Algorithms/python/collection_merger_helpersNew.py
index 3756a6a0de370a7592b09fabeeea74a3eed66b57..c9934f5f5621b168a6230130e6a2181de908bf80 100644
--- a/Simulation/ISF/ISF_Core/ISF_Algorithms/python/collection_merger_helpersNew.py
+++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/python/collection_merger_helpersNew.py
@@ -1,15 +1,17 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from __future__ import print_function
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 
-def CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                        mergeable_collection_suffix,
-                                        merger_input_property):
+def CollectionMergerCfg(ConfigFlags,
+                        bare_collection_name,
+                        mergeable_collection_suffix,
+                        merger_input_property,
+                        region):
   """Generates and returns a collection name that is also registered to
      the ISF CollectionMerger algorithm.
- 
+
      :param bare_collection_name: name of the collection if no merging
          is taking place.
      :param mergeable_collection_suffix: suffix to the collection in
@@ -18,18 +20,18 @@ def CollectionMergerCfg(ConfigFlags, bare_collection_name,
          CollectionMerger algorithm to add the mergeable collection to."""
 
   result = ComponentAccumulator()
-  if ConfigFlags.Sim.ISFRun and ConfigFlags.Sim.ISF.HITSMergingRequired: 
+  if ConfigFlags.Sim.ISFRun and ConfigFlags.Sim.ISF.HITSMergingRequired.get(region,True):
       mergeable_collection = '{bare}{suffix}'.format(
              bare=bare_collection_name,
              suffix=mergeable_collection_suffix)
-         
+
       from ISF_Algorithms.CollectionMergerConfig import ISFCollectionMergerCfg
       algo=ISFCollectionMergerCfg(ConfigFlags)
       result.addEventAlgo(algo)
 
       input_attribute_name = 'Input{merger_input_property}'.format(
       merger_input_property=merger_input_property)
-    
+
       merger_input_collections = getattr(algo,input_attribute_name) #empty list always?
       merger_input_collections.append(mergeable_collection)
 
diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/python/test/test_collection_merger_helpers.py b/Simulation/ISF/ISF_Core/ISF_Algorithms/python/test/test_collection_merger_helpers.py
index c7c2a069759840ad5f36892d205e940594b087d2..41854bf88efab457a1b28fb5aa08f3398abe3f9e 100755
--- a/Simulation/ISF/ISF_Core/ISF_Algorithms/python/test/test_collection_merger_helpers.py
+++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/python/test/test_collection_merger_helpers.py
@@ -22,28 +22,34 @@ class Test_generate_mergeable_collection_name(unittest.TestCase):
 
     def test_isISFRunAndHITSMergingRequired_expectBareNameWithSuffixReturned(self):
         simFlags.ISFRun.set_Value(True)
-        ISF_Flags.HITSMergingRequired.set_Value(True)
+        mergeDict = {'ID':True, 'CALO':True, 'MUON':True}
+        ISF_Flags.HITSMergingRequired.get_Value().update(mergeDict)
 
         bare_collection_name = 'aTestCollection'
         collection_suffix = '_TESTSUFFIX'
         merger_input_property = 'PixelHits'
+        region = 'ID'
         actual_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                                     collection_suffix,
-                                                                    merger_input_property)
+                                                                    merger_input_property,
+                                                                    region)
 
         expected_collection_name = 'aTestCollection_TESTSUFFIX'
         self.assertEqual(expected_collection_name, actual_collection_name)
 
     def test_isISFRunAndHITSMergingRequiredWithEmptyCollectionMergerAlgorithm_expectCollectionAddedToCollectionMergerAlgorithm(self):
         simFlags.ISFRun.set_Value(True)
-        ISF_Flags.HITSMergingRequired.set_Value(True)
+        mergeDict = {'ID':True, 'CALO':True, 'MUON':True}
+        ISF_Flags.HITSMergingRequired.get_Value().update(mergeDict)
 
         bare_collection_name = 'aTestCollection'
         collection_suffix = '_TESTSUFFIX'
         merger_input_property = 'PixelHits'
+        region = 'ID'
         actual_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                                     collection_suffix,
-                                                                    merger_input_property)
+                                                                    merger_input_property,
+                                                                    region)
 
         collection_merger = getAlgorithm('ISF_CollectionMerger')
         actual_collection_merger_input = collection_merger.InputPixelHits
@@ -54,28 +60,34 @@ class Test_generate_mergeable_collection_name(unittest.TestCase):
 
     def test_isISFRunAndNoHITSMergingRequired_expectBareCollectionNameReturned(self):
         simFlags.ISFRun.set_Value(True)
-        ISF_Flags.HITSMergingRequired.set_Value(False)
+        mergeDict = {'ID':False, 'CALO':True, 'MUON':False}
+        ISF_Flags.HITSMergingRequired.get_Value().update(mergeDict)
 
         bare_collection_name = 'aTestCollection'
         collection_suffix = '_TESTSUFFIX'
         merger_input_property = 'PixelHits'
+        region = 'ID'
         actual_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                                     collection_suffix,
-                                                                    merger_input_property)
+                                                                    merger_input_property,
+                                                                    region)
 
         expected_collection_name = 'aTestCollection'
         self.assertEqual(expected_collection_name, actual_collection_name)
 
     def test_isISFRunAndNoHITSMergingRequiredWithEmptyCollectionMergerAlgorithm_expectCollectionMergerAlgorithmUntouched(self):
         simFlags.ISFRun.set_Value(True)
-        ISF_Flags.HITSMergingRequired.set_Value(False)
+        mergeDict = {'ID':False, 'CALO':True, 'MUON':False}
+        ISF_Flags.HITSMergingRequired.get_Value().update(mergeDict)
 
         bare_collection_name = 'aTestCollection'
         collection_suffix = '_TESTSUFFIX'
         merger_input_property = 'PixelHits'
+        region = 'ID'
         actual_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                                     collection_suffix,
-                                                                    merger_input_property)
+                                                                    merger_input_property,
+                                                                    region)
 
         collection_merger = getAlgorithm('ISF_CollectionMerger')
         actual_collection_merger_input = collection_merger.InputPixelHits
@@ -86,42 +98,51 @@ class Test_generate_mergeable_collection_name(unittest.TestCase):
 
     def test_isNotISFRunAndNoHITSMergingRequired_expectBareCollectioNameReturned(self):
         simFlags.ISFRun.set_Value(False)
-        ISF_Flags.HITSMergingRequired.set_Value(False)
+        mergeDict = {'ID':False, 'CALO':True, 'MUON':False}
+        ISF_Flags.HITSMergingRequired.get_Value().update(mergeDict)
 
         bare_collection_name = 'aTestCollection'
         collection_suffix = '_TESTSUFFIX'
         merger_input_property = 'PixelHits'
+        region = 'ID'
         actual_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                                     collection_suffix,
-                                                                    merger_input_property)
+                                                                    merger_input_property,
+                                                                    region)
 
         expected_collection_name = 'aTestCollection'
         self.assertEqual(expected_collection_name, actual_collection_name)
 
     def test_isNotISFRunAndHITSMergingRequired_expectBareCollectioNameReturned(self):
         simFlags.ISFRun.set_Value(False)
-        ISF_Flags.HITSMergingRequired.set_Value(True)
+        mergeDict = {'ID':True, 'CALO':True, 'MUON':True}
+        ISF_Flags.HITSMergingRequired.get_Value().update(mergeDict)
 
         bare_collection_name = 'aTestCollection'
         collection_suffix = '_TESTSUFFIX'
         merger_input_property = 'PixelHits'
+        region = 'ID'
         actual_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                                     collection_suffix,
-                                                                    merger_input_property)
+                                                                    merger_input_property,
+                                                                    region)
 
         expected_collection_name = 'aTestCollection'
         self.assertEqual(expected_collection_name, actual_collection_name)
 
     def test_isNotISFRunAndNoHITSMergingRequired_expectCollectionMergerAlgorithmUntouched(self):
         simFlags.ISFRun.set_Value(False)
-        ISF_Flags.HITSMergingRequired.set_Value(False)
+        mergeDict = {'ID':True, 'CALO':True, 'MUON':True}
+        ISF_Flags.HITSMergingRequired.get_Value().update(mergeDict)
 
         bare_collection_name = 'aTestCollection'
         collection_suffix = '_TESTSUFFIX'
         merger_input_property = 'PixelHits'
+        region = 'ID'
         actual_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                                     collection_suffix,
-                                                                    merger_input_property)
+                                                                    merger_input_property,
+                                                                    region)
 
         collection_merger = getAlgorithm('ISF_CollectionMerger')
         actual_collection_merger_input = collection_merger.InputPixelHits
@@ -132,14 +153,17 @@ class Test_generate_mergeable_collection_name(unittest.TestCase):
 
     def test_isNotISFRunAndHITSMergingRequired_expectCollectionMergerAlgorithmUntouched(self):
         simFlags.ISFRun.set_Value(False)
-        ISF_Flags.HITSMergingRequired.set_Value(True)
+        mergeDict = {'ID':True, 'CALO':True, 'MUON':True}
+        ISF_Flags.HITSMergingRequired.get_Value().update(mergeDict)
 
         bare_collection_name = 'aTestCollection'
         collection_suffix = '_TESTSUFFIX'
         merger_input_property = 'PixelHits'
+        region = 'ID'
         actual_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                                     collection_suffix,
-                                                                    merger_input_property)
+                                                                    merger_input_property,
+                                                                    region)
 
         collection_merger = getAlgorithm('ISF_CollectionMerger')
         actual_collection_merger_input = collection_merger.InputPixelHits
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt
index 97f8b0901d8964b7b1d44d4403fa9bfa61f8731d..d1ad92ba48afef60852c598beca6efca677e9181 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt
@@ -34,7 +34,8 @@ atlas_add_root_dictionary( ISF_FastCaloSimEvent _dictSource
                            ISF_FastCaloSimEvent/TFCS2DFunction.h 
                            ISF_FastCaloSimEvent/TFCS2DFunctionHistogram.h 
                            ISF_FastCaloSimEvent/TFCS2DFunctionTemplateHistogram.h 
-                           ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationHistogram.h 
+                           ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationHistogram.h
+                           ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationExpHistogram.h 
                            ISF_FastCaloSimEvent/TFCSParametrizationBase.h 
                            ISF_FastCaloSimEvent/TFCSParametrizationPlaceholder.h
                            ISF_FastCaloSimEvent/TFCSParametrization.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 503cdc8a1af64a32745dfa43edb768c02256acff..421d8da598c07621ed55be4056e23254db031f91 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/LinkDef.h
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/LinkDef.h
@@ -19,6 +19,7 @@
 #include "ISF_FastCaloSimEvent/TFCS2DFunctionHistogram.h"
 #include "ISF_FastCaloSimEvent/TFCS2DFunctionTemplateHistogram.h"
 #include "ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationHistogram.h"
+#include "ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationExpHistogram.h"
 
 #include "ISF_FastCaloSimEvent/TFCSParametrizationBase.h"
 #include "ISF_FastCaloSimEvent/TFCSParametrizationPlaceholder.h"
@@ -42,6 +43,9 @@
 #include "ISF_FastCaloSimEvent/TFCSEnergyAndHitGAN.h"
 
 #include "ISF_FastCaloSimEvent/TFCSLateralShapeParametrization.h"
+#include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeGausLogWeight.h"
+#include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeGausLogWeightHitAndMiss.h"
+
 #include "ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationHitBase.h"
 #include "ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationHitChain.h"
 #include "ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationFluctChain.h"
@@ -51,9 +55,7 @@
 #include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrizationFCal.h"
 #include "ISF_FastCaloSimEvent/TFCS2DFunctionLateralShapeParametrization.h"
 #include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeWeight.h"
-#include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeGausLogWeight.h"
 #include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeWeightHitAndMiss.h"
-#include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeGausLogWeightHitAndMiss.h"
 #include "ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationHitNumberFromE.h"
 #include "ISF_FastCaloSimEvent/TFCSHitCellMapping.h"
 #include "ISF_FastCaloSimEvent/TFCSHitCellMappingFCal.h"
@@ -142,21 +144,56 @@
 #pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
 
 #pragma link C++ class TFCS2DFunctionInt8Int8Int8Histogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int8Int16Histogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int8Int32Histogram+;
-
 #pragma link C++ class TFCS2DFunctionInt8Int16Int8Histogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int16Int16Histogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int16Int32Histogram+;
-
+#pragma link C++ class TFCS2DFunctionInt8Int32Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int32Histogram+;
 #pragma link C++ class TFCS2DFunctionInt16Int16Int8Histogram+;
 #pragma link C++ class TFCS2DFunctionInt16Int16Int16Histogram+;
 #pragma link C++ class TFCS2DFunctionInt16Int16Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int32Histogram+;
+
 
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
@@ -164,21 +201,87 @@
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+
+
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+
 
 #pragma link C++ class TFCS2DFunctionInt8Int8Int8InterpolationHistogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int8Int16InterpolationHistogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int8Int32InterpolationHistogram+;
-
 #pragma link C++ class TFCS2DFunctionInt8Int16Int8InterpolationHistogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int16Int16InterpolationHistogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int16Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int32InterpolationHistogram+;
 
+#pragma link C++ class TFCS2DFunctionInt16Int8Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int32InterpolationHistogram+;
 #pragma link C++ class TFCS2DFunctionInt16Int16Int8InterpolationHistogram+;
 #pragma link C++ class TFCS2DFunctionInt16Int16Int16InterpolationHistogram+;
 #pragma link C++ class TFCS2DFunctionInt16Int16Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int32InterpolationHistogram+;
+
+#pragma link C++ class TFCS2DFunctionInt32Int8Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int32InterpolationHistogram+;
 
 ///End Linkdefs needed for template based histograms
 
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateHelpers.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateHelpers.h
index 1a3c17024ee514df5e8b960e83b5e7771a6b4367..9f81d9a123e2ed9b393447d310779dc1c3a37ac8 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateHelpers.h
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateHelpers.h
@@ -251,15 +251,31 @@ template<typename T,typename Trandom=float> class TFCS1DFunction_HistogramBinEdg
       return (1-drnd)*m_array[pos] + drnd*m_array[pos+1];
     };
 
-    ///return interpolated position for bin pos, such that histograming the position gives a linear slope m,
+    ///return linearly interpolated position for bin pos, such that histograming the position gives a linear slope m,
     ///where m is in units of the bin width for bin pos. Interpolation is done with a random value in the range [0,1]
-    inline T position(size_t pos,Trandom m,const Trandom& drnd) const {
+     inline T position_lin(size_t pos,Trandom m,const Trandom& drnd) const {
       if(m>2) m=2;
       if(m<-2) m=-2;
       Trandom x=fabs(m)>0.001 ? (0.5*std::sqrt(m*(m+8*drnd-4)+4)-1)/m+0.5 : drnd;
       return (1-x)*m_array[pos] + x*m_array[pos+1];
     };
 
+    ///return exponetially interpolated position for bin pos, such that histograming the position gives a linear slope m,
+    ///where m is in units of the bin width for bin pos. Interpolation is done with a random value in the range [0,1]
+    inline T position_exp(size_t pos,Trandom beta,const Trandom& drnd) const {
+	Trandom z = drnd;///(m_array[pos+1] - m_array[pos]);
+	T pos1=GetBinLowEdge(pos);
+        T pos2=GetBinLowEdge(pos+1);
+	if(fabs(beta) < 1.0e-8) return (1-z)*pos1 + z*pos2;
+	else 
+	{ T deltax = m_array[pos+1] - m_array[pos]; 
+		if(deltax == 0) return m_array[pos];
+		else{  z = 1/beta*log(  1.0 + drnd*(exp(beta*deltax) - 1.0)  )/deltax;  }
+	}
+
+      return (1-z)*pos1 + z*pos2;
+    };
+
   private:
     TFCS1DFunction_Array<T> m_array;
     inline size_t size() const {return m_array.size();};
@@ -353,7 +369,11 @@ template<typename T,typename Tint,typename Trandom=float> class TFCS1DFunction_H
     
     ///return interpolated position for bin pos, such that histograming the position gives a linear slope m,
     ///where m is in units of the bin width for bin pos. Interpolation is done with a random value in the range [0,1]
-    inline T position(size_t pos,Trandom m,const Trandom& drnd) const {
+   
+
+    ///return linearly interpolated position for bin pos, such that histograming the position gives a linear slope m,
+    ///where m is in units of the bin width for bin pos. Interpolation is done with a random value in the range [0,1]
+     inline T position_lin(size_t pos,Trandom m,const Trandom& drnd) const {
       if(m>2) m=2;
       if(m<-2) m=-2;
       Trandom x=fabs(m)>0.001 ? (0.5*std::sqrt(m*(m+8*drnd-4)+4)-1)/m+0.5 : drnd;
@@ -361,6 +381,23 @@ template<typename T,typename Tint,typename Trandom=float> class TFCS1DFunction_H
       T pos2=GetBinLowEdge(pos+1);
       return (1-x)*pos1 + x*pos2;
     };
+
+    ///return exponentially interpolated position for bin pos, such that histograming the position gives a linear slope m,
+    ///where m is in units of the bin width for bin pos. Interpolation is done with a random value in the range [0,1]
+    inline T position_exp(size_t pos,Trandom beta,const Trandom& drnd) const {
+	Trandom z = drnd;///(m_array[pos+1] - m_array[pos]);
+	T pos1=GetBinLowEdge(pos);
+        T pos2=GetBinLowEdge(pos+1);
+	if(fabs(beta) < 1.0e-8) return (1-z)*pos1 + z*pos2;
+	else 
+	{ T deltax = m_array[pos+1] - m_array[pos]; 
+		if(deltax == 0) return m_array[pos];
+		else{  z = 1/beta*log(  1.0 + drnd*(exp(beta*deltax) - 1.0)  )/deltax;  }
+	}
+
+      return (1-z)*pos1 + z*pos2;
+    };
+
     
   private:
     TFCS1DFunction_Array<Tint> m_array;
@@ -395,4 +432,42 @@ class TFCS1DFunction_HistogramInt32BinEdges: public TFCS1DFunction_HistogramComp
   ClassDefNV(TFCS1DFunction_HistogramInt32BinEdges,1)  //TFCS1DFunction_HistogramInt32BinEdges
 };
 
+
+#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
+#pragma link C++ class TFCS1DFunction_Numeric<uint8_t,float>+;
+#pragma link C++ class TFCS1DFunction_Numeric<uint16_t,float>+;
+#pragma link C++ class TFCS1DFunction_Numeric<uint32_t,float>+;
+#pragma link C++ class TFCS1DFunction_Numeric<float,float>+;
+#pragma link C++ class TFCS1DFunction_Numeric<double,float>+;
+#pragma link C++ class TFCS1DFunction_Numeric<double,double>+;
+
+#pragma link C++ class TFCS1DFunction_Array<float>-;
+#pragma link C++ class TFCS1DFunction_Array<double>-;
+#pragma link C++ class TFCS1DFunction_Array<uint8_t>-;
+#pragma link C++ class TFCS1DFunction_Array<uint16_t>-;
+#pragma link C++ class TFCS1DFunction_Array<uint32_t>-;
+
+#pragma link C++ class TFCS1DFunction_HistogramContent<float,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramContent<double,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramContent<double,double>+;
+#pragma link C++ class TFCS1DFunction_HistogramContent<uint8_t,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramContent<uint16_t,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramContent<uint32_t,float>+;
+
+#pragma link C++ class TFCS1DFunction_HistogramBinEdges<float,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramBinEdges<double,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramBinEdges<double,double>+;
+
+#pragma link C++ class TFCS1DFunction_HistogramCompactBinEdges<float,uint8_t,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramCompactBinEdges<float,uint16_t,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramCompactBinEdges<float,uint32_t,float>+;
+
+#pragma link C++ class TFCS1DFunction_HistogramInt8BinEdges+;
+#pragma link C++ class TFCS1DFunction_HistogramInt16BinEdges+;
+#pragma link C++ class TFCS1DFunction_HistogramInt32BinEdges+;
+#pragma link C++ class TFCS1DFunction_HistogramFloatBinEdges+;
+#pragma link C++ class TFCS1DFunction_HistogramDoubleBinEdges+;
+
+#endif
+
 #endif
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateInterpolationHistogram.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateInterpolationHistogram.h
index 98d77ee14e086c46008314cd038edb64cb42f7f7..35494d350c116fe5a82c8269b95ec4f479682a73 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateInterpolationHistogram.h
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateInterpolationHistogram.h
@@ -73,7 +73,7 @@ template <typename Txvec, typename Ty,typename Trandom=float> class TFCS1DFuncti
       } else m=0;
       
       //std::cout<<"fbin="<<ibin<<" fx="<<m_HistoBorders.GetBinLowEdge(ibin)<<" frac="<<m_HistoContents.get_fraction(ibin)<<" dfracprev="<<dfracprev<<" dfrac="<<dfrac<<" dfracnext="<<dfracnext<<" dfracprev-dfrac="<<dfracprev-dfrac<<" dfracnext-dfrac="<<dfracnext-dfrac<<" m="<<m<<" residual_rnd="<<residual_rnd<<std::endl;
-      return m_HistoBorders.position(ibin,m,residual_rnd);
+      return m_HistoBorders.position_lin(ibin,m,residual_rnd);
     }
 
   ClassDef(TFCS1DFunctionTemplateInterpolationHistogram,1)  //TFCS1DFunctionTemplateInterpolationHistogram
@@ -111,4 +111,18 @@ class TFCS1DFunctionInt16Int32InterpolationHistogram: public TFCS1DFunctionTempl
   ClassDef(TFCS1DFunctionInt16Int32InterpolationHistogram,1)  //TFCS1DFunctionInt16Int32InterpolationHistogram
 };
 
+
+#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
+#pragma link C++ class TFCS1DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>+;
+#pragma link C++ class TFCS1DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>+;
+#pragma link C++ class TFCS1DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>+;
+#pragma link C++ class TFCS1DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>+;
+
+#pragma link C++ class TFCS1DFunctionInt8Int8InterpolationHistogram+;
+#pragma link C++ class TFCS1DFunctionInt8Int16InterpolationHistogram+;
+#pragma link C++ class TFCS1DFunctionInt16Int16InterpolationHistogram+;
+#pragma link C++ class TFCS1DFunctionInt16Int32InterpolationHistogram+;
+
+#endif
+
 #endif
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateHistogram.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateHistogram.h
index 9fb4dbbe2592b6b141e6a184bd538113250bf2ad..a081d5f045a4e5be6a20a61b9165324610d24ce2 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateHistogram.h
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateHistogram.h
@@ -205,9 +205,6 @@ class TFCS2DFunctionInt8Int8Int32Histogram: public TFCS2DFunctionTemplateHistogr
 
   ClassDef(TFCS2DFunctionInt8Int8Int32Histogram,1)  //TFCS2DFunctionInt8Int8Int32Histogram
 };
-
-
-
 class TFCS2DFunctionInt8Int16Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
 {
   public:
@@ -231,9 +228,54 @@ class TFCS2DFunctionInt8Int16Int32Histogram: public TFCS2DFunctionTemplateHistog
 
   ClassDef(TFCS2DFunctionInt8Int16Int32Histogram,1)  //TFCS2DFunctionInt8Int16Int32Histogram
 };
+class TFCS2DFunctionInt8Int32Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int8Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int8Histogram,1)  //TFCS2DFunctionInt8Int32Int8Histogram
+};
+class TFCS2DFunctionInt8Int32Int16Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int16Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int16Histogram,1)  //TFCS2DFunctionInt8Int32Int16Histogram
+};
+class TFCS2DFunctionInt8Int32Int32Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int32Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int32Histogram,1)  //TFCS2DFunctionInt8Int32Int32Histogram
+};
+
+
+
 
+class TFCS2DFunctionInt16Int8Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int8Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int8Histogram,1)  //TFCS2DFunctionInt16Int8Int8Histogram
+};
 
+class TFCS2DFunctionInt16Int8Int16Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int16Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>(h) {};
 
+  ClassDef(TFCS2DFunctionInt16Int8Int16Histogram,1)  //TFCS2DFunctionInt16Int8Int16Histogram
+};
+
+class TFCS2DFunctionInt16Int8Int32Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int32Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int32Histogram,1)  //TFCS2DFunctionInt16Int8Int32Histogram
+};
 class TFCS2DFunctionInt16Int16Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
 {
   public:
@@ -257,5 +299,163 @@ class TFCS2DFunctionInt16Int16Int32Histogram: public TFCS2DFunctionTemplateHisto
 
   ClassDef(TFCS2DFunctionInt16Int16Int32Histogram,1)  //TFCS2DFunctionInt16Int16Int32Histogram
 };
+class TFCS2DFunctionInt16Int32Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int8Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int8Histogram,1)  //TFCS2DFunctionInt16Int32Int8Histogram
+};
+class TFCS2DFunctionInt16Int32Int16Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int16Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int16Histogram,1)  //TFCS2DFunctionInt16Int32Int16Histogram
+};
+class TFCS2DFunctionInt16Int32Int32Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int32Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int32Histogram,1)  //TFCS2DFunctionInt16Int32Int32Histogram
+};
+
+
+
+
+class TFCS2DFunctionInt32Int8Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int8Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int8Histogram,1)  //TFCS2DFunctionInt32Int8Int8Histogram
+};
+
+class TFCS2DFunctionInt32Int8Int16Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int16Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int16Histogram,1)  //TFCS2DFunctionInt32Int8Int16Histogram
+};
+
+class TFCS2DFunctionInt32Int8Int32Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int32Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int32Histogram,1)  //TFCS2DFunctionInt32Int8Int32Histogram
+};
+class TFCS2DFunctionInt32Int16Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int8Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int8Histogram,1)  //TFCS2DFunctionInt32Int16Int8Histogram
+};
+
+class TFCS2DFunctionInt32Int16Int16Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int16Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int16Histogram,1)  //TFCS2DFunctionInt32Int16Int16Histogram
+};
+
+class TFCS2DFunctionInt32Int16Int32Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int32Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int32Histogram,1)  //TFCS2DFunctionInt32Int16Int32Histogram
+};
+class TFCS2DFunctionInt32Int32Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int8Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int8Histogram,1)  //TFCS2DFunctionInt32Int32Int8Histogram
+};
+class TFCS2DFunctionInt32Int32Int16Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int16Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int16Histogram,1)  //TFCS2DFunctionInt32Int32Int16Histogram
+};
+class TFCS2DFunctionInt32Int32Int32Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int32Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int32Histogram,1)  //TFCS2DFunctionInt32Int32Int32Histogram
+};
+
+
+
+
+
+#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+
+#pragma link C++ class TFCS2DFunctionInt8Int8Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int8Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int8Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int32Histogram+;
+
+#pragma link C++ class TFCS2DFunctionInt16Int8Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int32Histogram+;
+
+#pragma link C++ class TFCS2DFunctionInt32Int8Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int32Histogram+;
+
+
+#endif
 
 #endif
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationExpHistogram.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationExpHistogram.h
new file mode 100644
index 0000000000000000000000000000000000000000..937d276143b2ae7e63fe7ecfd9572d12651b6023
--- /dev/null
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationExpHistogram.h
@@ -0,0 +1,390 @@
+/*
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef ISF_FASTCALOSIMEVENT_TFCS2DFunctionTemplateInterpolationExpHistogram_h
+#define ISF_FASTCALOSIMEVENT_TFCS2DFunctionTemplateInterpolationExpHistogram_h
+
+#include "TFCS2DFunction.h"
+#include "ISF_FastCaloSimEvent/TFCS2DFunctionTemplateHistogram.h"
+#include "TH1.h"
+#include "TH2.h"
+#include "TBuffer.h"
+
+#include <iostream>
+
+template <typename Txvec, typename Tyvec, typename Tz ,typename Trandom=float> class TFCS2DFunctionTemplateInterpolationExpHistogram:public TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>
+{
+  public:
+    TFCS2DFunctionTemplateInterpolationExpHistogram(TH2* hist=nullptr):TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>(hist) {};
+
+    using TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>::rnd_to_fct;
+    using TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>::get_nbins;
+    using TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>::m_HistoContents;
+    using TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>::m_HistoBordersx;
+    using TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>::m_HistoBordersy;
+
+    ///Function gets random number rnd in the range [0,1) as argument 
+    ///and returns function value according to a histogram distribution.
+    ///An exponential interpolation is done within each bin
+
+
+    virtual void rnd_to_fct(float& valuex,float& valuey,float rnd, float rnd2) const {
+      size_t nbins=get_nbins();
+      if(nbins==0) {valuex = 0.0; valuey = 0.0; return;}
+      Trandom residual_rnd;
+      size_t ibin=m_HistoContents.get_bin(rnd,residual_rnd);
+      
+      Trandom frac=m_HistoContents.get_fraction(ibin);
+
+      size_t ibiny = ibin % m_HistoBordersy.get_nbins();     //printf("%d ", m_HistoBordersy.get_nbins() );
+      size_t ibinx = ibin / m_HistoBordersy.get_nbins();
+      //size_t nbinsx = m_HistoBordersx.get_nbins();
+      size_t nbinsy = m_HistoBordersy.get_nbins();
+  
+      Trandom dfrac = 0.0;
+      auto l=m_HistoBordersy.GetBinLength(ibiny);
+      Trandom dfracprev = 0.0;
+      Trandom ldfrac = 0.0;
+      auto lprev=l;
+      if(ibiny>0) {
+        Trandom fracprev=m_HistoContents.get_fraction(ibin-1);
+        dfrac=frac-fracprev;
+        if(ibiny>1) {
+          dfracprev=fracprev-m_HistoContents.get_fraction(ibin-2);
+        } else {
+          dfracprev=fracprev;
+          if(ibinx>0) dfracprev-=m_HistoContents.get_fraction(ibin-2);
+        }  
+        lprev=m_HistoBordersy.GetBinLength(ibiny-1);
+      } else {
+        dfrac=frac;
+        if(ibinx>0) dfrac-=m_HistoContents.get_fraction(ibin-1);
+        dfracprev=dfrac;
+      }
+
+
+     if(dfrac > 0.0 && dfracprev > 0.0 ) 
+	{ldfrac =log(dfrac/l) - log(dfracprev/lprev);}
+      
+      Trandom dfracnext = 0.0;
+      Trandom ldfracnext = 0.0;
+      auto lnext=l;
+      if(ibiny<nbinsy-1) {
+        dfracnext=m_HistoContents.get_fraction(ibin+1)-frac;
+        lnext=m_HistoBordersy.GetBinLength(ibiny+1);
+      } else {
+        dfracnext=dfrac;
+      }  
+      
+
+     if(dfrac > 0.0 && dfracnext > 0.0 ) 
+	{ldfracnext=log(dfracnext/lnext) - log(dfrac/l);}
+
+      Trandom beta=0.0, betaprev=0.0, betanext=0.0;
+      betanext=ldfracnext/(lnext+l)/0.5;
+      betaprev=ldfrac/(lprev+l)/0.5;
+	beta = 0.5*(betaprev + betanext);
+	//printf("betaprev=%13.5e betanext=%13.5e beta=%13.5e\n", betaprev, betanext, beta);
+	//printf("l=%13.5e lnext=%13.5e\n", l, lnext);
+	//printf("log=%13.5e lognext=%13.5e logprev=%13.5e\n", log(dfrac/l), log(dfracnext/lnext), log(dfracprev/lprev) );
+	//printf("ldfrac=%13.5e ldfracnext=%13.5e\n", ldfrac, ldfracnext ); 
+      
+      valuey = m_HistoBordersy.position_exp(ibiny,beta,residual_rnd);
+      valuex = m_HistoBordersx.position(ibinx, rnd2);
+
+    }
+
+
+ 
+
+
+  ClassDef(TFCS2DFunctionTemplateInterpolationExpHistogram,1)  //TFCS1DFunctionTemplateInterpolationExpHistogram
+};
+
+class TFCS2DFunctionInt8Int8Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int8Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int8Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int8Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt8Int8Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int8Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int8Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int8Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt8Int8Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int8Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int8Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int8Int32InterpolationExpHistogram
+};
+
+////
+
+class TFCS2DFunctionInt8Int16Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int16Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int16Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int16Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt8Int16Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int16Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int16Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int16Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt8Int16Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int16Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int16Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int16Int32InterpolationExpHistogram
+};
+
+
+class TFCS2DFunctionInt8Int32Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int32Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt8Int32Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int32Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt8Int32Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int32Int32InterpolationExpHistogram
+};
+
+
+
+
+
+
+class TFCS2DFunctionInt16Int8Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int8Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt16Int8Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int8Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt16Int8Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int8Int32InterpolationExpHistogram
+};
+
+////
+
+class TFCS2DFunctionInt16Int16Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int16Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int16Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int16Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt16Int16Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int16Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int16Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int16Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt16Int16Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int16Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int16Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int16Int32InterpolationExpHistogram
+};
+
+
+class TFCS2DFunctionInt16Int32Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int32Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt16Int32Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int32Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt16Int32Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int32Int32InterpolationExpHistogram
+};
+
+
+
+
+
+
+class TFCS2DFunctionInt32Int8Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int8Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt32Int8Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int8Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt32Int8Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int8Int32InterpolationExpHistogram
+};
+
+////
+
+class TFCS2DFunctionInt32Int16Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int16Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt32Int16Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int16Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt32Int16Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int16Int32InterpolationExpHistogram
+};
+
+
+class TFCS2DFunctionInt32Int32Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int32Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt32Int32Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int32Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt32Int32Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int32Int32InterpolationExpHistogram
+};
+
+
+
+
+
+
+
+
+
+
+#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+
+#pragma link C++ class TFCS2DFunctionInt8Int8Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int8Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int8Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int32InterpolationExpHistogram+;
+
+#endif
+
+#endif
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationHistogram.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationHistogram.h
index f85abf429c35dd871575bac92f5aaa9012b21fd1..1f0e3f3a2c7703817918e8a3dd64faa9fe9aa589 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationHistogram.h
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationHistogram.h
@@ -25,6 +25,11 @@ template <typename Txvec, typename Tyvec, typename Tz ,typename Trandom=float> c
     using TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>::m_HistoBordersy;
 
     ///Function gets random number rnd in the range [0,1) as argument 
+    ///and returns function value according to a histogram distribution.
+    ///An exponential interpolation is done within each bin
+
+
+///Function gets random number rnd in the range [0,1) as argument 
     ///and returns function value according to a histogram distribution.
     ///A linear interpolation is done within each bin
     virtual void rnd_to_fct(float& valuex,float& valuey,float rnd, float rnd2) const {
@@ -78,10 +83,13 @@ template <typename Txvec, typename Tyvec, typename Tz ,typename Trandom=float> c
         m=(mnext+mprev)*l*l/dfrac;
       } else m=0;
       
-      valuey = m_HistoBordersy.position(ibiny,m,residual_rnd);
+      valuey = m_HistoBordersy.position_lin(ibiny,m,residual_rnd);
       valuex = m_HistoBordersx.position(ibinx, rnd2);
     }
 
+
+
+
   ClassDef(TFCS2DFunctionTemplateInterpolationHistogram,1)  //TFCS1DFunctionTemplateInterpolationHistogram
 };
 
@@ -92,7 +100,6 @@ class TFCS2DFunctionInt8Int8Int8InterpolationHistogram: public TFCS2DFunctionTem
 
   ClassDef(TFCS2DFunctionInt8Int8Int8InterpolationHistogram,1)  //TFCS2DFunctionInt8Int8Int8InterpolationHistogram
 };
-
 class TFCS2DFunctionInt8Int8Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
 {
   public:
@@ -100,7 +107,6 @@ class TFCS2DFunctionInt8Int8Int16InterpolationHistogram: public TFCS2DFunctionTe
 
   ClassDef(TFCS2DFunctionInt8Int8Int16InterpolationHistogram,1)  //TFCS2DFunctionInt8Int8Int16InterpolationHistogram
 };
-
 class TFCS2DFunctionInt8Int8Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
 {
   public:
@@ -109,7 +115,7 @@ class TFCS2DFunctionInt8Int8Int32InterpolationHistogram: public TFCS2DFunctionTe
   ClassDef(TFCS2DFunctionInt8Int8Int32InterpolationHistogram,1)  //TFCS2DFunctionInt8Int8Int32InterpolationHistogram
 };
 
-
+////
 
 class TFCS2DFunctionInt8Int16Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
 {
@@ -118,7 +124,6 @@ class TFCS2DFunctionInt8Int16Int8InterpolationHistogram: public TFCS2DFunctionTe
 
   ClassDef(TFCS2DFunctionInt8Int16Int8InterpolationHistogram,1)  //TFCS2DFunctionInt8Int16Int8InterpolationHistogram
 };
-
 class TFCS2DFunctionInt8Int16Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>
 {
   public:
@@ -126,7 +131,6 @@ class TFCS2DFunctionInt8Int16Int16InterpolationHistogram: public TFCS2DFunctionT
 
   ClassDef(TFCS2DFunctionInt8Int16Int16InterpolationHistogram,1)  //TFCS2DFunctionInt8Int16Int16InterpolationHistogram
 };
-
 class TFCS2DFunctionInt8Int16Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>
 {
   public:
@@ -136,6 +140,56 @@ class TFCS2DFunctionInt8Int16Int32InterpolationHistogram: public TFCS2DFunctionT
 };
 
 
+class TFCS2DFunctionInt8Int32Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int8InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int8InterpolationHistogram,1)  //TFCS2DFunctionInt8Int32Int8InterpolationHistogram
+};
+class TFCS2DFunctionInt8Int32Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int16InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int16InterpolationHistogram,1)  //TFCS2DFunctionInt8Int32Int16InterpolationHistogram
+};
+class TFCS2DFunctionInt8Int32Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int32InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int32InterpolationHistogram,1)  //TFCS2DFunctionInt8Int32Int32InterpolationHistogram
+};
+
+
+
+
+
+
+class TFCS2DFunctionInt16Int8Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int8InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int8InterpolationHistogram,1)  //TFCS2DFunctionInt16Int8Int8InterpolationHistogram
+};
+class TFCS2DFunctionInt16Int8Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int16InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int16InterpolationHistogram,1)  //TFCS2DFunctionInt16Int8Int16InterpolationHistogram
+};
+class TFCS2DFunctionInt16Int8Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int32InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int32InterpolationHistogram,1)  //TFCS2DFunctionInt16Int8Int32InterpolationHistogram
+};
+
+////
 
 class TFCS2DFunctionInt16Int16Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
 {
@@ -144,7 +198,6 @@ class TFCS2DFunctionInt16Int16Int8InterpolationHistogram: public TFCS2DFunctionT
 
   ClassDef(TFCS2DFunctionInt16Int16Int8InterpolationHistogram,1)  //TFCS2DFunctionInt16Int16Int8InterpolationHistogram
 };
-
 class TFCS2DFunctionInt16Int16Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>
 {
   public:
@@ -152,7 +205,6 @@ class TFCS2DFunctionInt16Int16Int16InterpolationHistogram: public TFCS2DFunction
 
   ClassDef(TFCS2DFunctionInt16Int16Int16InterpolationHistogram,1)  //TFCS2DFunctionInt16Int16Int16InterpolationHistogram
 };
-
 class TFCS2DFunctionInt16Int16Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>
 {
   public:
@@ -161,4 +213,169 @@ class TFCS2DFunctionInt16Int16Int32InterpolationHistogram: public TFCS2DFunction
   ClassDef(TFCS2DFunctionInt16Int16Int32InterpolationHistogram,1)  //TFCS2DFunctionInt16Int16Int32InterpolationHistogram
 };
 
+
+class TFCS2DFunctionInt16Int32Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int8InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int8InterpolationHistogram,1)  //TFCS2DFunctionInt16Int32Int8InterpolationHistogram
+};
+class TFCS2DFunctionInt16Int32Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int16InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int16InterpolationHistogram,1)  //TFCS2DFunctionInt16Int32Int16InterpolationHistogram
+};
+class TFCS2DFunctionInt16Int32Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int32InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int32InterpolationHistogram,1)  //TFCS2DFunctionInt16Int32Int32InterpolationHistogram
+};
+
+
+
+
+
+
+class TFCS2DFunctionInt32Int8Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int8InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int8InterpolationHistogram,1)  //TFCS2DFunctionInt32Int8Int8InterpolationHistogram
+};
+class TFCS2DFunctionInt32Int8Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int16InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int16InterpolationHistogram,1)  //TFCS2DFunctionInt32Int8Int16InterpolationHistogram
+};
+class TFCS2DFunctionInt32Int8Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int32InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int32InterpolationHistogram,1)  //TFCS2DFunctionInt32Int8Int32InterpolationHistogram
+};
+
+////
+
+class TFCS2DFunctionInt32Int16Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int8InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int8InterpolationHistogram,1)  //TFCS2DFunctionInt32Int16Int8InterpolationHistogram
+};
+class TFCS2DFunctionInt32Int16Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int16InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int16InterpolationHistogram,1)  //TFCS2DFunctionInt32Int16Int16InterpolationHistogram
+};
+class TFCS2DFunctionInt32Int16Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int32InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int32InterpolationHistogram,1)  //TFCS2DFunctionInt32Int16Int32InterpolationHistogram
+};
+
+
+class TFCS2DFunctionInt32Int32Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int8InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int8InterpolationHistogram,1)  //TFCS2DFunctionInt32Int32Int8InterpolationHistogram
+};
+class TFCS2DFunctionInt32Int32Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int16InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int16InterpolationHistogram,1)  //TFCS2DFunctionInt32Int32Int16InterpolationHistogram
+};
+class TFCS2DFunctionInt32Int32Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int32InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int32InterpolationHistogram,1)  //TFCS2DFunctionInt32Int32Int32InterpolationHistogram
+};
+
+
+
+
+
+
+
+
+
+
+#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+
+#pragma link C++ class TFCS2DFunctionInt8Int8Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int8Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int8Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int32InterpolationHistogram+;
+
+#endif
+
 #endif
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCS2DFunctionTemplateInterpolationExpHistogram.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCS2DFunctionTemplateInterpolationExpHistogram.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..4bfd3a34dc8389bf577e98234303532221f6922f
--- /dev/null
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCS2DFunctionTemplateInterpolationExpHistogram.cxx
@@ -0,0 +1,10 @@
+/*
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationExpHistogram.h"
+
+//=============================================
+//======= TFCS2DFunctionTemplateInterpolationExpHistogram =========
+//=============================================
+
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/Identifier/Identifier.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/Identifier/Identifier.h
index ff56f0913a01891c8638402cf2213cd392d2bd0b..78d33066452f005500fec88f4848925048c06306 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/Identifier/Identifier.h
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/Identifier/Identifier.h
@@ -23,7 +23,7 @@ class Identifier
   } max_value_type;
 
   Identifier():m_id(max_value) {};
-  Identifier(const Identifier& value):m_id(value.m_id) {};
+  Identifier(const Identifier& value):m_id(value.m_id) = default;
   Identifier(value_type value):m_id(value) {};
   
   operator value_type() const { return m_id; }
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/AdditionalConfig.py b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/AdditionalConfig.py
index 965d5cf9833a3259fa3bb23b2fa4e25524ae468f..b3377782370c9d963c60001b53ebbdf96b8dc58b 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-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 """
 Tools configurations for ISF_FastCaloSimServices
@@ -801,41 +801,47 @@ def getPileupFastShowerCellBuilderTool(name="ISF_PileupFastShowerCellBuilderTool
 
 def getFastHitConvertTool(name="ISF_FastHitConvertTool", **kwargs):
     mergeable_collection_suffix = "_FastCaloSim"
+    region = "CALO"
 
     EMB_hits_bare_collection_name = "LArHitEMB"
     EMB_hits_merger_input_property = "LArEMBHits"
     EMB_hits_collection_name = generate_mergeable_collection_name(
         EMB_hits_bare_collection_name,
         mergeable_collection_suffix,
-        EMB_hits_merger_input_property)
+        EMB_hits_merger_input_property,
+        region)
 
     EMEC_hits_bare_collection_name = "LArHitEMEC"
     EMEC_hits_merger_input_property = "LArEMECHits"
     EMEC_hits_collection_name = generate_mergeable_collection_name(
         EMEC_hits_bare_collection_name,
         mergeable_collection_suffix,
-        EMEC_hits_merger_input_property)
+        EMEC_hits_merger_input_property,
+        region)
 
     FCAL_hits_bare_collection_name = "LArHitFCAL"
     FCAL_hits_merger_input_property = "LArFCALHits"
     FCAL_hits_collection_name = generate_mergeable_collection_name(
         FCAL_hits_bare_collection_name,
         mergeable_collection_suffix,
-        FCAL_hits_merger_input_property)
+        FCAL_hits_merger_input_property,
+        region)
 
     HEC_hits_bare_collection_name = "LArHitHEC"
     HEC_hits_merger_input_property = "LArHECHits"
     HEC_hits_collection_name = generate_mergeable_collection_name(
         HEC_hits_bare_collection_name,
         mergeable_collection_suffix,
-        HEC_hits_merger_input_property)
+        HEC_hits_merger_input_property,
+        region)
 
     tile_hits_bare_collection_name = "TileHitVec"
     tile_hits_merger_input_property = "TileHits"
     tile_hits_collection_name = generate_mergeable_collection_name(
         tile_hits_bare_collection_name,
         mergeable_collection_suffix,
-        tile_hits_merger_input_property)
+        tile_hits_merger_input_property,
+        region)
 
     kwargs.setdefault('embHitContainername', EMB_hits_collection_name)
     kwargs.setdefault('emecHitContainername', EMEC_hits_collection_name)
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigNew.py b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigNew.py
index a7b7b92c50daa7b38c6713c3e83536925d575f4d..f4ae1166ab9bc980e076dddd7ca66daa5875874c 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigNew.py
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigNew.py
@@ -111,6 +111,7 @@ def FastHitConvertToolCfg(flags, name="ISF_FastHitConvertTool", **kwargs):
 
     acc = ComponentAccumulator()
     mergeable_collection_suffix = "_FastCaloSim"
+    region = "CALO"
 
     EMB_hits_bare_collection_name = "LArHitEMB"
     EMB_hits_merger_input_property = "LArEMBHits"
@@ -118,7 +119,8 @@ def FastHitConvertToolCfg(flags, name="ISF_FastHitConvertTool", **kwargs):
         flags,
         EMB_hits_bare_collection_name,
         mergeable_collection_suffix,
-        EMB_hits_merger_input_property)
+        EMB_hits_merger_input_property,
+        region)
     acc.merge(acc1)
 
     EMEC_hits_bare_collection_name = "LArHitEMEC"
@@ -127,7 +129,8 @@ def FastHitConvertToolCfg(flags, name="ISF_FastHitConvertTool", **kwargs):
         flags,
         EMEC_hits_bare_collection_name,
         mergeable_collection_suffix,
-        EMEC_hits_merger_input_property)
+        EMEC_hits_merger_input_property,
+        region)
     acc.merge(acc2)
 
     FCAL_hits_bare_collection_name = "LArHitFCAL"
@@ -136,7 +139,8 @@ def FastHitConvertToolCfg(flags, name="ISF_FastHitConvertTool", **kwargs):
         flags,
         FCAL_hits_bare_collection_name,
         mergeable_collection_suffix,
-        FCAL_hits_merger_input_property)
+        FCAL_hits_merger_input_property,
+        region)
     acc.merge(acc3)
 
     HEC_hits_bare_collection_name = "LArHitHEC"
@@ -145,7 +149,8 @@ def FastHitConvertToolCfg(flags, name="ISF_FastHitConvertTool", **kwargs):
         flags,
         HEC_hits_bare_collection_name,
         mergeable_collection_suffix,
-        HEC_hits_merger_input_property)
+        HEC_hits_merger_input_property,
+        region)
     acc.merge(acc4)
 
     tile_hits_bare_collection_name = "TileHitVec"
@@ -154,7 +159,8 @@ def FastHitConvertToolCfg(flags, name="ISF_FastHitConvertTool", **kwargs):
         flags,
         tile_hits_bare_collection_name,
         mergeable_collection_suffix,
-        tile_hits_merger_input_property)
+        tile_hits_merger_input_property,
+        region)
     acc.merge(acc5)
 
     kwargs.setdefault("embHitContainername", EMB_hits_collection_name)
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 88d3c195bc7c78979b699a1ec3cfadd93947bc40..e705869167ef6917e505012318933df652a12edb 100644
--- a/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfig.py
+++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasServices/python/ISF_FatrasServicesConfig.py
@@ -530,9 +530,11 @@ def getFatrasHitCreatorPixel(name="ISF_FatrasHitCreatorPixel", **kwargs):
     bare_collection_name = "PixelHits"
     mergeable_collection_suffix = "_Fatras"
     merger_input_property = "PixelHits"
+    region = 'ID'
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
 
     from G4AtlasApps.SimFlags import simFlags
     kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() )
@@ -549,9 +551,11 @@ def getFatrasHitCreatorSCT(name="ISF_FatrasHitCreatorSCT", **kwargs):
     bare_collection_name = "SCT_Hits"
     mergeable_collection_suffix = "_Fatras"
     merger_input_property = "SCTHits"
+    region = 'ID'
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     from G4AtlasApps.SimFlags import simFlags
     kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() )
     kwargs.setdefault("RandomStreamName"    , ISF_FatrasFlags.RandomStreamName())
@@ -566,9 +570,11 @@ def getFatrasHitCreatorTRT(name="ISF_FatrasHitCreatorTRT", **kwargs):
     bare_collection_name = "TRTUncompressedHits"
     mergeable_collection_suffix = "_Fatras"
     merger_input_property = "TRTUncompressedHits"
+    region = 'ID'
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     from G4AtlasApps.SimFlags import simFlags
     kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() )
     kwargs.setdefault("RandomStreamName"    , ISF_FatrasFlags.RandomStreamName())
@@ -609,27 +615,32 @@ def getFatrasPileupSimHitCreatorID(name="ISF_FatrasPileupSimHitCreatorID", **kwa
 
 def getFatrasSimHitCreatorMS(name="ISF_FatrasSimHitCreatorMS", **kwargs):
     mergeable_collection_suffix = "_Fatras"
+    region = 'MUON'
 
     mdt_bare_collection_name = "MDT_Hits"
     mdt_merger_input_property = "MDTHits"
     mdt_hits_collection_name = generate_mergeable_collection_name(mdt_bare_collection_name,
                                                                   mergeable_collection_suffix,
-                                                                  mdt_merger_input_property)
+                                                                  mdt_merger_input_property,
+                                                                  region)
     rpc_bare_collection_name = "RPC_Hits"
     rpc_merger_input_property = "RPCHits"
     rpc_hits_collection_name = generate_mergeable_collection_name(rpc_bare_collection_name,
                                                                   mergeable_collection_suffix,
-                                                                  rpc_merger_input_property)
+                                                                  rpc_merger_input_property,
+                                                                  region)
     tgc_bare_collection_name = "TGC_Hits"
     tgc_merger_input_property = "TGCHits"
     tgc_hits_collection_name = generate_mergeable_collection_name(tgc_bare_collection_name,
                                                                   mergeable_collection_suffix,
-                                                                  tgc_merger_input_property)
+                                                                  tgc_merger_input_property,
+                                                                  region)
     csc_bare_collection_name = "CSC_Hits"
     csc_merger_input_property = "CSCHits"
     csc_hits_collection_name = generate_mergeable_collection_name(csc_bare_collection_name,
                                                                   mergeable_collection_suffix,
-                                                                  csc_merger_input_property)
+                                                                  csc_merger_input_property,
+                                                                  region)
 
     from G4AtlasApps.SimFlags import simFlags
     kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() )
diff --git a/Simulation/Overlay/OverlayByteStreamUtils/CMakeLists.txt b/Simulation/Overlay/OverlayByteStreamUtils/CMakeLists.txt
index 87f203488952884b690643986e501b54cbbd52ca..9ddead6f5fdfa888855d06e66ea15280ca8a0ecc 100644
--- a/Simulation/Overlay/OverlayByteStreamUtils/CMakeLists.txt
+++ b/Simulation/Overlay/OverlayByteStreamUtils/CMakeLists.txt
@@ -11,4 +11,12 @@ atlas_add_component( OverlayByteStreamUtils
                      src/*.cxx
                      src/components/*.cxx
                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
-                     LINK_LIBRARIES LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps AthenaKernel ByteStreamCnvSvcLib GaudiKernel StoreGateLib TrigConfHLTData TrigConfInterfaces TrigSteeringEvent TrigT1Result )
+                     LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps AthenaKernel ByteStreamCnvSvcLib GaudiKernel StoreGateLib TrigConfHLTData TrigConfInterfaces TrigSteeringEvent TrigT1Result )
+
+# Utility scripts
+atlas_install_runtime( scripts/*.py )
+atlas_install_runtime( scripts/*.sh )
+
+atlas_add_executable (LB_analyze util/LB_analyze.cxx
+                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
+                      LINK_LIBRARIES ${ROOT_LIBRARIES} )
diff --git a/Simulation/Overlay/OverlayByteStreamUtils/scripts/LB_AnalMapSplitter.py b/Simulation/Overlay/OverlayByteStreamUtils/scripts/LB_AnalMapSplitter.py
new file mode 100755
index 0000000000000000000000000000000000000000..6c451453b651ddf57b485e916a9705e0605ec719
--- /dev/null
+++ b/Simulation/Overlay/OverlayByteStreamUtils/scripts/LB_AnalMapSplitter.py
@@ -0,0 +1,120 @@
+#!/bin/env python
+#
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+from __future__ import print_function
+
+import sys
+
+# get the list of special run,lbn with more than 1 file
+special_run_lbn = {}
+with open("runs_lbn_files.txt") as f:
+    for line in f:
+        # print line
+        if not line.startswith("root"):
+            print("WARNING: line doesn't start with 'root'")
+            print(line)
+            continue
+        fileName = line.rstrip()
+        print(fileName)
+        finfo = fileName.split(".")
+        run = finfo[3]
+        lbi = 4  # index of the lbn info
+        while "_lb" not in finfo[lbi] and lbi < 20:
+            lbi += 1
+        if lbi >= 20:
+            print(finfo[lbi] + " doesnt contain _lb")
+            exit(1)
+        lbn = finfo[lbi].replace("_lb", "")
+        print(run+"_"+lbn)
+        if run+"_"+lbn in special_run_lbn:
+            if fileName in special_run_lbn[run+"_"+lbn]:
+                print("%s already in map for %s %s" % (fileName, run, lbn))
+            else:
+                special_run_lbn[run+"_"+lbn].append(fileName)
+        else:
+            special_run_lbn[run+"_"+lbn] = [fileName]
+    for key in special_run_lbn.keys():
+        pass
+    print("done with special_run_lbn")
+
+# do the work
+maxstream = int(sys.argv[1])
+print("maxstream=%d" % maxstream)
+for s in range(0, maxstream+1):  # 50
+    with open("lbn_anal_map_stream"+str(s)+".txt") as f:
+        tot = 0
+        nfile = 1
+        of = open("output_stream"+str(s) +
+                  "/lbn_anal_map_"+str(nfile)+".txt", "w")
+        of2 = open("output_stream"+str(s)+"/filelist_"+str(nfile)+".txt", "w")
+        for line in f:
+            linfo = line.split(" ")
+            tot += int(linfo[16])
+            run = linfo[3].replace(",", "").zfill(8)
+            lbn = linfo[5].replace(",", "").zfill(4)
+            if tot > 100:
+                # replace last bit of line and also write it to the new file
+                extra = tot-100
+                forthisone = int(linfo[16])-extra
+                rline = line.replace(
+                    linfo[16]+" wanted", str(forthisone)+" wanted")
+                of.write(rline)
+                if run+"_"+lbn in special_run_lbn:
+                    for f in special_run_lbn[run+"_"+lbn]:
+                        if of2.tell() > 0:
+                            of2.write(",")
+                        of2.write(f)
+                else:
+                    print("%s %s not in files map!" % (run, lbn))
+
+                of.close()
+                of2.close()
+                nfile += 1
+                of = open("output_stream"+str(s) +
+                          "/lbn_anal_map_"+str(nfile)+".txt", "w")
+                of2 = open("output_stream"+str(s) +
+                           "/filelist_"+str(nfile)+".txt", "w")
+                tot = extra  # the number left over from the last set
+
+                rline = line.replace(linfo[16]+" wanted", str(extra)+" wanted")
+                of.write(rline)
+                if run+"_"+lbn in special_run_lbn:
+                    for f in special_run_lbn[run+"_"+lbn]:
+                        if of2.tell() > 0:
+                            of2.write(",")
+                        of2.write(f)
+                else:
+                    print("%s %s not in files map!" % (run, lbn))
+
+            elif tot == 100:
+                of.write(line)
+                if run+"_"+lbn in special_run_lbn:
+                    for f in special_run_lbn[run+"_"+lbn]:
+                        if of2.tell() > 0:
+                            of2.write(",")
+                        of2.write(f)
+                else:
+                    print("%s %s not in files map!" % (run, lbn))
+
+                of.close()
+                of2.close()
+                nfile += 1
+                of = open("output_stream"+str(s) +
+                          "/lbn_anal_map_"+str(nfile)+".txt", "w")
+                of2 = open("output_stream"+str(s) +
+                           "/filelist_"+str(nfile)+".txt", "w")
+                tot = 0
+            else:
+                of.write(line)
+                if run+"_"+lbn in special_run_lbn:
+                    for f in special_run_lbn[run+"_"+lbn]:
+                        if of2.tell() > 0:
+                            of2.write(",")
+                        of2.write(f)
+                else:
+                    print("%s %s not in files map!" % (run, lbn))
+
+        print("done %d" % s)
+        of.close()
+        of2.close()
diff --git a/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/GetNEventsLB.py b/Simulation/Overlay/OverlayByteStreamUtils/scripts/LB_GetNEvents.py
old mode 100644
new mode 100755
similarity index 71%
rename from Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/GetNEventsLB.py
rename to Simulation/Overlay/OverlayByteStreamUtils/scripts/LB_GetNEvents.py
index 7a6c072b853efa900bbe6d695fc10c112b1851f6..cf47e1421f29902b7694a4dff932abb57ab80b00
--- a/Event/EventOverlay/EventOverlayJobTransforms/scripts/0biasselection/GetNEventsLB.py
+++ b/Simulation/Overlay/OverlayByteStreamUtils/scripts/LB_GetNEvents.py
@@ -1,6 +1,6 @@
 #!/bin/env python
 #
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 # ----------------------------------------------------------------
 # Script : GetNEventsLB.py
 # Purpose: Utility to retrieve number of events per LB from SFO DB
@@ -8,6 +8,8 @@
 # Created: Aug 17, 2011
 # ----------------------------------------------------------------
 
+from __future__ import print_function
+
 import sys, getopt
 
 def GetSFO_LBNEvents( cursor, runno, streamname ):
@@ -26,12 +28,12 @@ def OpenSFOConnection():
     return cx_Oracle.connect("ATLAS_SFO_T0_R/readmesfotz2008@atlr")
 
 def usage():
-    print ' '
-    print 'Usage: python %s [options]' % sys.argv[0]
-    print '  -r | --run      : run number (REQUIRED)'
-    print '  -s | --stream   : full stream name (REQUIRED)'
-    print '  -h | --help     : print this usage message'
-    print ' '
+    print(' ')
+    print('Usage: %s [options]' % sys.argv[0])
+    print('  -r | --run      : run number (REQUIRED)')
+    print('  -s | --stream   : full stream name (REQUIRED)')
+    print('  -h | --help     : print this usage message')
+    print(' ')
     exit(1)
 
 def main():
@@ -43,7 +45,7 @@ def main():
 
     except getopt.GetoptError:
         # print help information and exit:
-        print >> sys.stderr, 'ERROR: unknown options in argument %s' % sys.argv[1:]
+        print('ERROR: unknown options in argument %s' % sys.argv[1:], file=sys.stderr)
         usage()
 
     runno   = None
@@ -62,17 +64,17 @@ def main():
     connection = OpenSFOConnection()
     cursor     = connection.cursor()
 
-    print 'Results for run: %i, stream: "%s"' % (runno, stream)
+    print('Results for run: %i, stream: "%s"' % (runno, stream))
 
     # min/max LB number for given run/stream
     # --> this command is slow... don't know why
     # minLB, maxLB = GetSFO_LBs( cursor, runno )
     # print 'LB range: %i -- %i' % (minLB, maxLB)
 
-    # list with 
+    # list with
     lblist = GetSFO_LBNEvents( cursor, runno, stream )
-    print 'First non-zero LB: ',lblist[0][1]
-    print 'Last  non-zero LB: ',lblist[-1][1]
+    print('First non-zero LB: ' + str(lblist[0][1]))
+    print('Last  non-zero LB: ' + str(lblist[-1][1]))
 
     # access to all LBs
     sumnev    = 0
@@ -80,18 +82,17 @@ def main():
     sumfsize  = 0
     for (nev,lb,nfiles,fsize) in lblist:
         fsize /= 1.e6
-        print ' ... Run %i, LB %i has %i events, %i RAW files and %f MB' % (runno,lb,nev,nfiles,fsize)
+        print(' ... Run %i, LB %i has %i events, %i RAW files and %f MB' % (runno,lb,nev,nfiles,fsize))
         sumnev    += nev
         sumnfiles += nfiles
         sumfsize  += fsize
-    print '--------------------------------------------------'
-    print 'Total #events : ', sumnev
-    print 'Total #files  : ', sumnfiles
-    print 'Total RAW size: ', sumfsize/1000.0, ' GB'
-    
+    print('--------------------------------------------------')
+    print('Total #events : ', sumnev)
+    print('Total #files  : ', sumnfiles)
+    print('Total RAW size: ', sumfsize/1000.0, ' GB')
+
     cursor.close()
     connection.close()
 
 if __name__ == '__main__':
     main()
-    
diff --git a/Simulation/Overlay/OverlayByteStreamUtils/scripts/LB_query.sh b/Simulation/Overlay/OverlayByteStreamUtils/scripts/LB_query.sh
new file mode 100755
index 0000000000000000000000000000000000000000..fea8dac1e906ab02b3b996adbfaf9cd9cbadeca6
--- /dev/null
+++ b/Simulation/Overlay/OverlayByteStreamUtils/scripts/LB_query.sh
@@ -0,0 +1,152 @@
+#!/bin/bash
+#
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+# NOTE: Rucio setup is required
+
+set -e
+
+# use GRL, from: http://atlasdqm.web.cern.ch/atlasdqm/grlgen/All_Good/?C=M;O=D
+# consult: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/GoodRunListsForAnalysisRun2
+# and: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DataMCForAnalysis
+
+# TODO: read from args
+#sstream="physics_ZeroBias" #pp or UPC
+sstream="physics_MinBiasOverlay" #HI
+pref="data18_hi"
+#suf="merge"
+suf="daq"
+# just a name to tag this set of files
+out_name=data18_hi_1
+
+# TODO: read from args
+dq="http://atlasdqm.web.cern.ch/atlasdqm/grlgen/HeavyIons/All_Good/data18_hi.periodS_DetStatus-v104-pro22-08_Unknown_PHYS_HeavyIonP_All_Good.xml"
+wget -nc "$dq"
+
+# Can just go here: https://atlas-lumicalc.cern.ch/  ... note use --online lumi tag for HI, unless a better one is available
+# and request --verbose output and use physics trigger HLT_noalg_zb_L1ZB, 
+# then wget "Raw iLimuiCalc output", and "mv output.txt lbn_2015; ln -s lbn_2015 lbn"
+
+# if you want to redo this:
+# rm -f lbn
+if [ ! -f "lbn" ]; then 
+  # iLumiCalc -t L1_ZB -V -x "$dq" --livetrigger=L1_EM12 > lbn
+  iLumiCalc -t L1_ZB --lumitag OflLumi-HI-009 -V -x "$dq" --livetrigger=L1_EM12 | tee lbn
+fi
+grep ": Total" lbn ; echo
+
+# get info on number of events and files per lumi block in each run
+# if you want to redo this:
+# rm -f lbnevents*
+# rm -f runs_lbn_files.txt
+
+rm -f runs_temp.txt
+runs=$(grep "subchild node value" lbn|cut -f 3 -d : |sed 's/[\x01-\x1F\x7F]//g'|sed 's%\[0m%%g'|sed 's%\[34m%%g'|sed ':a;N;$!ba;s/\n/ /g')
+# loop over all runs
+for runn in $runs; do
+  # Only works on lxplus now!
+  # if [[ ! -f "lbnevents_${runn}.txt" ]]; then 
+  #   echo "Getting Nevent info for run $runn "
+  #   LB_GetNEvents.py -r "$runn" -s "$sstream" | grep "... Run" | tee "lbnevents_${runn}.txt"
+  # fi
+  rm -f runs_temp_temp.txt
+  touch runs_temp_temp.txt
+  if [[ ! -f "runs_lbn_files.txt" ]]; then 
+    echo "Getting file info for run $runn "
+    file=$(rucio list-file-replicas "${pref}.00${runn}.${sstream}.${suf}.RAW" || true)
+    # dataset=$(rucio list-dataset-replicas "${pref}.00${runn}.${sstream}.${suf}.RAW")
+    set +e
+    rsefound=$(echo "$file" | grep -c "CERN-PROD_TZDISK")
+    if [[ ! $rsefound -eq 0 ]]; then
+      echo "$file" | (grep "CERN-PROD_TZDISK" || true) | cut -d '|' -f 6 | sed "s% CERN-PROD_TZDISK: gsiftp://eosatlassftp.cern.ch:2811/%root://eosatlas.cern.ch//%" | sed -r 's/\s+//g' | grep "_lb" > runs_temp_temp.txt
+      cat runs_temp_temp.txt >> runs_temp.txt
+      # echo -n "Replicated? : "; (echo "$dataset" | grep CERN-PROD_TZDISK) || echo "false"
+    fi
+    nfound=$(grep -c data runs_temp_temp.txt)
+    echo "Found $nfound files on TZDISK"
+    set -e
+    if [ "$nfound" -eq 0 ]; then
+      # look also on DATADISK if not found on TZDISK
+      set +e
+      rsefound=$(echo "$file" | grep -c "CERN-PROD_DATADISK")
+      if [[ ! $rsefound -eq 0 ]]; then
+        echo "$file" | grep "CERN-PROD_DATADISK" | cut -d '|' -f 6 | sed "s% CERN-PROD_DATADISK: gsiftp://eosatlassftp.cern.ch:2811/%root://eosatlas.cern.ch//%" | sed -r 's/\s+//g' | grep "_lb" > runs_temp_temp.txt
+        cat runs_temp_temp.txt >> runs_temp.txt
+        # echo -n "Replicated? : "; (echo "$dataset" | grep CERN-PROD_DATADISK) || echo "false"
+      fi
+      nfound=$(grep -c data runs_temp_temp.txt)
+      echo "Found $nfound files on DATADISK"
+      set -e
+    fi
+    if [ "$nfound" -eq 0 ]; then
+      # look also on RAW if not found on DATADISK
+      set +e
+      rsefound=$(echo "$file" | grep -c "CERN-PROD_RAW")
+      if [[ ! $rsefound -eq 0 ]]; then
+        echo "$file" | grep "CERN-PROD_RAW" | cut -d '|' -f 6 | sed "s% CERN-PROD_RAW: %%" | sed -r 's/\s+//g' | grep "_lb" > runs_temp_temp.txt
+        cat runs_temp_temp.txt >> runs_temp.txt
+        # echo -n "Replicated? : "; (echo "$dataset" | grep CERN-PROD_RAW) || echo "false"
+      fi
+      nfound=$(grep -c data runs_temp_temp.txt)
+      echo "Found $nfound files on RAW"
+      set -e
+    fi
+    if [ "$nfound" -eq 0 ]; then
+      echo "No files found!"
+    fi
+  fi
+done
+rm runs_temp_temp.txt
+
+if [[ ! -f runs_lbn_files.txt ]]; then mv runs_temp.txt runs_lbn_files.txt ; fi
+
+# if you want to redo this:
+# rm -f lbn_anal_map.txt 
+if [[ ! -f lbn_anal_map.txt ]]; then LB_analyze | tee log_lbn_analyze.txt ; fi
+
+# Only works on lxplus now!
+# echo -n "Total events in dataset before GRL: "
+# cat lbnevents_*.txt | tr -s ' ' | cut -d ' ' -f 8 | awk '{total = total + $1}END{print total}'
+echo -n "Total events in dataset from log_lbn_analyze.txt: "
+grep "stream 0" log_lbn_analyze.txt | cut -d ' ' -f 6 | awk '{total = total + $1}END{print total}'
+echo -n "Total events in dataset from lbn_anal_map: "
+grep "stream 1," lbn_anal_map.txt | cut -d ' ' -f 8 | awk '{total = total + $1}END{print total}'
+echo -n "Selected events per stream: "
+grep "stream 8," lbn_anal_map.txt | cut -d ' ' -f 17 | awk '{total = total + $1}END{print total}'
+
+maxstream=19 #0 up to 49 - 19 does 1M events
+#split into all the desired streams
+for s in $(seq 0 $maxstream); do 
+  grep "stream ${s}," lbn_anal_map.txt | grep -v "and 0 wanted" > "lbn_anal_map_stream${s}.txt"
+  mkdir -p "output_stream${s}"
+done
+
+# split into jobs for each stream and make filelist and lbn_anal_map files
+rm -f output_stream*/filelist_*.txt output_stream*/lbn_anal_map_*.txt
+LB_AnalMapSplitter.py $maxstream | tee log_lbn_anal_map_splitter.txt
+rm output_stream*/*501.txt
+if grep "doesnt contain" log_lbn_anal_map_splitter.txt; then exit; fi
+set +e
+count=$(grep -c "not in files map" log_lbn_anal_map_splitter.txt)
+set -e
+echo "$count files not found in map..."
+
+for s in $(seq 1 $maxstream); do
+ echo "renaming stream $s to 0"
+ for f in {1..500}; do sed -i -e "s%stream $s,%stream 0,%g" "output_stream${s}/lbn_anal_map_${f}.txt"; done
+done
+
+for s in $(seq 0 $maxstream); do cd "output_stream${s}"; tar cfz "stream${s}_${out_name}.tar.gz" *.txt; cd ..; done
+mkdir -p lists
+mv -v output_stream*/stream*_${out_name}.tar.gz lists/
+
+#to check the events in each map:
+for s in $(seq 0 $maxstream); do
+ echo -n "files with 100 events in stream $s :"
+ for f in {1..500}; do cat "output_stream${s}/lbn_anal_map_$f.txt" | cut -d ' ' -f 17 | awk '{total = total + $1}END{print total}'; done | grep -c 100
+done
+
+#to show number of files in each filelist:
+echo ; echo "files in each filelist (in stream 0)..." ; for f in output_stream0/filelist_*.txt; do echo -n $(grep -o "$sstream" "$f" | wc -l); echo " : $f"; done | sort -n
+
+echo "DONE"
diff --git a/Simulation/Overlay/OverlayByteStreamUtils/scripts/LB_query_DBonly.sh b/Simulation/Overlay/OverlayByteStreamUtils/scripts/LB_query_DBonly.sh
new file mode 100755
index 0000000000000000000000000000000000000000..435a1c453b1ee29fb02b496717ce8bcf89648f08
--- /dev/null
+++ b/Simulation/Overlay/OverlayByteStreamUtils/scripts/LB_query_DBonly.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+# Only works on lxplus now!
+
+set -e
+
+# TODO: read from args
+#sstream="physics_ZeroBias" #pp or UPC
+sstream="physics_MinBiasOverlay" #HI
+
+runs=$(grep "subchild node value" lbn | cut -f 3 -d : | sed 's/[\x01-\x1F\x7F]//g' | sed 's%\[0m%%g' | sed 's%\[34m%%g' | sed ':a;N;$!ba;s/\n/ /g')
+# loop over all runs
+for runn in $runs; do
+  if [[ ! -f "lbnevents_${runn}.txt" ]]; then 
+    echo "Getting Nevent info for run $runn "
+    LB_GetNEvents.py -r "$runn" -s "$sstream" | grep "... Run" | tee "lbnevents_${runn}.txt"
+  fi
+done
diff --git a/Simulation/Overlay/OverlayByteStreamUtils/util/LB_analyze.cxx b/Simulation/Overlay/OverlayByteStreamUtils/util/LB_analyze.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..c0ef551c92dbc20679d12ca1ad548749666085fe
--- /dev/null
+++ b/Simulation/Overlay/OverlayByteStreamUtils/util/LB_analyze.cxx
@@ -0,0 +1,271 @@
+/*
+ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include <map>
+#include <TRandom3.h>
+
+
+struct lbn_info
+{
+  int nevt{};
+  float intlumi{};
+  int nevtwanted{};
+};
+
+struct run_info
+{
+  int nevt{};
+  float intlumi{};
+  std::map<int, lbn_info> lbnmap;
+  int nevtwanted{};
+};
+
+
+int readeventcounts(int run,
+                    std::map<int, int> &eventcounts)
+{
+  eventcounts.clear();
+  char buf[50];
+  sprintf(buf, "lbnevents_%d.txt", run);
+  printf("Opening %s, eventcounts size is %lu\n", buf, eventcounts.size());
+  FILE *fp = fopen(buf, "r");
+  if (!fp) {
+    fprintf(stderr, "Failed to open %s!!!\n", buf);
+    return 1;
+  }
+
+  char *line = new char[500];
+  while (fgets(line, 480, fp)) {
+    int lbn, ne, nf, runn;
+    float mb;
+    int s = sscanf(&line[0], " ... Run %d, LB %d has %d events, %d RAW files and %f MB", &runn, &lbn, &ne, &nf, &mb);
+    if (s > 4) {
+      if (run != runn) {
+        return 20;
+      }
+      printf("run %d lbn %d has %d events\n", run, lbn, ne);
+      eventcounts[lbn] = ne;
+    } else {
+      fprintf(stderr, "s=%d, bad read?\n", s);
+      return 20;
+    }
+  }
+  delete[] line;
+
+  printf("Closing %s, eventcounts size is %lu\n", buf, eventcounts.size());
+  fclose(fp);
+
+  return 0;
+}
+
+int lbn_analyze(int stream,
+                int nwanted,
+                FILE *outfile)
+{
+  FILE *fp = fopen("lbn", "r");
+    if (!fp) {
+    fprintf(stderr, "Failed to open lbn input file!!!\n");
+    return 1;
+  }
+
+  char *line = new char[500];
+  int run, lbn, L1Acc, beforeps, afterps, valid;
+  int liveL1, livebp, liveap;
+  float instlumi, dt, avevtperbx, live, L1p, HLTp, LARp;
+  int grun{};
+  float gtotaltotallumi{}, gtotaltotallumiprescaled{};
+  float gtotallumi{}, gtotallumiprescaled{};
+
+  TRandom myrand;
+  myrand.SetSeed(0);
+  printf("- myrand seed is %u\n", myrand.GetSeed());
+  myrand.SetSeed(myrand.Integer(10000000) + stream);
+  printf("- myrand seed is now %u\n", myrand.GetSeed());
+
+  std::map<int, run_info> runmap;
+  std::map<int, int> eventcounts;
+  while (fgets(line, 480, fp)) {
+    if (line[0] != '-') {
+      continue;
+    }
+
+    int s = sscanf(&line[0],
+      "--- LumiCalculator      : %d[%d]: L1Acc: %d, Livetime trigger L1Acc: %d, InstLumi: %f, deltaT: %f, AvEvtsPerBX: %f, BeforePrescale: %d, AfterPrescale: %d, Livetime trigger BeforePrescale: %d Livetime trigger AfterPrescale: %d, Livefrac: %f, L1Presc: %f, HLTPresc: %f, Valid: %d, LAr ready fraction: %f",
+      &run, &lbn, &L1Acc, &liveL1, &instlumi, &dt, &avevtperbx, &beforeps, &afterps, &livebp, &liveap, &live, &L1p, &HLTp, &valid, &LARp);
+
+    if (s > 8) {
+      printf("Got %d values : run=%d, lbn=%d, L1Acc=%d, instlumi=%f, L1p=%f, dt=%f, live=%f, afterps=%d \n", s, run, lbn, L1Acc, instlumi, L1p, dt, live, afterps);
+
+      if (run != grun) {
+	      if (grun > 0) { //change of run
+	        runmap[grun].intlumi = gtotallumi;
+          printf("Setting lumi for run %d to %f\n", grun, gtotallumi);
+	        gtotaltotallumi += gtotallumi;
+          gtotaltotallumiprescaled += gtotallumiprescaled;
+          // reset the int lumi calculation for this run
+	        gtotallumi = 0;
+          gtotallumiprescaled = 0;
+	      }
+
+	      grun = run; //save the run number
+	      printf("Setting grun to %d\n", run);
+
+	      // read in event counts from runquery file for run
+	      int status = readeventcounts(run, eventcounts);
+        if (status != 0) {
+          return status;
+        }
+      } //new run
+
+      if (L1p < 0) {
+	      runmap[run].lbnmap[lbn].nevt = 0;
+	      if (eventcounts[lbn] !=0 ) {
+          printf("For lbn %d, L1p<0 but eventcounts is %d\n",lbn,eventcounts[lbn]);
+        }
+      } else {
+        int ne = L1Acc;//afterps
+        if (ne != eventcounts[lbn]) {
+          if (stream == 0) {
+            printf("For lbn %d, ne from lumicalc is %d but we will trust runquery value of %d\n", lbn, ne, eventcounts[lbn]);
+          }
+          ne = eventcounts[lbn];
+        }
+        if (ne == 0) {
+          dt = 0;
+          printf("For lbn %d, setting lumi to 0 since 0 events were recorded\n", lbn);
+        }
+        runmap[run].lbnmap[lbn].nevt = ne;
+        runmap[run].lbnmap[lbn].intlumi = instlumi * dt * live;
+        runmap[run].nevt += ne;
+        gtotallumiprescaled += instlumi * dt * live / L1p;
+        gtotallumi += instlumi * dt * live;
+       }
+       printf("grun=%d, gtotallumi=%f, gtotallumiprescaled=%f\n", grun, gtotallumi, gtotallumiprescaled);
+    } //good line
+  } //loop over lines in file
+  delete[] line;
+
+  // after last run
+  runmap[grun].intlumi = gtotallumi;
+  printf("Setting lumi for run %d to %f\n", grun, gtotallumi);
+  gtotaltotallumi += gtotallumi;
+  gtotaltotallumiprescaled += gtotallumiprescaled;
+
+  fclose(fp);
+
+  printf("- %lu runs, gtotaltotallumi=%f, gtotaltotallumiprescaled=%f\n", runmap.size(), gtotaltotallumi, gtotaltotallumiprescaled);
+
+  if (runmap.size() < 1) {
+    printf("- runmap size is %lu, quitting!\n", runmap.size());
+    return 0;
+  }
+
+  //check the total lumi...
+  double tempr{};
+  for (const auto &[r, info] : runmap) {
+    tempr += info.intlumi;
+  }
+  if (fabs(tempr - gtotaltotallumi) / tempr > 0.001) {
+    fprintf(stderr, "tempr=%f and gtotaltotallumi=%f\n", tempr, gtotaltotallumi);
+    return 3;
+  }
+
+  for (int e = 0; e < nwanted; ++e) {
+    // pick a random run, proportional to intlumi
+    double rnd = myrand.Uniform(tempr);
+    run = -1;
+    for (const auto &[r, info] : runmap) {
+      if (rnd < info.intlumi) {
+        run = r;
+        break;
+      }
+      rnd -= info.intlumi;
+    }
+    if (run < 0) { // error
+      return 4;
+    }
+
+    // check the total run lumi...
+    double tempt{};
+    for (const auto &[l, info] : runmap[run].lbnmap) {
+      tempt += info.intlumi;
+    }
+    if (fabs(tempt - runmap[run].intlumi) / tempt > 0.001) {
+      fprintf(stderr, "tempt=%f and runmap[%d].intlumi=%f\n", tempt, run, runmap[run].intlumi);
+      return 5;
+    }
+
+    //p ick a random lbn, proportional to intlumi
+    rnd = myrand.Uniform(tempt);
+    lbn = -1;
+    for (const auto &[l, info] : runmap[run].lbnmap) {
+      if (rnd < info.intlumi) {
+        lbn = l;
+        break;
+      }
+      rnd -= info.intlumi;
+    }
+    if (lbn < 0) { // error
+      return 6;
+    }
+
+    runmap[run].nevtwanted++;
+    runmap[run].lbnmap[lbn].nevtwanted++;
+    printf("- stream %d, run %d, lbn %d, choose %d of out %d\n", stream, run, lbn, runmap[run].lbnmap[lbn].nevtwanted, runmap[run].lbnmap[lbn].nevt);
+  } //loop over nwanted
+
+  for (const auto &[r, rinfo] : runmap) {
+    int totnevt{};
+    float totintlumi{};
+    printf("stream %d, run %d, has %d events and %f/ub, %f intlumi of total, and %d wanted\n", stream,
+      r, rinfo.nevt, rinfo.intlumi, rinfo.intlumi / gtotaltotallumi, rinfo.nevtwanted);
+    for (const auto &[l, linfo] : rinfo.lbnmap) {
+      fprintf(outfile, "stream %d, run %d, lbn %d, has %d events and %f/ub, %f intlumi of run, and %d wanted", stream, r,
+      l, linfo.nevt, linfo.intlumi, linfo.intlumi / rinfo.intlumi, linfo.nevtwanted);
+      if (linfo.nevtwanted > linfo.nevt) {
+        fprintf(outfile, " : WARNING, more than available, will be duplicates!\n");
+      } else {
+        fprintf(outfile,"\n");
+      }
+      totnevt += linfo.nevt;
+      totintlumi += linfo.intlumi;
+    }
+    if (totnevt != rinfo.nevt) {
+      fprintf(stderr, "  XXX events do not agree !!! \n");
+    }
+    if (totintlumi > 0.0 && fabs(totintlumi - rinfo.intlumi) / totintlumi > .001) {
+      fprintf(stderr, "  XXX intlumi does not agree !!! %f %f \n", totintlumi, rinfo.intlumi);
+    }
+  }
+
+  printf("--\n\n");
+
+  return 0;
+}
+
+int main(int argc, const char* argv[])
+{
+  int Nstreams{50};   // number of zerobias streams to make
+  int Nwanted{50000}; // number of events per zerobias stream
+
+  if (argc == 3) {
+    Nstreams = std::atoi(argv[1]);
+    Nwanted = std::atoi(argv[2]);
+  }
+
+  printf("Nstreams=%d, Nwanted=%d\n\n", Nstreams, Nwanted);
+
+  FILE *outfile = fopen("lbn_anal_map.txt", "w");
+
+  for (int i = 0; i < Nstreams; ++i) {
+    int status = lbn_analyze(i, Nwanted, outfile);
+    if (status != 0) {
+      return status;
+    }
+  }
+
+  fclose(outfile);
+
+  return 0;
+}
diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpers.py b/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpers.py
new file mode 100644
index 0000000000000000000000000000000000000000..4abd2753b694bc80cf2a4f3abf0f69e1c10a1979
--- /dev/null
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpers.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+"""Overlay configuration helpers
+
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+"""
+
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+from AthenaConfiguration.ComponentFactory import CompFactory
+
+
+def OverlayMessageSvcCfg(flags):
+    """MessageSvc for overlay"""
+    MessageSvc = CompFactory.MessageSvc
+    acc = ComponentAccumulator()
+    acc.addService(MessageSvc(setError=["HepMcParticleLink"]))
+    return acc
+
+
+def setupOverlayDetectorFlags(configFlags, detectors):
+    """Setup Overlay detector flags"""
+    if not detectors or 'BCM' in detectors or 'ID' in detectors:
+        configFlags.Detector.OverlayBCM = True
+    if not detectors or 'DBM' in detectors or 'ID' in detectors:
+        configFlags.Detector.OverlayDBM = True
+    if not detectors or 'Pixel' in detectors or 'ID' in detectors:
+        configFlags.Detector.OverlayPixel = True
+    if not detectors or 'SCT' in detectors or 'ID' in detectors:
+        configFlags.Detector.OverlaySCT = True
+    if not detectors or 'TRT' in detectors or 'ID' in detectors:
+        configFlags.Detector.OverlayTRT = True
+    if not detectors or 'LAr' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
+        configFlags.Detector.OverlayLAr = True
+    if not detectors or 'Tile' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
+        configFlags.Detector.OverlayTile = True
+    if not detectors or 'L1Calo' in detectors:
+        configFlags.Detector.OverlayL1Calo = not configFlags.Overlay.DataOverlay
+    if not detectors or 'CSC' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlayCSC = True
+    if not detectors or 'MDT' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlayMDT = True
+    if not detectors or 'RPC' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlayRPC = True
+    if not detectors or 'TGC' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlayTGC = True
+    if not detectors or 'sTGC' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlaysTGC = True
+    if not detectors or 'MM' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlayMM = True
+
+
+def accFromFragment(acc_string, flags):
+    """Return initialized accumulator from post include fragment."""
+    parts = acc_string.split('.')
+    if len(parts) < 3:
+        raise ValueError('Post include should be of the form Package.Module.Function')
+
+    function = parts[-1]
+    module = '.'.join(parts[:-1])
+
+    from importlib import import_module
+    loaded_module = import_module(module)
+    function_def = getattr(loaded_module, function)
+
+    return function_def(flags)
diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpersLegacy.py b/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpersLegacy.py
new file mode 100644
index 0000000000000000000000000000000000000000..d49cbdf69cf8160819f4dae74bd8bb67eda82453
--- /dev/null
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpersLegacy.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+"""Overlay legacy configuration helpers
+
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+"""
+
+
+def setupOverlayLegacyDetectorFlags(detectors):
+    """Setup Overlay legacy detector flags"""
+    from AthenaCommon.DetFlags import DetFlags
+    if not detectors:
+        DetFlags.all_setOn()
+        DetFlags.bpipe_setOff()
+        DetFlags.FTK_setOff()
+        return DetFlags
+
+    # Truth is always on
+    DetFlags.Truth_setOn()
+
+    # Other subdetectors
+    if not detectors or 'BCM' in detectors or 'ID' in detectors:
+        DetFlags.BCM_setOn()
+    if not detectors or 'DBM' in detectors or 'ID' in detectors:
+        DetFlags.DBM_setOn()
+    if not detectors or 'Pixel' in detectors or 'ID' in detectors:
+        DetFlags.pixel_setOn()
+    if not detectors or 'SCT' in detectors or 'ID' in detectors:
+        DetFlags.SCT_setOn()
+    if not detectors or 'TRT' in detectors or 'ID' in detectors:
+        DetFlags.TRT_setOn()
+    if not detectors or 'LAr' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
+        DetFlags.LAr_setOn()
+    if not detectors or 'Tile' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
+        DetFlags.Tile_setOn()
+    if not detectors or 'L1Calo' in detectors:
+        DetFlags.LVL1_setOn()
+    if not detectors or 'CSC' in detectors or 'Muon' in detectors:
+        DetFlags.CSC_setOn()
+    if not detectors or 'MDT' in detectors or 'Muon' in detectors:
+        DetFlags.MDT_setOn()
+    if not detectors or 'RPC' in detectors or 'Muon' in detectors:
+        DetFlags.RPC_setOn()
+    if not detectors or 'TGC' in detectors or 'Muon' in detectors:
+        DetFlags.TGC_setOn()
+    if not detectors or 'sTGC' in detectors or 'Muon' in detectors:
+        DetFlags.sTGC_setOn()
+    if not detectors or 'MM' in detectors or 'Muon' in detectors:
+        DetFlags.Micromegas_setOn()
+
+    return DetFlags
diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py b/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py
new file mode 100644
index 0000000000000000000000000000000000000000..6f9ab978101427544a379c302555435ec9d27409
--- /dev/null
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py
@@ -0,0 +1,125 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+import sys
+
+from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags
+from OverlayConfiguration.OverlayHelpers import setupOverlayDetectorFlags, OverlayMessageSvcCfg
+
+
+def defaultOverlayFlags(configFlags, detectors):
+    """Fill default overlay flags"""
+    # TODO: how to autoconfigure those
+    configFlags.GeoModel.Align.Dynamic = False
+    configFlags.Digitization.DoCaloNoise = False
+    configFlags.Digitization.DoInnerDetectorNoise = False
+    configFlags.Digitization.DoDigiTruth = False
+    configFlags.LAr.OFCShapeFolder = "4samples1phase"
+    configFlags.LAr.ROD.DoOFCPileupOptimization = True
+    configFlags.LAr.ROD.nSamples = 4
+    configFlags.LAr.ROD.NumberOfCollisions = 20
+    configFlags.LAr.ROD.UseHighestGainAutoCorr = True
+    configFlags.Tile.BestPhaseFromCOOL = False
+    configFlags.Tile.correctTime = False
+    configFlags.Tile.zeroAmplitudeWithoutDigits = False
+
+    setupOverlayDetectorFlags(configFlags, detectors)
+
+
+def fromRunArgs(runArgs):
+    from AthenaCommon.Configurable import Configurable
+    Configurable.configurableRun3Behavior = True
+
+    from AthenaCommon.Logging import logging
+    logOverlay = logging.getLogger('Overlay')
+    logOverlay.info('****************** STARTING OVERLAY *****************')
+
+    logOverlay.info('**** Transformation run arguments')
+    logOverlay.info(str(runArgs))
+
+    logOverlay.info('**** Setting-up configuration flags')
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags
+    commonRunArgsToFlags(runArgs, ConfigFlags)
+
+    hasRDO_BKGInput = hasattr(runArgs, 'inputRDO_BKGFile')
+    hasBS_SKIMInput = hasattr(runArgs, 'inputBS_SKIMFile')
+
+    if not hasattr(runArgs, 'inputHITSFile'):
+        raise RuntimeError('No input HITS file defined')
+
+    if hasRDO_BKGInput and hasBS_SKIMInput:
+        raise RuntimeError('Both RDO_BKG and BS_SKIM are defined')
+    if not hasRDO_BKGInput and not hasBS_SKIMInput:
+        raise RuntimeError('Define one of RDO_BKG and BS_SKIM file types')
+
+    if hasRDO_BKGInput:
+        logOverlay.info('Running MC+MC overlay')
+        ConfigFlags.Overlay.DataOverlay = False
+        ConfigFlags.Input.isMC = True
+        ConfigFlags.Input.Files = runArgs.inputRDO_BKGFile
+        ConfigFlags.Input.SecondaryFiles = runArgs.inputHITSFile
+    else:
+        logOverlay.info('Running MC+data overlay')
+        ConfigFlags.Overlay.DataOverlay = True
+        ConfigFlags.Input.isMC = False
+        ConfigFlags.Input.Files = runArgs.inputHITSFile
+        ConfigFlags.Input.SecondaryFiles = runArgs.inputBS_SKIMFile
+
+    if hasattr(runArgs, 'outputRDOFile'):
+        if runArgs.outputRDOFile == 'None':
+            ConfigFlags.Output.RDOFileName = ''
+        else:
+            ConfigFlags.Output.RDOFileName = runArgs.outputRDOFile
+    else:
+        raise RuntimeError('No output RDO file defined')
+
+    if hasattr(runArgs, 'outputRDO_SGNLFile'):
+        ConfigFlags.Output.RDO_SGNLFileName = runArgs.outputRDO_SGNLFile
+
+    # Autoconfigure enabled subdetectors
+    if hasattr(runArgs, 'detectors'):
+        detectors = runArgs.detectors
+    else:
+        detectors = None
+
+    # Setup digitization flags
+    from Digitization.DigitizationConfigFlags import digitizationRunArgsToFlags
+    digitizationRunArgsToFlags(runArgs, ConfigFlags)
+
+    # Setup common overlay flags
+    defaultOverlayFlags(ConfigFlags, detectors)
+
+    # Pre-exec
+    if hasattr(runArgs, 'preExec') and runArgs.preExec != 'NONE' and runArgs.preExec:
+        for cmd in runArgs.preExec:
+            exec(cmd)
+
+    # Pre-include
+    if hasattr(runArgs, 'preInclude') and runArgs.preInclude:
+        raise ValueError('preInclude not supported')
+
+    # TODO not parsed yet:
+    # '--fSampltag'
+    # '--triggerConfig'
+
+    # Lock flags
+    ConfigFlags.lock()
+
+    # Main overlay steering
+    from OverlayConfiguration.OverlaySteering import OverlayMainCfg
+    acc = OverlayMainCfg(ConfigFlags)
+    acc.merge(OverlayMessageSvcCfg(ConfigFlags))
+
+    # Post-include
+    if hasattr(runArgs, 'postInclude') and runArgs.postInclude:
+        from OverlayConfiguration.OverlayHelpers import accFromFragment
+        for fragment in runArgs.postInclude:
+            acc.merge(accFromFragment(fragment, ConfigFlags))
+
+    # Post-exec
+    if hasattr(runArgs, 'postExec') and runArgs.postExec != 'NONE' and runArgs.postExec:
+        for cmd in runArgs.postExec:
+            exec(cmd)
+
+    # Run the final accumulator
+    sc = acc.run()
+    sys.exit(not sc.isSuccess())
diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py b/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py
index 73bc0dff6b12920d0d472cc3197a9bdd8038b124..9c7db234860a37a1804c9a7fba374c21c3fdceae 100644
--- a/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py
@@ -8,6 +8,7 @@ from argparse import ArgumentParser
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
+from OverlayConfiguration.OverlayHelpers import setupOverlayDetectorFlags
 
 
 def JobOptsDumperCfg(flags):
@@ -18,14 +19,6 @@ def JobOptsDumperCfg(flags):
     return acc
 
 
-def TestMessageSvcCfg(flags):
-    """MessageSvc for overlay"""
-    MessageSvc = CompFactory.MessageSvc
-    acc = ComponentAccumulator()
-    acc.addService(MessageSvc(setError=["HepMcParticleLink"]))
-    return acc
-
-
 def CommonTestArgumentParser(prog):
     """Common overlay test argument parser"""
     parser = ArgumentParser(prog=prog)
@@ -46,38 +39,6 @@ def CommonTestArgumentParser(prog):
     return parser
 
 
-def setupOverlayTestDetectorFlags(configFlags, detectors):
-    """Setup Overlay detector flags"""
-    if not detectors or 'BCM' in detectors or 'ID' in detectors:
-        configFlags.Detector.OverlayBCM = True
-    if not detectors or 'DBM' in detectors or 'ID' in detectors:
-        configFlags.Detector.OverlayDBM = True
-    if not detectors or 'Pixel' in detectors or 'ID' in detectors:
-        configFlags.Detector.OverlayPixel = True
-    if not detectors or 'SCT' in detectors or 'ID' in detectors:
-        configFlags.Detector.OverlaySCT = True
-    if not detectors or 'TRT' in detectors or 'ID' in detectors:
-        configFlags.Detector.OverlayTRT = True
-    if not detectors or 'LAr' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
-        configFlags.Detector.OverlayLAr = True
-    if not detectors or 'Tile' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
-        configFlags.Detector.OverlayTile = True
-    if not detectors or 'L1Calo' in detectors:
-        configFlags.Detector.OverlayL1Calo = not configFlags.Overlay.DataOverlay
-    if not detectors or 'CSC' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlayCSC = True
-    if not detectors or 'MDT' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlayMDT = True
-    if not detectors or 'RPC' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlayRPC = True
-    if not detectors or 'TGC' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlayTGC = True
-    if not detectors or 'sTGC' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlaysTGC = True
-    if not detectors or 'MM' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlayMM = True
-
-
 def defaultTestFlags(configFlags, args):
     """Fill default overlay flags for testing"""
     configFlags.GeoModel.Align.Dynamic = False
@@ -118,7 +79,7 @@ def defaultTestFlags(configFlags, args):
     if args.outputSig:
         configFlags.Output.RDO_SGNLFileName = args.outputSig
 
-    setupOverlayTestDetectorFlags(configFlags, args.detectors if 'detectors' in args else None)
+    setupOverlayDetectorFlags(configFlags, args.detectors if 'detectors' in args else None)
 
 
 def postprocessAndLockFlags(configFlags, args):
diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlayTransformHelpers.py b/Simulation/Overlay/OverlayConfiguration/python/OverlayTransformHelpers.py
index a0cbaa1dd8b956ac2641c07a5409d3106f326141..f2634eaeb230eba93270599cdbf8260e6431ab2b 100644
--- a/Simulation/Overlay/OverlayConfiguration/python/OverlayTransformHelpers.py
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlayTransformHelpers.py
@@ -3,13 +3,17 @@
 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
 
-from PyJobTransforms.trfArgClasses import argBSFile, argFactory, argRDOFile, argSubstep
+from PyJobTransforms.trfArgClasses import argBSFile, argFactory, argRDOFile, argString, argSubstep
 from PyJobTransforms.trfExe import athenaExecutor
 
 
 def addOverlayTrfArgs(parser):
     """Add common overlay command-line parser arguments."""
     parser.defineArgGroup('Overlay', 'Common Overlay Options')
+    parser.add_argument('--detectors',
+                        type=argFactory(argString),
+                        help='Detectors autoconfiguration string',
+                        group='Overlay')
     parser.add_argument('--outputRDO_SGNLFile', nargs='+',
                         type=argFactory(argRDOFile, io='output'),
                         help='The output RDO file of the MC signal alone',
@@ -52,6 +56,7 @@ def addOverlayArguments(parser):
 def addOverlaySubstep(executor_set, in_reco_chain=False):
     executor = athenaExecutor(name='Overlay',
                               skeletonFile='OverlayConfiguration/skeleton_LegacyOverlay.py',
+                              skeletonCA='OverlayConfiguration.OverlaySkeleton',
                               substep='overlay',
                               tryDropAndReload=False,
                               perfMonFile='ntuple.pmon.gz',
diff --git a/Simulation/Overlay/OverlayConfiguration/scripts/Overlay_tf.py b/Simulation/Overlay/OverlayConfiguration/scripts/Overlay_tf.py
index 6723fc838a045fdde52d251f15698767296ffb01..73db14e41a8541511e7ddd935866425f9fd17d98 100755
--- a/Simulation/Overlay/OverlayConfiguration/scripts/Overlay_tf.py
+++ b/Simulation/Overlay/OverlayConfiguration/scripts/Overlay_tf.py
@@ -19,7 +19,7 @@ msg.info('logging set in %s', sys.argv[0])
 
 
 # Prodsys hack...
-ListOfDefaultPositionalKeys = ['--AMIConfig', '--AMITag', '--AddCaloDigi', '--CA', '--DBRelease', '--PileUpPremixing', '--argJSON', '--asetup', '--athena', '--athenaMPEventsBeforeFork', '--athenaMPMergeTargetSize', '--athenaMPStrategy', '--athenaMPUseEventOrders', '--athenaopts', '--attempt', '--beamType', '--checkEventCount', '--command', '--conditionsTag', '--digiRndmSvc', '--digiSeedOffset1', '--digiSeedOffset2', '--digiSteeringConf', '--doAllNoise', '--dumpJSON', '--dumpPickle', '--env', '--eventAcceptanceEfficiency', '--eventService', '--execOnly', '--fSampltag', '--fileValidation', '--geometryVersion', '--ignoreErrors', '--ignoreFiles',
+ListOfDefaultPositionalKeys = ['--AMIConfig', '--AMITag', '--AddCaloDigi', '--CA', '--DBRelease', '--PileUpPremixing', '--argJSON', '--asetup', '--athena', '--athenaMPEventsBeforeFork', '--athenaMPMergeTargetSize', '--athenaMPStrategy', '--athenaMPUseEventOrders', '--athenaopts', '--attempt', '--beamType', '--checkEventCount', '--command', '--conditionsTag', '--detectors', '--digiRndmSvc', '--digiSeedOffset1', '--digiSeedOffset2', '--digiSteeringConf', '--doAllNoise', '--dumpJSON', '--dumpPickle', '--env', '--eventAcceptanceEfficiency', '--eventService', '--execOnly', '--fSampltag', '--fileValidation', '--geometryVersion', '--ignoreErrors', '--ignoreFiles',
                                '--ignorePatterns', '--imf', '--inputBS_SKIMFile', '--inputFileValidation', '--inputHITSFile', '--inputRDO_BKGFile', '--jobid', '--maxEvents', '--multiprocess', '--multithreaded', '--outputFileValidation', '--outputRDOFile', '--outputRDO_FILTFile', '--outputRDO_SGNLFile', '--parallelFileValidation', '--postExec', '--postInclude', '--preExec', '--preInclude', '--reportName', '--reportType', '--runNumber', '--samplingFractionDbTag', '--sharedWriter', '--showGraph', '--showPath', '--showSteps', '--skipEvents', '--steering', '--taskid', '--tcmalloc', '--triggerConfig', '--valgrind', '--valgrindDefaultOpts', '--valgrindExtraOpts']
 
 
diff --git a/Simulation/Overlay/OverlayConfiguration/share/skeleton_LegacyOverlay.py b/Simulation/Overlay/OverlayConfiguration/share/skeleton_LegacyOverlay.py
index 39a6f8798a1053050875b7c53efd0f3c54a354d9..63e701386fde33fdd259143f59aef15558d26407 100644
--- a/Simulation/Overlay/OverlayConfiguration/share/skeleton_LegacyOverlay.py
+++ b/Simulation/Overlay/OverlayConfiguration/share/skeleton_LegacyOverlay.py
@@ -46,8 +46,11 @@ if not hasRDO_BKGInput and not hasBS_SKIMInput:
 
 # Set overlay specifics
 globalflags.isOverlay.set_Value_and_Lock(True)
+# Force MT mode
+overlayFlags.isOverlayMT.set_Value_and_Lock(True)
 if hasRDO_BKGInput:
     logOverlay.info('Running MC+MC overlay')
+    overlayFlags.isDataOverlay.set_Value_and_Lock(False)
     globalflags.DataSource.set_Value_and_Lock('geant4')
 else:
     logOverlay.info('Running MC+data overlay')
@@ -59,10 +62,6 @@ else:
     from AthenaCommon.BeamFlags import jobproperties
     jobproperties.Beam.beamType.set_Value_and_Lock('collisions')
 
-overlayFlags.isDataOverlay.set_Value_and_Lock(False)
-# TODO: temporarily force MT
-overlayFlags.isOverlayMT.set_Value_and_Lock(True)
-
 # Common athena flags
 if hasattr(overlayArgs, 'skipEvents'):
     athenaCommonFlags.SkipEvents.set_Value_and_Lock(overlayArgs.skipEvents)
@@ -95,6 +94,10 @@ if hasattr(overlayArgs, 'geometryVersion'):
     globalflags.DetDescrVersion.set_Value_and_Lock(overlayArgs.geometryVersion)
 if hasattr(overlayArgs, 'conditionsTag'):
     globalflags.ConditionsTag.set_Value_and_Lock(overlayArgs.conditionsTag)
+if hasattr(overlayArgs, 'detectors'):
+    overlayDetectors = overlayArgs.detectors
+else:
+    overlayDetectors = None
 
 # Digitization flags
 if hasattr(overlayArgs, 'digiSeedOffset1'):
@@ -132,17 +135,13 @@ if 'DetFlags' in dir():
     logOverlay.warning(
         'DetFlags already defined! This means DetFlags should have been fully configured already..')
 else:
-    from AthenaCommon.DetFlags import DetFlags
-    DetFlags.all_setOn()
-    DetFlags.bpipe_setOff()
-    DetFlags.FTK_setOff()
+    from OverlayConfiguration.OverlayHelpersLegacy import setupOverlayLegacyDetectorFlags
+    DetFlags = setupOverlayLegacyDetectorFlags(overlayDetectors)
 
-    if hasattr(overlayArgs, 'triggerConfig') and overlayArgs.triggerConfig == 'NONE':
-        DetFlags.LVL1_setOff()
-    else:
-        DetFlags.LVL1_setOn()
+if hasattr(overlayArgs, 'triggerConfig') and overlayArgs.triggerConfig == 'NONE':
+    DetFlags.LVL1_setOff()
 
-    DetFlags.digitize.LVL1_setOff()
+DetFlags.digitize.LVL1_setOff()
 
 from AtlasGeoModel.MuonGMJobProperties import MuonGeometryFlags
 if not MuonGeometryFlags.hasCSC():
diff --git a/Simulation/Overlay/OverlayConfiguration/test/OverlayTest.py b/Simulation/Overlay/OverlayConfiguration/test/OverlayTest.py
index a238ed6196ae245853029745a33043f45a1329ac..e166ed0bed144ea0d06ab78fd9407b98fd3a42fc 100755
--- a/Simulation/Overlay/OverlayConfiguration/test/OverlayTest.py
+++ b/Simulation/Overlay/OverlayConfiguration/test/OverlayTest.py
@@ -10,9 +10,10 @@ import sys
 from AthenaCommon.Configurable import Configurable
 from AthenaConfiguration.AllConfigFlags import ConfigFlags
 
+from OverlayConfiguration.OverlayHelpers import OverlayMessageSvcCfg
 from OverlayConfiguration.OverlaySteering import OverlayMainCfg
 from OverlayConfiguration.OverlayTestHelpers import \
-    CommonTestArgumentParser, JobOptsDumperCfg, TestMessageSvcCfg, \
+    CommonTestArgumentParser, JobOptsDumperCfg, \
     defaultTestFlags, postprocessAndLockFlags, printAndRun
 
 # Set up logging and new style config
@@ -49,7 +50,7 @@ if args.profile:
     from PerfMonVTune.PerfMonVTuneConfig import VTuneProfilerServiceCfg
     acc.merge(VTuneProfilerServiceCfg(ConfigFlags))
 acc.merge(JobOptsDumperCfg(ConfigFlags))
-acc.merge(TestMessageSvcCfg(ConfigFlags))
+acc.merge(OverlayMessageSvcCfg(ConfigFlags))
 
 # dump pickle
 with open("ConfigOverlay.pkl", "wb") as f:
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar.sh
index c1d908125d5f34263a55f9b14360069f2ed7ee6c..b1480bdc49eb5da6da9eacc10dd5995992313b17 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -40,14 +40,26 @@ Overlay_tf.py \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_BCM.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_BCM.sh
index 53e048a0258154c4ecd585e0366f51002232a570..8fa0c0abbb7086cfcd5405be1c5f0fcf5b91e27b 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_BCM.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_BCM.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors BCM \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.BCMOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors BCM \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.BCMOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py BCM -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors BCM \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_L1Calo.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_L1Calo.sh
index 4523f071ca8b7c4a6a2779be7b4c8c226e63e139..6772d7efc6a58cce88bd6864003b981457ac7f5e 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_L1Calo.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_L1Calo.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors L1Calo \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:EventOverlayJobTransforms/preInclude.L1CaloOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors L1Calo \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:EventOverlayJobTransforms/preInclude.L1CaloOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py L1Calo -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors L1Calo \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_LAr.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_LAr.sh
index 78047794dd903a1cee9ecaaefb17f6b35bff0950..b238fddc3d554ddb28de9abd8afbd99c6a49f497 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_LAr.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_LAr.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors LAr \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.LArOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors LAr \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.LArOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py LAr -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors LAr \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Muon.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Muon.sh
index 7690e142d31afd85f9193f968cf91d82a2affa04..5f5ee538b521f78e7a64841e49940fd9e23b27bd 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Muon.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Muon.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors Muon \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.MuonOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors Muon \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.MuonOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py Muon -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors Muon \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Pixel.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Pixel.sh
index 1a02f0bb8e5393c2e33a72c1ec406284d52f663d..50fa523c851510d1f14c6292b6f8815cbf367732 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Pixel.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Pixel.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors Pixel \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.PixelOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors Pixel \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.PixelOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py Pixel -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors Pixel \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_SCT.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_SCT.sh
index 2bd7e73d2fee296bbde3677a6c1576538aef5f20..0f9faa41e4167e45e33ce96de171208b18dfe6b0 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_SCT.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_SCT.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors SCT \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.SCTOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors SCT \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.SCTOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py SCT -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors SCT \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_TRT.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_TRT.sh
index 1d06f36adcde9a386e4f29477927628adb74a58c..22aeb9c17279d98dc3660ce36e9039bfd40db4a8 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_TRT.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_TRT.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors TRT \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.TRTOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors TRT \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.TRTOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py TRT -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors TRT \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Tile.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Tile.sh
index e65aa301c9c236b63a6b7a4254442f13d93abeb9..67a83e5458d0decac72300207aee46f557291508 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Tile.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Tile.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors Tile \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.TileOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors Tile \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.TileOnlyConfig.py,SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py Tile -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors Tile \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Truth.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Truth.sh
index 220f7eccf2490a7bc539570a493daf7439ab32c0..ca0198b67ee7cd38959f6f46131f36b1f8dcf3ce 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Truth.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_Truth.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # art-description: MC+MC Overlay with MT support, config test
 # art-type: grid
@@ -18,6 +18,7 @@ set -o pipefail
 events=2
 
 Overlay_tf.py \
+--detectors Truth \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -25,11 +26,11 @@ Overlay_tf.py \
 --conditionsTag OFLCOND-MC16-SDR-20 \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False \
 --athenaopts '"--config-only=ConfigLegacy.pkl"'
 
 Overlay_tf.py \
+--detectors Truth \
 --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
 --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
 --outputRDOFile legacyMcOverlayRDO.pool.root \
@@ -38,18 +39,30 @@ Overlay_tf.py \
 --geometryVersion ATLAS-R2-2016-01-00-01 \
 --preExec 'from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False);' \
 --postExec 'job+=CfgMgr.JobOptsDumperAlg(FileName="OverlayLegacyConfig.txt");' \
---preInclude 'Overlay:SimulationJobOptions/preInclude.TruthOnlyConfig.py' \
 --imf False
 
 rc=$?
-echo "art-result: $rc configLegacy"
 mv log.Overlay log.OverlayLegacy
+echo "art-result: $rc configLegacy"
 
 rc2=-9999
 if [ $rc -eq 0 ]
 then
-    OverlayTest.py Truth -t 1 -n $events 2>&1 | tee log.OverlayTest
+    Overlay_tf.py \
+    --CA \
+    --detectors Truth \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+    --outputRDOFile mcOverlayRDO.pool.root \
+    --maxEvents $events \
+    --conditionsTag OFLCOND-MC16-SDR-20 \
+    --geometryVersion ATLAS-R2-2016-01-00-01 \
+    --postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+    --postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+    --imf False \
+    --athenaopts="--threads=1"
     rc2=$?
+    mv log.Overlay log.OverlayTest
 fi
 echo  "art-result: $rc2 configNew"
 
diff --git a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_sequential.sh b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_sequential.sh
index 771c1e3c28e769939aa61c30b53bc51f79a97489..0a4ea5eb980baced36e86e182178d36a43579180 100755
--- a/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_sequential.sh
+++ b/Simulation/Tests/OverlayTests/test/test_MCOverlay_ConfigTest_ttbar_sequential.sh
@@ -12,9 +12,17 @@
 # art-output: *.pkl
 # art-output: *Config.txt
 
-set -o pipefail
-
-OverlayTest.py -n 10 -t 0 2>&1 | tee log.OverlayTest
+Overlay_tf.py \
+--CA \
+--inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+--inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+--outputRDOFile mcOverlayRDO.pool.root \
+--maxEvents 10 \
+--conditionsTag OFLCOND-MC16-SDR-20 \
+--geometryVersion ATLAS-R2-2016-01-00-01 \
+--postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+--postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+--imf False
 
 rc=$?
 echo "art-result: $rc overlay"
diff --git a/Simulation/Tests/OverlayTestsMT/test/test_MCOverlay_MT_ttbar_8threads_NewConfig.sh b/Simulation/Tests/OverlayTestsMT/test/test_MCOverlay_MT_ttbar_8threads_NewConfig.sh
index bdfc98b342b9c9aa1343a8f0cd5ebec4e7ad7581..4f690fbb616d971e5896bdb42ad7892ee7169b9c 100755
--- a/Simulation/Tests/OverlayTestsMT/test/test_MCOverlay_MT_ttbar_8threads_NewConfig.sh
+++ b/Simulation/Tests/OverlayTestsMT/test/test_MCOverlay_MT_ttbar_8threads_NewConfig.sh
@@ -13,9 +13,20 @@
 # art-output: *.pkl
 # art-output: *Config.txt
 
-set -o pipefail
+export ATHENA_CORE_NUMBER=8
 
-OverlayTest.py -n 100 -t 8 2>&1 | tee log.OverlayTest
+Overlay_tf.py \
+--CA \
+--multithreaded \
+--inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+--inputRDO_BKGFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/OverlayMonitoringRTT/PileupPremixing/22.0/v4/RDO.merged-pileup-MT.100events.pool.root \
+--outputRDOFile MC_plus_MC.RDO.pool.root \
+--maxEvents 50 --skipEvents 10 --digiSeedOffset1 511 --digiSeedOffset2 727 \
+--conditionsTag OFLCOND-MC16-SDR-20 \
+--geometryVersion ATLAS-R2-2016-01-00-01 \
+--postInclude 'OverlayConfiguration.OverlayTestHelpers.JobOptsDumperCfg' \
+--postExec 'with open("ConfigOverlay.pkl", "wb") as f: acc.store(f)' \
+--imf False
 
 rc=$?
 echo "art-result: $rc overlay"
diff --git a/TileCalorimeter/TileG4/TileAncillary/MinBiasScintillator/python/MinBiasScintillatorConfig.py b/TileCalorimeter/TileG4/TileAncillary/MinBiasScintillator/python/MinBiasScintillatorConfig.py
index ad1193366c7515a9eccc907a2ceb3f79d01a4d7f..5701f69bd18fdd2e6fdbec1a711ff55a9b1e560c 100644
--- a/TileCalorimeter/TileG4/TileAncillary/MinBiasScintillator/python/MinBiasScintillatorConfig.py
+++ b/TileCalorimeter/TileG4/TileAncillary/MinBiasScintillator/python/MinBiasScintillatorConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaCommon import CfgMgr
 
@@ -9,9 +9,11 @@ def getMinBiasScintillatorSD(name="MinBiasScintillatorSD", **kwargs):
     bare_collection_name = "MBTSHits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "MBTSHits"
+    region = "CALO"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     kwargs.setdefault("LogicalVolumeNames", ["LArMgr::MBTS1", "LArMgr::MBTS2"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
     from G4AtlasApps.SimFlags import simFlags
diff --git a/TileCalorimeter/TileG4/TileAncillary/MinBiasScintillator/python/MinBiasScintillatorToolConfig.py b/TileCalorimeter/TileG4/TileAncillary/MinBiasScintillator/python/MinBiasScintillatorToolConfig.py
index eff199174cf5f14e6795d01c110d7538fd0e3a21..def341b6f0a31aa02be9a41b9b72ead2b9d30505 100644
--- a/TileCalorimeter/TileG4/TileAncillary/MinBiasScintillator/python/MinBiasScintillatorToolConfig.py
+++ b/TileCalorimeter/TileG4/TileAncillary/MinBiasScintillator/python/MinBiasScintillatorToolConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from ISF_Algorithms.collection_merger_helpersNew import CollectionMergerCfg
 from AthenaConfiguration.ComponentFactory import CompFactory
@@ -9,10 +9,13 @@ def MinBiasScintillatorSDCfg(ConfigFlags, name="MinBiasScintillatorSD", **kwargs
     bare_collection_name = "MBTSHits"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "MBTSHits"
+    region = "CALO"
 
-    result, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name,
-                                                              mergeable_collection_suffix,
-                                                              merger_input_property)
+    result, hits_collection_name = CollectionMergerCfg(ConfigFlags,
+                                                       bare_collection_name,
+                                                       mergeable_collection_suffix,
+                                                       merger_input_property,
+                                                       region)
     kwargs.setdefault("LogicalVolumeNames", ["LArMgr::MBTS1", "LArMgr::MBTS2"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
 
@@ -20,6 +23,6 @@ def MinBiasScintillatorSDCfg(ConfigFlags, name="MinBiasScintillatorSD", **kwargs
         kwargs.setdefault("DeltaTHit", [1])
         kwargs.setdefault("DoTOFCorrection", False)
 
-    result.setPrivateTools( MinBiasScintillatorSDTool(name, **kwargs) ) 
+    result.setPrivateTools( MinBiasScintillatorSDTool(name, **kwargs) )
 
     return result
diff --git a/TileCalorimeter/TileG4/TileGeoG4SD/python/TileGeoG4SDConfig.py b/TileCalorimeter/TileG4/TileGeoG4SD/python/TileGeoG4SDConfig.py
index 9f53ee840cdeee5d3fd02d8ac8543b2777f4d2a8..6fcc691780e44629fb9180f162efba3133e60721 100644
--- a/TileCalorimeter/TileG4/TileGeoG4SD/python/TileGeoG4SDConfig.py
+++ b/TileCalorimeter/TileG4/TileGeoG4SD/python/TileGeoG4SDConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from AthenaCommon import CfgMgr
 
@@ -9,9 +9,11 @@ def getTileGeoG4SD(name="TileGeoG4SD", **kwargs):
     bare_collection_name = "TileHitVec"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "TileHits"
+    region = "CALO"
     hits_collection_name = generate_mergeable_collection_name(bare_collection_name,
                                                               mergeable_collection_suffix,
-                                                              merger_input_property)
+                                                              merger_input_property,
+                                                              region)
     kwargs.setdefault("LogicalVolumeNames", ["Tile::Scintillator"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
     return CfgMgr.TileGeoG4SDTool(name, **kwargs)
diff --git a/TileCalorimeter/TileG4/TileGeoG4SD/python/TileGeoG4SDToolConfig.py b/TileCalorimeter/TileG4/TileGeoG4SD/python/TileGeoG4SDToolConfig.py
index 95a634d93bfadc6bcf092d1f5385b8579db07a38..44a5949671bd7a0a2914de93053baaf2e15d515d 100644
--- a/TileCalorimeter/TileG4/TileGeoG4SD/python/TileGeoG4SDToolConfig.py
+++ b/TileCalorimeter/TileG4/TileGeoG4SD/python/TileGeoG4SDToolConfig.py
@@ -10,11 +10,15 @@ def TileGeoG4SDCfg(ConfigFlags, name="TileGeoG4SD", **kwargs):
     bare_collection_name = "TileHitVec"
     mergeable_collection_suffix = "_G4"
     merger_input_property = "TileHits"
+    region = "CALO"
 
-    result, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name, mergeable_collection_suffix, merger_input_property)
+    result, hits_collection_name = CollectionMergerCfg(ConfigFlags, bare_collection_name, mergeable_collection_suffix, merger_input_property, region)
     kwargs.setdefault("LogicalVolumeNames", ["Tile::Scintillator"])
     kwargs.setdefault("OutputCollectionNames", [hits_collection_name])
 
+    result.merge(TileGeoG4SDCalcCfg(ConfigFlags))
+    kwargs.setdefault("TileCalculator", result.getService("TileGeoG4SDCalc") )
+
     result.setPrivateTools( TileGeoG4SDTool(name, **kwargs)  )
     return result
 
@@ -23,7 +27,7 @@ def TileCTBGeoG4SDCfg(ConfigFlags, name="TileCTBGeoG4SD", **kwargs):
     kwargs.setdefault("LogicalVolumeNames", ["Tile::Scintillator"])
     kwargs.setdefault("OutputCollectionNames", ["TileHitVec"])
 
-    result = TileGeoG4SDCalcCfg(ConfigFlags)
+    result = TileCTBGeoG4SDCalcCfg(ConfigFlags)
     kwargs.setdefault("TileCalculator", result.getService("TileCTBGeoG4SDCalc") )
 
     result.setPrivateTools( TileGeoG4SDTool(name, **kwargs) )
diff --git a/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py b/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py
index 95c9dfcea82efc97fc3a814627e06e82ecb3cc58..6967fe25bc837d94634ec513a3f63773369b93f7 100644
--- a/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py
+++ b/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py
@@ -831,7 +831,7 @@ collection_merger_alg = CfgGetter.getAlgorithm('ISF_CollectionMerger')
 
 SimKernel = CfgGetter.getAlgorithm(ISF_Flags.Simulator.KernelName())
 
-if ISF_Flags.HITSMergingRequired():
+if ISF_Flags.HITSMergingRequired.anyOn():
     topSequence += collection_merger_alg
 
 #--------------------------------------------------------------
diff --git a/Tools/PROCTools/data/master_q431_AOD_digest.ref b/Tools/PROCTools/data/master_q431_AOD_digest.ref
index 83524e312f5e124fb56c41ca175df124a9e61386..a32d623da9412ea1d858ef3d3a7ab8d7e6334e2a 100644
--- a/Tools/PROCTools/data/master_q431_AOD_digest.ref
+++ b/Tools/PROCTools/data/master_q431_AOD_digest.ref
@@ -1,23 +1,23 @@
          run       event       nTopo   nIdTracks       nJets      nMuons
       330470  1183722158           1           0           0           0
       330470  1183722342         394         415          18           0
-      330470  1183727953         532         569          11           4
-      330470  1183732647         467         452          12           1
-      330470  1183733040         381         285           6           1
+      330470  1183727953         532         570          13           4
+      330470  1183732647         467         453          12           1
+      330470  1183733040         381         286           6           1
       330470  1183734651         361         363          14           3
-      330470  1183735332         406         372           9           1
-      330470  1183736475         741         654          15           2
+      330470  1183735332         406         372          10           1
+      330470  1183736475         741         654          15           3
       330470  1183738728           1           0           0           0
-      330470  1183738949         368         420           9           1
+      330470  1183738949         368         421           9           1
       330470  1183742489         152         125           2           1
       330470  1183743040         285         305           5           0
-      330470  1183746343         492         465          14           0
+      330470  1183746343         492         465          12           0
       330470  1183746710           6           0           0           0
       330470  1183751782         239         235           4           0
       330470  1183752624         347         342           8           2
       330470  1183753006         357         377          11           3
       330470  1183754806         470         406          15           0
-      330470  1183769295         342         317           8           1
+      330470  1183769295         342         318           8           1
       330470  1183769939         348         340          11           3
       330470  1183773832         307         198           7           0
       330470  1183775209          57           0           0           0
diff --git a/Tracking/TrkAlignment/TrkAlignEvent/TrkAlignEvent/Residual.h b/Tracking/TrkAlignment/TrkAlignEvent/TrkAlignEvent/Residual.h
index 0dc53fab27fff0be634848a8efe1de52993fef4a..4e68009c6cc404a5ef273d4a7cb16dcbc05f8d47 100644
--- a/Tracking/TrkAlignment/TrkAlignEvent/TrkAlignEvent/Residual.h
+++ b/Tracking/TrkAlignment/TrkAlignEvent/TrkAlignEvent/Residual.h
@@ -25,7 +25,7 @@ namespace Trk {
 
   public:
     Residual(AlignResidualType resType, AlignMesType mesType, ParamDefs param, double residual, double errSq);
-    ~Residual();
+    ~Residual() = default;
 
     /** returns residual type */
     AlignResidualType residualType() const;
diff --git a/Tracking/TrkAlignment/TrkAlignEvent/src/Residual.cxx b/Tracking/TrkAlignment/TrkAlignEvent/src/Residual.cxx
index 93732b234606a4ed139c3b70efaa2bb290d57c6c..79a23f8c02b3b54545c1875e4b8bc78c657b9793 100644
--- a/Tracking/TrkAlignment/TrkAlignEvent/src/Residual.cxx
+++ b/Tracking/TrkAlignment/TrkAlignEvent/src/Residual.cxx
@@ -16,10 +16,4 @@ namespace Trk {
   {
     
   }
-  
-  Residual::~Residual()
-  {
-    
-  }
-  
 }
diff --git a/Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h b/Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h
index b9c120e2cb2b1862c74d6acd515689562349652c..8391f11f04ee60efbf61e495aa6914efcd6bfa11 100755
--- a/Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h
+++ b/Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h
@@ -38,10 +38,10 @@ namespace Trk{
   public:
     // public because of DataPool
     SpacePoint();
-    SpacePoint(const SpacePoint &);
-    SpacePoint &operator=(const SpacePoint &);
+    SpacePoint(const SpacePoint &) = default;
+    SpacePoint &operator=(const SpacePoint &) = default;
     // Destructor:
-    virtual ~SpacePoint();
+    virtual ~SpacePoint() = default;
 	
     ///////////////////////////////////////////////////////////////////
     // Const methods:
@@ -89,7 +89,7 @@ namespace Trk{
     virtual std::ostream& dump( std::ostream& out ) const override=0 ;
 
   protected:
-    const std::pair<const PrepRawData*, const PrepRawData*> *m_clusList;
+    std::pair<const PrepRawData*, const PrepRawData*> m_clusList;
     std::pair<IdentifierHash, IdentifierHash> m_elemIdList;
     Amg::Vector3D m_position; 
     Amg::MatrixX  m_globalCovariance;
@@ -117,8 +117,7 @@ namespace Trk{
 
   inline const std::pair<const PrepRawData*, const PrepRawData*>& SpacePoint::clusterList() const
     {
-      assert(m_clusList!=0);
-      return *m_clusList;
+      return m_clusList;
     }
 
   inline double SpacePoint::eta(double z0) const
diff --git a/Tracking/TrkEvent/TrkSpacePoint/src/SpacePoint.cxx b/Tracking/TrkEvent/TrkSpacePoint/src/SpacePoint.cxx
index 5df5034ef909f7302c0b91548502b8004cf5fb90..429d9a6b8b02424c028f8c7b8bc14ac442db9061 100755
--- a/Tracking/TrkEvent/TrkSpacePoint/src/SpacePoint.cxx
+++ b/Tracking/TrkEvent/TrkSpacePoint/src/SpacePoint.cxx
@@ -23,18 +23,13 @@
 namespace Trk
 {
   
-  // Destructor:
-  SpacePoint::~SpacePoint()
-  {
-    delete m_clusList;
-  }
   
   // ------------------------------------------------------------------
   
   // Default constructor
   SpacePoint::SpacePoint()
     :
-    m_clusList(nullptr),
+    m_clusList(nullptr, nullptr),
     m_elemIdList(0,0),
     m_position(),
     m_globalCovariance()
@@ -43,42 +38,6 @@ namespace Trk
   
   // ------------------------------------------------------------------
   
-  // copy constructor
-  SpacePoint::SpacePoint(const SpacePoint & SP) :
-    Trk::MeasurementBase(SP)
-  {
-    m_elemIdList = SP.m_elemIdList;
-    m_position = SP.m_position;
-    if (SP.m_clusList){
-      m_clusList = new std::pair<const PrepRawData*, const PrepRawData*>(*SP.m_clusList);
-    } else {
-      m_clusList=nullptr;
-    }    
-    m_globalCovariance = SP.m_globalCovariance; 
-  }
-  
-  // ------------------------------------------------------------------
-  
-  //assignment operator
-  SpacePoint& SpacePoint::operator=(const SpacePoint& SP)
-  {
-    if (&SP !=this) 
-    {
-			Trk::MeasurementBase::operator=(SP);
-			delete m_clusList;
-			m_elemIdList = SP.m_elemIdList;
-			m_position = SP.m_position;
-			if (SP.m_clusList){
-			  m_clusList = new std::pair<const PrepRawData*, const PrepRawData*>(*SP.m_clusList);
-			}  else {
-        m_clusList=nullptr;
-      }  
-			m_globalCovariance = SP.m_globalCovariance; 
-    }
-    return *this;
-  }
-  
-  // ------------------------------------------------------------------
   
   /**Overload of << operator for both, MsgStream and std::ostream for debug output*/ 
   MsgStream& operator << ( MsgStream& sl, const Trk::SpacePoint& spacePoint)
@@ -113,8 +72,8 @@ namespace Trk
 
   const Surface& SpacePoint::associatedSurface() const
     { 
-      assert(m_clusList->first->detectorElement()); 
-      return m_clusList->first->detectorElement()->surface(); 
+      assert(m_clusList.first->detectorElement());
+      return m_clusList.first->detectorElement()->surface();
     }
 
 } // end of namespace
diff --git a/Tracking/TrkExtrapolation/TrkExInterfaces/TrkExInterfaces/IMaterialEffectsUpdator.h b/Tracking/TrkExtrapolation/TrkExInterfaces/TrkExInterfaces/IMaterialEffectsUpdator.h
index a2aae99c34fe19c8d37adbeaedcda384411df0a2..3d8fb19346f4d44a1af9c806780780403bab3e37 100755
--- a/Tracking/TrkExtrapolation/TrkExInterfaces/TrkExInterfaces/IMaterialEffectsUpdator.h
+++ b/Tracking/TrkExtrapolation/TrkExInterfaces/TrkExInterfaces/IMaterialEffectsUpdator.h
@@ -84,8 +84,8 @@ public:
   virtual std::unique_ptr<ICache> getCache() const = 0;
 
   /** Updator interface (full update for a layer):
-    The parameters are given as a pointer, they are delete inside the update
-    method. Layer-based material update
+    The parameters are given as a pointer owned by the caller.
+    The returned ptr is owned by the caller.
     */
   virtual const TrackParameters* update(
     ICache& icache,
@@ -132,8 +132,8 @@ public:
     MaterialUpdateMode matupmode = addNoise) const = 0;
 
   /** Updator interface:
-    The parameters are given as a pointer, they are delete inside the update
-    method. MaterialProperties based material update
+    The parameters are given as a pointer owned by the caller.
+    The returned ptr is owned by the caller
     - used by all Layer-based methods
     */
   virtual TrackParameters* update(
@@ -169,8 +169,6 @@ public:
     ParticleHypothesis particle = pion,
     MaterialUpdateMode matupmode = addNoise) const = 0;
   /** Updator interface (pre-update for a layer):
-    The parameters are given as a pointer, they are delete inside the update
-    method. Layer-based material update
     */
   virtual TrackParameters* preUpdate(
     const TrackParameters* param,
@@ -181,7 +179,6 @@ public:
 
   /** Updator interface (pre-update for a layer):
     */
-
   virtual TrackParameters* postUpdate(
     const TrackParameters& param,
     const Layer& sf,
diff --git a/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/MaterialEffectsUpdator.h b/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/MaterialEffectsUpdator.h
index cdb1f7d0798affc183ee71384e95709cf0ad88fb..c72b54ef836332e85b4d6a165db5741c5739e342 100755
--- a/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/MaterialEffectsUpdator.h
+++ b/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/MaterialEffectsUpdator.h
@@ -102,9 +102,7 @@ class MaterialEffectsUpdator : public AthAlgTool,
     }
 
     /** Updator interface (full update for a layer)
-      ---> ALWAYS the same pointer is returned
-      the pointer to the same TrackParameters object is returned,
-      it is manipulated (if sf.fullUpdateMaterial())
+      ---> ALWAYS  pointer to new TrackParameters is returned
       */
     virtual TrackParameters*  update(ICache& icache, const TrackParameters* parm,
                                            const Layer& sf,
@@ -121,9 +119,7 @@ class MaterialEffectsUpdator : public AthAlgTool,
     }
     /** Updator interface (full update for a layer) according to user
       input through MaterialEffectsOnTrack
-      ---> ALWAYS the same pointer is returned
-      the pointer to the same TrackParameters object is returned,
-      it is manipulated
+      ---> ALWAYS pointer to new TrackParameters is returned
       */
     virtual TrackParameters* update(ICache& icache,
                                           const TrackParameters* parm,
@@ -142,9 +138,7 @@ class MaterialEffectsUpdator : public AthAlgTool,
     }
 
     /** Updator interface (pre-update for a layer):
-      ---> ALWAYS the same pointer is returned
-      the pointer to the same TrackParametes object is returned,
-      it is manipulated (if.preUpdateMaterial())
+      ---> ALWAYS pointer to new TrackParameters is returned
       */
     virtual TrackParameters* preUpdate(ICache& icache,
                                              const TrackParameters* parm,
@@ -163,8 +157,8 @@ class MaterialEffectsUpdator : public AthAlgTool,
     }
 
     /** Updator interface (post-update for a layer):
-      ---> ALWAYS pointer to new TrackParameters are returned
-      if no postUpdate is to be done : return 0
+      ---> ALWAYS pointer to new TrackParameters is returned
+      if no postUpdate is to be done : return nullptr
       */
     virtual TrackParameters* postUpdate(
       ICache& icache,
diff --git a/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx b/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx
index 6fd0d925e5a5ba6b0e527b822066d92ff420c1ab..9379d5da54406c6c9ea5af9b906600a168b676a8 100755
--- a/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx
+++ b/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx
@@ -718,14 +718,14 @@ Trk::Extrapolator::extrapolateToNextMaterialLayer(const EventContext& ctx,
     cache.m_lastMaterialLayer = nullptr;
   }
   if (!cache.m_highestVolume) {
-    cache.m_highestVolume = m_navigator->highestVolume();
+    cache.m_highestVolume = m_navigator->highestVolume(ctx);
   }
   // resolve current position
   Amg::Vector3D gp = parm->position();
   if (vol && vol->inside(gp, m_tolerance)) {
     staticVol = vol;
   } else {
-    staticVol = m_navigator->trackingGeometry()->lowestStaticTrackingVolume(gp);
+    staticVol = m_navigator->trackingGeometry(ctx)->lowestStaticTrackingVolume(gp);
     const Trk::TrackingVolume* nextStatVol = nullptr;
     if (m_navigator->atVolumeBoundary(currPar.get(), staticVol, dir, nextStatVol, m_tolerance) &&
         nextStatVol != staticVol) {
@@ -997,7 +997,7 @@ Trk::Extrapolator::extrapolateToNextMaterialLayer(const EventContext& ctx,
 
   gp = currPar->position();
   std::vector<const Trk::DetachedTrackingVolume*>* detVols =
-    m_navigator->trackingGeometry()->lowestDetachedTrackingVolumes(gp);
+    m_navigator->trackingGeometry(ctx)->lowestDetachedTrackingVolumes(gp);
   std::vector<const Trk::DetachedTrackingVolume*>::iterator dIter = detVols->begin();
   for (; dIter != detVols->end(); ++dIter) {
     const Trk::Layer* layR = (*dIter)->layerRepresentation();
@@ -1417,7 +1417,7 @@ Trk::Extrapolator::extrapolateToNextMaterialLayer(const EventContext& ctx,
                                 m_tolerance))) {
             ATH_MSG_DEBUG("  [!] WARNING: wrongly assigned static volume ?"
                           << cache.m_currentStatic->volumeName() << "->" << nextVol->volumeName());
-            nextVol = m_navigator->trackingGeometry()->lowestStaticTrackingVolume(
+            nextVol = m_navigator->trackingGeometry(ctx)->lowestStaticTrackingVolume(
               nextPar->position() + 0.01 * nextPar->momentum().normalized());
             if (nextVol) {
               ATH_MSG_DEBUG("  new search yields: " << nextVol->volumeName());
@@ -1757,7 +1757,7 @@ Trk::Extrapolator::extrapolateInAlignableTV(const EventContext& ctx,
   // double tol = 0.001;
   // double path = 0.;
   if (!cache.m_highestVolume) {
-    cache.m_highestVolume = m_navigator->highestVolume();
+    cache.m_highestVolume = m_navigator->highestVolume(ctx);
   }
 
   // verify current position
@@ -1765,7 +1765,7 @@ Trk::Extrapolator::extrapolateInAlignableTV(const EventContext& ctx,
   if (vol && vol->inside(gp, m_tolerance)) {
     staticVol = vol;
   } else {
-    currVol = m_navigator->trackingGeometry()->lowestStaticTrackingVolume(gp);
+    currVol = m_navigator->trackingGeometry(ctx)->lowestStaticTrackingVolume(gp);
     const Trk::TrackingVolume* nextStatVol = nullptr;
     if (m_navigator->atVolumeBoundary(currPar.get(), currVol, dir, nextStatVol, m_tolerance) &&
         nextStatVol != currVol) {
@@ -1926,7 +1926,7 @@ Trk::Extrapolator::extrapolateInAlignableTV(const EventContext& ctx,
                                 m_tolerance))) {
             ATH_MSG_DEBUG("  [!] WARNING: wrongly assigned static volume ?"
                           << cache.m_currentStatic->volumeName() << "->" << nextVol->volumeName());
-            nextVol = m_navigator->trackingGeometry()->lowestStaticTrackingVolume(
+            nextVol = m_navigator->trackingGeometry(ctx)->lowestStaticTrackingVolume(
               nextPar->position() + 0.01 * nextPar->momentum().normalized());
             if (nextVol) {
               ATH_MSG_DEBUG("  new search yields: " << nextVol->volumeName());
@@ -2190,13 +2190,13 @@ Trk::Extrapolator::extrapolate(const EventContext& ctx,
   if (closestTrackParameters) {
     return (extrapolate(
       ctx, *closestTrackParameters, sf, dir, bcheck, particle, matupmode, extrapolationCache));
-  } 
+  }
     closestTrackParameters = *(trk.trackParameters()->begin());
     if (closestTrackParameters) {
       return (extrapolate(
         ctx, *closestTrackParameters, sf, dir, bcheck, particle, matupmode, extrapolationCache));
     }
-  
+
 
   return nullptr;
 }
@@ -2759,11 +2759,11 @@ Trk::Extrapolator::extrapolateImpl(const EventContext& ctx,
         fallback = true;
         // break it
         break;
-      } 
+      }
         // set the punch-through to true
         punchThroughDone = true;
         ATH_MSG_DEBUG("  [!] One time punch-through a volume done.");
-      
+
     }
     // ------------------- the output interpretationn of the extrapolateToVolumeBoundary
     // (3) NAVIGATION BREAK : no nextVolume found - but not in extrapolateBlindly() mode
@@ -3112,7 +3112,7 @@ Trk::Extrapolator::extrapolateWithinDetachedVolumes(const EventContext& ctx,
   // arbitrary surface or destination layer ?
   // bool loopOverLayers = false;
   const Trk::Layer* destinationLayer =
-    m_navigator->trackingGeometry()->associatedLayer(sf.center());
+    m_navigator->trackingGeometry(ctx)->associatedLayer(sf.center());
   // if ( destinationLayer ) loopOverLayers = true;
 
   // initial distance to surface
@@ -3137,7 +3137,7 @@ Trk::Extrapolator::extrapolateWithinDetachedVolumes(const EventContext& ctx,
 
     if (fwd) {
       return fwd;
-    } 
+    }
       Trk::PropDirection oppDir =
         (dir != Trk::oppositeMomentum) ? Trk::oppositeMomentum : Trk::alongMomentum;
       // return prop.propagate(*nextParameters,sf,oppDir,bcheck,*currVol,particle);
@@ -3145,7 +3145,7 @@ Trk::Extrapolator::extrapolateWithinDetachedVolumes(const EventContext& ctx,
         nextParameters,
         prop.propagate(
           ctx, *nextParameters, sf, oppDir, bcheck, m_fieldProperties, particle, false, currVol));
-    
+
   }
 
   if (fabs(dist) < m_tolerance) {
@@ -3157,7 +3157,7 @@ Trk::Extrapolator::extrapolateWithinDetachedVolumes(const EventContext& ctx,
         nextParameters,
         prop.propagate(
           ctx, *nextParameters, sf, dir, bcheck, m_fieldProperties, particle, false, currVol));
-    } 
+    }
       Trk::PropDirection oppDir =
         (dir != Trk::oppositeMomentum) ? Trk::oppositeMomentum : Trk::alongMomentum;
       // return prop.propagate(*nextParameters,sf,oppDir,bcheck,*currVol,particle);
@@ -3165,7 +3165,7 @@ Trk::Extrapolator::extrapolateWithinDetachedVolumes(const EventContext& ctx,
         nextParameters,
         prop.propagate(
           ctx, *nextParameters, sf, oppDir, bcheck, m_fieldProperties, particle, false, currVol));
-    
+
   } if (dist < 0.) {
     ATH_MSG_DEBUG("  [!] Initial 3D-distance to the surface negative ("
                   << dist << ") -> skip extrapolation.");
@@ -3209,9 +3209,9 @@ Trk::Extrapolator::extrapolateWithinDetachedVolumes(const EventContext& ctx,
             return cParms;
           }
           return onNextLayer;
-        } 
+        }
           return ManagedTrackParmPtr();
-        
+
       }
     } else {
       // world boundary ?
@@ -4328,7 +4328,7 @@ Trk::Extrapolator::initializeNavigation(const EventContext& ctx,
       ++m_startThroughGlobalSearch;
       // non-perigee surface
       resetRecallInformation(cache);
-      associatedVolume = m_navigator->volume(parm->position());
+      associatedVolume = m_navigator->volume(ctx,parm->position());
       associatedLayer =
         (associatedVolume) ? associatedVolume->associatedLayer(parm->position()) : nullptr;
 
@@ -4338,7 +4338,7 @@ Trk::Extrapolator::initializeNavigation(const EventContext& ctx,
       // ---------------------------------- ASSOCIATED STATIC VOLUME
       // -------------------------------------- this is not necessary for ( association & recall )
       const Trk::TrackingVolume* lowestStaticVol =
-        m_navigator->trackingGeometry()->lowestStaticTrackingVolume(parm->position());
+        m_navigator->trackingGeometry(ctx)->lowestStaticTrackingVolume(parm->position());
 
       if (lowestStaticVol && lowestStaticVol != associatedVolume) {
         associatedVolume = lowestStaticVol;
@@ -4427,14 +4427,14 @@ Trk::Extrapolator::initializeNavigation(const EventContext& ctx,
       }
       // get the destination Volume
       if (refParameters) {
-        destVolume = m_navigator->volume(refParameters->position());
+        destVolume = m_navigator->volume(ctx,refParameters->position());
       }
       // ------ the last chance : associate to the globalReferencePoint
       // std::cout << "destVolume: " << destVolume << " ref par: " << refParameters << "
       // associatedVolume: "
       // << associatedVolume << std::endl;
       if (!destVolume) {
-        destVolume = m_navigator->volume(sf.globalReferencePoint());
+        destVolume = m_navigator->volume(ctx,sf.globalReferencePoint());
       }
     }
     ATH_MSG_VERBOSE("  [I] Destination Information gathered through : " << destinationSearchType
@@ -4718,9 +4718,9 @@ Trk::Extrapolator::checkCache(Cache& cache, const std::string& txt) const
     ATH_MSG_DEBUG(txt << " PROBLEM Eloss cache pointer overwritten " << cache.m_cacheEloss
                       << " from extrapolationCache " << cache.m_extrapolationCache->eloss());
     return false;
-  } 
+  }
     return true;
-  
+
 }
 
 const std::vector<std::pair<const Trk::TrackParameters*, int>>*
@@ -4885,7 +4885,7 @@ Trk::Extrapolator::extrapolateToVolumeWithPathLimit(const EventContext& ctx,
     cache.m_lastMaterialLayer = nullptr;
   }
   if (!cache.m_highestVolume) {
-    cache.m_highestVolume = m_navigator->highestVolume();
+    cache.m_highestVolume = m_navigator->highestVolume(ctx);
   }
 
   // navigation surfaces
@@ -4897,7 +4897,7 @@ Trk::Extrapolator::extrapolateToVolumeWithPathLimit(const EventContext& ctx,
   // target volume may not be part of tracking geometry
   if (destVol) {
     const Trk::TrackingVolume* tgVol =
-      m_navigator->trackingGeometry()->trackingVolume(destVol->volumeName());
+      m_navigator->trackingGeometry(ctx)->trackingVolume(destVol->volumeName());
     if (!tgVol || tgVol != destVol) {
       const std::vector<SharedObject<const BoundarySurface<TrackingVolume>>>& bounds =
         destVol->boundarySurfaces();
@@ -4913,7 +4913,7 @@ Trk::Extrapolator::extrapolateToVolumeWithPathLimit(const EventContext& ctx,
   bool updateStatic = false;
   Amg::Vector3D gp = parm->position();
   if (!cache.m_currentStatic || !cache.m_currentStatic->inside(gp, m_tolerance)) {
-    cache.m_currentStatic = m_navigator->trackingGeometry()->lowestStaticTrackingVolume(gp);
+    cache.m_currentStatic = m_navigator->trackingGeometry(ctx)->lowestStaticTrackingVolume(gp);
     updateStatic = true;
   }
 
@@ -4961,9 +4961,9 @@ Trk::Extrapolator::extrapolateToVolumeWithPathLimit(const EventContext& ctx,
       if (nextPar) {
         return extrapolateToVolumeWithPathLimit(
           ctx, cache, nextPar.index(), pathLim, dir, particle, destVol, matupmod);
-      } 
+      }
         return ManagedTrackParmPtr();
-      
+
     }
   }
 
@@ -5073,7 +5073,7 @@ Trk::Extrapolator::extrapolateToVolumeWithPathLimit(const EventContext& ctx,
 
   gp = currPar->position();
   std::vector<const Trk::DetachedTrackingVolume*>* detVols =
-    m_navigator->trackingGeometry()->lowestDetachedTrackingVolumes(gp);
+    m_navigator->trackingGeometry(ctx)->lowestDetachedTrackingVolumes(gp);
   std::vector<const Trk::DetachedTrackingVolume*>::iterator dIter = detVols->begin();
   for (; dIter != detVols->end(); ++dIter) {
     const Trk::Layer* layR = (*dIter)->layerRepresentation();
@@ -5447,7 +5447,7 @@ Trk::Extrapolator::extrapolateToVolumeWithPathLimit(const EventContext& ctx,
                                           dir,
                                           particle);
               }
-            
+
           }
         }
 
@@ -5530,7 +5530,7 @@ Trk::Extrapolator::extrapolateToVolumeWithPathLimit(const EventContext& ctx,
             ATH_MSG_VERBOSE(" Pre-update energy loss:"
                             << nextPar->momentum().mag() - pIn << "at position:"
                             << nextPar->position() << ", current momentum:" << nextPar->momentum());
-          
+
         }
         // active surface intersections ( Fatras hits ...)
         if (cache.m_parametersOnDetElements && particle != Trk::neutron) {
@@ -5573,7 +5573,7 @@ Trk::Extrapolator::extrapolateToVolumeWithPathLimit(const EventContext& ctx,
                 ATH_MSG_VERBOSE(" Post-update energy loss:" << nextPar->momentum().mag() - pIn
                                                             << "at position:"
                                                             << nextPar->position());
-              
+
             }
           } else {
             double pIn = nextPar->momentum().mag();
@@ -5589,7 +5589,7 @@ Trk::Extrapolator::extrapolateToVolumeWithPathLimit(const EventContext& ctx,
             } // the MEOT will be saved at the end
               ATH_MSG_VERBOSE(" Update energy loss:" << nextPar->momentum().mag() - pIn
                                                      << "at position:" << nextPar->position());
-            
+
           }
           if (cache.m_matstates) {
             addMaterialEffectsOnTrack(ctx,
diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/KLGaussianMixtureReduction.h b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/KLGaussianMixtureReduction.h
index cb7ae7b385e7b537672ace9385e00bf358d59389..21d9d1935d379f7060c8a75e274c6e2bcce2a08a 100644
--- a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/KLGaussianMixtureReduction.h
+++ b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/KLGaussianMixtureReduction.h
@@ -109,6 +109,10 @@ struct triangularToIJ
 /**
  * @brief Merge the componentsIn and return
  * which componets got merged
+ *
+ * The input component array is assumed to be
+ * GSFUtils::alignment aligned.
+ *
  */
 std::vector<std::pair<int32_t, int32_t>>
 findMerges(Component1D* componentsIn,
@@ -128,10 +132,6 @@ findMinimumIndex(const float* distancesIn, const int32_t n);
 __attribute__((target("sse4.1")))
 int32_t
 findMinimumIndex(const float* distancesIn, const int32_t n);
-
-__attribute__((target("sse2")))
-int32_t
-findMinimumIndex(const float* distancesIn, const int32_t n);
 #endif // x86_64 specific targets
 
 __attribute__((target("default")))
diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMaterialMixtureConvolution.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMaterialMixtureConvolution.cxx
index c684643aacc647afc6d353779f55505b220f261b..e1fbde56c08150c846c8843ec5a25da2cd4206f7 100644
--- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMaterialMixtureConvolution.cxx
+++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMaterialMixtureConvolution.cxx
@@ -274,10 +274,10 @@ Trk::GsfMaterialMixtureConvolution::update(
       // Store component weight
       caches[i].weights[j] *= inputState[i].second;
       // Ensure weight of component is not too small to save us from potential
-      // FPE's Value chosen to be sufficiently small so that the final state
-      // will not be impacted
-      if (caches[i].weights[j] < 1e-12) {
-        caches[i].weights[j] = 1e-12;
+      // FPE's Value. Weights are double so the min of float should
+      // be small enough and should be handled
+      if (caches[i].weights[j] < std::numeric_limits<float>::min()) {
+        caches[i].weights[j] = std::numeric_limits<float>::min();
       }
     }
     n += caches[i].weights.size();
diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMeasurementUpdator.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMeasurementUpdator.cxx
index bc984b9e41c1d7bffaa5494379372e1f5a46fc4d..f678263f6fed227949a8ab3b6683ce93d684e71c 100644
--- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMeasurementUpdator.cxx
+++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMeasurementUpdator.cxx
@@ -218,39 +218,33 @@ Trk::GsfMeasurementUpdator::calculateFilterStep(
         std::abs(component.first->parameters()[Trk::qOverP]) > 0.033333) {
       continue;
     }
-    auto componentFitQuality = std::make_unique<Trk::FitQualityOnSurface>();
+    Trk::FitQualityOnSurface componentFitQuality;
     /// Update the component in place
     bool updateSuccess = m_updator.filterStep(*(component.first),
-                                              *componentFitQuality,
+                                              componentFitQuality,
                                               measurement.localParameters(),
                                               measurement.localCovariance(),
                                               1);
     if (!updateSuccess) {
-      if (componentFitQuality) {
-        componentFitQuality.reset();
-      }
       continue;
     }
 
     if (invalidComponent(component.first.get())) {
-      componentFitQuality.reset();
       continue;
     }
 
-    if (!componentFitQuality || componentFitQuality->chiSquared() <= 0.) {
-      componentFitQuality.reset();
+    if (componentFitQuality.chiSquared() <= 0.) {
       continue;
     }
 
-    double componentChi2 = componentFitQuality->chiSquared();
+    double componentChi2 = componentFitQuality.chiSquared();
     chiSquared += component.second * componentChi2;
 
     // The same measurement is included in each update
     // so we can update the degree of freedom only
     if (degreesOfFreedom == 0.0) {
-      degreesOfFreedom = componentFitQuality->numberDoF();
+      degreesOfFreedom = componentFitQuality.numberDoF();
     }
-    componentFitQuality.reset();
 
     // Add component to state being prepared for assembly
     MultiComponentStateAssembler::addComponent(cache, std::move(component));
diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/KLGaussianMixtureReduction.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/KLGaussianMixtureReduction.cxx
index 96ccf1db1608fa3d43931583e2d10a005e346da6..3918298c7ff61cbc4ad6ab7b81356efc2012f6c4 100644
--- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/KLGaussianMixtureReduction.cxx
+++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/KLGaussianMixtureReduction.cxx
@@ -103,6 +103,7 @@ recalculateDistances(const Component1D* componentsIn,
 {
   const Component1D* components = static_cast<const Component1D*>(
     __builtin_assume_aligned(componentsIn, alignment));
+
   float* distances =
     static_cast<float*>(__builtin_assume_aligned(distancesIn, alignment));
 
@@ -147,6 +148,7 @@ calculateAllDistances(const Component1D* componentsIn,
     __builtin_assume_aligned(componentsIn, alignment));
   float* distances =
     static_cast<float*>(__builtin_assume_aligned(distancesIn, alignment));
+
   for (int32_t i = 1; i < n; ++i) {
     const int32_t indexConst = (i - 1) * i / 2;
     const Component1D componentI = components[i];
@@ -183,7 +185,7 @@ namespace GSFUtils {
 
 /**
  * Merge the componentsIn and return
- * which componets got merged
+ * which componets got merged.
  */
 std::vector<std::pair<int32_t, int32_t>>
 findMerges(Component1D* componentsIn,
@@ -196,19 +198,17 @@ findMerges(Component1D* componentsIn,
   const int32_t n = inputSize;
   const int32_t nn = n * (n - 1) / 2;
   // Create a trianular mapping for the pairwise distances
-  std::vector<triangularToIJ> convert;
-  convert.reserve(nn);
-
+  // We now that the size is nn
+  std::vector<triangularToIJ> convert(nn);
   for (int32_t i = 1; i < n; ++i) {
     const int indexConst = (i - 1) * i / 2;
     for (int32_t j = 0; j < i; ++j) {
-      int32_t index = indexConst + j;
-      convert[index] = { i, j };
+      convert[indexConst + j] = { i, j };
     }
   }
-  // We need to work with multiple of 8, in principle this is a requirement
-  // of aligned_alloc (although not in POSIX ) i.e allocation should be multiple
-  // of the requested size.
+  // We work with a  multiple of 8*floats (32 bytes).
+  // Ensures also that the  size parameter passed to aligned alloc
+  // is an integral multiple of alignment (32 bytes).
   const int32_t nn2 = (nn & 7) == 0 ? nn : nn + (8 - (nn & 7));
   AlignedDynArray<float, alignment> distances(
     nn2, std::numeric_limits<float>::max());
@@ -242,11 +242,25 @@ findMerges(Component1D* componentsIn,
 
 /**
  * findMinimumIndex
- * For FindMinimumIndex at x86_64 we have
- * AVX2,SSE4.1,SSE2  versions
- * These assume that the number of elements is a multiple
- * of 8 and are to be used for sizeable inputs.
- * We also provide a default "scalar" implementation
+ * Assume that the number of elements is a multiple
+ * of 8 and is to be used for sizeable inputs.
+ *
+ * It uses the CxxUtils:vec class which provides
+ * a degree of portability.
+ *
+ * avx2 gives us lanes 8 float wide
+ * SSE4.1 gives us efficient blend
+ * so we employ function multiversioning
+ *
+ * For non-sizeable inputs
+ * std::distance(array, std::min_element(array, array + n))
+ * can be good enough instead of calling this function.
+ *
+ * Note than the above "STL"  code in gcc
+ * (up to 10.2 at least) this emits
+ * a cmov which make it considerable slower
+ * than the clang when the branch can
+ * be well predicted.
  */
 #if HAVE_FUNCTION_MULTIVERSIONING
 #if defined(__x86_64__)
@@ -335,10 +349,9 @@ findMinimumIndex(const float* distancesIn, const int n)
   }
   return minIndex;
 }
-/*
- * SSE2 does not have a blend/select instruction.
- */
-__attribute__((target("sse2")))
+#endif // end of x86_64 versions
+__attribute__((target("default")))
+#endif // HAVE_FUNCTION_MULTIVERSIONING
 int32_t
 findMinimumIndex(const float* distancesIn, const int n)
 {
@@ -388,23 +401,5 @@ findMinimumIndex(const float* distancesIn, const int n)
   }
   return minIndex;
 }
-#endif // end of x86_64 versions
-// Always fall back to a simple default version with no intrinsics
-__attribute__((target("default")))
-#endif // HAVE_FUNCTION_MULTIVERSIONING
-int32_t
-findMinimumIndex(const float* distancesIn, const int n)
-{
-  float* array = (float*)__builtin_assume_aligned(distancesIn, alignment);
-  float minDistance = array[0];
-  int32_t minIndex = 0;
-  for (int i = 0; i < n; ++i) {
-    const float value = array[i];
-    if (value < minDistance) {
-      minIndex = i;
-      minDistance = value;
-    }
-  }
-  return minIndex;
-}
+
 } // end namespace GSFUtils
diff --git a/Tracking/TrkVertexFitter/TrkVertexFitterUtils/CMakeLists.txt b/Tracking/TrkVertexFitter/TrkVertexFitterUtils/CMakeLists.txt
index 64b3821107d739fa78540bd3947c81270c3915b7..f2f4f6e68dcf8c717fdbe6ea19bf44a4bd5d0169 100644
--- a/Tracking/TrkVertexFitter/TrkVertexFitterUtils/CMakeLists.txt
+++ b/Tracking/TrkVertexFitter/TrkVertexFitterUtils/CMakeLists.txt
@@ -5,41 +5,25 @@
 # Declare the package name:
 atlas_subdir( TrkVertexFitterUtils )
 
-# Declare the package's dependencies:
-atlas_depends_on_subdirs( PUBLIC
-                          Control/AthenaBaseComps
-                          Event/xAOD/xAODTracking
-                          GaudiKernel
-                          MagneticField/MagFieldConditions   # exposed by FullLinearizedTrackFactory.h
-                          Tracking/TrkEvent/TrkParameters
-                          Tracking/TrkEvent/TrkParametersBase
-                          Tracking/TrkVertexFitter/TrkVertexFitterInterfaces
-                          PRIVATE
-                          AtlasTest/TestTools
-                          MagneticField/MagFieldElements
-                          Tracking/TrkDetDescr/TrkSurfaces
-                          Tracking/TrkEvent/TrkEventPrimitives
-                          Tracking/TrkEvent/TrkNeutralParameters
-                          Tracking/TrkEvent/TrkParticleBase
-                          Tracking/TrkEvent/TrkTrack
-                          Tracking/TrkEvent/TrkTrackLink
-                          Tracking/TrkEvent/VxVertex
-                          Tracking/TrkExtrapolation/TrkExInterfaces
-                          Tracking/TrkExtrapolation/TrkExUtils 
-                          Tools/PathResolver )
-
 # External dependencies:
 find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
+find_package( CLHEP )
+
+atlas_add_library( TrkVertexFitterUtilsLib
+                   TrkVertexFitterUtils/*.h
+                   INTERFACE
+                   PUBLIC_HEADERS TrkVertexFitterUtils
+                   INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS}
+                   LINK_LIBRARIES TrkVertexFitterInterfaces AthenaBaseComps xAODTracking GaudiKernel TrkParametersBase TrkParameters MagFieldConditions ${CLHEP_LIBRARIES} )
 
 # Component(s) in the package:
 atlas_add_component( TrkVertexFitterUtils
                      src/*.cxx
                      src/components/*.cxx
                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps xAODTracking GaudiKernel TrkParameters TrkParametersBase TrkVertexFitterInterfaces MagFieldConditions MagFieldElements TrkSurfaces TrkEventPrimitives TrkNeutralParameters TrkParticleBase TrkTrack VxVertex TrkExInterfaces TrkExUtils )
+                     LINK_LIBRARIES ${ROOT_LIBRARIES} MagFieldElements TrkSurfaces TrkEventPrimitives TrkNeutralParameters TrkParticleBase TrkTrack VxVertex TrkExInterfaces TrkExUtils TrkVertexFitterUtilsLib )
 
 # Install files from the package:
-atlas_install_headers( TrkVertexFitterUtils )
 atlas_install_joboptions( share/*.txt )
 
 
diff --git a/Trigger/TrigAccel/TrigInDetAccel/TrigInDetAccelerationTool/CMakeLists.txt b/Trigger/TrigAccel/TrigInDetAccel/TrigInDetAccelerationTool/CMakeLists.txt
index 094c19a9393dd872daf9cadcba66fca847894635..9f0cd3eb0cd97bef6d51c698c0f46f711d129cce 100644
--- a/Trigger/TrigAccel/TrigInDetAccel/TrigInDetAccelerationTool/CMakeLists.txt
+++ b/Trigger/TrigAccel/TrigInDetAccel/TrigInDetAccelerationTool/CMakeLists.txt
@@ -11,7 +11,6 @@ atlas_subdir( TrigInDetAccelerationTool )
 
 atlas_add_library( TrigInDetAccelerationToolLib
 		     src/*.cxx
- 		     INTERFACE
  		     PUBLIC_HEADERS TrigInDetAccelerationTool
                      LINK_LIBRARIES AthenaBaseComps GaudiKernel InDetIdentifier TrigInDetEvent TrigSteeringEvent TrigInDetPattRecoTools AthenaBaseComps InDetIdentifier TrigInDetPattRecoEvent TrigAccelEvent TrigInDetAccelerationServiceLib)
 
diff --git a/Trigger/TrigAlgorithms/TrigT2BeamSpot/TrigT2BeamSpot/IT2VertexBeamSpotTool.h b/Trigger/TrigAlgorithms/TrigT2BeamSpot/TrigT2BeamSpot/IT2VertexBeamSpotTool.h
deleted file mode 100644
index 19887b59eb5da0e516b7691bfd2c10cb5c0acc40..0000000000000000000000000000000000000000
--- a/Trigger/TrigAlgorithms/TrigT2BeamSpot/TrigT2BeamSpot/IT2VertexBeamSpotTool.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-*/
-#ifndef TRIGT2BEAMSPOT_IT2VERTEXBEAMSPOTTOOL_H
-#define TRIGT2BEAMSPOT_IT2VERTEXBEAMSPOTTOOL_H
-/// Local tools
-#include "../src/T2Track.h"
-#include "../src/T2Vertex.h"
-//Athena tools
-#include "AthContainers/DataVector.h"
-#include "AthContainers/ConstDataVector.h"
-#include "TrkTrack/TrackCollection.h"
-#include <string>
-#include <vector>
-#include "GaudiKernel/IAlgTool.h"
-
-class TrigVertexCollection;
-
-/// Event statistics
-// When this changes, adjust T2VertexBeamSpotMonitoring.py: EventStatistics histogram
-enum Statistics
-{ 
-   allInput      = 0,
-   hasTE         = 1,
-   hasROI        = 2,
-   hasTracks     = 3,
-   hasSeedTrack  = 4,
-   enoughTracks  = 5,
-   hasCluster    = 6,
-   hasVertex     = 7,
-   hasGoodVertex = 8,
-   numStatistics /// Leave this entry at the end
-};
-
-
-
-namespace PESA {
-   class T2TrackClusterer;
-
-   class IT2VertexBeamSpotTool : virtual public IAlgTool {
-      public:
-         DeclareInterfaceID (IT2VertexBeamSpotTool, 1, 0);
-
-         virtual bool isGoodTrack     ( const T2Track & track  ) const = 0;
-
-
-         virtual bool isGoodVertex    ( const T2Vertex& vertex ) const = 0;
-
-
-         virtual  bool isGoodVertexBCID( const T2Vertex& vertex ) const =0;
-
-
-         virtual  bool isHighPTTrack( unsigned &nTracks ) const =0;
-
-
-         virtual  bool notEnoughTracks(unsigned &nTracks) const =0;
-
-
-         virtual void selectTracks( const TrackCollection*  trackCollection,
-               ConstDataVector<TrackCollection>& mySelectedTrackCollection, std::vector<unsigned> &trackCounter ) = 0;
-
-         virtual void reconstructVertices( ConstDataVector<TrackCollection>& mySelectedTrackCollection,
-               TrigVertexCollection& myVertexCollection,
-               DataVector< TrigVertexCollection >&  mySplitVertexCollections) = 0;
-
-         virtual void reconstructSplitVertices( ConstDataVector<TrackCollection>& mySelectedTrackCollection,
-               DataVector< TrigVertexCollection >& mySplitVertexCollections, T2TrackClusterer& trackClusterer ) = 0;
-
-
-         virtual void resetMonitoredVariables() = 0;
-
-         //Monitoring variables, need to be reset every event in resetMonitored variables
-         std::vector<bool>     m_eventStageFlag;
-         std::vector<unsigned> m_eventStage;
-
-         //Event info variables 
-         unsigned int m_EventID = 0;
-
-         //This might not have to be a member of the tool at all
-         //But need this in the tool as it is used in both tool and the alg
-         virtual bool eventStage( Statistics stage ) = 0;
-
-         //Keep the track of how many vertices passed the selection
-         unsigned int m_NvtxPass;
-
-         std::string m_vertexCollName;
-
-
-         bool m_passNpvTrigCuts;
-
-         std::vector<T2Vertex> m_vertex;
-
-
-   };
-
-} // end namespace
-
-#endif
diff --git a/Trigger/TrigAlgorithms/TrigT2BeamSpot/TrigT2BeamSpot/T2VertexBeamSpot.h b/Trigger/TrigAlgorithms/TrigT2BeamSpot/TrigT2BeamSpot/T2VertexBeamSpot.h
index 66b394a62deeba81b0bb3d02faea843e8a6e215b..dbcc132a6552c64ea12f016b9c41ebd12d89003a 100644
--- a/Trigger/TrigAlgorithms/TrigT2BeamSpot/TrigT2BeamSpot/T2VertexBeamSpot.h
+++ b/Trigger/TrigAlgorithms/TrigT2BeamSpot/TrigT2BeamSpot/T2VertexBeamSpot.h
@@ -29,7 +29,7 @@
 /// trigger EDM
 #include "TrigInterfaces/AllTEAlgo.h"
 //Interface for the beam spot tool
-#include "IT2VertexBeamSpotTool.h"
+#include "T2VertexBeamSpotTool.h"
 
 namespace HLT {
   class TriggerElement;
@@ -86,6 +86,11 @@ namespace PESA {
       /** Function which attaches splitted vertex collections to the trigger element output */
       HLT::ErrorCode attachFeatureSplitVertex(DataVector< TrigVertexCollection > &mySplitVertexCollections,  HLT::TEVec &allTEs, unsigned int type_out );
 
+      //Until HLT::Algo inherits from AthReentrantAlgorithm or we can drop Run-2 setup
+      virtual bool isClonable() const override { return true; }
+      virtual unsigned int cardinality() const override { return 0; }//Mark as re-entrant
+
+
       //Only for Run2 settings
       bool m_activateTE; /*If true to be added */
       bool m_activateAllTE;/*If true to be added */
@@ -116,7 +121,7 @@ namespace PESA {
       SG::ReadHandleKey<xAOD::EventInfo> m_eventInfoKey  { this, "EventInfo", "EventInfo", "" };
 
       //Tools
-      ToolHandle<IT2VertexBeamSpotTool> m_beamSpotTool {this, "BeamSpotTool", "PESA::T2VertexBeamSpotTool/T2VertexBeamSpotTool" };
+      ToolHandle<T2VertexBeamSpotTool> m_beamSpotTool {this, "BeamSpotTool", "PESA::T2VertexBeamSpotTool/T2VertexBeamSpotTool" };
       ToolHandle<GenericMonitoringTool> m_monTool{this,"MonTool","","Monitoring tool"};
 
 
diff --git a/Trigger/TrigAlgorithms/TrigT2BeamSpot/TrigT2BeamSpot/T2VertexBeamSpotTool.h b/Trigger/TrigAlgorithms/TrigT2BeamSpot/TrigT2BeamSpot/T2VertexBeamSpotTool.h
index af8af7b0e92847c79c1d5b2108bccd8f93e19a08..795429cd4fc27921dedd86e053b3c34e002778ff 100644
--- a/Trigger/TrigAlgorithms/TrigT2BeamSpot/TrigT2BeamSpot/T2VertexBeamSpotTool.h
+++ b/Trigger/TrigAlgorithms/TrigT2BeamSpot/TrigT2BeamSpot/T2VertexBeamSpotTool.h
@@ -27,6 +27,7 @@
 #include <memory>
 // Local tools
 #include "../src/T2TrackManager.h"
+#include "../src/T2Track.h"
 #include "../src/T2BeamSpot.h"
 #include "../src/T2SplitVertex.h"
 //Athena tools
@@ -37,8 +38,6 @@
 //Tracking
 #include "TrkTrack/TrackCollection.h"
 #include "TrigInDetToolInterfaces/ITrigPrimaryVertexFitter.h"
-//BeamSpotTool interface
-#include "IT2VertexBeamSpotTool.h"
 //Data handles
 #include "StoreGate/ReadCondHandleKey.h"
 //Beam data
@@ -68,7 +67,7 @@ namespace PESA {
     *   @author David W. Miller     <David.W.Miller@cern.ch>
     *   
     */
-   class T2VertexBeamSpotTool :  public AthAlgTool, virtual public IT2VertexBeamSpotTool{
+   class T2VertexBeamSpotTool :  public AthAlgTool {
       public:
 
          T2VertexBeamSpotTool( const std::string& type, const std::string& name, const IInterface* parent );
@@ -100,20 +99,14 @@ namespace PESA {
 
 
          void selectTracks( const TrackCollection* trackCollection,
-               ConstDataVector<TrackCollection>& mySelectedTrackCollection, std::vector<unsigned> &trackCounter   );
-
-         void reconstructVertices( ConstDataVector<TrackCollection>& mySelectedTrackCollection,
-               TrigVertexCollection& myVertexCollection,
-               DataVector< TrigVertexCollection >& mySplitVertexCollections );
+               ConstDataVector<TrackCollection>& mySelectedTrackCollection, std::vector<unsigned> &trackCounter ) const;
 
+         unsigned int reconstructVertices( ConstDataVector<TrackCollection>& mySelectedTrackCollection,
+                      TrigVertexCollection& myVertexCollection,
+                      DataVector< TrigVertexCollection >& mySplitVertexCollections, const EventContext& ) const;
 
          void reconstructSplitVertices( ConstDataVector<TrackCollection>& mySelectedTrackCollection,
-               DataVector< TrigVertexCollection >& mySplitVertexCollections, T2TrackClusterer& trackClusterer );
-
-
-         bool eventStage( Statistics stage );
-
-         void resetMonitoredVariables();
+               DataVector< TrigVertexCollection >& mySplitVertexCollections, T2TrackClusterer& trackClusterer, const EventContext& ) const;
 
          bool m_passNpvTrigCuts;
 
@@ -170,20 +163,24 @@ namespace PESA {
          unsigned int m_maxNpvTrigger;
 
          /* Monitor track parameters */
-         void monitor_tracks(std::string prefix, std::string suffix, std::vector<const T2Track*> tracks );
+         void monitor_tracks(const std::string& prefix, const std::string& suffix, const std::vector<T2Track>& tracks ) const;
 
          /* Monitor cluster parameters */
-         void monitor_cluster( const T2TrackClusterer& clusterer  );
+         void monitor_cluster( const T2TrackClusterer& clusterer  ) const;
 
          /* Monitor  parameters of tracks inside the cluster */
-         void monitor_cluster_tracks(T2TrackClusterer& clusterer, const Trk::Track & track  );
+         void monitor_cluster_tracks(T2TrackClusterer& clusterer, const Trk::Track & track  ) const;
 
          /* Monitor  vertex parameters  */
-         void monitor_vertex(std::string prefix, std::string suffix, const T2Vertex &vertex );
+         void monitor_vertex(const std::string& prefix, const std::string& suffix, const T2Vertex &vertex ) const;
+
+         std::string m_vertexCollName;
 
       private:
          ToolHandle<GenericMonitoringTool> m_monTool{this,"MonTool","","Monitoring tool"};
 
+         
+
 
    };
 
diff --git a/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2Track.cxx b/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2Track.cxx
index 61fff1f119d36e2a0e744dc78e3ccaf4f8924340..7dd0bfef22f3514c6eb390438247220bfe06f838 100644
--- a/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2Track.cxx
+++ b/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2Track.cxx
@@ -12,19 +12,6 @@
 
 namespace PESA
 {
-  double trackChi2Prob( const T2Track& track )
-  {
-    // FIXME: unify with vertexChi2Prob()
-    double chi2Prob = 0.;
-    const int    ndf  = track.NDF();
-    const double chi2 = track.Qual() * track.NDF();
-    if ( ndf  > 0  &&  chi2 > 0. && ! std::isinf( chi2 ) )
-      {
-        chi2Prob = TMath::Prob(chi2,ndf);
-      }
-    return chi2Prob;
-  }
-
 
   std::ostream& operator<<( std::ostream& os, const T2Track& track )
   {
diff --git a/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2Track.h b/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2Track.h
index 082d937fd6abb97c33785160956f005362ba51f1..08a9f9f9e50189e5a69f3ff7caff93b6acc2e2fe 100644
--- a/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2Track.h
+++ b/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2Track.h
@@ -16,7 +16,7 @@
 #ifndef TRIGT2BEAMSPOT_T2TRACK_H
 #define TRIGT2BEAMSPOT_T2TRACK_H
 /// Externals
-#include "TrkTrack/Track.h" 
+#include "TrkTrack/Track.h"
 #include "TrkTrackSummary/TrackSummary.h"
 #include "TrigInterfaces/IMonitoredAlgo.h"
 #include "GaudiKernel/SystemOfUnits.h"
@@ -26,86 +26,87 @@
 #include <vector>
 #include <cmath>
 #include <iostream>
-
+#include "TMath.h"
 
 namespace PESA {
 
   class T2Track;
 
-  double trackChi2Prob( const T2Track& track );
-
   class T2Track
   {
   public:
 
     // Constructor
     T2Track( const Trk::Track& track )
-      : m_Chi2Prob( -1.                           ) // lazy evaluation
-      {
-        
-        const Trk::TrackParameters* trackPars = track.perigeeParameters();
-        if (trackPars) {
-          m_D0 = trackPars->parameters()[Trk::d0]; 
-          m_Z0 = trackPars->parameters()[Trk::z0]; 
-          if (trackPars->covariance()) {
-            m_D0err = Amg::error(*(trackPars->covariance()),Trk::d0);
-            m_Z0err = Amg::error(*(trackPars->covariance()),Trk::z0);
+    {
+
+      const Trk::TrackParameters* trackPars = track.perigeeParameters();
+      if (trackPars) {
+        m_D0 = trackPars->parameters()[Trk::d0];
+        m_Z0 = trackPars->parameters()[Trk::z0];
+        if (trackPars->covariance()) {
+          m_D0err = Amg::error(*(trackPars->covariance()),Trk::d0);
+          m_Z0err = Amg::error(*(trackPars->covariance()),Trk::z0);
+        }
+        m_Phi = trackPars->parameters()[Trk::phi0];
+        float theta = trackPars->parameters()[Trk::theta];
+        m_Eta = -log(tan(0.5*theta));
+        float qOverP = trackPars->parameters()[Trk::qOverP];
+        m_Pt = std::abs(std::sin(theta)/qOverP)/Gaudi::Units::GeV;
+
+        const Trk::FitQuality* fq = track.fitQuality();
+        m_Qual = 1e8;
+        if (fq) {
+          if(fq->numberDoF()!=0) {
+            m_Qual = fq->chiSquared()/fq->numberDoF();
           }
-          m_Phi = trackPars->parameters()[Trk::phi0]; 
-          float theta = trackPars->parameters()[Trk::theta]; 
-          m_Eta = -log(tan(0.5*theta)); 
-          float qOverP = trackPars->parameters()[Trk::qOverP]; 
-          m_Pt = std::abs(std::sin(theta)/qOverP)/Gaudi::Units::GeV;
-
-          const Trk::FitQuality* fq = track.fitQuality();
-          m_Qual = 1e8;
-          //m_NDF = 0;
-          if (fq) {
-            if(fq->numberDoF()!=0) {
-              m_Qual = fq->chiSquared()/fq->numberDoF();
-              //m_NDF = fq->numberDoF() - 5;//Remove 5 helix parameters
+        }
+        int nPix=0;
+        int nSct=0;
+        if( track.trackSummary() != nullptr){
+          nPix =    track.trackSummary()->get(Trk::numberOfPixelHits);
+          nSct =  track.trackSummary()->get(Trk::numberOfSCTHits);
+        } else {
+          for(auto tSOS = track.trackStateOnSurfaces()->begin();
+              tSOS!=track.trackStateOnSurfaces()->end(); ++tSOS) {
+            if ((*tSOS)->type(Trk::TrackStateOnSurface::Perigee) == false) {
+              const Trk::FitQualityOnSurface* fq =  (*tSOS)->fitQualityOnSurface();
+              if(!fq) continue;
+              int nd = fq->numberDoF();
+              if(nd==2) nPix++;
+              if(nd==1) nSct++;
             }
           }
-          int nPix=0;
-          int nSct=0;
-	  if( track.trackSummary() != nullptr){
-	    nPix =    track.trackSummary()->get(Trk::numberOfPixelHits);
-	    nSct =  track.trackSummary()->get(Trk::numberOfSCTHits);
-	  } else {
-	    for(auto tSOS = track.trackStateOnSurfaces()->begin();  
-		tSOS!=track.trackStateOnSurfaces()->end(); ++tSOS) { 
-	      if ((*tSOS)->type(Trk::TrackStateOnSurface::Perigee) == false) {
-		const Trk::FitQualityOnSurface* fq =  (*tSOS)->fitQualityOnSurface(); 
-		if(!fq) continue; 
-		int nd = fq->numberDoF(); 
-		if(nd==2) nPix++;
-		if(nd==1) nSct++;
-	      }
-	    }
-	  }
-          m_PIXHits = nPix; 
-          m_SCTHits = nSct/2; 
-          m_SiHits = m_PIXHits + m_SCTHits; 
-          m_NDF = (m_PIXHits + m_SCTHits)*2 - 5;
-          m_TRTHits = 0; //for now: FTF tracks have no TRT extension in any case
         }
+        m_PIXHits = nPix;
+        m_SCTHits = nSct/2;
+        m_SiHits = m_PIXHits + m_SCTHits;
+        m_NDF = (m_PIXHits + m_SCTHits)*2 - 5;
+        m_TRTHits = 0; //for now: FTF tracks have no TRT extension in any case
       }
+      m_Chi2Prob = -1;
+      const double chi2 = m_Qual * m_NDF;
+      if ( m_NDF  > 0  &&  chi2 > 0. && ! std::isinf( chi2 ) )
+        {
+          m_Chi2Prob = TMath::Prob(chi2,m_NDF);
+        }
+    }
 
     // Accessors
-    double Pt      () const { return m_Pt     ; }
-    double Eta     () const { return m_Eta    ; }
-    double Phi     () const { return m_Phi    ; }
-    double Z0      () const { return m_Z0     ; }
-    double D0      () const { return m_D0     ; }
-    double Z0err   () const { return m_Z0err  ; }
-    double D0err   () const { return m_D0err  ; }
-    double NDF     () const { return m_NDF    ; }
-    double Qual    () const { return m_Qual   ; }
-    double Chi2Prob() const { if ( m_Chi2Prob < 0. ) m_Chi2Prob = trackChi2Prob( *this ); return m_Chi2Prob  ; }
-    int    SiHits  () const { return m_SiHits ; }
-    int    PIXHits () const { return m_PIXHits; }
-    int    SCTHits () const { return m_SCTHits; }
-    int    TRTHits () const { return m_TRTHits; }
+    double Pt      () const { return m_Pt      ; }
+    double Eta     () const { return m_Eta     ; }
+    double Phi     () const { return m_Phi     ; }
+    double Z0      () const { return m_Z0      ; }
+    double D0      () const { return m_D0      ; }
+    double Z0err   () const { return m_Z0err   ; }
+    double D0err   () const { return m_D0err   ; }
+    double NDF     () const { return m_NDF     ; }
+    double Qual    () const { return m_Qual    ; }
+    double Chi2Prob() const { return m_Chi2Prob; }
+    int    SiHits  () const { return m_SiHits  ; }
+    int    PIXHits () const { return m_PIXHits ; }
+    int    SCTHits () const { return m_SCTHits ; }
+    int    TRTHits () const { return m_TRTHits ; }
 
   private:
     // Data members
@@ -118,7 +119,7 @@ namespace PESA {
     double m_D0err;
     double m_NDF;
     double m_Qual;
-    mutable std::atomic<double> m_Chi2Prob;
+    double m_Chi2Prob;
     int    m_SiHits;
     int    m_PIXHits;
     int    m_SCTHits;
@@ -147,8 +148,8 @@ namespace PESA {
       m_D0      .push_back( track.D0      () );
       m_Z0err   .push_back( track.Z0err   () );
       m_D0err   .push_back( track.D0err   () );
-      m_NDF     .push_back( track.NDF     () );    
-      m_Qual    .push_back( track.Qual    () );    
+      m_NDF     .push_back( track.NDF     () );
+      m_Qual    .push_back( track.Qual    () );
       m_Chi2Prob.push_back( track.Chi2Prob() );
       m_SiHits  .push_back( track.SiHits  () );
       m_PIXHits .push_back( track.PIXHits () );
diff --git a/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2TrackManager.cxx b/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2TrackManager.cxx
index eb52dabe40b5318365c5743b929fa09e02244f43..f4d3d44de7d12a53da2810551dcfa9985dee898a 100644
--- a/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2TrackManager.cxx
+++ b/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2TrackManager.cxx
@@ -29,26 +29,11 @@ using std::abs;
 using namespace PESA;
 
 
-// Not much to do here now, will eventually init the config parameters
-T2TrackManager::T2TrackManager( int nSplit, Algorithm alg )
-  // Fill the defaults
-  : m_nSplit      ( nSplit )
-  , m_alg         ( alg    )
-  , m_altKey      ( -1     )
-  //, m_ordKey      ( 0      )
-{
-}
-
-
-// Will have to clean up after myself here
-T2TrackManager::~T2TrackManager()
-{
-}
-
 // The meat of the class, return a vector of split clusters
 std::vector< ConstDataVector<TrackCollection> >
-T2TrackManager::split( const TrackCollection& cluster )
+T2TrackManager::split( const TrackCollection& cluster, const EventContext& ctx ) const
 {
+  int key = ctx.eventID().event_number() %2 -1;
   const int nEntries = cluster.size();
 
   //std::cout << "Reserve space" << std::endl;
@@ -69,9 +54,9 @@ T2TrackManager::split( const TrackCollection& cluster )
     // tracks in the 1st collection
     int nPos = 0;
     if (m_alg == Alternating)
-      nPos = alternatingSplit();
+      nPos = alternatingSplit(key);
     else if (m_alg == Pt)
-      nPos = orderedSplit(nEntries);
+      nPos = orderedSplit(key, nEntries);
 
     // Add the track to the appropriate collection
     trackCollections[nPos].push_back(*c_itr);
@@ -82,18 +67,16 @@ T2TrackManager::split( const TrackCollection& cluster )
 }
 
 
-int
-T2TrackManager::alternatingSplit()
+constexpr int T2TrackManager::alternatingSplit(int key) const
 {
-  ++m_altKey;
-  m_altKey %= m_nSplit;
-  return m_altKey;
+  ++key;
+  key %= m_nSplit;
+  return key;
 }
 
 
-int
-T2TrackManager::orderedSplit(const int nEntries)
+constexpr int T2TrackManager::orderedSplit(int key, const int nEntries) const
 {
-  ++m_altKey;
-  return m_altKey * m_nSplit / nEntries;
+  ++key;
+  return key * m_nSplit / nEntries;
 }
diff --git a/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2TrackManager.h b/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2TrackManager.h
index 1a2c44aa5a8d5813ebb5c0736216a50cf5c45857..d7a238629b9087652050809e440ebaeb479e2a11 100644
--- a/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2TrackManager.h
+++ b/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2TrackManager.h
@@ -37,34 +37,18 @@ namespace PESA
     // List of the splitter algorithms
     enum Algorithm { Alternating, Pt, Phi, NorthSouth, Charge };
 
-    // Constructor/Destructor
-    T2TrackManager( int nSplit = 2, Algorithm alg = Alternating );
-
-    ~T2TrackManager();
-
     // Return a vector of sub-clusters
-    std::vector< ConstDataVector<TrackCollection> >          split( const TrackCollection& cluster);
+    std::vector< ConstDataVector<TrackCollection> > split(const TrackCollection& cluster, const EventContext& ctx) const;
 
-    // Get and Set parameters
-    //    int GetNSplit() {return m_nSplit;}
-    //    int GetAlg() {return m_alg;}
-    //    void SetNSplit(int nSplit) {m_nSplit = nSplit;}
-    //    void SetAlg(int alg) {m_alg = alg;}
-    void ResetKey(int key = -1) { m_altKey = key;}
-    
   private:
     
     // The splitter algorithms
-    int alternatingSplit();         // 1 for me, 1 for you, 2 for me, ...
-    int orderedSplit(int nEntries); // 1, 2, 3 for me, 1, 2, 3 for you ...
+    constexpr int alternatingSplit(int key) const;         // 1 for me, 1 for you, 2 for me, ...
+    constexpr int orderedSplit(int key, int nEntries) const; // 1, 2, 3 for me, 1, 2, 3 for you ...
     
     /// Data members
-    int m_nSplit;      // How many output clusters
-    int m_alg;         // Which algorithm to use
-    
-    /// Algorithm helper objects
-    int m_altKey;     // Alternating split key
-    //int m_ordKey;     // Ordered split key
+    int m_nSplit = 2;      // How many output clusters
+    int m_alg = Alternating;         // Which algorithm to use
   };
 
 } //PESA
diff --git a/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2VertexBeamSpot.cxx b/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2VertexBeamSpot.cxx
index b64d686df2874d185416c142e3618648d6e94e9c..0ed455d0a96ba7c7a161ba52530945b532a66198 100644
--- a/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2VertexBeamSpot.cxx
+++ b/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2VertexBeamSpot.cxx
@@ -104,19 +104,14 @@ HLT::ErrorCode T2VertexBeamSpot::hltExecute( std::vector< HLT::TEVec >& tes_in,
   // Start the overall timer
   auto tTotal = Monitored::Timer("TIME_TotalTime");
 
-  //Reset monitored variables from previous event 
-  m_beamSpotTool->resetMonitoredVariables();
-  // Initialize booleans for event stats
-  m_beamSpotTool->m_eventStageFlag = std::vector<bool>( numStatistics, false );
-  m_beamSpotTool->eventStage( allInput );
-
   // Initialize vertex collections
   TrigVertexCollection myVertexCollection;
   DataVector< TrigVertexCollection > mySplitVertexCollections;
 
   // Be optimistic
   HLT::ErrorCode errorCode = HLT::OK;
-
+  unsigned int nPassVtx = 0;
+  const EventContext& ctx = Algorithm::getContext();
   // Process event - break to do cleanup before returning
   do 
     {
@@ -128,8 +123,6 @@ HLT::ErrorCode T2VertexBeamSpot::hltExecute( std::vector< HLT::TEVec >& tes_in,
       }
       else ATH_MSG_DEBUG( "Number of input TEs = " << tes_in.size() );
   
-      m_beamSpotTool->eventStage( hasTE );
-      
       //-----------------
       // Track selection
 
@@ -225,20 +218,16 @@ HLT::ErrorCode T2VertexBeamSpot::hltExecute( std::vector< HLT::TEVec >& tes_in,
 
 
 
-      m_beamSpotTool->eventStage( hasSeedTrack );
-
       // Check for the total number of available tracks
       if( m_beamSpotTool->notEnoughTracks( nSelectedTracks ) ){
          ATH_MSG_DEBUG( " Not enough total passed tracks to vertex");
          break;
       }
 
-      m_beamSpotTool->eventStage( enoughTracks );
-
       //-----------------------
       // Vertex reconstruction
       // Cluster tracks in z around seed track and reconstruct vertices
-      m_beamSpotTool->reconstructVertices( mySelectedTrackCollection, myVertexCollection, mySplitVertexCollections );
+      nPassVtx = m_beamSpotTool->reconstructVertices( mySelectedTrackCollection, myVertexCollection, mySplitVertexCollections, ctx );
 
     } while (false);
 
@@ -258,9 +247,6 @@ HLT::ErrorCode T2VertexBeamSpot::hltExecute( std::vector< HLT::TEVec >& tes_in,
    HLT::TEVec allTEs =  getAllTEs(tes_in);
    ATH_MSG_DEBUG( "n of all TEs: " << allTEs.size() );
 
-   //Check how many vertices passed the selection
-   unsigned int nPassedVtx = m_beamSpotTool->m_NvtxPass;
-
    //Save all events, or only those events which pass the Npv cuts (if activated)!
    if ( m_activateAllTE ) {
       ATH_MSG_DEBUG( "Activate all TEs" );
@@ -270,10 +256,10 @@ HLT::ErrorCode T2VertexBeamSpot::hltExecute( std::vector< HLT::TEVec >& tes_in,
    }
 
 
-   if ( ! m_activateAllTE && m_activateTE && nPassedVtx > 0 ) {
-      ATH_MSG_DEBUG( "Activate TE with "<< nPassedVtx << " vertices" );
+   if ( ! m_activateAllTE && m_activateTE && nPassVtx > 0 ) {
+      ATH_MSG_DEBUG( "Activate TE with "<< nPassVtx << " vertices" );
       // FIXME: Why do we need one TE per vertex?
-      for ( unsigned i=0; i < nPassedVtx; ++i ) {
+      for ( unsigned i=0; i < nPassVtx; ++i ) {
          // Create an output TE seeded by the inputs
          HLT::TriggerElement* outputTE = config()->getNavigation()->addNode(allTEs, type_out);
          outputTE->setActiveState(true);
@@ -299,10 +285,6 @@ HLT::ErrorCode T2VertexBeamSpot::hltExecute( std::vector< HLT::TEVec >& tes_in,
 
 
 
-   //Monitoring eventStatistics
-   auto eventStatistics = Monitored::Collection("EventStatistics", m_beamSpotTool->m_eventStage );
-   auto mon = Monitored::Group(m_monTool,  eventStatistics, timeToCreateOutput );
-
   // Return cause you're done!
   return errorCode;
 }
@@ -418,25 +400,10 @@ StatusCode T2VertexBeamSpot::execute(){
 
    ATH_MSG_DEBUG( "Beam spot algorithm execute method" );
 
-
-
-   //Reset monitored variables from previous event
-   m_beamSpotTool->resetMonitoredVariables();
-   // Initialize booleans for event stats
-   m_beamSpotTool->m_eventStageFlag = std::vector<bool>( numStatistics, false );
-   m_beamSpotTool->eventStage( allInput );
-
    const EventContext& ctx = Algorithm::getContext();
-   ATH_MSG_DEBUG( "Run: " << ctx.eventID().run_number() <<
-         " Event Number: " << ctx.eventID().event_number() <<
-         " Lumi Block: " << ctx.eventID().lumi_block() <<
-         " Bunch Crossing ID " << ctx.eventID().bunch_crossing_id() );
-
-   //Pass event ID for vertex splitting alg, TODO: need to revisit 
-   m_beamSpotTool->m_EventID = ctx.eventID().event_number() ;
 
    //// Initialize vertex collections
-   SG::WriteHandle<TrigVertexCollection> myVertexCollection(m_outputVertexCollectionKey);
+   SG::WriteHandle<TrigVertexCollection> myVertexCollection(m_outputVertexCollectionKey, ctx);
    myVertexCollection = std::make_unique<TrigVertexCollection>();
 
    //Need to convert to the write handles
@@ -452,7 +419,6 @@ StatusCode T2VertexBeamSpot::execute(){
    unsigned nHighPtTracks = 0;
 
    ATH_MSG_DEBUG( "Selecting tracks" );
-   //Loop over trackCollections
    {
       //Monitor how long does it take to loop over all collections
       auto tSelectingTracks = Monitored::Timer("TIME_SelectingTracks");
@@ -462,7 +428,7 @@ StatusCode T2VertexBeamSpot::execute(){
       auto nTotalPassedTracks = Monitored::Scalar<unsigned>("nTotalPassedTracks");
       auto nTotalHighPTTracks = Monitored::Scalar<unsigned>("nTotalHighPTTracks");
       //Loop over track collections and select tracks
-      SG::ReadHandle<TrackCollection> trackCollection (m_trackCollectionKey);
+      SG::ReadHandle<TrackCollection> trackCollection (m_trackCollectionKey, ctx);
       ATH_CHECK(trackCollection.isValid());
 
       //Dereference tracks
@@ -494,37 +460,28 @@ StatusCode T2VertexBeamSpot::execute(){
       return StatusCode::SUCCESS;
    }
 
-   m_beamSpotTool->eventStage( hasSeedTrack );
-
    // Check for the total number of available tracks
    if (  ( m_beamSpotTool->notEnoughTracks(nSelectedTracks)) ) {
       ATH_MSG_DEBUG( "Not enough total passed tracks to vertex");
       return StatusCode::SUCCESS;
    }
 
-   m_beamSpotTool->eventStage( enoughTracks );
-
    ATH_MSG_DEBUG( "Reconstruct vertices" );
    //Reconstruct vertices if passed track selection
    {
       //Monitor how long does it take to loop over all collections
       auto tReconstructVertices = Monitored::Timer("TIME_ReconstructVertices");
-      m_beamSpotTool->reconstructVertices( mySelectedTrackCollection, *myVertexCollection, mySplitVertexCollections );
+      m_beamSpotTool->reconstructVertices( mySelectedTrackCollection, *myVertexCollection, mySplitVertexCollections, ctx );
       //Monitor total number of tracks
       auto monitor = Monitored::Group(m_monTool, tReconstructVertices);
    }
 
-   //Do i want to call createOutputTEs even if the conditions are not fulfilled?
    ATH_MSG_DEBUG( "Number of track collection containers: " << mySelectedTrackCollection.size() );
 
    //What should go as an output? SelectedTrackCollection and Vertices?
    //Atm just try add vertex
    //TODO: adding split vertices as well, will need an array
 
-
-   //Monitoring eventStatistics
-   auto eventStatistics = Monitored::Collection("EventStatistics", m_beamSpotTool->m_eventStage );
-   auto monitor = Monitored::Group(m_monTool, eventStatistics, tTotal);
    return StatusCode::SUCCESS;
 } 
 
diff --git a/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2VertexBeamSpotTool.cxx b/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2VertexBeamSpotTool.cxx
index e0e9a225143bfc6df2a9cb1e4f4dbde114558186..81e8fda7e0e0204d5b6cb99acfb800d5167c2ee1 100644
--- a/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2VertexBeamSpotTool.cxx
+++ b/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/T2VertexBeamSpotTool.cxx
@@ -42,16 +42,6 @@ using std::abs;
 using namespace PESA;
 
 
-//Delete a vector of dynamically created objects
-template<typename T>
-void deleteVector(std::vector<T*> &v){
-   while(!v.empty()){
-      delete v.back();
-      v.pop_back();
-   }
-   v.clear();
-}
-
 namespace Beamspot
 { 
   class TrackPTSort{
@@ -81,7 +71,6 @@ PESA::T2VertexBeamSpotTool::T2VertexBeamSpotTool( const std::string& type, const
    : AthAlgTool( type, name, parent),
    m_primaryVertexFitterTool("TrigInDetToolInterfaces/ITrigPrimaryVertexFitter", this){
 
-   declareInterface<IT2VertexBeamSpotTool>(this);
    //Declare properties in here
    declareProperty( "BeamSpotData",  m_beamSpotKey   );
    declareProperty( "PrimaryVertexFitter",  m_primaryVertexFitterTool);
@@ -165,7 +154,7 @@ StatusCode T2VertexBeamSpotTool::initialize(){
 *  Detailed description of the select track function
  ***********************************************/
 void T2VertexBeamSpotTool::selectTracks( const TrackCollection* trackCollection,
-      ConstDataVector<TrackCollection>& mySelectedTrackCollection, std::vector<unsigned> &trackCounter ) {
+      ConstDataVector<TrackCollection>& mySelectedTrackCollection, std::vector<unsigned> &trackCounter ) const {
 
    ATH_MSG_DEBUG( "Selecting tracks for the beamSpot algorithm" );
 
@@ -177,7 +166,7 @@ void T2VertexBeamSpotTool::selectTracks( const TrackCollection* trackCollection,
    auto nHiPTTracksPassedPerROI = Monitored::Scalar<unsigned>("SelectedHiPTTracksPerROI", 0);
 
    //T2Track with easily accesable parameters
-   std::vector<const T2Track*> myTracks; myTracks.reserve(trackCollection->size() );
+   std::vector<T2Track> myTracks; myTracks.reserve(trackCollection->size() );
 
    // Loop over all tracks in the given track collections
    for ( TrackCollection::const_iterator trackIter = trackCollection->begin();
@@ -186,13 +175,12 @@ void T2VertexBeamSpotTool::selectTracks( const TrackCollection* trackCollection,
       const Trk::Track& track = **trackIter;
 
       // Make sure that the event has tracks
-      eventStage( hasTracks );
       //Counter for all input tracks
       nTracksPerROI++;
 
-      const T2Track *myTrack = new T2Track( track );
+      T2Track myTrack( track );
       // Check for passed track
-      if ( isGoodTrack( *myTrack ) ) {
+      if ( isGoodTrack( myTrack ) ) {
          // Add this track to the set used to find a vertex
          mySelectedTrackCollection.push_back( *trackIter );
 
@@ -203,22 +191,22 @@ void T2VertexBeamSpotTool::selectTracks( const TrackCollection* trackCollection,
          nTracksPassedPerROI++;
 
          // Check for high-pT track
-         if ( myTrack->Pt() > m_trackSeedPt ){
+         if ( myTrack.Pt() > m_trackSeedPt ){
             //Counter for high pT tracks
             nHiPTTracksPassedPerROI++;
          }
-         else ATH_MSG_DEBUG( "Track->pt: " << myTrack->Pt()*GeV );
+         else ATH_MSG_DEBUG( "Track.pt: " << myTrack.Pt()*GeV );
       }
       else {
-         ATH_MSG_DEBUG( "Track->failed selection: d0: " << myTrack->D0() <<
-               " z0: " << myTrack->Z0() <<
-               " phi0: " << myTrack->Phi() <<
-               " eta: " << myTrack->Eta() <<
-               " pT: " << myTrack->Pt()*GeV <<
-               " chi2: " << myTrack->Qual() <<
-               " NpixSPs: " << myTrack->PIXHits() <<
-               " NsctSPs: " << myTrack->SCTHits() <<
-               " NstrawHits: " << myTrack->TRTHits() );
+         ATH_MSG_DEBUG( "Track.failed selection: d0: " << myTrack.D0() <<
+               " z0: " << myTrack.Z0() <<
+               " phi0: " << myTrack.Phi() <<
+               " eta: " << myTrack.Eta() <<
+               " pT: " << myTrack.Pt()*GeV <<
+               " chi2: " << myTrack.Qual() <<
+               " NpixSPs: " << myTrack.PIXHits() <<
+               " NsctSPs: " << myTrack.SCTHits() <<
+               " NstrawHits: " << myTrack.TRTHits() );
       }
    } //end for loop over tracks in a collection
 
@@ -236,14 +224,12 @@ void T2VertexBeamSpotTool::selectTracks( const TrackCollection* trackCollection,
       //Monitor counters per track collection and time to select tracks
       auto mon = Monitored::Group(m_monTool, nTracksPerROI, nTracksPassedPerROI, nHiPTTracksPassedPerROI,
                  timerTrackSelection ); //timers
-      //clear tracks
-      deleteVector( myTracks );
 }
 
 
-void T2VertexBeamSpotTool::reconstructVertices( ConstDataVector<TrackCollection>& mySelectedTrackCollection,
+unsigned int T2VertexBeamSpotTool::reconstructVertices( ConstDataVector<TrackCollection>& mySelectedTrackCollection,
                                            TrigVertexCollection& myVertexCollection,
-                                           DataVector< TrigVertexCollection >&  mySplitVertexCollections) {
+                                           DataVector< TrigVertexCollection >&  mySplitVertexCollections, const EventContext& ctx) const {
     ATH_MSG_DEBUG( "Reconstructing vertices" );
 
    //Monitoring counters and timers
@@ -309,7 +295,6 @@ void T2VertexBeamSpotTool::reconstructVertices( ConstDataVector<TrackCollection>
       }
 
       // Event has a good cluster
-      eventStage( hasCluster );
       nClusters++;
 
       // Monitor properties of of the cluster
@@ -339,14 +324,11 @@ void T2VertexBeamSpotTool::reconstructVertices( ConstDataVector<TrackCollection>
          continue; 
       }
 
-      // Event has a vertex!
-      eventStage( hasVertex );
-
       // Update vertex counter
       nVtx++;
 
       // Extract beam spot parameters
-      SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
+      SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey, ctx };
 
       T2BeamSpot beamSpot(*beamSpotHandle);
 
@@ -369,10 +351,7 @@ void T2VertexBeamSpotTool::reconstructVertices( ConstDataVector<TrackCollection>
       // Add primary vertex to collection
       myVertexCollection.push_back( primaryVertex ); // passes ownership to vertex collection
 
-      // Event has good vertex
-      eventStage( hasGoodVertex );
-
-      //Monito parameters of the  passed vertex 
+      //Monitor parameters of the  passed vertex 
       monitor_vertex( "Vertex", "Pass", myVertex ); 
 
       //Update good vertex counter
@@ -405,7 +384,7 @@ void T2VertexBeamSpotTool::reconstructVertices( ConstDataVector<TrackCollection>
          {
             // Split, optinally re-cluster, and fit separate vertices
             ATH_MSG_DEBUG( "Reconstruct split vertices");
-            reconstructSplitVertices( mySplitTrackCollection, mySplitVertexCollections, trackClusterer );
+            reconstructSplitVertices( mySplitTrackCollection, mySplitVertexCollections, trackClusterer, ctx );
          }
          // Alternative 3: Split all the tracks and iterate with the remaining tracks
          //          mySplitTrackCollection = mySelectedTrackCollection;
@@ -426,19 +405,15 @@ void T2VertexBeamSpotTool::reconstructVertices( ConstDataVector<TrackCollection>
 
     }//End looping over tracks
 
-  //Store flag whether the nvtx passed trig cuts
-  m_passNpvTrigCuts =  (m_minNpvTrigger <= nPassVtx) && (nPassVtx <= m_maxNpvTrigger); 
-  //Keep the track of how many vertices passed the selection
-  m_NvtxPass  = nPassVtx;
-
   //monitor number of (passed) vertices, clusters, etc
   auto mon = Monitored::Group(m_monTool,  nVtx, nPassVtx, nPassBCIDVtx, nClusters, timerVertexRec );
+  return static_cast<unsigned int>(nPassVtx);
 }
 
 
 void T2VertexBeamSpotTool::reconstructSplitVertices( ConstDataVector<TrackCollection>& myFullTrackCollection,
                                                 DataVector< TrigVertexCollection >& mySplitVertexCollections,
-                                                T2TrackClusterer& trackClusterer ) {
+                                                T2TrackClusterer& trackClusterer, const EventContext& ctx ) const {
   auto timerVertexRec = Monitored::Timer("TIME_SplitVertexReconstruction");
 
 
@@ -449,10 +424,8 @@ void T2VertexBeamSpotTool::reconstructSplitVertices( ConstDataVector<TrackCollec
      auto mon = Monitored::Group(m_monTool,  timeToSortTracks ); 
   }
 
-  // Split the track collection (typically into halves)
   // This returns m_nSplitVertices (ideally) or fewer (if clustering fails) track collections
-  m_trackManager.ResetKey( m_EventID % 2 - 1 );
-  vector< ConstDataVector<TrackCollection> > splitTrackCollections = m_trackManager.split( *myFullTrackCollection.asDataVector() );
+  vector< ConstDataVector<TrackCollection> > splitTrackCollections = m_trackManager.split( *myFullTrackCollection.asDataVector(), ctx );
 
   // Add a new track collection for the split vertices corresponding to this primary vertex
   // There can be anywhere between zero and m_nSplitVertices entries in the collection
@@ -582,38 +555,29 @@ bool T2VertexBeamSpotTool::isGoodVertexBCID( const T2Vertex& vertex ) const {
      );
 }
 
-void T2VertexBeamSpotTool::resetMonitoredVariables() {
-   if(m_eventStageFlag.size() != 0 ) m_eventStageFlag.clear();
-   if(m_eventStage.size() != 0 ) m_eventStage.clear();
-   //Reset all variables just in case
-   m_NvtxPass = 0;
-   m_passNpvTrigCuts = false;
-
-}
-
 
 //Monitoring track variables
-void T2VertexBeamSpotTool::monitor_tracks(std::string prefix, std::string suffix, std::vector<const T2Track*> tracks ){
-   auto  trackPt      = Monitored::Collection(  prefix + "Pt"       + suffix, tracks, [](const T2Track *t){ return t->Pt()      ;});
-   auto  trackEta     = Monitored::Collection(  prefix + "Eta"      + suffix, tracks, [](const T2Track *t){ return t->Eta()     ;});
-   auto  trackPhi     = Monitored::Collection(  prefix + "Phi"      + suffix, tracks, [](const T2Track *t){ return t->Phi()     ;});
-   auto  trackZ0      = Monitored::Collection(  prefix + "Z0"       + suffix, tracks, [](const T2Track *t){ return t->Z0()      ;});
-   auto  trackD0      = Monitored::Collection(  prefix + "D0"       + suffix, tracks, [](const T2Track *t){ return t->D0()      ;});
-   auto  trackZ0err   = Monitored::Collection(  prefix + "Z0err"    + suffix, tracks, [](const T2Track *t){ return t->Z0err()   ;});
-   auto  trackD0err   = Monitored::Collection(  prefix + "D0err"    + suffix, tracks, [](const T2Track *t){ return t->D0err()   ;});
-   auto  trackNDF     = Monitored::Collection(  prefix + "NDF"      + suffix, tracks, [](const T2Track *t){ return t->NDF()     ;});
-   auto  trackQual    = Monitored::Collection(  prefix + "Qual"     + suffix, tracks, [](const T2Track *t){ return t->Qual()    ;});
-   auto  trackChi2Prob= Monitored::Collection(  prefix + "Chi2Prob" + suffix, tracks, [](const T2Track *t){ return t->Chi2Prob();});
-   auto  trackSiHits  = Monitored::Collection(  prefix + "SiHits"   + suffix, tracks, [](const T2Track *t){ return t->SiHits()  ;});
-   auto  trackPiHits  = Monitored::Collection(  prefix + "PIXHits"  + suffix, tracks, [](const T2Track *t){ return t->PIXHits() ;});
-   auto  trackSCTHits = Monitored::Collection(  prefix + "SCTHits"  + suffix, tracks, [](const T2Track *t){ return t->SCTHits() ;});
-   auto  trackTRTHits = Monitored::Collection(  prefix + "TRTHits"  + suffix, tracks, [](const T2Track *t){ return t->TRTHits() ;});
+void T2VertexBeamSpotTool::monitor_tracks(const std::string& prefix, const std::string& suffix, const std::vector<T2Track>& tracks ) const {
+   auto  trackPt      = Monitored::Collection(  prefix + "Pt"       + suffix, tracks, [](const T2Track t){ return t.Pt()      ;});
+   auto  trackEta     = Monitored::Collection(  prefix + "Eta"      + suffix, tracks, [](const T2Track t){ return t.Eta()     ;});
+   auto  trackPhi     = Monitored::Collection(  prefix + "Phi"      + suffix, tracks, [](const T2Track t){ return t.Phi()     ;});
+   auto  trackZ0      = Monitored::Collection(  prefix + "Z0"       + suffix, tracks, [](const T2Track t){ return t.Z0()      ;});
+   auto  trackD0      = Monitored::Collection(  prefix + "D0"       + suffix, tracks, [](const T2Track t){ return t.D0()      ;});
+   auto  trackZ0err   = Monitored::Collection(  prefix + "Z0err"    + suffix, tracks, [](const T2Track t){ return t.Z0err()   ;});
+   auto  trackD0err   = Monitored::Collection(  prefix + "D0err"    + suffix, tracks, [](const T2Track t){ return t.D0err()   ;});
+   auto  trackNDF     = Monitored::Collection(  prefix + "NDF"      + suffix, tracks, [](const T2Track t){ return t.NDF()     ;});
+   auto  trackQual    = Monitored::Collection(  prefix + "Qual"     + suffix, tracks, [](const T2Track t){ return t.Qual()    ;});
+   auto  trackChi2Prob= Monitored::Collection(  prefix + "Chi2Prob" + suffix, tracks, [](const T2Track t){ return t.Chi2Prob();});
+   auto  trackSiHits  = Monitored::Collection(  prefix + "SiHits"   + suffix, tracks, [](const T2Track t){ return t.SiHits()  ;});
+   auto  trackPiHits  = Monitored::Collection(  prefix + "PIXHits"  + suffix, tracks, [](const T2Track t){ return t.PIXHits() ;});
+   auto  trackSCTHits = Monitored::Collection(  prefix + "SCTHits"  + suffix, tracks, [](const T2Track t){ return t.SCTHits() ;});
+   auto  trackTRTHits = Monitored::Collection(  prefix + "TRTHits"  + suffix, tracks, [](const T2Track t){ return t.TRTHits() ;});
    auto mon = Monitored::Group(m_monTool, trackPt, trackEta, trackPhi, trackZ0, trackD0, trackZ0err, trackD0err,
                                trackNDF, trackQual, trackChi2Prob, trackSiHits, trackPiHits, trackSCTHits, trackTRTHits );
 }
 
 
-void T2VertexBeamSpotTool::monitor_cluster( const T2TrackClusterer& clusterer  ){
+void T2VertexBeamSpotTool::monitor_cluster( const T2TrackClusterer& clusterer  ) const {
    auto  clusterZ                = Monitored::Scalar<double>("ClusterZ", clusterer.seedZ0()            );
    auto  clusterNtracks          = Monitored::Scalar<int>("ClusterZ", clusterer.cluster().size()       );
    auto  clusterNUnusedTracks    = Monitored::Scalar<int>("ClusterZ", clusterer.unusedTracks().size()  );
@@ -622,7 +586,7 @@ void T2VertexBeamSpotTool::monitor_cluster( const T2TrackClusterer& clusterer  )
 }
 
 
-void T2VertexBeamSpotTool::monitor_cluster_tracks(T2TrackClusterer &clusterer, const Trk::Track &track  ){
+void T2VertexBeamSpotTool::monitor_cluster_tracks(T2TrackClusterer &clusterer, const Trk::Track &track  ) const {
    const double deltaZ0 = track.perigeeParameters()->parameters()[Trk::z0] - clusterer.seedZ0();
    const AmgSymMatrix(5)& perigeeCov = *track.perigeeParameters()->covariance();
    const double z0Error = std::sqrt(perigeeCov(Trk::z0,Trk::z0));
@@ -635,7 +599,7 @@ void T2VertexBeamSpotTool::monitor_cluster_tracks(T2TrackClusterer &clusterer, c
 
 
 
-void T2VertexBeamSpotTool::monitor_vertex(std::string prefix, std::string suffix, const T2Vertex &vertex ){
+void T2VertexBeamSpotTool::monitor_vertex(const std::string& prefix, const std::string& suffix, const T2Vertex &vertex ) const {
 
    auto ntrk      = Monitored::Scalar<int>   ( prefix + "NTrks"      + suffix, vertex.NTrks()      ); 
    auto sumpt     = Monitored::Scalar<double>( prefix + "SumPt"      + suffix, vertex.SumPt()      ); 
@@ -662,13 +626,4 @@ void T2VertexBeamSpotTool::monitor_vertex(std::string prefix, std::string suffix
   
 
 
-bool T2VertexBeamSpotTool::eventStage( Statistics stage ) {
-   if ( ! m_eventStageFlag[ stage ] )
-   {
-      m_eventStageFlag[ stage ] = true;
-      m_eventStage.push_back( stage );
-      return true;
-   }
-   return false;
-}
 
diff --git a/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/components/TrigT2BeamSpot_entries.cxx b/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/components/TrigT2BeamSpot_entries.cxx
index 37ef18d64c355899d1e85bd409ef5ee4980ceb3f..e096e800861ba4ff758ff19abf5026221f0d2ddf 100644
--- a/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/components/TrigT2BeamSpot_entries.cxx
+++ b/Trigger/TrigAlgorithms/TrigT2BeamSpot/src/components/TrigT2BeamSpot_entries.cxx
@@ -1,4 +1,3 @@
-#include "TrigT2BeamSpot/IT2VertexBeamSpotTool.h"
 #include "TrigT2BeamSpot/T2VertexBeamSpotTool.h"
 #include "TrigT2BeamSpot/T2VertexBeamSpot.h"
 
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/share/testDataAccessService.py b/Trigger/TrigAlgorithms/TrigT2CaloCommon/share/testDataAccessService.py
index 77db9d229e7cc80f05a2e5d31c9cc77973f3a990..57d1afa11ea9e9da000b41948e2f28265533bd90 100644
--- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/share/testDataAccessService.py
+++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/share/testDataAccessService.py
@@ -39,10 +39,6 @@ if TriggerFlags.doCalo:
     
     
     
-     #topSequence += algo
-     #from TrigUpgradeTest.TestUtils import L1DecoderTest
-     #l1DecoderTest=L1DecoderTest()
-     #topSequence+=l1DecoderTest
 
      from L1Decoder.L1DecoderConfig import mapThresholdToL1RoICollection 
     
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_t2calo_only_build.sh b/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_t2calo_only_build.sh
index 7ab73ae454100ac33f7d6ca1e861c557e74d710f..06075bbc812ed91331814585f362b9007b4a3080 100755
--- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_t2calo_only_build.sh
+++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_t2calo_only_build.sh
@@ -1,17 +1,6 @@
 #!/bin/bash
-# art-description: athenaMT trigger test with only calo algorithms
-# art-type: build
-# art-include: master/Athena
-# Skipping art-output which has no effect for build tests.
-# If you create a grid version, check art-output in existing grid tests.
 
-export EVENTS=20
-export THREADS=1
-export SLOTS=1
-export JOBOPTION="TrigT2CaloCommon/Calo.py"
+# athena.py --imf --evtMax 20 --threads 1 --concurrent-events 1 --filesInput /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00360026.physics_EnhancedBias.merge.RAW._lb0151._SFO-1._0001.1 TrigT2CaloCommon/Calo.py
 
-# Skip dumping chain counts because this test doesn't produce the histogram including them
-export SKIP_CHAIN_DUMP=1
-
-source exec_TrigUpgradeTest_art_athenaMT.sh
-source exec_TrigUpgradeTest_art_post.sh
+# uncomment the line above and remove this message to restore the test after the job opts are fixed
+echo "test disabled temporarily"
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_t2calo_ringer_only_build.sh b/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_t2calo_ringer_only_build.sh
index 1de726f2d480b1e0fb965ac05fae709753098312..f67fd889774b30163f5e64c863ce351c72ed6a70 100755
--- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_t2calo_ringer_only_build.sh
+++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/test/test_t2calo_ringer_only_build.sh
@@ -1,17 +1,6 @@
 #!/bin/bash
-# art-description: athenaMT trigger test running only ringer
-# art-type: build
-# art-include: master/Athena
-# Skipping art-output which has no effect for build tests.
-# If you create a grid version, check art-output in existing grid tests.
 
-export EVENTS=20
-export THREADS=1
-export SLOTS=1
-export JOBOPTION="TrigT2CaloCommon/CaloRinger.py"
+# athena.py --imf --evtMax 20 --threads 1 --concurrent-events 1 --filesInput /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00360026.physics_EnhancedBias.merge.RAW._lb0151._SFO-1._0001.1 TrigT2CaloCommon/CaloRinger.py
 
-# Skip dumping chain counts because this test doesn't produce the histogram including them
-export SKIP_CHAIN_DUMP=1
-
-source exec_TrigUpgradeTest_art_athenaMT.sh
-source exec_TrigUpgradeTest_art_post.sh
+# uncomment the line above and remove this message to restore the test after the job opts are fixed
+echo "test disabled temporarily"
diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisUser/share/TIDAdata-chains-run3.dat b/Trigger/TrigAnalysis/TrigInDetAnalysisUser/share/TIDAdata-chains-run3.dat
index af653dea2a8bd78b78d1fb1f5b97e4984eed9a53..647b7c9e1142b9216bd7be09d91c5ffa4cf9be69 100644
--- a/Trigger/TrigAnalysis/TrigInDetAnalysisUser/share/TIDAdata-chains-run3.dat
+++ b/Trigger/TrigAnalysis/TrigInDetAnalysisUser/share/TIDAdata-chains-run3.dat
@@ -15,9 +15,13 @@ testChains = {
     "HLT_e5_etcut_L1EM3:HLT_IDTrack_Electron_IDTrig", 
  
     "HLT_tau25_idperf_tracktwo_L1TAU12IM:HLT_IDTrack_TauCore_FTF",
+    "HLT_tau25_idperf_tracktwo_L1TAU12IM:HLT_IDTrack_TauCore_FTF:HLT_Roi_TauCore",
     "HLT_tau25_idperf_tracktwo_L1TAU12IM:HLT_IDTrack_TauIso_FTF",
+    "HLT_tau25_idperf_tracktwo_L1TAU12IM:HLT_IDTrack_TauIso_FTF:HLT_Roi_TauIso",
     "HLT_tau25_idperf_tracktwo_L1TAU12IM:HLT_IDTrack_Tau_FTF",
+    "HLT_tau25_idperf_tracktwo_L1TAU12IM:HLT_IDTrack_Tau_FTF:HLT_TAURoI",
     "HLT_tau25_idperf_tracktwo_L1TAU12IM:HLT_IDTrack_Tau_IDTrig",
+    "HLT_tau25_idperf_tracktwo_L1TAU12IM:HLT_IDTrack_Tau_IDTrig:HLT_TAURoI",
 
     "HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20:HLT_IDTrack_Bjet_FTF",
     "HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20:HLT_IDTrack_Bjet_IDTrig",
diff --git a/Trigger/TrigConfiguration/TrigConfigSvc/src/TrigConfJobOptionsSvc.cxx b/Trigger/TrigConfiguration/TrigConfigSvc/src/TrigConfJobOptionsSvc.cxx
index c8e05bdd091ce426e82e6ee174f8526ce82daa74..bdde244e657e12f7d9adde501dedb8775c157078 100644
--- a/Trigger/TrigConfiguration/TrigConfigSvc/src/TrigConfJobOptionsSvc.cxx
+++ b/Trigger/TrigConfiguration/TrigConfigSvc/src/TrigConfJobOptionsSvc.cxx
@@ -31,7 +31,8 @@ StatusCode TrigConf::JobOptionsSvc::initialize()
 
   //  m_optsvc = serviceLocator()->getOptsSvc();
   ATH_CHECK(m_optsvc.retrieve());
-  m_optsvc->set( this->name() + ".TYPE" , "NONE" );
+  SmartIF<IService> josvc = &*m_josvc;
+  m_optsvc->set( josvc->name() + ".TYPE" , "NONE" );
 
   
   if (m_sourceType == "FILE") {
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigEFBMuMuXFexConfig.py b/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigEFBMuMuXFexConfig.py
index f53a76aec22254e21323a0dc756a9b3619b39417..8754b10dd60e042354b20f0a5b93f8678deec09e 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigEFBMuMuXFexConfig.py
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigEFBMuMuXFexConfig.py
@@ -204,16 +204,6 @@ class EFBMuMuXFex_allModes (EFBMuMuXFex_1):
         self.AthenaMonTools = [ validation, online, time ]
 
 
-class EFBMuMuXFex_FTK (EFBMuMuXFex_1):
-    __slots__ = []
-    def __init__(self, name = "EFBMuMuXFex_FTK"):
-        EFBMuMuXFex_1.__init__(self, name )
-        
-        # FTK
-        self.DoFTK = True
-        self.TrackCollection = "InDetTrigTrackingxAODCnv_BeamSpot_FTK"
-        
-
 
 class EFBMuMuXFex_allModes_tightBc (EFBMuMuXFex_allModes):
     __slots__ = []
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigEFBMuMuXHypoConfig.py b/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigEFBMuMuXHypoConfig.py
index 8784be00206c211493bffe3d5985b6dee134f113..949f046e76ab4332153bed5ab2b3538beff97e1c 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigEFBMuMuXHypoConfig.py
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigEFBMuMuXHypoConfig.py
@@ -90,12 +90,6 @@ class EFBMuMuXHypo_allModes (EFBMuMuXHypo_1):
         self.AcceptLb = True
         self.AcceptBc = True
         
-class EFBMuMuXHypo_FTK (EFBMuMuXHypo_1):
-    __slots__ = []
-    def __init__(self, name = "EFBMuMuXHypo_FTK"):
-        EFBMuMuXHypo_1.__init__(self, name )
-
-        
 class EFBMuMuXHypo_allModes_tightBc (EFBMuMuXHypo_allModes):
     __slots__ = []
     def __init__(self, name = "EFBMuMuXHypo_allModes_tightBc"):
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigL2TrkMassFexConfig.py b/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigL2TrkMassFexConfig.py
deleted file mode 100644
index 7b395b99b5cf9da58c281627edf3e2fce6412649..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigL2TrkMassFexConfig.py
+++ /dev/null
@@ -1,304 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from TrigBphysHypo.TrigBphysHypoConf import TrigL2TrkMassFex
-from TrigVertexFitter.TrigVertexFitterConf import TrigL2VertexFitter
-from TrigVertexFitter.TrigVertexFitterConf import TrigVertexFitter
-from TrigVertexFitter.TrigVertexFitterConf import TrigVertexingTool
-
-L2VFitTool = TrigL2VertexFitter()
-VFitTool = TrigVertexFitter()
-VertexTool = TrigVertexingTool()
-
-from __main__ import ToolSvc
-
-ToolSvc += L2VFitTool
-ToolSvc += VFitTool
-ToolSvc += VertexTool
-
-
-# basic cut
-class L2TrkMassFex_Jpsimumu (TrigL2TrkMassFex):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassFex_Jpsimumu"):
-        super( TrigL2TrkMassFex, self ).__init__( name )
-
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = False
-
-        # L2 TrkMass cuts
-        self.TrackPTthr          = 4000
-        self.dEtaTrackRoI        = 0.1
-        self.dPhiTrackRoI        = 0.1
-        self.Mass_low_cut        = 2850.
-        self.Mass_high_cut       = 3350.
-        self.doVertexFit         = True
-        self.DaughterMass        = 105.658357
-        self.TrigL2VertexFitter = L2VFitTool
-        self.TrigVertexFitter = VFitTool
-        self.TrigVertexingTool = VertexTool
-        
-        from TrigBphysHypo.TrigL2TrkMassFexMonitoring import TrigL2TrkMassFexValidationMonitoring_RoI
-        validation = TrigL2TrkMassFexValidationMonitoring_RoI()
-        
-        from TrigBphysHypo.TrigL2TrkMassFexMonitoring import TrigL2TrkMassFexOnlineMonitoring_RoI
-        online = TrigL2TrkMassFexOnlineMonitoring_RoI()
-        
-        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
-        time = TrigTimeHistToolConfig("Time")
-                
-        self.AthenaMonTools = [ validation, online, time ]
-
-# pass all
-class L2TrkMassFex_Jpsimumu_passL2 (L2TrkMassFex_Jpsimumu):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassFex_Jpsimumu_passL2"):
-        super( L2TrkMassFex_Jpsimumu_passL2, self ).__init__( name )
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = True
-
-# loose cut
-class L2TrkMassFex_Jpsimumu_loose (TrigL2TrkMassFex):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassFex_Jpsimumu_loose"):
-        super( TrigL2TrkMassFex, self ).__init__( name )
-
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = False
-
-        # L2 TrkMass cuts
-        self.OppositeCharge = False
-        self.TrackPTthr          = 3500
-        self.dEtaTrackRoI        = 0.1
-        self.dPhiTrackRoI        = 0.1
-        self.Mass_low_cut        = 2600.
-        self.Mass_high_cut       = 3600.
-        self.doVertexFit         = True
-        self.DaughterMass        = 105.658357
-        self.TrigL2VertexFitter = L2VFitTool
-        self.TrigVertexFitter = VFitTool
-        self.TrigVertexingTool = VertexTool
-        
-        from TrigBphysHypo.TrigL2TrkMassFexMonitoring import TrigL2TrkMassFexValidationMonitoring_RoI
-        validation = TrigL2TrkMassFexValidationMonitoring_RoI()
-        
-        from TrigBphysHypo.TrigL2TrkMassFexMonitoring import TrigL2TrkMassFexOnlineMonitoring_RoI
-        online = TrigL2TrkMassFexOnlineMonitoring_RoI()
-        
-        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
-        time = TrigTimeHistToolConfig("Time")
-                
-        self.AthenaMonTools = [ validation, online, time ]
-
-
-# pass all
-class L2TrkMassFex_Jpsimumu_loose_passL2 (L2TrkMassFex_Jpsimumu_loose):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassFex_Jpsimumu_loose_passL2"):
-        super( L2TrkMassFex_Jpsimumu_loose_passL2, self ).__init__( name )
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = True
-
-# looser cut
-class L2TrkMassFex_Jpsimumu_looser (TrigL2TrkMassFex):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassFex_Jpsimumu_looser"):
-        super( TrigL2TrkMassFex, self ).__init__( name )
-
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = False
-
-        # L2 TrkMass cuts
-        self.OppositeCharge = False
-        self.TrackPTthr          = 2000.
-        self.dEtaTrackRoI        = 0.1
-        self.dPhiTrackRoI        = 0.1
-        self.Mass_low_cut        = 2600.
-        self.Mass_high_cut       = 3600.
-        self.doVertexFit         = True
-        self.DaughterMass        = 105.658357
-        self.TrigL2VertexFitter = L2VFitTool
-        self.TrigVertexFitter = VFitTool
-        self.TrigVertexingTool = VertexTool
-        
-        from TrigBphysHypo.TrigL2TrkMassFexMonitoring import TrigL2TrkMassFexValidationMonitoring_RoI
-        validation = TrigL2TrkMassFexValidationMonitoring_RoI()
-        
-        from TrigBphysHypo.TrigL2TrkMassFexMonitoring import TrigL2TrkMassFexOnlineMonitoring_RoI
-        online = TrigL2TrkMassFexOnlineMonitoring_RoI()
-        
-        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
-        time = TrigTimeHistToolConfig("Time")
-                
-        self.AthenaMonTools = [ validation, online, time ]
-
-
-# pass all
-class L2TrkMassFex_Jpsimumu_looser_passL2 (L2TrkMassFex_Jpsimumu_looser):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassFex_Jpsimumu_looser_passL2"):
-        super( L2TrkMassFex_Jpsimumu_looser_passL2, self ).__init__( name )
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = True
-
-# basic cut
-class L2TrkMassFex_Jpsimumu_FS (TrigL2TrkMassFex):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassFex_Jpsimumu_FS"):
-        super( TrigL2TrkMassFex, self ).__init__( name )
-
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = False
-
-        # L2 TrkMass cuts
-        self.TrackPTthr          = 4000
-        self.dEtaTrackRoI        = 0.1
-        self.dPhiTrackRoI        = 0.1
-        self.Mass_low_cut        = 2850.
-        self.Mass_high_cut       = 3350.
-        self.DaughterMass        = 105.658357
-        self.doVertexFit         = True
-        self.TrigL2VertexFitter = L2VFitTool
-        self.TrigVertexFitter = VFitTool
-        self.TrigVertexingTool = VertexTool
-        
-        from TrigBphysHypo.TrigL2TrkMassFexMonitoring import TrigL2TrkMassFexValidationMonitoring_FS
-        validation = TrigL2TrkMassFexValidationMonitoring_FS()
-        
-        from TrigBphysHypo.TrigL2TrkMassFexMonitoring import TrigL2TrkMassFexOnlineMonitoring_FS
-        online = TrigL2TrkMassFexOnlineMonitoring_FS()
-        
-        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
-        time = TrigTimeHistToolConfig("Time")
-                
-        self.AthenaMonTools = [ validation, online, time ]
-
-
-# pass all
-class L2TrkMassFex_Jpsimumu_FS_passL2 (L2TrkMassFex_Jpsimumu_FS):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassFex_Jpsimumu_FS_passL2"):
-        super( L2TrkMassFex_Jpsimumu_FS_passL2, self ).__init__( name )
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = True
-
-# FS loose cut
-class L2TrkMassFex_Jpsimumu_loose_FS (TrigL2TrkMassFex):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassFex_Jpsimumu_loose_FS"):
-        super( TrigL2TrkMassFex, self ).__init__( name )
-
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = False
-
-        # L2 TrkMass cuts
-        self.OppositeCharge      = False
-        self.TrackPTthr          = 3000
-        self.dEtaTrackRoI        = 0.1
-        self.dPhiTrackRoI        = 0.1
-        self.Mass_low_cut        = 2500.
-        self.Mass_high_cut       = 4000.
-        self.DaughterMass        = 105.658357
-        self.doVertexFit         = True
-        self.TrigL2VertexFitter = L2VFitTool
-        self.TrigVertexFitter = VFitTool
-        self.TrigVertexingTool = VertexTool
-        
-        from TrigBphysHypo.TrigL2TrkMassFexMonitoring import TrigL2TrkMassFexValidationMonitoring_FS
-        validation = TrigL2TrkMassFexValidationMonitoring_FS()
-        
-        from TrigBphysHypo.TrigL2TrkMassFexMonitoring import TrigL2TrkMassFexOnlineMonitoring_FS
-        online = TrigL2TrkMassFexOnlineMonitoring_FS()
-        
-        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
-        time = TrigTimeHistToolConfig("Time")
-                
-        self.AthenaMonTools = [ validation, online, time ]
-
-class L2TrkMassFex_Jpsimumu_loose_FS_passL2 (L2TrkMassFex_Jpsimumu_loose_FS):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassFex_Jpsimumu_loose_FS_passL2"):
-        super(L2TrkMassFex_Jpsimumu_loose_FS_passL2, self ).__init__( name )
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = True
-
-# Upsi FS basic cut
-class L2TrkMassFex_Upsimumu_FS (TrigL2TrkMassFex):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassFex_Upsimumu_FS"):
-        super( TrigL2TrkMassFex, self ).__init__( name )
-
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = False
-
-        # L2 TrkMass cuts
-        self.TrackPTthr          = 4000
-        self.dEtaTrackRoI        = 0.1
-        self.dPhiTrackRoI        = 0.1
-        self.Mass_low_cut        = 8000.
-        self.Mass_high_cut       = 12000.
-        self.DaughterMass        = 105.658357
-        self.doVertexFit         = True
-        self.TrigL2VertexFitter = L2VFitTool
-        self.TrigVertexFitter = VFitTool
-        self.TrigVertexingTool = VertexTool
-        
-        from TrigBphysHypo.TrigL2TrkMassFexMonitoring import TrigL2TrkMassFexValidationMonitoring_Upsi_FS
-        validation = TrigL2TrkMassFexValidationMonitoring_Upsi_FS()
-        
-        from TrigBphysHypo.TrigL2TrkMassFexMonitoring import TrigL2TrkMassFexOnlineMonitoring_Upsi_FS
-        online = TrigL2TrkMassFexOnlineMonitoring_Upsi_FS()
-        
-        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
-        time = TrigTimeHistToolConfig("Time")
-                
-        self.AthenaMonTools = [ validation, online, time ]
-
-
-class L2TrkMassFex_Upsimumu_FS_passL2 (L2TrkMassFex_Upsimumu_FS):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassFex_Upsimumu_FS_passL2"):
-        super(L2TrkMassFex_Upsimumu_FS_passL2, self ).__init__( name )
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = True
-
-# FS loose cut
-class L2TrkMassFex_Upsimumu_loose_FS (TrigL2TrkMassFex):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassFex_Upsimumu_loose_FS"):
-        super( TrigL2TrkMassFex, self ).__init__( name )
-
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = False
-
-        # L2 TrkMass cuts
-        self.OppositeCharge      = False
-        self.TrackPTthr          = 3000
-        self.dEtaTrackRoI        = 0.1
-        self.dPhiTrackRoI        = 0.1
-        self.Mass_low_cut        = 8000.
-        self.Mass_high_cut       = 12000.
-        self.DaughterMass        = 105.658357
-        self.doVertexFit         = True
-        self.TrigL2VertexFitter = L2VFitTool
-        self.TrigVertexFitter = VFitTool
-        self.TrigVertexingTool = VertexTool
-        
-        from TrigBphysHypo.TrigL2TrkMassFexMonitoring import TrigL2TrkMassFexValidationMonitoring_Upsi_FS
-        validation = TrigL2TrkMassFexValidationMonitoring_Upsi_FS()
-        
-        from TrigBphysHypo.TrigL2TrkMassFexMonitoring import TrigL2TrkMassFexOnlineMonitoring_Upsi_FS
-        online = TrigL2TrkMassFexOnlineMonitoring_Upsi_FS()
-        
-        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
-        time = TrigTimeHistToolConfig("Time")
-                
-        self.AthenaMonTools = [ validation, online, time ]
-
-class L2TrkMassFex_Upsimumu_loose_FS_passL2 (L2TrkMassFex_Upsimumu_loose_FS):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassFex_Upsimumu_loose_FS_passL2"):
-        super(L2TrkMassFex_Upsimumu_loose_FS_passL2, self ).__init__( name )
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = True
-
-
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigL2TrkMassFexMonitoring.py b/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigL2TrkMassFexMonitoring.py
deleted file mode 100644
index f9548d2ced5a3d7a3b2eca58caa7fccf4a640df2..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigL2TrkMassFexMonitoring.py
+++ /dev/null
@@ -1,760 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from TrigMonitorBase.TrigGenericMonitoringToolConfig import defineHistogram, TrigGenericMonitoringToolConfig
-
-ERROR_labels = ' No_EventInfo : No_RoI : No_TrackColl : No_CombMuon : More_TrackColl : AddTrack_Fails : Unique_AddTrack_Fails : CalcInvMass_Fails : CalcMother_Fails : CalcMassPull_Fails : BphysColl_Fails '
-ERROR_number = 10
-
-ACCEPTANCE_labels = ' Input : AcceptAll : Got_RoI : Got_TrackColl : Full_TrackColl : Single_TrackColl : Full_IDTracks : Mu1_Chi2_Cut : Mu1_pT_Cut : Mu1_Chi2Pt_Cuts : Mu1_dEta_Cut : Mu1_dPhi_Cut : Mu1_dR_Cut : Mu2_Chi2_Cut : Mu2_pT_Cut : Mu2_Chi2Pt_Cuts : Opp_Charge : InvMass_Cut : AddTrack_Test : Vertexing : CalcInvMass : CalcMother : Vertex_not_NULL : : BphysColl_not_Empty : : Each_Mu1_Chi2_Cut : Each_Mu1_pT_Cut : Each_Mu1_Chi2Pt_Cuts : Each_Mu1_dEta_Cut : Each_Mu1_dPhi_Cut : Each_Mu1_dR_Cut : : Each_Mu2_Chi2_Cut : Each_Mu2_pT_Cut : Each_Mu2_Chi2Pt_Cuts : Each_Opp_Charge : Each_InvMass_Cut : Each_AddTrack_Test : Each_Vertexing : Each_CalcInvMass : Each_CalcMother : Each_Vertex_not_NULL '
-ACCEPTANCE_number = 43
-
-class TrigL2TrkMassFexValidationMonitoring_RoI(TrigGenericMonitoringToolConfig):
-    def __init__ (self, name="L2TrkMassFexValidation_RoI"):
-        super(TrigL2TrkMassFexValidationMonitoring_RoI, self).__init__(name)
-        self.defineTarget("Validation")
-        self.Histograms  = [ defineHistogram ( 'Errors', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Algorithm errors ; ; # Events / Candidates',
-                                               xbins = ERROR_number , xmin = -0.5, xmax = ERROR_number - 0.5,
-                                               labels = ERROR_labels ) ]
-        self.Histograms += [ defineHistogram ( 'Acceptance', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Reached steps - acceptance ; ; # Events / Candidates',
-                                               xbins = ACCEPTANCE_number , xmin = -0.5, xmax = ACCEPTANCE_number - 0.5,
-                                               labels = ACCEPTANCE_labels ) ]
-        self.Histograms += [ defineHistogram ( 'ROIEta, ROIPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - ROI direction ; #eta ; #phi ; # Events',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'nTracks', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Number of ID tracks ; # Tracks ; # Events',
-                                               xbins = 101, xmin = -1.5, xmax = 99.5 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkPt', type = 'TH1F',
-                                               title = 'L2TrkMassFex - ID tracks p_{T} - low range ; p_{T} [GeV] ; # Tracks',
-                                               xbins = 100, xmin = 0., xmax = 25. ) ]
-        self.Histograms += [ defineHistogram ( 'TrkPt_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - ID tracks p_{T} ; p_{T} [GeV] ; # Tracks',
-                                               xbins = 100, xmin = 0., xmax = 200. ) ]
-        self.Histograms += [ defineHistogram ( 'TrkEta, TrkPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track direction ; #eta ; #phi ; # Events',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdEta, TrkROIdPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#eta#Delta#phi difference ; #Delta#eta ; #Delta#phi ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0,
-                                               ybins = 32, ymin = 0., ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdEta', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#eta difference ; #Delta#eta ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdPhi', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#phi difference ; #Delta#phi ; # Tracks',
-                                               xbins = 32, xmin = 0., xmax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #DeltaR difference ; #DeltaR ; # Tracks',
-                                               xbins = 50, xmin = 0., xmax = 5. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMassNoTrkPtCut', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - p_{T#mu2} > 2 GeV - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 1., xmax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMassNoTrkPtCut_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - p_{T#mu2} > 2 GeV ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMass', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 1., xmax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMass_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Pt, Trk2Pt', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks p_{T} correlation ; p_{T#mu1} [GeV] ; p_{T#mu2} [GeV] ; # Candidates',
-                                               xbins = 50, xmin = 0., xmax = 50.,
-                                               ybins = 50, ymin = 0., ymax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Eta, Trk2Eta', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks #eta correlation ; #eta_{#mu1} ; #eta_{#mu2} ; # Candidates',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 30, ymin = -3.0, ymax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Phi, Trk2Phi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks #phi correlation ; #phi_{#mu1} ; #phi_{#mu2} ; # Candidates',
-                                               xbins = 32, xmin = -3.2, xmax = 3.2,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dEta, Trk1Trk2dPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#eta#Delta#phi difference ; #Delta#eta ; #Delta#phi ; # Candidates',
-                                               xbins = 30, xmin = 0., xmax = 3.0,
-                                               ybins = 32, ymin = 0., ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dEta', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#eta difference ; #Delta#eta ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dPhi', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#phi difference ; #Delta#phi ; # Tracks',
-                                               xbins = 32, xmin = 0., xmax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #DeltaR difference ; #DeltaR ; # Tracks',
-                                               xbins = 50, xmin = 0., xmax = 5. ) ]
-        self.Histograms += [ defineHistogram ( 'SumPtTrk12', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1+Track2 p_{T} ; p_{T#mu1}+p_{T#mu2} [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted mass - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 1., xmax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted mass ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass, InvMass_okFit', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Before vs. after vertex fit invariant mass ; Fitted mass [GeV] ; Invariant mass [GeV] ; # Candidates',
-                                               xbins = 25, xmin = 1., xmax = 6.,
-                                               ybins = 25, ymin = 1., ymax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'Chi2toNDoF', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Vertex fit #chi^{2}/_{NDoF} ; #chi^{2}/_{NDoF} ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 25. ) ]
-        self.Histograms += [ defineHistogram ( 'Chi2toNDoFProb', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Vertex fit #chi^{2}/_{NDoF}-probability ; prob(#chi^{2}/_{NDoF}) ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 1. ) ]
-        self.Histograms += [ defineHistogram ( 'FitTotalPt', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted di-muon p_{T} ; p_{T} [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitTotalPt, SumPtTrk12_okFit', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Fitted di-muon p_{T} vs. track1+track2 p_{T} ; p_{T} [GeV] ; (p_{T#mu1}+p_{T#mu2}) [GeV] ; # Candidates',
-                                               xbins = 25, xmin = 0., xmax = 50.,
-                                               ybins = 25, ymin = 0., ymax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'FitVtxR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted vertex R-position ; R [mm] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 10. ) ]
-        self.Histograms += [ defineHistogram ( 'FitVtxZ', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted vertex Z-position ; Z [mm] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 500. ) ]
-        self.Histograms += [ defineHistogram ( 'nBphys', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Number of di-muon candidates ; # di-muons ; # Events',
-                                               xbins = 50, xmin = -0.5, xmax = 49.5 ) ]
-        self.Histograms += [ defineHistogram ( 'TotalRunTime', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Total processing time ; t_{tot} [ms] ; # Events',
-                                               xbins = 100, xmin = 0., xmax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'VertexingTime', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Vertex fit processing time ; t_{vtx} [ms] ; # Events',
-                                               xbins = 100, xmin = 0., xmax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'TotalRunTime, VertexingTime', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Total vs. vertex fit processing time ; t_{tot} [ms] ; t_{vtx} [ms] ; # Events',
-                                               xbins = 100, xmin = 0., xmax = 50.,
-                                               ybins = 100, ymin = 0., ymax = 50. ) ]
-
-class TrigL2TrkMassFexOnlineMonitoring_RoI(TrigGenericMonitoringToolConfig):
-    def __init__ (self, name="L2TrkMassFexOnline_RoI"):
-        super(TrigL2TrkMassFexOnlineMonitoring_RoI, self).__init__(name)
-        self.defineTarget("Online")
-        self.Histograms  = [ defineHistogram ( 'Errors', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Algorithm errors ; ; # Events / Candidates',
-                                               xbins = ERROR_number , xmin = -0.5, xmax = ERROR_number - 0.5,
-                                               labels = ERROR_labels ) ]
-        self.Histograms += [ defineHistogram ( 'Acceptance', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Reached steps - acceptance ; ; # Events / Candidates',
-                                               xbins = ACCEPTANCE_number , xmin = -0.5, xmax = ACCEPTANCE_number - 0.5,
-                                               labels = ACCEPTANCE_labels ) ]
-        self.Histograms += [ defineHistogram ( 'ROIEta, ROIPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - ROI direction ; #eta ; #phi ; # Events',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'nTracks', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Number of ID tracks ; # Tracks ; # Events',
-                                               xbins = 101, xmin = -1.5, xmax = 99.5 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkPt', type = 'TH1F',
-                                               title = 'L2TrkMassFex - ID tracks p_{T} - low range ; p_{T} [GeV] ; # Tracks',
-                                               xbins = 100, xmin = 0., xmax = 25. ) ]
-        self.Histograms += [ defineHistogram ( 'TrkPt_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - ID tracks p_{T} ; p_{T} [GeV] ; # Tracks',
-                                               xbins = 100, xmin = 0., xmax = 200. ) ]
-        self.Histograms += [ defineHistogram ( 'TrkEta, TrkPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track direction ; #eta ; #phi ; # Events',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdEta, TrkROIdPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#eta#Delta#phi difference ; #Delta#eta ; #Delta#phi ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0,
-                                               ybins = 32, ymin = 0., ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdEta', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#eta difference ; #Delta#eta ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdPhi', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#phi difference ; #Delta#phi ; # Tracks',
-                                               xbins = 32, xmin = 0., xmax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #DeltaR difference ; #DeltaR ; # Tracks',
-                                               xbins = 50, xmin = 0., xmax = 5. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMassNoTrkPtCut', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - p_{T#mu2} > 2 GeV - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 1., xmax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMassNoTrkPtCut_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - p_{T#mu2} > 2 GeV ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMass', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 1., xmax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMass_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Pt, Trk2Pt', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks p_{T} correlation ; p_{T#mu1} [GeV] ; p_{T#mu2} [GeV] ; # Candidates',
-                                               xbins = 50, xmin = 0., xmax = 50.,
-                                               ybins = 50, ymin = 0., ymax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Eta, Trk2Eta', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks #eta correlation ; #eta_{#mu1} ; #eta_{#mu2} ; # Candidates',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 30, ymin = -3.0, ymax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Phi, Trk2Phi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks #phi correlation ; #phi_{#mu1} ; #phi_{#mu2} ; # Candidates',
-                                               xbins = 32, xmin = -3.2, xmax = 3.2,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dEta, Trk1Trk2dPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#eta#Delta#phi difference ; #Delta#eta ; #Delta#phi ; # Candidates',
-                                               xbins = 30, xmin = 0., xmax = 3.0,
-                                               ybins = 32, ymin = 0., ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dEta', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#eta difference ; #Delta#eta ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dPhi', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#phi difference ; #Delta#phi ; # Tracks',
-                                               xbins = 32, xmin = 0., xmax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #DeltaR difference ; #DeltaR ; # Tracks',
-                                               xbins = 50, xmin = 0., xmax = 5. ) ]
-        self.Histograms += [ defineHistogram ( 'SumPtTrk12', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1+Track2 p_{T} ; p_{T#mu1}+p_{T#mu2} [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted mass - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 1., xmax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted mass ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass, InvMass_okFit', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Before vs. after vertex fit invariant mass ; Fitted mass [GeV] ; Invariant mass [GeV] ; # Candidates',
-                                               xbins = 25, xmin = 1., xmax = 6.,
-                                               ybins = 25, ymin = 1., ymax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'Chi2toNDoF', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Vertex fit #chi^{2}/_{NDoF} ; #chi^{2}/_{NDoF} ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 25. ) ]
-        self.Histograms += [ defineHistogram ( 'Chi2toNDoFProb', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Vertex fit #chi^{2}/_{NDoF}-probability ; prob(#chi^{2}/_{NDoF}) ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 1. ) ]
-        self.Histograms += [ defineHistogram ( 'FitTotalPt', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted di-muon p_{T} ; p_{T} [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitTotalPt, SumPtTrk12_okFit', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Fitted di-muon p_{T} vs. track1+track2 p_{T} ; p_{T} [GeV] ; (p_{T#mu1}+p_{T#mu2}) [GeV] ; # Candidates',
-                                               xbins = 25, xmin = 0., xmax = 50.,
-                                               ybins = 25, ymin = 0., ymax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'FitVtxR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted vertex R-position ; R [mm] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 10. ) ]
-        self.Histograms += [ defineHistogram ( 'FitVtxZ', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted vertex Z-position ; Z [mm] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 500. ) ]
-        self.Histograms += [ defineHistogram ( 'nBphys', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Number of di-muon candidates ; # di-muons ; # Events',
-                                               xbins = 50, xmin = -0.5, xmax = 49.5 ) ]
-#        self.Histograms += [ defineHistogram ( 'TotalRunTime', type = 'TH1F',
-#                                               title = 'L2TrkMassFex - Total processing time ; t_{tot} [ms] ; # Events',
-#                                               xbins = 100, xmin = 0., xmax = 50. ) ]
-#        self.Histograms += [ defineHistogram ( 'VertexingTime', type = 'TH1F',
-#                                               title = 'L2TrkMassFex - Vertex fit processing time ; t_{vtx} [ms] ; # Events',
-#                                               xbins = 100, xmin = 0., xmax = 50. ) ]
-#        self.Histograms += [ defineHistogram ( 'TotalRunTime, VertexingTime', type = 'TH2F',
-#                                               title = 'L2TrkMassFex - Total vs. vertex fit processing time ; t_{tot} [ms] ; t_{vtx} [ms] ; # Events',
-#                                               xbins = 100, xmin = 0., xmax = 50.,
-#                                               ybins = 100, ymin = 0., ymax = 50. ) ]
-
-class TrigL2TrkMassFexValidationMonitoring_FS(TrigGenericMonitoringToolConfig):
-    def __init__ (self, name="L2TrkMassFexValidation_FS"):
-        super(TrigL2TrkMassFexValidationMonitoring_FS, self).__init__(name)
-        self.defineTarget("Validation")
-        self.Histograms  = [ defineHistogram ( 'Errors', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Algorithm errors ; ; # Events / Candidates',
-                                               xbins = ERROR_number , xmin = -0.5, xmax = ERROR_number - 0.5,
-                                               labels = ERROR_labels ) ]
-        self.Histograms += [ defineHistogram ( 'Acceptance', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Reached steps - acceptance ; ; # Events / Candidates',
-                                               xbins = ACCEPTANCE_number , xmin = -0.5, xmax = ACCEPTANCE_number - 0.5,
-                                               labels = ACCEPTANCE_labels ) ]
-        self.Histograms += [ defineHistogram ( 'ROIEta, ROIPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - ROI direction ; #eta ; #phi ; # Events',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'nTracks', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Number of ID tracks ; # Tracks ; # Events',
-                                               xbins = 101, xmin = -1.5, xmax = 99.5 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkPt', type = 'TH1F',
-                                               title = 'L2TrkMassFex - ID tracks p_{T} - low range ; p_{T} [GeV] ; # Tracks',
-                                               xbins = 100, xmin = 0., xmax = 25. ) ]
-        self.Histograms += [ defineHistogram ( 'TrkPt_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - ID tracks p_{T} ; p_{T} [GeV] ; # Tracks',
-                                               xbins = 100, xmin = 0., xmax = 200. ) ]
-        self.Histograms += [ defineHistogram ( 'TrkEta, TrkPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track direction ; #eta ; #phi ; # Events',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdEta, TrkROIdPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#eta#Delta#phi difference ; #Delta#eta ; #Delta#phi ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0,
-                                               ybins = 32, ymin = 0., ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdEta', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#eta difference ; #Delta#eta ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdPhi', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#phi difference ; #Delta#phi ; # Tracks',
-                                               xbins = 32, xmin = 0., xmax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #DeltaR difference ; #DeltaR ; # Tracks',
-                                               xbins = 50, xmin = 0., xmax = 5. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMassNoTrkPtCut', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - p_{T#mu2} > 2 GeV - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 1., xmax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMassNoTrkPtCut_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - p_{T#mu2} > 2 GeV ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMass', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 1., xmax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMass_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Pt, Trk2Pt', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks p_{T} correlation ; p_{T#mu1} [GeV] ; p_{T#mu2} [GeV] ; # Candidates',
-                                               xbins = 25, xmin = 0., xmax = 50.,
-                                               ybins = 25, ymin = 0., ymax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Eta, Trk2Eta', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks #eta correlation ; #eta_{#mu1} ; #eta_{#mu2} ; # Candidates',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 30, ymin = -3.0, ymax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Phi, Trk2Phi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks #phi correlation ; #phi_{#mu1} ; #phi_{#mu2} ; # Candidates',
-                                               xbins = 32, xmin = -3.2, xmax = 3.2,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dEta, Trk1Trk2dPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#eta#Delta#phi difference ; #Delta#eta ; #Delta#phi ; # Candidates',
-                                               xbins = 30, xmin = 0., xmax = 3.0,
-                                               ybins = 32, ymin = 0., ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dEta', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#eta difference ; #Delta#eta ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dPhi', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#phi difference ; #Delta#phi ; # Tracks',
-                                               xbins = 32, xmin = 0., xmax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #DeltaR difference ; #DeltaR ; # Tracks',
-                                               xbins = 50, xmin = 0., xmax = 5. ) ]
-        self.Histograms += [ defineHistogram ( 'SumPtTrk12', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1+Track2 p_{T} ; p_{T#mu1}+p_{T#mu2} [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted mass - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 1., xmax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted mass ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass, InvMass_okFit', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Before vs. after vertex fit invariant mass ; Fitted mass [GeV] ; Invariant mass [GeV] ; # Candidates',
-                                               xbins = 25, xmin = 1., xmax = 6.,
-                                               ybins = 25, ymin = 1., ymax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'Chi2toNDoF', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Vertex fit #chi^{2}/_{NDoF} ; #chi^{2}/_{NDoF} ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 25. ) ]
-        self.Histograms += [ defineHistogram ( 'Chi2toNDoFProb', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Vertex fit #chi^{2}/_{NDoF}-probability ; prob(#chi^{2}/_{NDoF}) ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 1. ) ]
-        self.Histograms += [ defineHistogram ( 'FitTotalPt', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted di-muon p_{T} ; p_{T} [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitTotalPt, SumPtTrk12_okFit', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Fitted di-muon p_{T} vs. track1+track2 p_{T} ; p_{T} [GeV] ; (p_{T#mu1}+p_{T#mu2}) [GeV] ; # Candidates',
-                                               xbins = 25, xmin = 0., xmax = 50.,
-                                               ybins = 25, ymin = 0., ymax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'FitVtxR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted vertex R-position ; R [mm] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 10. ) ]
-        self.Histograms += [ defineHistogram ( 'FitVtxZ', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted vertex Z-position ; Z [mm] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 500. ) ]
-        self.Histograms += [ defineHistogram ( 'nBphys', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Number of di-muon candidates ; # di-muons ; # Events',
-                                               xbins = 50, xmin = -0.5, xmax = 49.5 ) ]
-        self.Histograms += [ defineHistogram ( 'TotalRunTime', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Total processing time ; t_{tot} [ms] ; # Events',
-                                               xbins = 100, xmin = 0., xmax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'VertexingTime', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Vertex fit processing time ; t_{vtx} [ms] ; # Events',
-                                               xbins = 100, xmin = 0., xmax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'TotalRunTime, VertexingTime', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Total vs. vertex fit processing time ; t_{tot} [ms] ; t_{vtx} [ms] ; # Events',
-                                               xbins = 100, xmin = 0., xmax = 50.,
-                                               ybins = 100, ymin = 0., ymax = 50. ) ]
-
-class TrigL2TrkMassFexOnlineMonitoring_FS(TrigGenericMonitoringToolConfig):
-    def __init__ (self, name="L2TrkMassFexOnline_FS"):
-        super(TrigL2TrkMassFexOnlineMonitoring_FS, self).__init__(name)
-        self.defineTarget("Online")
-        self.Histograms  = [ defineHistogram ( 'Errors', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Algorithm errors ; ; # Events / Candidates',
-                                               xbins = ERROR_number , xmin = -0.5, xmax = ERROR_number - 0.5,
-                                               labels = ERROR_labels ) ]
-        self.Histograms += [ defineHistogram ( 'Acceptance', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Reached steps - acceptance ; ; # Events / Candidates',
-                                               xbins = ACCEPTANCE_number , xmin = -0.5, xmax = ACCEPTANCE_number - 0.5,
-                                               labels = ACCEPTANCE_labels ) ]
-        self.Histograms += [ defineHistogram ( 'ROIEta, ROIPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - ROI direction ; #eta ; #phi ; # Events',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'nTracks', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Number of ID tracks ; # Tracks ; # Events',
-                                               xbins = 101, xmin = -1.5, xmax = 99.5 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkPt', type = 'TH1F',
-                                               title = 'L2TrkMassFex - ID tracks p_{T} - low range ; p_{T} [GeV] ; # Tracks',
-                                               xbins = 100, xmin = 0., xmax = 25. ) ]
-        self.Histograms += [ defineHistogram ( 'TrkPt_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - ID tracks p_{T} ; p_{T} [GeV] ; # Tracks',
-                                               xbins = 100, xmin = 0., xmax = 200. ) ]
-        self.Histograms += [ defineHistogram ( 'TrkEta, TrkPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track direction ; #eta ; #phi ; # Events',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdEta, TrkROIdPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#eta#Delta#phi difference ; #Delta#eta ; #Delta#phi ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0,
-                                               ybins = 32, ymin = 0., ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdEta', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#eta difference ; #Delta#eta ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdPhi', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#phi difference ; #Delta#phi ; # Tracks',
-                                               xbins = 32, xmin = 0., xmax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #DeltaR difference ; #DeltaR ; # Tracks',
-                                               xbins = 50, xmin = 0., xmax = 5. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMassNoTrkPtCut', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - p_{T#mu2} > 2 GeV - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 1., xmax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMassNoTrkPtCut_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - p_{T#mu2} > 2 GeV ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMass', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 1., xmax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMass_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Pt, Trk2Pt', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks p_{T} correlation ; p_{T#mu1} [GeV] ; p_{T#mu2} [GeV] ; # Candidates',
-                                               xbins = 25, xmin = 0., xmax = 50.,
-                                               ybins = 25, ymin = 0., ymax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Eta, Trk2Eta', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks #eta correlation ; #eta_{#mu1} ; #eta_{#mu2} ; # Candidates',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 30, ymin = -3.0, ymax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Phi, Trk2Phi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks #phi correlation ; #phi_{#mu1} ; #phi_{#mu2} ; # Candidates',
-                                               xbins = 32, xmin = -3.2, xmax = 3.2,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dEta, Trk1Trk2dPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#eta#Delta#phi difference ; #Delta#eta ; #Delta#phi ; # Candidates',
-                                               xbins = 30, xmin = 0., xmax = 3.0,
-                                               ybins = 32, ymin = 0., ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dEta', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#eta difference ; #Delta#eta ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dPhi', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#phi difference ; #Delta#phi ; # Tracks',
-                                               xbins = 32, xmin = 0., xmax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #DeltaR difference ; #DeltaR ; # Tracks',
-                                               xbins = 50, xmin = 0., xmax = 5. ) ]
-        self.Histograms += [ defineHistogram ( 'SumPtTrk12', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1+Track2 p_{T} ; p_{T#mu1}+p_{T#mu2} [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted mass - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 1., xmax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted mass ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass, InvMass_okFit', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Before vs. after vertex fit invariant mass ; Fitted mass [GeV] ; Invariant mass [GeV] ; # Candidates',
-                                               xbins = 25, xmin = 1., xmax = 6.,
-                                               ybins = 25, ymin = 1., ymax = 6. ) ]
-        self.Histograms += [ defineHistogram ( 'Chi2toNDoF', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Vertex fit #chi^{2}/_{NDoF} ; #chi^{2}/_{NDoF} ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 25. ) ]
-        self.Histograms += [ defineHistogram ( 'Chi2toNDoFProb', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Vertex fit #chi^{2}/_{NDoF}-probability ; prob(#chi^{2}/_{NDoF}) ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 1. ) ]
-        self.Histograms += [ defineHistogram ( 'FitTotalPt', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted di-muon p_{T} ; p_{T} [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitTotalPt, SumPtTrk12_okFit', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Fitted di-muon p_{T} vs. track1+track2 p_{T} ; p_{T} [GeV] ; (p_{T#mu1}+p_{T#mu2}) [GeV] ; # Candidates',
-                                               xbins = 25, xmin = 0., xmax = 50.,
-                                               ybins = 25, ymin = 0., ymax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'FitVtxR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted vertex R-position ; R [mm] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 10. ) ]
-        self.Histograms += [ defineHistogram ( 'FitVtxZ', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted vertex Z-position ; Z [mm] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 500. ) ]
-        self.Histograms += [ defineHistogram ( 'nBphys', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Number of di-muon candidates ; # di-muons ; # Events',
-                                               xbins = 50, xmin = -0.5, xmax = 49.5 ) ]
-#        self.Histograms += [ defineHistogram ( 'TotalRunTime', type = 'TH1F',
-#                                               title = 'L2TrkMassFex - Total processing time ; t_{tot} [ms] ; # Events',
-#                                               xbins = 100, xmin = 0., xmax = 50. ) ]
-#        self.Histograms += [ defineHistogram ( 'VertexingTime', type = 'TH1F',
-#                                               title = 'L2TrkMassFex - Vertex fit processing time ; t_{vtx} [ms] ; # Events',
-#                                               xbins = 100, xmin = 0., xmax = 50. ) ]
-#        self.Histograms += [ defineHistogram ( 'TotalRunTime, VertexingTime', type = 'TH2F',
-#                                               title = 'L2TrkMassFex - Total vs. vertex fit processing time ; t_{tot} [ms] ; t_{vtx} [ms] ; # Events',
-#                                               xbins = 100, xmin = 0., xmax = 50.,
-#                                               ybins = 100, ymin = 0., ymax = 50. ) ]
-
-class TrigL2TrkMassFexValidationMonitoring_Upsi_FS(TrigGenericMonitoringToolConfig):
-    def __init__ (self, name="L2TrkMassFexValidation_Upsi_FS"):
-        super(TrigL2TrkMassFexValidationMonitoring_Upsi_FS, self).__init__(name)
-        self.defineTarget("Validation")
-        self.Histograms  = [ defineHistogram ( 'Errors', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Algorithm errors ; ; # Events / Candidates',
-                                               xbins = ERROR_number , xmin = -0.5, xmax = ERROR_number - 0.5,
-                                               labels = ERROR_labels ) ]
-        self.Histograms += [ defineHistogram ( 'Acceptance', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Reached steps - acceptance ; ; # Events / Candidates',
-                                               xbins = ACCEPTANCE_number , xmin = -0.5, xmax = ACCEPTANCE_number - 0.5,
-                                               labels = ACCEPTANCE_labels ) ]
-        self.Histograms += [ defineHistogram ( 'ROIEta, ROIPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - ROI direction ; #eta ; #phi ; # Events',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'nTracks', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Number of ID tracks ; # Tracks ; # Events',
-                                               xbins = 101, xmin = -1.5, xmax = 99.5 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkPt', type = 'TH1F',
-                                               title = 'L2TrkMassFex - ID tracks p_{T} - low range ; p_{T} [GeV] ; # Tracks',
-                                               xbins = 100, xmin = 0., xmax = 25. ) ]
-        self.Histograms += [ defineHistogram ( 'TrkPt_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - ID tracks p_{T} ; p_{T} [GeV] ; # Tracks',
-                                               xbins = 100, xmin = 0., xmax = 200. ) ]
-        self.Histograms += [ defineHistogram ( 'TrkEta, TrkPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track direction ; #eta ; #phi ; # Events',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdEta, TrkROIdPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#eta#Delta#phi difference ; #Delta#eta ; #Delta#phi ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0,
-                                               ybins = 32, ymin = 0., ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdEta', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#eta difference ; #Delta#eta ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdPhi', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#phi difference ; #Delta#phi ; # Tracks',
-                                               xbins = 32, xmin = 0., xmax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #DeltaR difference ; #DeltaR ; # Tracks',
-                                               xbins = 50, xmin = 0., xmax = 5. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMassNoTrkPtCut', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - p_{T#mu2} > 2 GeV - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 140, xmin = 1., xmax = 15. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMassNoTrkPtCut_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - p_{T#mu2} > 2 GeV ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMass', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 140, xmin = 1., xmax = 15. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMass_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Pt, Trk2Pt', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks p_{T} correlation ; p_{T#mu1} [GeV] ; p_{T#mu2} [GeV] ; # Candidates',
-                                               xbins = 25, xmin = 0., xmax = 50.,
-                                               ybins = 25, ymin = 0., ymax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Eta, Trk2Eta', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks #eta correlation ; #eta_{#mu1} ; #eta_{#mu2} ; # Candidates',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 30, ymin = -3.0, ymax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Phi, Trk2Phi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks #phi correlation ; #phi_{#mu1} ; #phi_{#mu2} ; # Candidates',
-                                               xbins = 32, xmin = -3.2, xmax = 3.2,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dEta, Trk1Trk2dPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#eta#Delta#phi difference ; #Delta#eta ; #Delta#phi ; # Candidates',
-                                               xbins = 30, xmin = 0., xmax = 3.0,
-                                               ybins = 32, ymin = 0., ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dEta', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#eta difference ; #Delta#eta ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dPhi', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#phi difference ; #Delta#phi ; # Tracks',
-                                               xbins = 32, xmin = 0., xmax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #DeltaR difference ; #DeltaR ; # Tracks',
-                                               xbins = 50, xmin = 0., xmax = 5. ) ]
-        self.Histograms += [ defineHistogram ( 'SumPtTrk12', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1+Track2 p_{T} ; p_{T#mu1}+p_{T#mu2} [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted mass - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 140, xmin = 1., xmax = 15. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted mass ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass, InvMass_okFit', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Before vs. after vertex fit invariant mass ; Fitted mass [GeV] ; Invariant mass [GeV] ; # Candidates',
-                                               xbins = 28, xmin = 1., xmax = 15.,
-                                               ybins = 28, ymin = 1., ymax = 15. ) ]
-        self.Histograms += [ defineHistogram ( 'Chi2toNDoF', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Vertex fit #chi^{2}/_{NDoF} ; #chi^{2}/_{NDoF} ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 25. ) ]
-        self.Histograms += [ defineHistogram ( 'Chi2toNDoFProb', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Vertex fit #chi^{2}/_{NDoF}-probability ; prob(#chi^{2}/_{NDoF}) ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 1. ) ]
-        self.Histograms += [ defineHistogram ( 'FitTotalPt', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted di-muon p_{T} ; p_{T} [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitTotalPt, SumPtTrk12_okFit', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Fitted di-muon p_{T} vs. track1+track2 p_{T} ; p_{T} [GeV] ; (p_{T#mu1}+p_{T#mu2}) [GeV] ; # Candidates',
-                                               xbins = 25, xmin = 0., xmax = 50.,
-                                               ybins = 25, ymin = 0., ymax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'FitVtxR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted vertex R-position ; R [mm] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 10. ) ]
-        self.Histograms += [ defineHistogram ( 'FitVtxZ', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted vertex Z-position ; Z [mm] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 500. ) ]
-        self.Histograms += [ defineHistogram ( 'nBphys', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Number of di-muon candidates ; # di-muons ; # Events',
-                                               xbins = 50, xmin = -0.5, xmax = 49.5 ) ]
-        self.Histograms += [ defineHistogram ( 'TotalRunTime', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Total processing time ; t_{tot} [ms] ; # Events',
-                                               xbins = 100, xmin = 0., xmax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'VertexingTime', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Vertex fit processing time ; t_{vtx} [ms] ; # Events',
-                                               xbins = 100, xmin = 0., xmax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'TotalRunTime, VertexingTime', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Total vs. vertex fit processing time ; t_{tot} [ms] ; t_{vtx} [ms] ; # Events',
-                                               xbins = 100, xmin = 0., xmax = 50.,
-                                               ybins = 100, ymin = 0., ymax = 50. ) ]
-
-class TrigL2TrkMassFexOnlineMonitoring_Upsi_FS(TrigGenericMonitoringToolConfig):
-    def __init__ (self, name="L2TrkMassFexOnline_Upsi_FS"):
-        super(TrigL2TrkMassFexOnlineMonitoring_Upsi_FS, self).__init__(name)
-        self.defineTarget("Online")
-        self.Histograms  = [ defineHistogram ( 'Errors', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Algorithm errors ; ; # Events / Candidates',
-                                               xbins = ERROR_number , xmin = -0.5, xmax = ERROR_number - 0.5,
-                                               labels = ERROR_labels ) ]
-        self.Histograms += [ defineHistogram ( 'Acceptance', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Reached steps - acceptance ; ; # Events / Candidates',
-                                               xbins = ACCEPTANCE_number , xmin = -0.5, xmax = ACCEPTANCE_number - 0.5,
-                                               labels = ACCEPTANCE_labels ) ]
-        self.Histograms += [ defineHistogram ( 'ROIEta, ROIPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - ROI direction ; #eta ; #phi ; # Events',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'nTracks', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Number of ID tracks ; # Tracks ; # Events',
-                                               xbins = 101, xmin = -1.5, xmax = 99.5 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkPt', type = 'TH1F',
-                                               title = 'L2TrkMassFex - ID tracks p_{T} - low range ; p_{T} [GeV] ; # Tracks',
-                                               xbins = 100, xmin = 0., xmax = 25. ) ]
-        self.Histograms += [ defineHistogram ( 'TrkPt_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - ID tracks p_{T} ; p_{T} [GeV] ; # Tracks',
-                                               xbins = 100, xmin = 0., xmax = 200. ) ]
-        self.Histograms += [ defineHistogram ( 'TrkEta, TrkPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track direction ; #eta ; #phi ; # Events',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdEta, TrkROIdPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#eta#Delta#phi difference ; #Delta#eta ; #Delta#phi ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0,
-                                               ybins = 32, ymin = 0., ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdEta', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#eta difference ; #Delta#eta ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdPhi', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #Delta#phi difference ; #Delta#phi ; # Tracks',
-                                               xbins = 32, xmin = 0., xmax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'TrkROIdR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track-ROI #DeltaR difference ; #DeltaR ; # Tracks',
-                                               xbins = 50, xmin = 0., xmax = 5. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMassNoTrkPtCut', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - p_{T#mu2} > 2 GeV - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 140, xmin = 1., xmax = 15. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMassNoTrkPtCut_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - p_{T#mu2} > 2 GeV ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMass', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 140, xmin = 1., xmax = 15. ) ]
-        self.Histograms += [ defineHistogram ( 'InvMass_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Invariant mass ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Pt, Trk2Pt', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks p_{T} correlation ; p_{T#mu1} [GeV] ; p_{T#mu2} [GeV] ; # Candidates',
-                                               xbins = 25, xmin = 0., xmax = 50.,
-                                               ybins = 25, ymin = 0., ymax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Eta, Trk2Eta', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks #eta correlation ; #eta_{#mu1} ; #eta_{#mu2} ; # Candidates',
-                                               xbins = 30, xmin = -3.0, xmax = 3.0,
-                                               ybins = 30, ymin = -3.0, ymax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Phi, Trk2Phi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Tracks #phi correlation ; #phi_{#mu1} ; #phi_{#mu2} ; # Candidates',
-                                               xbins = 32, xmin = -3.2, xmax = 3.2,
-                                               ybins = 32, ymin = -3.2, ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dEta, Trk1Trk2dPhi', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#eta#Delta#phi difference ; #Delta#eta ; #Delta#phi ; # Candidates',
-                                               xbins = 30, xmin = 0., xmax = 3.0,
-                                               ybins = 32, ymin = 0., ymax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dEta', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#eta difference ; #Delta#eta ; # Tracks',
-                                               xbins = 30, xmin = 0., xmax = 3.0 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dPhi', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #Delta#phi difference ; #Delta#phi ; # Tracks',
-                                               xbins = 32, xmin = 0., xmax = 3.2 ) ]
-        self.Histograms += [ defineHistogram ( 'Trk1Trk2dR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1-Track2 #DeltaR difference ; #DeltaR ; # Tracks',
-                                               xbins = 50, xmin = 0., xmax = 5. ) ]
-        self.Histograms += [ defineHistogram ( 'SumPtTrk12', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Track1+Track2 p_{T} ; p_{T#mu1}+p_{T#mu2} [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted mass - low range ; Mass [GeV] ; # Candidates',
-                                               xbins = 140, xmin = 1., xmax = 15. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass_wideRange', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted mass ; Mass [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitMass, InvMass_okFit', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Before vs. after vertex fit invariant mass ; Fitted mass [GeV] ; Invariant mass [GeV] ; # Candidates',
-                                               xbins = 28, xmin = 1., xmax = 15.,
-                                               ybins = 28, ymin = 1., ymax = 15. ) ]
-        self.Histograms += [ defineHistogram ( 'Chi2toNDoF', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Vertex fit #chi^{2}/_{NDoF} ; #chi^{2}/_{NDoF} ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 25. ) ]
-        self.Histograms += [ defineHistogram ( 'Chi2toNDoFProb', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Vertex fit #chi^{2}/_{NDoF}-probability ; prob(#chi^{2}/_{NDoF}) ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 1. ) ]
-        self.Histograms += [ defineHistogram ( 'FitTotalPt', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted di-muon p_{T} ; p_{T} [GeV] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 100. ) ]
-        self.Histograms += [ defineHistogram ( 'FitTotalPt, SumPtTrk12_okFit', type = 'TH2F',
-                                               title = 'L2TrkMassFex - Fitted di-muon p_{T} vs. track1+track2 p_{T} ; p_{T} [GeV] ; (p_{T#mu1}+p_{T#mu2}) [GeV] ; # Candidates',
-                                               xbins = 25, xmin = 0., xmax = 50.,
-                                               ybins = 25, ymin = 0., ymax = 50. ) ]
-        self.Histograms += [ defineHistogram ( 'FitVtxR', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted vertex R-position ; R [mm] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 10. ) ]
-        self.Histograms += [ defineHistogram ( 'FitVtxZ', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Fitted vertex Z-position ; Z [mm] ; # Candidates',
-                                               xbins = 100, xmin = 0., xmax = 500. ) ]
-        self.Histograms += [ defineHistogram ( 'nBphys', type = 'TH1F',
-                                               title = 'L2TrkMassFex - Number of di-muon candidates ; # di-muons ; # Events',
-                                               xbins = 50, xmin = -0.5, xmax = 49.5 ) ]
-#        self.Histograms += [ defineHistogram ( 'TotalRunTime', type = 'TH1F',
-#                                               title = 'L2TrkMassFex - Total processing time ; t_{tot} [ms] ; # Events',
-#                                               xbins = 100, xmin = 0., xmax = 50. ) ]
-#        self.Histograms += [ defineHistogram ( 'VertexingTime', type = 'TH1F',
-#                                               title = 'L2TrkMassFex - Vertex fit processing time ; t_{vtx} [ms] ; # Events',
-#                                               xbins = 100, xmin = 0., xmax = 50. ) ]
-#        self.Histograms += [ defineHistogram ( 'TotalRunTime, VertexingTime', type = 'TH2F',
-#                                               title = 'L2TrkMassFex - Total vs. vertex fit processing time ; t_{tot} [ms] ; t_{vtx} [ms] ; # Events',
-#                                               xbins = 100, xmin = 0., xmax = 50.,
-#                                               ybins = 100, ymin = 0., ymax = 50. ) ]
-
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigL2TrkMassHypoConfig.py b/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigL2TrkMassHypoConfig.py
deleted file mode 100644
index b30d1a8e199c4b222785a1be7dc62beeee4d8259..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigL2TrkMassHypoConfig.py
+++ /dev/null
@@ -1,205 +0,0 @@
-# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-
-from TrigBphysHypo.TrigBphysHypoConf import TrigL2TrkMassHypo
-
-# Jpsi
-class L2TrkMassHypo_Jpsimumu (TrigL2TrkMassHypo):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassHypo_Jpsimumu"):
-        super( TrigL2TrkMassHypo, self ).__init__( name )
-
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = False
-        # mass cuts
-        self.AcceptAll = False
-        from TrigBphysHypo.TrigL2TrkMassHypoMonitoring import TrigL2TrkMassHypoValidationMonitoring_RoI
-        validation = TrigL2TrkMassHypoValidationMonitoring_RoI()
-
-        from TrigBphysHypo.TrigL2TrkMassHypoMonitoring import TrigL2TrkMassHypoOnlineMonitoring_RoI
-        online = TrigL2TrkMassHypoOnlineMonitoring_RoI()
-
-        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
-        time = TrigTimeHistToolConfig("Time")
-
-        self.AthenaMonTools = [ validation, online, time ]
-
-# Jpsi passL2
-class L2TrkMassHypo_Jpsimumu_passL2 (L2TrkMassHypo_Jpsimumu):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassHypo_Jpsimumu_passL2"):
-        super( L2TrkMassHypo_Jpsimumu_passL2, self ).__init__( name )
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = True
-
-
-# Jpsi FS
-class L2TrkMassHypo_Jpsimumu_FS (TrigL2TrkMassHypo):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassHypo_Jpsimumu_FS"):
-        super( TrigL2TrkMassHypo, self ).__init__( name )
-
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = False
-
-        from TrigBphysHypo.TrigL2TrkMassHypoMonitoring import TrigL2TrkMassHypoValidationMonitoring_FS
-        validation = TrigL2TrkMassHypoValidationMonitoring_FS()
-
-        from TrigBphysHypo.TrigL2TrkMassHypoMonitoring import TrigL2TrkMassHypoOnlineMonitoring_FS
-        online = TrigL2TrkMassHypoOnlineMonitoring_FS()
-
-        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
-        time = TrigTimeHistToolConfig("Time")
-
-        self.AthenaMonTools = [ validation, online, time ]
-
-# Jpsi passL2
-class L2TrkMassHypo_Jpsimumu_FS_passL2 (L2TrkMassHypo_Jpsimumu_FS):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassHypo_Jpsimumu_FS_passL2"):
-        super( L2TrkMassHypo_Jpsimumu_FS_passL2, self ).__init__( name )
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = True
-
-
-# Jpsi loose
-class L2TrkMassHypo_Jpsimumu_loose (TrigL2TrkMassHypo):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassHypo_Jpsimumu_loose"):
-        super( TrigL2TrkMassHypo, self ).__init__( name )
-
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = False
-        # mass cuts
-        self.AcceptAll = False
-        from TrigBphysHypo.TrigL2TrkMassHypoMonitoring import TrigL2TrkMassHypoValidationMonitoring_RoI
-        validation = TrigL2TrkMassHypoValidationMonitoring_RoI()
-
-        from TrigBphysHypo.TrigL2TrkMassHypoMonitoring import TrigL2TrkMassHypoOnlineMonitoring_RoI
-        online = TrigL2TrkMassHypoOnlineMonitoring_RoI()
-
-        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
-        time = TrigTimeHistToolConfig("Time")
-
-        self.AthenaMonTools = [ validation, online, time ]
-
-# Jpsi loose passL2
-class L2TrkMassHypo_Jpsimumu_loose_passL2 (L2TrkMassHypo_Jpsimumu_loose):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassHypo_Jpsimumu_loose_passL2"):
-        super( L2TrkMassHypo_Jpsimumu_loose_passL2, self ).__init__( name )
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = True
-
-# Jpsi loose
-class L2TrkMassHypo_Jpsimumu_looser (TrigL2TrkMassHypo):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassHypo_Jpsimumu_looser"):
-        super( TrigL2TrkMassHypo, self ).__init__( name )
-
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = False
-        # mass cuts
-        self.AcceptAll = False
-        from TrigBphysHypo.TrigL2TrkMassHypoMonitoring import TrigL2TrkMassHypoValidationMonitoring_RoI
-        validation = TrigL2TrkMassHypoValidationMonitoring_RoI()
-
-        from TrigBphysHypo.TrigL2TrkMassHypoMonitoring import TrigL2TrkMassHypoOnlineMonitoring_RoI
-        online = TrigL2TrkMassHypoOnlineMonitoring_RoI()
-
-        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
-        time = TrigTimeHistToolConfig("Time")
-
-        self.AthenaMonTools = [ validation, online, time ]
-
-# Jpsi loose passL2
-class L2TrkMassHypo_Jpsimumu_looser_passL2 (L2TrkMassHypo_Jpsimumu_looser):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassHypo_Jpsimumu_looser_passL2"):
-        super( L2TrkMassHypo_Jpsimumu_looser_passL2, self ).__init__( name )
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = True
-
-# Jpsi FS loose
-class L2TrkMassHypo_Jpsimumu_loose_FS (TrigL2TrkMassHypo):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassHypo_Jpsimumu_loose_FS"):
-        super( TrigL2TrkMassHypo, self ).__init__( name )
-
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = False
-
-        from TrigBphysHypo.TrigL2TrkMassHypoMonitoring import TrigL2TrkMassHypoValidationMonitoring_FS
-        validation = TrigL2TrkMassHypoValidationMonitoring_FS()
-
-        from TrigBphysHypo.TrigL2TrkMassHypoMonitoring import TrigL2TrkMassHypoOnlineMonitoring_FS
-        online = TrigL2TrkMassHypoOnlineMonitoring_FS()
-
-        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
-        time = TrigTimeHistToolConfig("Time")
-
-        self.AthenaMonTools = [ validation, online, time ]
-
-
-class L2TrkMassHypo_Jpsimumu_loose_FS_passL2 (L2TrkMassHypo_Jpsimumu_loose_FS):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassHypo_Jpsimumu_loose_FS_passL2"):
-        super( L2TrkMassHypo_Jpsimumu_loose_FS_passL2, self ).__init__( name )
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = True
-
-# Upsi FS 
-class L2TrkMassHypo_Upsimumu_FS (TrigL2TrkMassHypo):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassHypo_Upsimumu_FS"):
-        super( TrigL2TrkMassHypo, self ).__init__( name )
-
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = False
-
-        from TrigBphysHypo.TrigL2TrkMassHypoMonitoring import TrigL2TrkMassHypoValidationMonitoring_Upsi_FS
-        validation = TrigL2TrkMassHypoValidationMonitoring_Upsi_FS()
-
-        from TrigBphysHypo.TrigL2TrkMassHypoMonitoring import TrigL2TrkMassHypoOnlineMonitoring_Upsi_FS
-        online = TrigL2TrkMassHypoOnlineMonitoring_Upsi_FS()
-
-        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
-        time = TrigTimeHistToolConfig("Time")
-
-        self.AthenaMonTools = [ validation, online, time ]
-
-
-class L2TrkMassHypo_Upsimumu_FS_passL2 (L2TrkMassHypo_Upsimumu_FS):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassHypo_Upsimumu_FS_passL2"):
-        super( L2TrkMassHypo_Upsimumu_FS_passL2, self ).__init__( name )
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = True
-
-# Upsi FS loose
-class L2TrkMassHypo_Upsimumu_loose_FS (TrigL2TrkMassHypo):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassHypo_Upsimumu_loose_FS"):
-        super( TrigL2TrkMassHypo, self ).__init__( name )
-
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = False
-
-        from TrigBphysHypo.TrigL2TrkMassHypoMonitoring import TrigL2TrkMassHypoValidationMonitoring_Upsi_FS
-        validation = TrigL2TrkMassHypoValidationMonitoring_Upsi_FS()
-
-        from TrigBphysHypo.TrigL2TrkMassHypoMonitoring import TrigL2TrkMassHypoOnlineMonitoring_Upsi_FS
-        online = TrigL2TrkMassHypoOnlineMonitoring_Upsi_FS()
-
-        from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
-        time = TrigTimeHistToolConfig("Time")
-
-        self.AthenaMonTools = [ validation, online, time ]
-
-
-class L2TrkMassHypo_Upsimumu_loose_FS_passL2 (L2TrkMassHypo_Upsimumu_loose_FS):
-    __slots__ = []
-    def __init__(self, name = "L2TrkMassHypo_Upsimumu_loose_FS_passL2"):
-        super( L2TrkMassHypo_Upsimumu_loose_FS_passL2, self ).__init__( name )
-        # AcceptAll flag: if true take events regardless of cuts
-        self.AcceptAll = True
-
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigL2TrkMassHypoMonitoring.py b/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigL2TrkMassHypoMonitoring.py
deleted file mode 100644
index 4c749c1e232ef5bf2e8af63214e240319ad93eeb..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigL2TrkMassHypoMonitoring.py
+++ /dev/null
@@ -1,107 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-from TrigMonitorBase.TrigGenericMonitoringToolConfig import defineHistogram, TrigGenericMonitoringToolConfig 
-
-class TrigL2TrkMassHypoValidationMonitoring_RoI(TrigGenericMonitoringToolConfig):
-    def __init__ (self, name="TrigL2TrkMassHypoValidationMonitoring_RoI"):
-        super(TrigL2TrkMassHypoValidationMonitoring_RoI, self).__init__(name)
-        self.defineTarget("Validation")
-        self.Histograms += [ defineHistogram('CutCounter', type='TH1F', title="cut info",
-                                           xbins=10, xmin=-1.5, xmax=8.5) ]
-        self.Histograms += [ defineHistogram('Mass', type='TH1F', title="L2TrkMassHypo Mass_RoI; Mass[GeV]",
-                                           xbins=100, xmin=1., xmax=10.) ]
-#        self.Histograms += [ defineHistogram('FitMass', type='TH1F', title="L2TrkMassFex FitMass; FitMass[MeV]",
-#                                           xbins=100, xmin=1000., xmax=5000.) ]
-#        self.Histograms += [ defineHistogram('Chi2', type='TH1F', title="L2TrkMassFex Chi2; Chi2",
-#                                           xbins=100, xmin=0., xmax=10.) ]
-#        self.Histograms += [ defineHistogram('Chi2Prob', type='TH1F', title="L2TrkMassFex Chi2Prob; Chi2Prob",
-#                                           xbins=100, xmin=0., xmax=1.) ]
-        self.Histograms += [ defineHistogram('NBphys', type='TH1F', title="L2TrkMassHypo NBphys created",
-                                           xbins=50, xmin=0.0, xmax=50.0) ]
-
-class TrigL2TrkMassHypoOnlineMonitoring_RoI(TrigGenericMonitoringToolConfig):
-    def __init__ (self, name="TrigL2TrkMassHypoOnlineMonitoring_RoI"):
-        super(TrigL2TrkMassHypoOnlineMonitoring_RoI, self).__init__(name)
-        self.defineTarget("Online")
-        self.Histograms += [ defineHistogram('CutCounter', type='TH1F', title="cut info",
-                                           xbins=10, xmin=-1.5, xmax=8.5) ]
-        self.Histograms += [ defineHistogram('Mass', type='TH1F', title="L2TrkMassHypo Mass_RoI; Mass[GeV]",
-                                           xbins=100, xmin=1., xmax=10.) ]
-#        self.Histograms += [ defineHistogram('FitMass', type='TH1F', title="L2TrkMassFex FitMass; FitMass[MeV]",
-#                                           xbins=100, xmin=1000., xmax=5000.) ]
-#        self.Histograms += [ defineHistogram('Chi2', type='TH1F', title="L2TrkMassFex Chi2; Chi2",
-#                                           xbins=100, xmin=0., xmax=10.) ]
-#        self.Histograms += [ defineHistogram('Chi2Prob', type='TH1F', title="L2TrkMassFex Chi2Prob; Chi2Prob",
-#                                           xbins=100, xmin=0., xmax=1.) ]
-        self.Histograms += [ defineHistogram('NBphys', type='TH1F', title="L2TrkMassHypo NBphys created",
-                                           xbins=50, xmin=0.0, xmax=50.0) ]
-
-
-class TrigL2TrkMassHypoValidationMonitoring_FS(TrigGenericMonitoringToolConfig):
-    def __init__ (self, name="TrigL2TrkMassHypoValidationMonitoring_FS"):
-        super(TrigL2TrkMassHypoValidationMonitoring_FS, self).__init__(name)
-        self.defineTarget("Validation")
-        self.Histograms += [ defineHistogram('CutCounter', type='TH1F', title="cut info",
-                                           xbins=10, xmin=-1.5, xmax=8.5) ]
-        self.Histograms += [ defineHistogram('Mass', type='TH1F', title="L2TrkMassHypo Mass_FS; Mass[GeV]",
-                                           xbins=100, xmin=1., xmax=10.) ]
-#        self.Histograms += [ defineHistogram('FitMass', type='TH1F', title="L2TrkMassFex FitMass; FitMass[MeV]",
-#                                           xbins=100, xmin=1000., xmax=5000.) ]
-#        self.Histograms += [ defineHistogram('Chi2', type='TH1F', title="L2TrkMassFex Chi2; Chi2",
-#                                           xbins=100, xmin=0., xmax=10.) ]
-#        self.Histograms += [ defineHistogram('Chi2Prob', type='TH1F', title="L2TrkMassFex Chi2Prob; Chi2Prob",
-#                                           xbins=100, xmin=0., xmax=1.) ]
-        self.Histograms += [ defineHistogram('NBphys', type='TH1F', title="L2TrkMassHypo NBphys created",
-                                           xbins=50, xmin=0.0, xmax=50.0) ]
-
-class TrigL2TrkMassHypoOnlineMonitoring_FS(TrigGenericMonitoringToolConfig):
-    def __init__ (self, name="TrigL2TrkMassHypoOnlineMonitoring_FS"):
-        super(TrigL2TrkMassHypoOnlineMonitoring_FS, self).__init__(name)
-        self.defineTarget("Online")
-        self.Histograms += [ defineHistogram('CutCounter', type='TH1F', title="cut info",
-                                           xbins=10, xmin=-1.5, xmax=8.5) ]
-        self.Histograms += [ defineHistogram('Mass', type='TH1F', title="L2TrkMassHypo Mass_FS; Mass[GeV]",
-                                           xbins=100, xmin=1., xmax=10.) ]
-#        self.Histograms += [ defineHistogram('FitMass', type='TH1F', title="L2TrkMassFex FitMass; FitMass[MeV]",
-#                                           xbins=100, xmin=1000., xmax=5000.) ]
-#        self.Histograms += [ defineHistogram('Chi2', type='TH1F', title="L2TrkMassFex Chi2; Chi2",
-#                                           xbins=100, xmin=0., xmax=10.) ]
-#        self.Histograms += [ defineHistogram('Chi2Prob', type='TH1F', title="L2TrkMassFex Chi2Prob; Chi2Prob",
-#                                           xbins=100, xmin=0., xmax=1.) ]
-        self.Histograms += [ defineHistogram('NBphys', type='TH1F', title="L2TrkMassHypo NBphys created",
-                                           xbins=50, xmin=0.0, xmax=50.0) ]
-
-class TrigL2TrkMassHypoValidationMonitoring_Upsi_FS(TrigGenericMonitoringToolConfig):
-    def __init__ (self, name="TrigL2TrkMassHypoValidationMonitoring_Upsi_FS"):
-        super(TrigL2TrkMassHypoValidationMonitoring_Upsi_FS, self).__init__(name)
-        self.defineTarget("Validation")
-        self.Histograms += [ defineHistogram('CutCounter', type='TH1F', title="cut info",
-                                           xbins=10, xmin=-1.5, xmax=8.5) ]
-        self.Histograms += [ defineHistogram('Mass', type='TH1F', title="L2TrkMassHypo Mass_FS; Mass[GeV]",
-                                           xbins=140, xmin=1., xmax=15.) ]
-#        self.Histograms += [ defineHistogram('FitMass', type='TH1F', title="L2TrkMassFex FitMass; FitMass[MeV]",
-#                                           xbins=100, xmin=1000., xmax=5000.) ]
-#        self.Histograms += [ defineHistogram('Chi2', type='TH1F', title="L2TrkMassFex Chi2; Chi2",
-#                                           xbins=100, xmin=0., xmax=10.) ]
-#        self.Histograms += [ defineHistogram('Chi2Prob', type='TH1F', title="L2TrkMassFex Chi2Prob; Chi2Prob",
-#                                           xbins=100, xmin=0., xmax=1.) ]
-        self.Histograms += [ defineHistogram('NBphys', type='TH1F', title="L2TrkMassHypo NBphys created",
-                                           xbins=50, xmin=0.0, xmax=50.0) ]
-
-class TrigL2TrkMassHypoOnlineMonitoring_Upsi_FS(TrigGenericMonitoringToolConfig):
-    def __init__ (self, name="TrigL2TrkMassHypoOnlineMonitoring_Upsi_FS"):
-        super(TrigL2TrkMassHypoOnlineMonitoring_Upsi_FS, self).__init__(name)
-        self.defineTarget("Online")
-        self.Histograms += [ defineHistogram('CutCounter', type='TH1F', title="cut info",
-                                           xbins=10, xmin=-1.5, xmax=8.5) ]
-        self.Histograms += [ defineHistogram('Mass', type='TH1F', title="L2TrkMassHypo Mass_FS; Mass[GeV]",
-                                           xbins=140, xmin=1., xmax=15.) ]
-#        self.Histograms += [ defineHistogram('FitMass', type='TH1F', title="L2TrkMassFex FitMass; FitMass[MeV]",
-#                                           xbins=100, xmin=1000., xmax=5000.) ]
-#        self.Histograms += [ defineHistogram('Chi2', type='TH1F', title="L2TrkMassFex Chi2; Chi2",
-#                                           xbins=100, xmin=0., xmax=10.) ]
-#        self.Histograms += [ defineHistogram('Chi2Prob', type='TH1F', title="L2TrkMassFex Chi2Prob; Chi2Prob",
-#                                           xbins=100, xmin=0., xmax=1.) ]
-        self.Histograms += [ defineHistogram('NBphys', type='TH1F', title="L2TrkMassHypo NBphys created",
-                                           xbins=50, xmin=0.0, xmax=50.0) ]
-
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/BtrigUtils.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/BtrigUtils.cxx
index 71246290460602babd506785a1698dfd4f916f52..6bc093f11960ab9be30f0d6e2fdaa5bbe3c7581a 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/BtrigUtils.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/BtrigUtils.cxx
@@ -5,43 +5,7 @@
 #include "BtrigUtils.h"
 
 #include <math.h>
-#include <vector>
 
-
-#include "TrigInDetEvent/TrigInDetTrack.h"
-#include "TrigInDetEvent/TrigInDetTrackFitPar.h"
-
-#include "TrigSteeringEvent/Enums.h"
-
-#include "xAODMuon/Muon.h"
-#include "xAODTracking/TrackParticle.h"
-
-#include <exception>
-
-
-//----------------------------------------------
-// pT calculation using Trk::Track.
-//----------------------------------------------
-/*
-double PtVal(const std::vector<const Trk::Track*> & tracks) {
-
-  std::vector<const Trk::Track*>::const_iterator trkItr    = tracks.begin();
-  std::vector<const Trk::Track*>::const_iterator trkItrEnd = tracks.end();
-
-  double px_sum = 0;
-  double py_sum = 0;
-
-  for ( ; trkItr!=trkItrEnd; trkItr++ ) {
-    px_sum += fabs((*trkItr)->perigeeParameters()->pT()) * cos((*trkItr)->perigeeParameters()->parameters()[Trk::phi0]);
-    py_sum += fabs((*trkItr)->perigeeParameters()->pT()) * sin((*trkItr)->perigeeParameters()->parameters()[Trk::phi0]);
-  }
-
-  double pt2 = px_sum*px_sum + py_sum*py_sum;
-
-  if ( pt2 < 0 ) return 0;
-  else          return sqrt(pt2);
-}
-*/
 //----------------------------------------------
 // pT calculation using xAOD::TrackParticle.
 //----------------------------------------------
@@ -55,8 +19,8 @@ double PtVal(const std::vector<const xAOD::TrackParticle*> & tracks) {
   double py_sum = 0;
 
   for ( ; trkItr!=trkItrEnd; trkItr++ ) {
-    px_sum += fabs((*trkItr)->pt()) * cos((*trkItr)->phi());
-    py_sum += fabs((*trkItr)->pt()) * sin((*trkItr)->phi());
+    px_sum += std::abs((*trkItr)->pt()) * cos((*trkItr)->phi());
+    py_sum += std::abs((*trkItr)->pt()) * sin((*trkItr)->phi());
   }
 
   double pt2 = px_sum*px_sum + py_sum*py_sum;
@@ -69,13 +33,13 @@ double PtVal(const std::vector<const xAOD::TrackParticle*> & tracks) {
 // L_xy calculation using Trk::Track and two vertex positions.
 //------------------------------------------------------------
 
-double LxyVal(const double px, const double py, const Amg::Vector3D Vertex0, const Amg::Vector3D Vertex1) {
+double LxyVal(const double px, const double py, const Amg::Vector3D &Vertex0, const Amg::Vector3D &Vertex1) {
 
   double rdx = Vertex1[0] - Vertex0[0];
   double rdy = Vertex1[1] - Vertex0[1];
 
-  double pt  = sqrt(px*px+py*py);
-  double rxy = sqrt(rdx*rdx+rdy*rdy);
+  double pt  = std::sqrt(px*px+py*py);
+  double rxy = std::sqrt(rdx*rdx+rdy*rdy);
 
   double cosxy = 0.;
   if ( rxy != 0. ) cosxy = (px*rdx+py*rdy)/rxy/pt;
@@ -83,151 +47,3 @@ double LxyVal(const double px, const double py, const Amg::Vector3D Vertex0, con
   return rxy*cosxy;
 }
 
-//--------------------------------------------------------------------
-// Base invariant mass calculation using px,py,pz and mass-hypothesis.
-//--------------------------------------------------------------------
-
-double InvMass(const std::vector<double> & px, const std::vector<double> & py,
-               const std::vector<double> & pz, const std::vector<double> & massHypo) {
-
-  double px_sum = 0;
-  double py_sum = 0;
-  double pz_sum = 0;
-  double e_sum  = 0;
-
-  for ( unsigned int i=0; i<massHypo.size(); i++ ) {
-    px_sum += px[i];
-    py_sum += py[i];
-    pz_sum += pz[i];
-    e_sum  += sqrt(massHypo[i]*massHypo[i] + px[i]*px[i] + py[i]*py[i] + pz[i]*pz[i]);
-  }
-
-  double m2 = e_sum*e_sum - px_sum*px_sum - py_sum*py_sum - pz_sum*pz_sum;
-
-  if ( m2 < 0 ) return 0;
-  else          return sqrt(m2);
-}
-
-
-
-//--------------------------------------------------
-// Invariant mass calculations using TrigInDetTrack.
-//--------------------------------------------------
-
-double InvMass(const std::vector<const TrigInDetTrack*> &tracks, const std::vector<double> & massHypo) {
-
-  std::vector<const TrigInDetTrack*>::const_iterator trkItr    = tracks.begin();
-  std::vector<const TrigInDetTrack*>::const_iterator trkItrEnd = tracks.end();
-
-  std::vector<double> px, py, pz;
-
-  for ( ; trkItr!=trkItrEnd; trkItr++ ) {
-    double theta = 2. * atan(exp(-1.0*((*trkItr)->param()->eta())));
-    px.push_back( fabs((*trkItr)->param()->pT()) * cos((*trkItr)->param()->phi0()) );
-    py.push_back( fabs((*trkItr)->param()->pT()) * sin((*trkItr)->param()->phi0()) );
-    pz.push_back( fabs((*trkItr)->param()->pT()) / tan(theta) );
-  }
-
-  return InvMass(px, py, pz, massHypo);
-}
-
-
-
-//--------------------------------------------------------
-// Invariant mass calculations using TrigInDetTrackFitPar.
-//--------------------------------------------------------
-
-double InvMass(const std::vector<const TrigInDetTrackFitPar*> & tracks, const std::vector<double> & massHypo) {
-
-  std::vector<const TrigInDetTrackFitPar*>::const_iterator trkItr    = tracks.begin();
-  std::vector<const TrigInDetTrackFitPar*>::const_iterator trkItrEnd = tracks.end();
-
-  std::vector<double> px, py, pz;
-
-  for ( ; trkItr!=trkItrEnd; trkItr++ ) {
-    double theta = 2. * atan(exp(-1.0*((*trkItr)->eta())));
-    px.push_back( fabs((*trkItr)->pT()) * cos((*trkItr)->phi0()) );
-    py.push_back( fabs((*trkItr)->pT()) * sin((*trkItr)->phi0()) );
-    pz.push_back( fabs((*trkItr)->pT()) / tan(theta) );
-  }
-
-  return InvMass(px, py, pz, massHypo);
-}
-
-
-
-//--------------------------------------------------------
-// Invariant mass calculations using Trk::MeasuredPerigee.
-//--------------------------------------------------------
-/*
-double InvMass(const std::vector<const Trk::TrackParameters*> & tracks, const std::vector<double> & massHypo) {
-
-  std::vector<const Trk::TrackParameters*>::const_iterator trkItr    = tracks.begin();
-  std::vector<const Trk::TrackParameters*>::const_iterator trkItrEnd = tracks.end();
-
-  std::vector<double> px, py, pz;
-
-  for ( ; trkItr!=trkItrEnd; trkItr++ ) {
-    px.push_back( (*trkItr)->momentum()[Trk::px] );
-    py.push_back( (*trkItr)->momentum()[Trk::py] );
-    pz.push_back( (*trkItr)->momentum()[Trk::pz] );
-  }
-
-  return InvMass(px, py, pz, massHypo);
-}
-*/
-//--------------------------------------------------------
-// Invariant mass calculations using Trk::Perigee.
-//--------------------------------------------------------
-
-double InvMass(const std::vector<const Trk::Perigee*> & tracks, const std::vector<double> & massHypo) {
-    auto trkItr    = tracks.begin();
-    auto trkItrEnd = tracks.end();
-
-    std::vector<double> px, py, pz;
-    
-    for ( ; trkItr!=trkItrEnd; trkItr++ ) {
-        px.push_back( (*trkItr)->momentum()[Trk::px] );
-        py.push_back( (*trkItr)->momentum()[Trk::py] );
-        pz.push_back( (*trkItr)->momentum()[Trk::pz] );
-    }
-    
-    return InvMass(px, py, pz, massHypo);
-}
-
-
-//----------------------------------------------
-// Invariant mass calculations using Trk::Track.
-//----------------------------------------------
-/*
-double InvMass(const std::vector<const Trk::Track*> & tracks, const std::vector<double> & massHypo) {
-
-  std::vector<const Trk::Track*>::const_iterator trkItr    = tracks.begin();
-  std::vector<const Trk::Track*>::const_iterator trkItrEnd = tracks.end();
-
-  std::vector<double> px, py, pz;
-
-  for ( ; trkItr!=trkItrEnd; trkItr++ ) {
-      // JW EDM
-      //    px.push_back( fabs((*trkItr)->perigeeParameters()->pT()) * ((*trkItr)->perigeeParameters()->cosPhi()) );
-      //    py.push_back( fabs((*trkItr)->perigeeParameters()->pT()) * ((*trkItr)->perigeeParameters()->sinPhi()) );
-      //    pz.push_back( fabs((*trkItr)->perigeeParameters()->pT()) * ((*trkItr)->perigeeParameters()->cotTheta()) );
-      px.push_back( fabs((*trkItr)->perigeeParameters()->pT()) * cos((*trkItr)->perigeeParameters()->parameters()[Trk::phi0]));
-      py.push_back( fabs((*trkItr)->perigeeParameters()->pT()) * sin((*trkItr)->perigeeParameters()->parameters()[Trk::phi0]));
-      pz.push_back( fabs((*trkItr)->perigeeParameters()->pT()) * 1./tan((*trkItr)->perigeeParameters()->parameters()[Trk::theta]));
-
-  }
-
-  return InvMass(px, py, pz, massHypo);
-}
-*/
-double fabsDeltaPhi(double phi1, double phi2) {
-    double dPhi=fabs(phi1 - phi2);
-    if (dPhi > M_PI) dPhi = 2.*M_PI - dPhi;
-    return dPhi;
-}
-
-double fabsDeltaEta(double eta1, double eta2) {
-    return fabs( eta1 - eta2);
-}
-
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/BtrigUtils.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/BtrigUtils.h
index b6f86ffc01764f14d9e3aa4a1a06c20afa56e8e8..22c4b168f4c08ee3469702ed40b8380977520836 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/BtrigUtils.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/BtrigUtils.h
@@ -6,30 +6,11 @@
 #define BTRIGUTILS_H
 
 #include <vector>
+#include "xAODTracking/TrackParticle.h"
+#include "GeoPrimitives/GeoPrimitives.h"  // for Vector3D
 
-#include "TrigInDetEvent/TrigInDetTrack.h"
-#include "TrigInDetEvent/TrigInDetTrackFitPar.h"
-//#include "TrigMuonEvent/TrigMuonEFInfoContainer.h"
-#include "TrigSteeringEvent/Enums.h"
-
-
-// xAOD edm
-#include "xAODMuon/MuonContainer.h"
-
-//double PtVal(const std::vector<const Trk::Track*>&);
 double PtVal(const std::vector<const xAOD::TrackParticle*>&);
 
-double LxyVal(const double, const double, const Amg::Vector3D, const Amg::Vector3D);
-
-double InvMass(const std::vector<const TrigInDetTrack*>  &    , const std::vector<double>&);
-double InvMass(const std::vector<const TrigInDetTrackFitPar*>&, const std::vector<double>&);
-double InvMass(const std::vector<const Trk::TrackParameters*>&, const std::vector<double>&);
-//double InvMass(const std::vector<const Trk::Track*>          &, const std::vector<double>&);
-double InvMass(const std::vector<const Trk::Perigee*>        &, const std::vector<double>&);
-
-// JW new methods to help simplify the algorithms
-
-double fabsDeltaPhi(double phi1, double phi2); //! absolute delta phi - correcting for 2pi
-double fabsDeltaEta(double eta1, double eta2); //! absolute delta eta
+double LxyVal(const double, const double, const Amg::Vector3D&, const Amg::Vector3D&);
 
 #endif // BTRIGUTILS_H
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/Constants.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/Constants.h
index 6dd0ecca41e76ab16a267b51b8aaf6df23492c01..475f4edba579422b55cdadefac156d2bdfb78b40 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/Constants.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/Constants.h
@@ -5,32 +5,31 @@
 #ifndef TRIGBPHYSHYPO_CONSTANTS_H
 #define TRIGBPHYSHYPO_CONSTANTS_H
 
-const double EPSILON     =      1.0E-6;
-const double PROTONMASS  =    938.272;    //MeV
-const double EMASS       =      0.511003;//MeV
-const double MUMASS      =    105.65837; //MeV
-const double PIMASS      =    139.57;    //MeV
-const double JPSIMASS    =   3096.916;   //MeV
-const double KMASS       =    493.677;   //MeV
-const double PHIMASS     =   1020.;      //MeV
-const double DSMASS      =   1968.2;     //MeV
-const double KPLUSMASS   =    493.67700; //MeV
-const double BPLUSMASS   =   5279.13;    //MeV
-const double BSMASS      =   5369.3;     //MeV
-const double KSTARMASS   =    891.66;    //MeV
-const double BDMASS      =   5279.5;     //MeV
-const double LAMBDAMASS  =   1115.683;   //MeV
-const double LAMBDABMASS =   5620.2;     //MeV
-const double BCMASS      =   6277.0;     //MeV
+constexpr double EPSILON     =      1.0E-6;
+constexpr double PROTONMASS  =    938.272;    //MeV
+constexpr double EMASS       =      0.511003;//MeV
+constexpr double MUMASS      =    105.65837; //MeV
+constexpr double PIMASS      =    139.57;    //MeV
+constexpr double JPSIMASS    =   3096.916;   //MeV
+constexpr double KMASS       =    493.677;   //MeV
+constexpr double PHIMASS     =   1020.;      //MeV
+constexpr double DSMASS      =   1968.2;     //MeV
+constexpr double KPLUSMASS   =    493.67700; //MeV
+constexpr double BPLUSMASS   =   5279.13;    //MeV
+constexpr double BSMASS      =   5369.3;     //MeV
+constexpr double KSTARMASS   =    891.66;    //MeV
+constexpr double BDMASS      =   5279.5;     //MeV
+constexpr double LAMBDAMASS  =   1115.683;   //MeV
+constexpr double LAMBDABMASS =   5620.2;     //MeV
+constexpr double BCMASS      =   6277.0;     //MeV
 
-/// list of decay constants BMuMuX
-const int di_to_muons = 0;      
-const int b_to_K = 1;           // to recognize type of decay B+/- ->K+/-      mu+ mu-
-const int bD_to_Kstar = 2; 		// to recognize type of decay Bd   ->K*(K+Pi-) mu+ mu-
-const int bS_to_Phi = 3; 		// to recognize type of decay Bs   ->Phi(K+K-) mu+ mu-
-const int lB_to_L = 4; 		    // to recognize type of decay Lb   ->L(PPi-)   mu+ mu-
-const int bC_to_PiPi = 5; 	// to recognize type of decay Bc   ->D+(K-pi+pi+) mu+ mu-
-//const int bP_to_Kstar = 5;      // to recognize type of decay B+   ->K*+       mu+ mu-
-const int di_to_electrons = 6;      
+/// list of decay constexprants BMuMuX
+constexpr int di_to_muons = 0;      
+constexpr int b_to_K = 1;           // to recognize type of decay B+/- ->K+/-      mu+ mu-
+constexpr int bD_to_Kstar = 2; 		// to recognize type of decay Bd   ->K*(K+Pi-) mu+ mu-
+constexpr int bS_to_Phi = 3; 		// to recognize type of decay Bs   ->Phi(K+K-) mu+ mu-
+constexpr int lB_to_L = 4; 		    // to recognize type of decay Lb   ->L(PPi-)   mu+ mu-
+constexpr int bC_to_PiPi = 5; 	// to recognize type of decay Bc   ->D+(K-pi+pi+) mu+ mu-
+constexpr int di_to_electrons = 6;      
 
 #endif
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysElectronCounter.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysElectronCounter.cxx
index f4622c27d565b02aeb7b8420c2123e5f86ea88cc..1b5661332416dbe45a08c0d1436f3510d48be46e 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysElectronCounter.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysElectronCounter.cxx
@@ -17,9 +17,7 @@
 #include "TrigBphysElectronCounter.h"
 
 #include "xAODEgamma/ElectronContainer.h"
-#include "TrigTimeAlgs/TrigTimerSvc.h" 
-#include "FourMomUtils/P4Helpers.h"
-
+#include "TrigTimeAlgs/TrigTimer.h"                  // for TrigTimer
 
 // Define the bins for acceptance-monitoring histogram
 #define ACCEPT_hltExecute         0
@@ -202,7 +200,7 @@ HLT::ErrorCode TrigBphysElectronCounter::hltExecute(std::vector<std::vector<HLT:
   xAOD::TrackParticleAuxContainer outputTrackCollAuxCont;
   outputTrackColl->setStore( &outputTrackCollAuxCont );
   outputTrackColl->reserve(m_nEfElectron);
-    for( auto elec : efelectrons ){
+    for( const auto& elec : efelectrons ){
       xAOD::TrackParticle *trk1 = new xAOD::TrackParticle();
       trk1->makePrivateStore( (*elec)->trackParticle());
       outputTrackColl->push_back(trk1);
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysElectronCounter.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysElectronCounter.h
index ab36be4fd711da2bd80931db6735d7913587dd2f..eb481292c9d6ff40d9985f262e0e0eef13d99eff 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysElectronCounter.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysElectronCounter.h
@@ -99,17 +99,14 @@ template<class Tin, class Tout> int TrigBphysElectronCounter::passNObjects(int n
   ElementLinkVector<Tin> inVecColl;
   outVec.clear();
   std::vector<float> pts;
-  std::vector<unsigned int> isEMs;
-  std::vector<bool> isLHAcceptTrigs;
   
   float mindR2 = mindR*mindR;
 
   bool useLumiTool=false;
-  double mu = 0.;
   double avg_mu = 0.;
   if(m_useAthElectronLHIDSelector && m_lumiBlockMuTool){
       useLumiTool=true;
-      mu = m_lumiBlockMuTool->actualInteractionsPerCrossing(); // (retrieve mu for the current BCID)
+      double mu = m_lumiBlockMuTool->actualInteractionsPerCrossing(); // (retrieve mu for the current BCID)
       avg_mu = m_lumiBlockMuTool->averageInteractionsPerCrossing();
       ATH_MSG_DEBUG("REGTEST: Retrieved Mu Value : " << mu << ", Average Mu Value   : " << avg_mu);
   }
@@ -205,7 +202,6 @@ template<class Tin, class Tout> int TrigBphysElectronCounter::passNObjects(int n
   }
 
   // now check pts cuts  
-  //std::sort(isEMs.begin(), isEMs.end(), [&pts](size_t i, size_t j) {return pts[i] > pts[j];});
   std::sort(pts.begin(), pts.end(), std::greater<float>());
 
   //== check that electrons have correct pts and isEM
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.cxx
index 8fcabff24e5b5660bae38756b6e5a43b107cb938..b1a4a4fe510a7d3620c1644f5601c3ada713ae19 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.cxx
@@ -29,7 +29,7 @@ TrigBphysHelperUtilsTool::TrigBphysHelperUtilsTool( const std::string& type,
 		      const std::string& name, 
 		      const IInterface* parent ) : 
   ::AthAlgTool  ( type, name, parent   )
-,  m_fitterSvc("Trk::TrkVKalVrtFitter/VertexFitterTool",this)
+,  m_fitterSvc("Trk::TrkVKalVrtFitter/VertexFitterTool",this), m_VKVFitter(nullptr)
 {
   declareInterface< TrigBphysHelperUtilsTool >(this);
   //
@@ -101,32 +101,6 @@ double TrigBphysHelperUtilsTool::deltaR(double deta, double dphi) const {
 }
 
 
-void TrigBphysHelperUtilsTool::addUnique(std::vector<const Trk::Track*>& tracks, const Trk::Track* trkIn) const {
-    // from the the original run-1 code
-    if (!trkIn) return;
-    std::vector<const Trk::Track*>::iterator tItr     = tracks.begin();
-    std::vector<const Trk::Track*>::iterator tItr_end = tracks.end();
-
-    double phi = trkIn->perigeeParameters()->parameters()[Trk::phi];
-    double eta = (*tItr)->perigeeParameters()->eta();
-    double pT  = fabs(trkIn->perigeeParameters()->pT());
-    
-    for (;tItr != tItr_end; ++tItr) {
-        if (trkIn == *tItr) continue; // don't consider if already included
-        // match on eta and phi
-        double dphi = absDeltaPhi((*tItr)->perigeeParameters()->parameters()[Trk::phi], phi);
-        double deta = absDeltaEta((*tItr)->perigeeParameters()->eta(), eta);
-        double dpt  = fabs(fabs((*tItr)->perigeeParameters()->pT()) - pT);
-        
-        if (dphi < 0.005 &&
-            deta < 0.005 &&
-            dpt  < 10.) return; // found a matching track, so return out of the function
-    } // for
-    
-    // if here then track is added to list
-    tracks.push_back(trkIn);
-}
-
 bool TrigBphysHelperUtilsTool::areUnique(const xAOD::TrackParticle* t0, const xAOD::TrackParticle* t1, double dEtaCut , double dPhiCut, double dPtCut) const {
     if (!t0 || !t1) {
         ATH_MSG_DEBUG("nullptr for inputs " << t0 << " " << t1 );
@@ -291,7 +265,6 @@ StatusCode TrigBphysHelperUtilsTool::buildDiMu(const std::vector<ElementLink<xAO
         ATH_MSG_DEBUG("Fit not allowed, Problems with TP1" );
     }
 
-    //const Trk::Vertex startingPoint(Amg::Vector3D(0.,0.,0.)); // #FIXME use beamline for starting point?
     const Amg::Vector3D startingPoint(0.,0.,0.);
     std::vector<const xAOD::TrackParticle*> trks;
     trks.push_back(*particles[0]);
@@ -313,9 +286,7 @@ StatusCode TrigBphysHelperUtilsTool::buildDiMu(const std::vector<ElementLink<xAO
         result->setFitz        (-9999);
         
     } else {
-        //std::vector<int> trkIndices(particles.size(),1);
         double invariantMass(0.), invariantMassError(0.); // #FIXME what about the input masses?
-        //if (!(m_VKVFitter->VKalGetMassError(trkIndices,invariantMass,invariantMassError).isSuccess())) {
         if (!(m_VKVFitter->VKalGetMassError(invariantMass,invariantMassError,*state).isSuccess())) {
             ATH_MSG_DEBUG("Warning from VKaVrt - cannot calculate uncertainties!");
         } // if
@@ -380,7 +351,7 @@ StatusCode TrigBphysHelperUtilsTool::vertexFit(xAOD::TrigBphys * result,
     bool doFit(true); // set false if problematic TP
     std::vector<const xAOD::TrackParticle*> trks;
     
-    for ( auto ptlEL : particles) {
+    for ( const auto& ptlEL : particles) {
         if (!ptlEL.isValid()) {
             ATH_MSG_DEBUG("Non valid TPEL" );
             doFit = false;
@@ -414,7 +385,6 @@ StatusCode TrigBphysHelperUtilsTool::vertexFit(xAOD::TrigBphys * result,
     } else {
         //std::vector<int> trkIndices(particles.size(),1);
         double invariantMass(0.), invariantMassError(0.); // #FIXME what about the input masses?
-        //if (!(m_VKVFitter->VKalGetMassError(trkIndices,invariantMass,invariantMassError).isSuccess())) {
         if (!(m_VKVFitter->VKalGetMassError(invariantMass,invariantMassError,istate).isSuccess())) {
             ATH_MSG_DEBUG("Warning from VKaVrt - cannot calculate uncertainties!");
             invariantMass = -9999.;
@@ -449,7 +419,7 @@ StatusCode TrigBphysHelperUtilsTool::vertexFit(xAOD::TrigBphys * result,
         "fity:          " << result->fity() << "\n\t  " <<
         "fitz:          " << result->fitz() << "\n\t  " );
     
-    for ( auto ptlEL : particles) {
+    for ( const auto& ptlEL : particles) {
         result->addTrackParticleLink(ptlEL);
     }
     return StatusCode::SUCCESS;
@@ -492,7 +462,6 @@ StatusCode TrigBphysHelperUtilsTool::vertexFit(xAOD::TrigBphys * result,
     } else {
         std::vector<int> trkIndices(trks.size(),1);
         double invariantMass(0.), invariantMassError(0.); // #FIXME what about the input masses?
-        //if (!(m_VKVFitter->VKalGetMassError(trkIndices,invariantMass,invariantMassError).isSuccess())) {
         if (!(m_VKVFitter->VKalGetMassError(invariantMass,invariantMassError,*state).isSuccess())) {
             ATH_MSG_DEBUG("Warning from VKaVrt - cannot calculate uncertainties!");
             invariantMass = -9999.;
@@ -541,42 +510,15 @@ double TrigBphysHelperUtilsTool::invariantMass(const xAOD::TrackParticle *p1, co
     static_assert(!std::is_base_of<xAOD::TrackParticle, xAOD::L2StandAloneMuon>::value, "Types have become ambiguous, units may be wrong" );
     assert(p1!=nullptr);
     assert(p2!=nullptr);
-    double px(0.),py(0.),pz(0.),E(0.);
-    
-
-    {
-    const auto &pv1 = p1->p4();
-    px += pv1.Px();
-    py += pv1.Py();
-    pz += pv1.Pz();
-    E  += sqrt(mi1*mi1 +
-               pv1.Px()*pv1.Px() +
-               pv1.Py()*pv1.Py() +
-               pv1.Pz()*pv1.Pz()
-          );
-    }
-    {
-    const auto &pv2 = p2->p4();
-    px += pv2.Px();
-    py += pv2.Py();
-    pz += pv2.Pz();
-    E  += sqrt(mi2*mi2 +
-               pv2.Px()*pv2.Px() +
-               pv2.Py()*pv2.Py() +
-               pv2.Pz()*pv2.Pz()
-          );
-    }
-    double m2 = E*E - px*px - py*py -pz*pz;
-    if (m2 < 0) return 0.;
-    else        return sqrt(m2);
+	const std::array<const xAOD::TrackParticle*, 2> &tracks{p1, p2};
+	const std::array<double, 2> &masses{mi1, mi2};
+    return invariantMassInternal(tracks.data(), masses.data(), 2);
 } // invariantMass
 
 
 double TrigBphysHelperUtilsTool::invariantMass(const std::vector<const xAOD::TrackParticle*>&ptls, const std::vector<double> & masses) const {
-    // 're-cast the vector in terms of the iparticle'
-    std::vector<const xAOD::IParticle*> i_ptls;
-    for ( auto tp : ptls) i_ptls.push_back(tp);
-    return invariantMassIP(i_ptls,masses);
+	assert(ptls.size() == masses.size());
+    return invariantMassInternal(ptls.data(), masses.data(), masses.size());
 }
 
 
@@ -627,15 +569,6 @@ void TrigBphysHelperUtilsTool::fillTrigObjectKinematics(xAOD::TrigBphys* bphys,
          return;
      }
      
-     //     if (ptls.size() != masses.size()) {
-     //         if ( msg().level() <= MSG::WARNING ) {
-     //             msg()  << MSG::WARNING << "Nptls != nMasses; no information will be populated." );
-     //         }
-     //         return;
-     //     } // if invalid prequesits
-     
-     
-     
      xAOD::TrackParticle::FourMom_t fourMom;
      
      for (const auto& ptl : ptls) {
@@ -707,6 +640,25 @@ void TrigBphysHelperUtilsTool::setBeamlineDisplacement(xAOD::TrigBphys* bphys,
     bphys->setTauError(BsTauError);
 } // setBeamlineDisplacement
 
+double TrigBphysHelperUtilsTool::invariantMassInternal(const xAOD::TrackParticle* const* tracks, const double* masses, size_t N)
+{
+    double px(0.),py(0.),pz(0.),E(0.);
+    for(size_t i=0; i<N; i++){
+       const auto &pv1 = tracks[i]->p4();
+       double mi1 = masses[i];
+       px += pv1.Px();
+       py += pv1.Py();
+       pz += pv1.Pz();
+       E  += sqrt(mi1*mi1 +
+               pv1.Px()*pv1.Px() +
+               pv1.Py()*pv1.Py() +
+               pv1.Pz()*pv1.Pz()
+          );
+    }
+    double m2 = E*E - px*px - py*py -pz*pz;
+    if (m2 < 0) return 0.;
+    else        return std::sqrt(m2);
+}
 
 std::unique_ptr<Trk::IVKalState>
 TrigBphysHelperUtilsTool::makeVKalState() const
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.h
index 3bb9958f82141793952187b4e96335f6b49d2dd4..8ce0f2412f18e623fd9919ffc657237a63cf7f95 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysHelperUtilsTool.h
@@ -77,8 +77,6 @@ class TrigBphysHelperUtilsTool: virtual public ::AthAlgTool
   /////////////////////////////////////////////////////////////////// 
   // Non-const methods: 
   /////////////////////////////////////////////////////////////////// 
-    void addUnique(std::vector<const Trk::Track*>& tracks, const Trk::Track* trkIn) const;   /// Copy of the default method in main code
-    
     void addUnique(const xAOD::Muon* muon, std::vector<const xAOD::Muon*> & output,
                    double dEtaCut = 0.005, double dPhiCut=0.005, double dPtCut =-1,
                    xAOD::Muon::TrackParticleType ptype= xAOD::Muon::InnerDetectorTrackParticle) const; ///
@@ -131,7 +129,7 @@ class TrigBphysHelperUtilsTool: virtual public ::AthAlgTool
   // Private data: 
   /////////////////////////////////////////////////////////////////// 
  private: 
-
+  static double invariantMassInternal(const xAOD::TrackParticle* const* tracks , const double*  masses , size_t N);
   /// Default constructor: 
   TrigBphysHelperUtilsTool();
 
@@ -153,22 +151,7 @@ class TrigBphysHelperUtilsTool: virtual public ::AthAlgTool
 
 template<size_t N>
 double TrigBphysHelperUtilsTool::invariantMass(const std::array<const xAOD::TrackParticle*, N> &tracks, const std::array<double, N> &masses){
-    double px(0.),py(0.),pz(0.),E(0.);
-    for(size_t i=0; i<N; i++){
-       const auto &pv1 = tracks[i]->p4();
-       double mi1 = masses[i];
-       px += pv1.Px();
-       py += pv1.Py();
-       pz += pv1.Pz();
-       E  += sqrt(mi1*mi1 +
-               pv1.Px()*pv1.Px() +
-               pv1.Py()*pv1.Py() +
-               pv1.Pz()*pv1.Pz()
-          );
-    }
-    double m2 = E*E - px*px - py*py -pz*pz;
-    if (m2 < 0) return 0.;
-    else        return std::sqrt(m2);
+   return invariantMassInternal(tracks.data(), masses.data(), N);
 }
 
 
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysMuonCounter.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysMuonCounter.cxx
index bac752349938a5a062261bb99d565541f6634ea6..566f41056a765563c57bb91a1ebf6207fad4ade9 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysMuonCounter.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysMuonCounter.cxx
@@ -15,10 +15,8 @@
  **************************************************************************/ 
  
 #include "TrigBphysMuonCounter.h"
-
+#include "TrigTimeAlgs/TrigTimer.h"                  // for TrigTimer
 #include "xAODMuon/MuonContainer.h"
-#include "TrigTimeAlgs/TrigTimerSvc.h"
-#include "FourMomUtils/P4Helpers.h"
 
 
 // Define the bins for acceptance-monitoring histogram
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysMuonCounter.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysMuonCounter.h
index 4e892a89f8a0c21a4a538bd4a19963a1f21d1d1b..727f6ab0085f46f57717863ba83d50ed6a5a93d6 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysMuonCounter.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysMuonCounter.h
@@ -20,8 +20,6 @@
 
 // standard stuff
 #include <string>
-#include <map>
-#include <cmath> 
 #include <algorithm>
 
 #include "TrigInterfaces/AllTEAlgo.h"
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysTrackRoiMaker.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysTrackRoiMaker.h
index 768817fcad09cf34a7adf6f480657f0015e783ee..a8dbc49067a7d0e0c277a401adc65c99c65a16ab 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysTrackRoiMaker.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBphysTrackRoiMaker.h
@@ -17,9 +17,8 @@
 #include "TrigInterfaces/FexAlgo.h"
 #include <string>
 
-// edm classes
-#include "xAODBase/IParticle.h"
-#include "xAODTracking/TrackParticle.h"
+#include <vector>                     // for vector
+#include "TrigSteeringEvent/Enums.h"  // for ErrorCode
 
 // fwd declare TrigRoiDescriptor class
 class TrigRoiDescriptor;
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBEEXFex.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBEEXFex.cxx
index cd07c6b8f41a2ad1b7afe587a085a71114a47ee7..e180b07e4c626c32f3085e33839d28ae534edcce 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBEEXFex.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBEEXFex.cxx
@@ -26,8 +26,8 @@
 
 #include "TrigTimeAlgs/TrigTimerSvc.h"
 #include "AthenaKernel/Timeout.h"
-
-
+#include "Constants.h"                                    // for BSMASS
+#include "TrigSteeringEvent/TrigRoiDescriptor.h"     // for TrigRoiDescriptor
 // additions of xAOD objects
 #include "xAODEventInfo/EventInfo.h"
 #include <memory>
@@ -35,15 +35,12 @@
 /*----------------------------------------------------------------------------*/
 TrigEFBEEXFex::TrigEFBEEXFex(const std::string & name, ISvcLocator* pSvcLocator):
 HLT::ComboAlgo(name, pSvcLocator)
-,m_fitterSvc("Trk::TrkVKalVrtFitter/VertexFitterTool",this)
 ,m_bphysHelperTool("TrigBphysHelperUtilsTool")
 ,m_TrigBphysColl_b(NULL)
 ,m_TrigBphysColl_X(NULL)
 
 ,m_TotTimer(0)
 ,m_VtxFitTimer(0)
-,m_VKVFitter(0)
-
 // counters
 ,m_lastEvent(-1)
 ,m_lastEventPassed(-1)
@@ -56,8 +53,6 @@ HLT::ComboAlgo(name, pSvcLocator)
 ,m_lastEventPassedBd(-1)
 ,m_lastEventPassedBs(-1)
 ,m_countPassedEventsBplus(0)
-,m_countPassedEventsBs(0)
-,m_countPassedEventsBd(0)
 
 ,m_countPassedEEID(0)
 ,m_countPassedEEOS(0)
@@ -89,7 +84,6 @@ HLT::ComboAlgo(name, pSvcLocator)
 
 {
     declareProperty("TrigBphysHelperTool", m_bphysHelperTool);
-    declareProperty("VertexFitterTool", m_fitterSvc);
     
     declareProperty("bphysCollectionKey", m_bphysCollectionKey  = "EFBEEXFex" );
     declareProperty("AcceptAll",    m_acceptAll=true); // Should we just accept all events
@@ -138,10 +132,6 @@ HLT::ComboAlgo(name, pSvcLocator)
     declareProperty("MaxBsToStore", m_maxBsToStore = -1);
     
 
-    // FTK Flag
-    declareProperty("DoFTK",    m_FTK=false); // Are we using FTK??
-
-    
     // Monitoring variables
     //   General
     declareMonitoredStdContainer("Errors",     m_mon_Errors,     AutoClear);
@@ -229,7 +219,6 @@ HLT::ErrorCode TrigEFBEEXFex::hltInitialize()
     
     ATH_MSG_DEBUG("Initialization completed successfully:" );
     ATH_MSG_DEBUG("AcceptAll          = "   << (m_acceptAll==true ? "True" : "False") );
-    ATH_MSG_DEBUG("DoFTK         = "        << (m_FTK==true ? "True" : "False") );
     ATH_MSG_DEBUG("MaxNcombinations            = " << m_maxNcombinations );
         
     ATH_MSG_DEBUG("Activated decays:" );
@@ -245,15 +234,6 @@ HLT::ErrorCode TrigEFBEEXFex::hltInitialize()
         m_VtxFitTimer = addTimer("EFBEEXFexVtxFit");
     }
     
-    // retrieving the vertex fitting tool
-    if (m_fitterSvc.retrieve().isFailure()) {
-        ATH_MSG_ERROR("Can't find Trk::TrkVKalVrtFitter" );
-        return HLT::OK;
-    } else {
-        ATH_MSG_DEBUG("Trk::TrkVKalVrtFitter found" );
-        m_VKVFitter = dynamic_cast< Trk::TrkVKalVrtFitter* > (&(*m_fitterSvc));
-    }
-    
     // retrieving BphysHelperUtilsTool
     if (m_bphysHelperTool.retrieve().isFailure()) {
         ATH_MSG_ERROR("Can't find TrigBphysHelperUtilsTool" );
@@ -273,12 +253,8 @@ HLT::ErrorCode TrigEFBEEXFex::hltInitialize()
     m_lastEventPassedBplus=-1;
     m_lastEventPassedBd=-1;
     m_lastEventPassedBs=-1;
-    m_lastEventPassedLb=-1;
     
     m_countPassedEventsBplus=0;
-    m_countPassedEventsBs=0;
-    m_countPassedEventsBd=0;
-    m_countPassedEventsLb=0;
     
     m_countPassedEEID=0;
     m_countPassedEEOS=0;
@@ -303,9 +279,6 @@ HLT::ErrorCode TrigEFBEEXFex::hltInitialize()
     m_countPassedPhi1020VtxChi2=0;
     m_countPassedBsVtx=0;
     m_countPassedBsVtxChi2=0;
-    
-
-    
     return HLT::OK;
 }
 
@@ -320,8 +293,6 @@ HLT::ErrorCode TrigEFBEEXFex::hltFinalize()
     ATH_MSG_INFO("Run on events/RoIs      " << m_countTotalEvents << "/" << m_countTotalRoI );
     ATH_MSG_INFO("Passed events/RoIs      " << m_countPassedEvents << "/" << m_countPassedRoIs );
     ATH_MSG_INFO("Evts Passed B+:         " << m_countPassedEventsBplus );
-    ATH_MSG_INFO("Evts Passed Bd:         " << m_countPassedEventsBd );
-    ATH_MSG_INFO("Evts Passed Bs:         " << m_countPassedEventsBs );
     ATH_MSG_INFO(std::endl );
     ATH_MSG_INFO("PassedEEID:           " << m_countPassedEEID );
     ATH_MSG_INFO("PassedEEOS:           " << m_countPassedEEOS );
@@ -393,7 +364,6 @@ HLT::ErrorCode TrigEFBEEXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::TriggerE
         ATH_MSG_WARNING("Failed to get xAOD::EventInfo " );
     }else { // found the xAOD event info
         ATH_MSG_DEBUG(" Run " << evtInfo->runNumber() << " Event " << evtInfo->eventNumber() << " using algo m_lepAlgo" );
-//        IdRun   = evtInfo->runNumber();
         IdEvent = evtInfo->eventNumber();
     } // get event info
     
@@ -401,27 +371,13 @@ HLT::ErrorCode TrigEFBEEXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::TriggerE
     //Check that we got 2 input TEs
     int lep1_TE=-1;
     int lep2_TE=-1;
-    if (!m_FTK) {
-      if ( inputTE.size() != 2 ) {
-        ATH_MSG_DEBUG("Got different than 2 number of input TEs: " << inputTE.size() );
-          //m_mon_Errors.push_back(ERROR_Not_2_InputTEs);
-          //if ( timerSvc() ) m_TotTimer->stop();
-          //return HLT::BAD_JOB_SETUP;
-        lep1_TE=0;
-        lep2_TE=0;
-      }else{
-        lep1_TE=0;
-        lep2_TE=1;
-      }
-    } else {
-      if ( inputTE.size() != 3 ) {
-        ATH_MSG_ERROR("FTK mode expect 3 input TEs, got : " << inputTE.size() );
-        m_mon_Errors.push_back(ERROR_Not_2_InputTEs);
-        if ( timerSvc() ) m_TotTimer->stop();
-        return HLT::BAD_JOB_SETUP;
-      }
-      lep1_TE=1;
-      lep2_TE=2;
+    if ( inputTE.size() != 2 ) {
+      ATH_MSG_DEBUG("Got different than 2 number of input TEs: " << inputTE.size() );
+      lep1_TE=0;
+      lep2_TE=0;
+    }else{
+      lep1_TE=0;
+      lep2_TE=1;
     }
 
 
@@ -445,7 +401,6 @@ HLT::ErrorCode TrigEFBEEXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::TriggerE
     //Retrieve ROIs
     const TrigRoiDescriptor *roiDescriptor1(0);
     const TrigRoiDescriptor *roiDescriptor2(0);
-    const TrigRoiDescriptor *roiDescriptorTrk(0); // for FTK chain
     
     // get them from the navigation
 
@@ -471,24 +426,10 @@ HLT::ErrorCode TrigEFBEEXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::TriggerE
        return HLT::NAV_ERROR;
      }
 
-     if (m_FTK) {
-      if ( getFeature(inputTE[0], roiDescriptorTrk) != HLT::OK ) {
-        ATH_MSG_ERROR("Navigation error while getting RoI descriptor Trk" );
-        m_mon_Errors.push_back(ERROR_No_RoIs);
-        if ( timerSvc() ) m_TotTimer->stop();
-        return HLT::NAV_ERROR;
-      }
-     }
-
-
-    
-     ATH_MSG_DEBUG("Using inputTEs: "<< inputTE[lep1_TE] <<  " and "  << inputTE[lep2_TE] << " with Ids " << inputTE[lep1_TE]->getId()<< " AND "<< inputTE[lep2_TE]->getId());
+      ATH_MSG_DEBUG("Using inputTEs: "<< inputTE[lep1_TE] <<  " and "  << inputTE[lep2_TE] << " with Ids " << inputTE[lep1_TE]->getId()<< " AND "<< inputTE[lep2_TE]->getId());
      ATH_MSG_DEBUG("; RoI IDs = "   << roiDescriptor1->roiId()<< " AND   " <<roiDescriptor2->roiId());
      ATH_MSG_DEBUG(": Eta1 =    "   << roiDescriptor1->eta() << " Eta2= " <<roiDescriptor2->eta() << ", Phi1 =    "   << roiDescriptor1->phi() << " Phi2= " <<roiDescriptor2->phi());
-	 if (m_FTK) {
-	    ATH_MSG_DEBUG("Using inputTE for tracks: "<< inputTE[0] << " " << inputTE[0]->getId()
-          << "; RoI IDs = "   << roiDescriptorTrk->roiId() << ": EtaTrk =    "   << roiDescriptorTrk->eta() << ", PhiTrk =    "   << roiDescriptorTrk->phi() );
-	 }
+
         
     // Fill RoIs monitoring containers
     m_mon_RoI_RoI1Eta.push_back(roiDescriptor1->eta());
@@ -519,7 +460,7 @@ HLT::ErrorCode TrigEFBEEXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::TriggerE
 
 
     // OI : here we probably should check that electron object has passed identification at the previous step
-    for ( const auto muel : lepContainerEF1 ) {
+    for ( const auto& muel : lepContainerEF1 ) {
    
       //if ( (*muel)->lepType() != xAOD::Lep::Combined && (*muel)->lepType() != xAOD::Lep::SegmentTagged) {
       //  ATH_MSG_DEBUG("Lep from roi1 is neither Combined or SegmentTagged - reject" );
@@ -556,7 +497,7 @@ HLT::ErrorCode TrigEFBEEXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::TriggerE
     }
     ATH_MSG_DEBUG("Found LepContainer, Got LepEF (2) Feature, size = " << lepContainerEF2.size());
     
-    for ( const auto muel : lepContainerEF2 ) {
+    for ( const auto& muel : lepContainerEF2 ) {
       //if ( (*muel)->lepType() != xAOD::Electron::Combined && (*muel)->lepType() != xAOD::Electron::SegmentTagged) {
       //  ATH_MSG_DEBUG("Lep from roi2 is neither Combined or SegmentTagged - reject" );
       //  continue;
@@ -578,14 +519,14 @@ HLT::ErrorCode TrigEFBEEXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::TriggerE
     
     // build a map of the tracks and corresponding leps
     std::map<const xAOD::TrackParticle*, ElementLink<xAOD::ElectronContainer> > mapTrkToLeps;
-    for (const auto mu : lepContainerEF1) {
+    for (const auto& mu : lepContainerEF1) {
             auto idtp  = (*mu)->trackParticleLink();
             if (!idtp.isValid()) continue;
             if (!*idtp) continue;
             //if (!(*idtp)->track()) continue;
             mapTrkToLeps[(*idtp)] = mu;
     } // lepContainerEF1
-    for (const auto mu : lepContainerEF2) {
+    for (const auto& mu : lepContainerEF2) {
             auto idtp  = (*mu)->trackParticleLink();
             if (!idtp.isValid()) continue;
             if (!*idtp) continue;
@@ -596,21 +537,17 @@ HLT::ErrorCode TrigEFBEEXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::TriggerE
     if(msgLvl() <= MSG::DEBUG){
         msg() << MSG::DEBUG << "lepContainerEF1.size()= " << lepContainerEF1.size() << "lepContainerEF2.size()= " << lepContainerEF2.size() 
           << "lepTPELtracks1.size()= "  << lepTPELtracks1.size() << "lepTPELtracks2.size()= "  << lepTPELtracks2.size() << "lepTPELtracksMerged.size()= "  << lepTPELtracksMerged.size()<< endmsg;        
-        for (auto muel: lepTPELtracks1) {
+        for (const auto& muel: lepTPELtracks1) {
             msg() << MSG::DEBUG << "lepTPELtracks1: " << *muel << " " << (*muel)->pt() << " , " << (*muel)->eta() << " , " << (*muel)->phi() << " , " << (*muel)->charge() << endmsg;
         }
-        for (auto muel: lepTPELtracks2) {
+        for (const auto& muel: lepTPELtracks2) {
             msg() << MSG::DEBUG << "lepTPELtracks2: " << *muel << " " << (*muel)->pt() << " , " << (*muel)->eta() << " , " << (*muel)->phi() << " , " << (*muel)->charge() << endmsg;
         }
-        for (auto muel: lepTPELtracksMerged) {
+        for (const auto& muel: lepTPELtracksMerged) {
             msg() << MSG::DEBUG << "lepTPELtracksMerged: " << *muel << " " << (*muel)->pt() << " , " << (*muel)->eta() << " , " << (*muel)->phi() << " , " << (*muel)->charge() << endmsg;
         }
     } // if debug
     
-    //   TrigEFBphys* trigPartBEEX (NULL);
-    // FIXME - remove these 'new's
-    //m_trigBphysColl_b = new TrigEFBphysContainer();
-    //m_trigBphysColl_X = new TrigEFBphysContainer();
     
     m_TrigBphysColl_b = new xAOD::TrigBphysContainer();
     xAOD::TrigBphysAuxContainer xAODTrigBphysAuxColl_b;
@@ -774,7 +711,7 @@ HLT::ErrorCode TrigEFBEEXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::TriggerE
                 std::map<const xAOD::TrackParticle*, ElementLink<xAOD::TrackParticleContainer> > mapTrackToEL;
                 
                 int idCounter(0);
-                for (auto trk: tracksRoiI1) {
+                for (const auto& trk: tracksRoiI1) {
                     // merged_tracks.push_back(trk);
                     addUnique(merged_tracks,*trk);
                     ElIndex tmp;
@@ -785,7 +722,7 @@ HLT::ErrorCode TrigEFBEEXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::TriggerE
                     ++idCounter;
                 }
                 idCounter = 0;
-                for (auto trk: tracksRoiI2) {
+                for (const auto& trk: tracksRoiI2) {
                     // merged_tracks.push_back(trk);
                     addUnique(merged_tracks,*trk);
                     ElIndex tmp;
@@ -842,10 +779,6 @@ HLT::ErrorCode TrigEFBEEXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::TriggerE
                     ELlep2.resetWithKeyAndIndex(trkmuit->second.dataID(),trkmuit->second.index());
                     Found2Track = true;
                 } // if
-                  //                ELlep1.resetWithKeyAndIndex(pTp->dataID(),pTp->index());
-                  //                Found1Track = true;
-                  //                ELlep2.resetWithKeyAndIndex(mTp->dataID(),mTp->index());
-                  //                Found2Track = true;
                 
                 ATH_MSG_DEBUG("Matching summary: " << Found1Track<<Found2Track << ", Now loop over TrackParticles to find tracks " );
                 //                    xAOD::TrackParticleContainer::const_iterator trkIt =  merged_tracks.begin();
@@ -862,13 +795,8 @@ HLT::ErrorCode TrigEFBEEXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::TriggerE
                 
                 for (int itrk1=0 ; trkIt1 != lastTrkIt; itrk1++, trkIt1++)
                 {
-                    //const Trk::Track* track1 = (*trkIt1)->track();
                     const xAOD::TrackParticle* track1 = (*trkIt1);
                     
-//                    ElementLink<xAOD::TrackParticleContainer> trackEL3( mapTrackToIndex[*trkIt1].roi == 1 ? tracksRoiI1[0].dataID() : tracksRoiI2[0].dataID(), mapTrackToIndex[*trkIt1].index);
-//                    ElementLink<xAOD::IParticleContainer> ItrackEL3;
-//                    ItrackEL3.resetWithKeyAndIndex(mapTrackToIndex[*trkIt1].roi == 1 ? tracksRoiI1[0].dataID() : tracksRoiI2[0].dataID(), mapTrackToIndex[*trkIt1].index);
-                    
                     ElementLink<xAOD::TrackParticleContainer> & trackEL3 = mapTrackToIndex[*trkIt1].elLink;
                     ElementLink<xAOD::IParticleContainer> ItrackEL3;
                     ItrackEL3.resetWithKeyAndIndex(trackEL3.dataID(), trackEL3.index());
@@ -961,7 +889,6 @@ HLT::ErrorCode TrigEFBEEXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::TriggerE
                         }
                         
 			            if(m_doBd_KstarEEDecay || m_doBs_Phi1020EEDecay ) {
-                                //const Trk::Track* track2 = (*trkIt2)->track();
                                 const xAOD::TrackParticle* track2 = (*trkIt2);
 
                             // Sergey S.
@@ -1203,7 +1130,7 @@ HLT::ErrorCode TrigEFBEEXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::TriggerE
         ATH_MSG_WARNING("Failed to getFeaturesLinks trigBphys_X Collection in outputTE" );
         } else {
             if(msgLvl() <= MSG::DEBUG)
-            for ( const auto eltp: ELvecTBPh) {
+            for ( const auto& eltp: ELvecTBPh) {
               msg() << MSG::DEBUG << "  ===== TrigBphys Container ElementLinks : " 
               << " index: "  << eltp.index()
               << " sgkey: "  << eltp.dataID()
@@ -1220,7 +1147,7 @@ HLT::ErrorCode TrigEFBEEXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::TriggerE
               ElementLink<xAOD::TrigBphysContainer> secEL;
 //               secEL.resetWithKeyAndIndex(KEY,(*BPobj)->secondaryDecayLink().index());
               // match transient secondary decay ELs with those from persistified container
-              for(auto persistentSecEL : ELvecTBPh ) {
+              for(const auto& persistentSecEL : ELvecTBPh ) {
                 if(*persistentSecEL == *(*BPobj)->secondaryDecayLink())
                   secEL = persistentSecEL;
               }
@@ -1334,7 +1261,7 @@ xAOD::TrigBphys* TrigEFBEEXFex::checkBplusEEKplus(const ElementLink<xAOD::TrackP
     } // if m_doB_KEEVertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracks) {
+      for(const auto& tpel : vec_tracks) {
         result->addTrackParticleLink(tpel);
       }
     }
@@ -1521,7 +1448,7 @@ xAOD::TrigBphys* TrigEFBEEXFex::checkBEE2X(const ElementLink<xAOD::TrackParticle
     } // do2XVertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracksX) {
+      for(const auto& tpel : vec_tracksX) {
         fitVtx_X->addTrackParticleLink(tpel);
       }
     }
@@ -1547,7 +1474,7 @@ xAOD::TrigBphys* TrigEFBEEXFex::checkBEE2X(const ElementLink<xAOD::TrackParticle
     } // doBEE2XVertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracks) {
+      for(const auto& tpel : vec_tracks) {
         fitVtx->addTrackParticleLink(tpel);
       }
     }
@@ -1558,30 +1485,6 @@ xAOD::TrigBphys* TrigEFBEEXFex::checkBEE2X(const ElementLink<xAOD::TrackParticle
 } // checkBEE2X
 
 
-
-/*----------------------------------------------------------------------------*/
-void TrigEFBEEXFex::addUnique(std::vector<const Trk::Track*>& tracks, const Trk::Track* trkIn)
-{
-    //  std::cout<<" in addUnique : trkIn pT= "<<trkIn->perigeeParameters()->pT()<<std::endl;
-    std::vector<const Trk::Track*>::iterator tItr;
-    for( tItr = tracks.begin(); tItr != tracks.end(); tItr++)
-    {
-        double dPhi=fabs((*tItr)->perigeeParameters()->parameters()[Trk::phi] -
-                         trkIn->perigeeParameters()->parameters()[Trk::phi]);
-        if (dPhi > M_PI) dPhi = 2.*M_PI - dPhi;
-        
-        if( fabs(dPhi) < 0.02 &&
-           fabs((*tItr)->perigeeParameters()->eta() -
-                trkIn->perigeeParameters()->eta()) < 0.02 ) 
-        { //std::cout<<" TrigEFBEEFex addUnique: the SAME tracks! pT= "<<
-            //trkIn->perigeeParameters()->pT()<<" and "<<
-            //(*tItr)->perigeeParameters()->pT()<<std::endl;
-            return;
-        }
-    } 
-    tracks.push_back(trkIn);       
-}
-
 /*----------------------------------------------------------------------------*/
 void TrigEFBEEXFex::addUnique(std::vector<const xAOD::TrackParticle*>& tps, const xAOD::TrackParticle* tpIn)
 {
@@ -1644,149 +1547,93 @@ bool TrigEFBEEXFex::isUnique(const  xAOD::TrackParticle* id1, const  xAOD::Track
 
 double TrigEFBEEXFex::XMass(const xAOD::TrackParticle* particle1, const xAOD::TrackParticle* particle2, int decay) { /// checking the mass
     
-    std::vector<double> massHypo;
-    massHypo.clear();
+    std::array<double, 2> massHypo;
     if(decay == di_to_electrons){
-        massHypo.push_back(EMASS);
-        massHypo.push_back(EMASS);
+        massHypo[0] = EMASS;
+        massHypo[1] = EMASS;
     }
-    if(decay == bD_to_Kstar){
-        massHypo.push_back(KPLUSMASS);
-        massHypo.push_back(PIMASS);
+    else if(decay == bD_to_Kstar){
+        massHypo[0] = KPLUSMASS;
+        massHypo[1] = PIMASS;
+    }
+    else if(decay == bS_to_Phi){
+        massHypo[0] = KPLUSMASS;
+        massHypo[1] = KPLUSMASS;
     }
-    if(decay == bS_to_Phi){
-        massHypo.push_back(KPLUSMASS);
-        massHypo.push_back(KPLUSMASS);
+    else if(decay == bC_to_PiPi){  
+        massHypo[0] = PIMASS;
+        massHypo[1] = PIMASS;    
     }
-    if(decay == bC_to_PiPi){  
-        massHypo.push_back(PIMASS);
-        massHypo.push_back(PIMASS);    
+    else if(decay == lB_to_L){
+        massHypo[0] = PROTONMASS;
+        massHypo[1] = PIMASS;
     }
-    if(decay == lB_to_L){
-        massHypo.push_back(PROTONMASS);
-        massHypo.push_back(PIMASS);
+    else{
+        throw std::runtime_error("unknown decay TrigEFBEEXFex::XEEMass");
     }
-    std::vector<const xAOD::TrackParticle*> bTracks;
-    bTracks.clear();
-    bTracks.push_back(particle1);
-    bTracks.push_back(particle2);
+    const std::array<const xAOD::TrackParticle*, 2> bTracks{particle1, particle2};
     return m_bphysHelperTool->invariantMass(bTracks, massHypo);
     
 }
 
 double TrigEFBEEXFex::X3Mass(const xAOD::TrackParticle* particle1, const xAOD::TrackParticle* particle2, const xAOD::TrackParticle* particle3 ) {
-    
-    std::vector<double> massHypo;
-    massHypo.clear();
-    massHypo.push_back(KPLUSMASS);
-    massHypo.push_back(KPLUSMASS);
-    massHypo.push_back(PIMASS);
-    std::vector<const xAOD::TrackParticle*> bTracks;
-    bTracks.clear();
-    bTracks.push_back(particle1);
-    bTracks.push_back(particle2);
-    bTracks.push_back(particle3);
+    static const std::array<double, 3> massHypo{KPLUSMASS, KPLUSMASS, PIMASS};
+    const std::array<const xAOD::TrackParticle*, 3> bTracks{particle1, particle2, particle3};
     return m_bphysHelperTool->invariantMass(bTracks, massHypo);
     
 }
 
 double TrigEFBEEXFex::XKPiPiMass(const xAOD::TrackParticle* particle1, const xAOD::TrackParticle* particle2, const xAOD::TrackParticle* particle3 ) {
-    
-    std::vector<double> massHypo;
-    massHypo.clear();
-    massHypo.push_back(KPLUSMASS);
-    massHypo.push_back(PIMASS);
-    massHypo.push_back(PIMASS);
-    std::vector<const xAOD::TrackParticle*> bTracks;
-    bTracks.clear();
-    bTracks.push_back(particle1);
-    bTracks.push_back(particle2);
-    bTracks.push_back(particle3);
+    static const std::array<double, 3> massHypo{ KPLUSMASS, PIMASS, PIMASS};
+    const std::array<const xAOD::TrackParticle*, 3> bTracks{ particle1, particle2, particle3};
     return m_bphysHelperTool->invariantMass(bTracks, massHypo);
     
 }
 
 double TrigEFBEEXFex::KEEMass( const xAOD::TrackParticle* lep1, const xAOD::TrackParticle* lep2, const xAOD::TrackParticle* kaon) {
-    std::vector<double> massHypo;
-    massHypo.clear();
-    massHypo.push_back(EMASS);
-    massHypo.push_back(EMASS);
-    massHypo.push_back(KPLUSMASS);  //K
-    std::vector<const xAOD::TrackParticle*> bTracks;
-    bTracks.clear();
-    bTracks.push_back(lep1);
-    bTracks.push_back(lep2);
-    bTracks.push_back(kaon);
+    static const std::array<double, 3> massHypo{ EMASS, EMASS, KPLUSMASS};
+    const std::array<const xAOD::TrackParticle*, 3> bTracks{lep1, lep2, kaon};
     return m_bphysHelperTool->invariantMass(bTracks, massHypo);
 }
 
 double TrigEFBEEXFex::XEEMass(const xAOD::TrackParticle* lep1, const xAOD::TrackParticle* lep2, const xAOD::TrackParticle* particle1,
                                   const xAOD::TrackParticle* particle2, int decay){
-    std::vector<double> massHypo;
-    massHypo.clear();
-    massHypo.push_back(EMASS);
-    massHypo.push_back(EMASS);
+    std::array<double, 4> massHypo;
+    massHypo[0] = EMASS;
+    massHypo[1] = EMASS;
     if(decay == bD_to_Kstar){
-        massHypo.push_back(KPLUSMASS);
-        massHypo.push_back(PIMASS);
+        massHypo[2] = KPLUSMASS;
+        massHypo[3] = PIMASS;
     }
-    if(decay == bS_to_Phi){
-        massHypo.push_back(KPLUSMASS);
-        massHypo.push_back(KPLUSMASS);
+    else if(decay == bS_to_Phi){
+        massHypo[2] = KPLUSMASS;
+        massHypo[3] = KPLUSMASS;
     }
-    if(decay == bC_to_PiPi){  
-        massHypo.push_back(PIMASS);
-        massHypo.push_back(PIMASS);    
+    else if(decay == bC_to_PiPi){
+        massHypo[2] = PIMASS;
+        massHypo[3] = PIMASS;
     }
-    if(decay == lB_to_L){
-        massHypo.push_back(PROTONMASS);
-        massHypo.push_back(PIMASS);
+    else if(decay == lB_to_L){
+        massHypo[2] = PROTONMASS;
+        massHypo[3] = PIMASS;
+    }else{
+        throw std::runtime_error("unknown decay TrigEFBEEXFex::XEEMass");
     }
-    std::vector<const xAOD::TrackParticle*> bTracks;
-    bTracks.clear();
-    bTracks.push_back(lep1);
-    bTracks.push_back(lep2);
-    bTracks.push_back(particle1);
-    bTracks.push_back(particle2);
+    std::array<const xAOD::TrackParticle*, 4> bTracks{ lep1, lep2, particle1, particle2 };
     return m_bphysHelperTool->invariantMass(bTracks, massHypo);
 }
 
 double TrigEFBEEXFex::X3EEMass(const xAOD::TrackParticle* lep1, const xAOD::TrackParticle* lep2, const xAOD::TrackParticle* particle1,
                                    const xAOD::TrackParticle* particle2, const xAOD::TrackParticle* particle3 ) {
-    std::vector<double> massHypo;
-    massHypo.clear();
-    massHypo.push_back(EMASS);
-    massHypo.push_back(EMASS);
-    massHypo.push_back(KPLUSMASS);
-    massHypo.push_back(KPLUSMASS);
-    massHypo.push_back(PIMASS);
-    std::vector<const xAOD::TrackParticle*> bTracks;
-    bTracks.clear();
-    bTracks.push_back(lep1);
-    bTracks.push_back(lep2);
-    bTracks.push_back(particle1);
-    bTracks.push_back(particle2);
-    bTracks.push_back(particle3);
+    static constexpr std::array<double, 5> massHypo{ EMASS, EMASS, KPLUSMASS, KPLUSMASS, PIMASS};
+    const std::array<const xAOD::TrackParticle*, 5> bTracks{lep1, lep2, particle1, particle2, particle3};
     return m_bphysHelperTool->invariantMass(bTracks, massHypo);
     
 }
 
 double TrigEFBEEXFex::XKPiPiEEMass(const xAOD::TrackParticle* lep1, const xAOD::TrackParticle* lep2, const xAOD::TrackParticle* particle1,
                                    const xAOD::TrackParticle* particle2, const xAOD::TrackParticle* particle3 ) {
-    std::vector<double> massHypo;
-    massHypo.clear();
-    massHypo.push_back(EMASS);
-    massHypo.push_back(EMASS);
-    massHypo.push_back(KPLUSMASS);
-    massHypo.push_back(PIMASS);
-    massHypo.push_back(PIMASS);
-    std::vector<const xAOD::TrackParticle*> bTracks;
-    bTracks.clear();
-    bTracks.push_back(lep1);
-    bTracks.push_back(lep2);
-    bTracks.push_back(particle1);
-    bTracks.push_back(particle2);
-    bTracks.push_back(particle3);
+    static constexpr std::array<double, 5> massHypo{EMASS, EMASS, KPLUSMASS, PIMASS, PIMASS};
+    const std::array<const xAOD::TrackParticle*, 5> bTracks{ lep1, lep2, particle1, particle2, particle3};
     return m_bphysHelperTool->invariantMass(bTracks, massHypo);
-    
 }
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBEEXFex.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBEEXFex.h
index 9fde079ee80583e01c42a9a0efbf9f74155fb279..d093122e281cdf551dce1998949016086b6bc3cd 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBEEXFex.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBEEXFex.h
@@ -24,11 +24,7 @@
 #include <string>
 // trigger includes
 #include "TrigInterfaces/ComboAlgo.h"
-#include "TrigSteeringEvent/TrigRoiDescriptor.h"
-#include "TrkVKalVrtFitter/TrkVKalVrtFitter.h"
 
-#include "Constants.h"
-#include "BtrigUtils.h"
 #include "TrigBphysHelperUtilsTool.h"
 
 #include "xAODEventInfo/EventInfo.h"
@@ -53,8 +49,6 @@ class TrigEFBEEXFex: public HLT::ComboAlgo  {
     
   private:
     
-    ToolHandle < Trk::IVertexFitter  >       m_fitterSvc;
-    
     ToolHandle <TrigBphysHelperUtilsTool> m_bphysHelperTool;
     
     // container inputs names
@@ -99,11 +93,6 @@ class TrigEFBEEXFex: public HLT::ComboAlgo  {
     float m_bSVtxChi2Cut;
     int m_maxBsToStore;
     
-
-    
-    // FTK Flag
-    bool m_FTK;
-
     // Monitoring variables and containers
     //   General
     std::vector<int>   m_mon_Errors;
@@ -179,10 +168,6 @@ class TrigEFBEEXFex: public HLT::ComboAlgo  {
     // to set Accept-All mode: should be done with force-accept when possible
     bool m_acceptAll;
 
-
-    // TrigEFBphysContainer* m_trigBphysColl_b;
-    // TrigEFBphysContainer* m_trigBphysColl_X;
-
     xAOD::TrigBphysContainer * m_TrigBphysColl_b;
     xAOD::TrigBphysContainer * m_TrigBphysColl_X;
     
@@ -190,8 +175,6 @@ class TrigEFBEEXFex: public HLT::ComboAlgo  {
     TrigTimer* m_TotTimer;
     TrigTimer* m_VtxFitTimer;
     
-    Trk::TrkVKalVrtFitter* m_VKVFitter;       
-    
     //Counters
     int m_lastEvent;
     int m_lastEventPassed;
@@ -203,11 +186,7 @@ class TrigEFBEEXFex: public HLT::ComboAlgo  {
     int m_lastEventPassedBplus;
     int m_lastEventPassedBd;
     int m_lastEventPassedBs;
-    int m_lastEventPassedLb;
     unsigned int m_countPassedEventsBplus;
-    unsigned int m_countPassedEventsBs;
-    unsigned int m_countPassedEventsBd;
-    unsigned int m_countPassedEventsLb;
     
     unsigned int m_countPassedEEID;
     unsigned int m_countPassedEEOS;
@@ -238,7 +217,6 @@ class TrigEFBEEXFex: public HLT::ComboAlgo  {
     
 
     
-    void addUnique(std::vector<const Trk::Track*>&, const Trk::Track*);
     void addUnique(std::vector<const xAOD::TrackParticle*>&, const xAOD::TrackParticle*);
     void addUnique(std::vector<ElementLink<xAOD::TrackParticleContainer> >&, const ElementLink<xAOD::TrackParticleContainer>&);
     bool isUnique(const  xAOD::TrackParticle* id1, const  xAOD::TrackParticle* id2) const;
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuFex.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuFex.cxx
index f0190d1a12f4f73a30345f86837f0de8c9566625..ba3b44411cc3e39be7b3ba4141746a329cf116da 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuFex.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuFex.cxx
@@ -13,16 +13,12 @@
  **************************************************************************/ 
  
 #include "TrigEFBMuMuFex.h"
-#include "BtrigUtils.h"
 #include "TrigBphysHelperUtilsTool.h"
 
 #include "TrigTimeAlgs/TrigTimerSvc.h"
 
-#include <iostream>
-//class ISvcLocator;
 
 // additions of xAOD objects
-#include "xAODEventInfo/EventInfo.h"
 #include "xAODMuon/MuonContainer.h"
 #include "xAODTracking/TrackParticle.h"
 #include "xAODTracking/TrackParticleContainer.h"
@@ -32,11 +28,7 @@
 
 TrigEFBMuMuFex::TrigEFBMuMuFex(const std::string & name, ISvcLocator* pSvcLocator):
 HLT::ComboAlgo(name, pSvcLocator)
-//  m_fitterSvc("Trk::TrkVKalVrtFitter/VertexFitterTool",this),
 ,m_bphysHelperTool("TrigBphysHelperUtilsTool")
-//m_trigBphysColl(NULL),
-//m_xAODTrigBphysColl(NULL),
-//m_xAODTrigBphysAuxColl(NULL)
 ,m_BmmHypTot(0),m_BmmHypVtx(0)
 ,m_expectNumberOfInputTE(2)
 ,m_massMuon(105.6583715)
@@ -80,7 +72,6 @@ HLT::ComboAlgo(name, pSvcLocator)
     declareProperty("LowerMassCut", m_lowerMassCut=2000.0);
     declareProperty("UpperMassCut", m_upperMassCut=10000.0);
     declareProperty("ApplyUpperMassCut", m_ApplyupperMassCut=true);
-    //declareProperty("VertexFitterTool", m_fitterSvc);
     declareProperty("MuonAlgo"    , m_muonAlgo="TrigMuSuperEF");
     declareProperty("ExtrapolatedTrackParticleContName", m_SAMuonLabel="MuonEFInfo_ExtrapTrackParticles");
     declareProperty("noId"        , m_noId              = false);
@@ -335,7 +326,7 @@ HLT::ErrorCode TrigEFBMuMuFex::acceptInputs(HLT::TEConstVec& inputTE, bool& pass
             // loop over the vector of muon containers
             msg() << MSG::DEBUG << "MuonContainer, Got MuonEF " << ic << " Feature, size = " << muelv.size() << endmsg;
             int i(0);
-            for ( const auto muel: muelv) {
+            for ( const auto& muel: muelv) {
                 msg() << MSG::DEBUG << "ELLink: " << i++
                     << " index: "  << muel.index()
                     << " sgkey: "  << muel.dataID()
@@ -363,7 +354,7 @@ HLT::ErrorCode TrigEFBMuMuFex::acceptInputs(HLT::TEConstVec& inputTE, bool& pass
         for ( const auto& tpelv : vec_elv_tps) {
             msg() << MSG::DEBUG <<  "SATrackParticleContainer, Got MUSA " << ic << " Feature, size = " << tpelv.size() << endmsg;
             int i(0);
-            for ( const auto tpel: tpelv) {
+            for ( const auto& tpel: tpelv) {
                 msg() << MSG::DEBUG << "ELLink: " << i++
                     << " index: "  << tpel.index()
                     << " sgkey: "  << tpel.dataID()
@@ -378,7 +369,7 @@ HLT::ErrorCode TrigEFBMuMuFex::acceptInputs(HLT::TEConstVec& inputTE, bool& pass
     
     // for each of the two roi's make muons selection (not roi2 has m_noID complexity)
     std::vector<const xAOD::Muon*> muons0, muons1, muonsAll;
-    for (const auto muel: vec_elv_muons[0]){
+    for (const auto& muel: vec_elv_muons[0]){
         if ( (*muel)->muonType() != xAOD::Muon::Combined && (*muel)->muonType() != xAOD::Muon::SegmentTagged) {
             ATH_MSG_DEBUG("Muon from roi1 is neither Combined or SegmentTagged - reject" );
             continue;
@@ -388,7 +379,7 @@ HLT::ErrorCode TrigEFBMuMuFex::acceptInputs(HLT::TEConstVec& inputTE, bool& pass
         m_bphysHelperTool->addUnique(*muel, muonsAll,0.005,0.005,10, m_muonParticleType);
     } // roi1
     if(vec_elv_muons.size() > 1) {
-      for (const auto muel: vec_elv_muons[1]){
+      for (const auto& muel: vec_elv_muons[1]){
           // special case if noId set
           if (m_noId) {
               // no check needed for the noID
@@ -437,7 +428,7 @@ HLT::ErrorCode TrigEFBMuMuFex::acceptInputs(HLT::TEConstVec& inputTE, bool& pass
                 xAOD::TrigBphys * bphys = m_resultsHolder.back();
                 ElementLink<xAOD::IParticleContainer> ptl1EL,ptl2EL;
                 bool foundMu0(false), foundMu1(false);
-                for ( const auto muel: vec_elv_muons[0] ) {
+                for ( const auto& muel: vec_elv_muons[0] ) {
                     if ( *muel == mu0) {
                         ptl1EL.resetWithKeyAndIndex(muel.dataID(),muel.index());
                         foundMu0 = true;
@@ -449,7 +440,7 @@ HLT::ErrorCode TrigEFBMuMuFex::acceptInputs(HLT::TEConstVec& inputTE, bool& pass
                     if (foundMu0 && foundMu1) break; // found both links
                 }
                 if(vec_elv_muons.size() > 1) {
-                  for ( const auto muel: vec_elv_muons[1] ) {
+                  for ( const auto& muel: vec_elv_muons[1] ) {
                       if ( *muel == mu0) {
                           ptl1EL.resetWithKeyAndIndex(muel.dataID(),muel.index());
                           foundMu0 = true;
@@ -490,7 +481,7 @@ HLT::ErrorCode TrigEFBMuMuFex::acceptInputs(HLT::TEConstVec& inputTE, bool& pass
                 xAOD::TrigBphys * bphys = m_resultsHolder.back();
                 ElementLink<xAOD::IParticleContainer> ptl1EL,ptl2EL;
                 bool foundMu0(false), foundMu1(false);
-                for ( const auto muel: vec_elv_muons[0] ) {
+                for ( const auto& muel: vec_elv_muons[0] ) {
                     if ( *muel == mu0) {
                         ptl1EL.resetWithKeyAndIndex(muel.dataID(),muel.index());
                         foundMu0 = true;
@@ -502,7 +493,7 @@ HLT::ErrorCode TrigEFBMuMuFex::acceptInputs(HLT::TEConstVec& inputTE, bool& pass
                     if (foundMu0 && foundMu1) break; // found both links
                 }
                 if(vec_elv_muons.size() > 1) {
-                  for ( const auto muel: vec_elv_muons[1] ) {
+                  for ( const auto& muel: vec_elv_muons[1] ) {
                       if ( *muel == mu0) {
                           ptl1EL.resetWithKeyAndIndex(muel.dataID(),muel.index());
                           foundMu0 = true;
@@ -584,10 +575,8 @@ void TrigEFBMuMuFex::buildCombination(const xAOD::Muon *mu0, const xAOD::Muon *m
     const xAOD::TrackParticle* tp1 = mu1->trackParticle(m_noId ? xAOD::Muon::MuonSpectrometerTrackParticle : m_muonParticleType);
     if (!tp0) return;
     if (!tp1) return;
-    const Trk::Track * trk0 = tp0->track();
-    const Trk::Track * trk1 = tp1->track();
-    if (trk1 && (trk1 == trk0)) {
-        ATH_MSG_DEBUG("Same Trk::Track pointers" );
+    if (tp0 == tp1) {
+        ATH_MSG_DEBUG("Same xAOD::TrackParticle  pointers" );
         return;
     } // if tracks the same
 
@@ -597,8 +586,8 @@ void TrigEFBMuMuFex::buildCombination(const xAOD::Muon *mu0, const xAOD::Muon *m
     } // track uniqueness
     m_mon_Acceptance.push_back( ACCEPT_MuMu_Unique );
     // opposite charge requirement
-    ATH_MSG_VERBOSE("Charges combination: " << mu0 << ": " << mu0->charge() << " " << tp0->qOverP() << " " << (trk0 ? trk0->perigeeParameters()->charge() : -99)
-        << " , " << mu1 << ": " << mu1->charge() << " " << tp1->qOverP() << " " << (trk1 ? trk1->perigeeParameters()->charge() : -99));
+    ATH_MSG_VERBOSE("Charges combination: " << mu0 << ": " << mu0->charge() << " " << tp0->qOverP() << " " <<  tp0->charge()
+        << " , " << mu1 << ": " << mu1->charge() << " " << tp1->qOverP() << " " << tp1->charge());
     
     if (m_oppositeCharge && (tp0->charge() * tp1->charge() > 0)) {
         ATH_MSG_DEBUG("Reject permutation due to opposite charge requirement: " << mu0->charge() << "  " << mu1->charge() );
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuFex.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuFex.h
index f27dbd8252d336a016e221c96b862faa838059d6..394e87a74198454d05637d3d73459a2f15973468 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuFex.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuFex.h
@@ -21,13 +21,10 @@
 
 // standard stuff
 #include <string>
-#include <map>
-#include <cmath> 
 // general athena stuff
 //// trigger includes
 #include "TrigInterfaces/ComboAlgo.h"
 #include "xAODMuon/Muon.h"
-#include "AthLinks/ElementLink.h"
 
 // forward includes
 class TrigBphysHelperUtilsTool;
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.cxx
index 54fe1e0ba407ca3341b356726ee2817e9efb216d..76bdfc96cee05d0546b4369b35493fcc0e7ebd32 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.cxx
@@ -18,23 +18,17 @@
  **
  **************************************************************************/
 
-//#include "TrigMuonEvent/CombinedMuonFeature.h"
-
 #include "TrigEFBMuMuHypo.h"
 
 #include <math.h>
 #include "xAODTrigger/TrigPassBits.h"
-#include "TrigNavigation/Navigation.h"
 
 
 // additions of xAOD objects
 #include "xAODEventInfo/EventInfo.h"
 #include "xAODTracking/TrackParticle.h"
-#include "xAODMuon/Muon.h"
-#include "xAODMuon/MuonContainer.h"
 #include "xAODTrigBphys/TrigBphys.h"
 #include "xAODTrigBphys/TrigBphysContainer.h"
-//#include "xAODTrigBphys/TrigBphysAuxContainer.h"
 
 class ISvcLocator;
 
@@ -149,12 +143,8 @@ HLT::ErrorCode TrigEFBMuMuHypo::hltExecute(const HLT::TriggerElement* outputTE,
   ATH_MSG_DEBUG("AcceptAll is set to : " << (m_acceptAll ? "True, taking all events " : "False, applying selection" ));
 
   //  create vector for TrigEFBphys particles
-    // const TrigEFBphysContainer* trigBphysColl = 0;
     const xAOD::TrigBphysContainer* trigBphysColl(0);
     
-//  const TrigEFBContainer* trigBphysColl = 0;
-//  const VxContainer* VertexColl;
-
   HLT::ErrorCode status = getFeature(outputTE, trigBphysColl, "EFBMuMuFex");
 
   if ( status != HLT::OK ) {
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.h
index ce88e25bb429f6e57d9166bbb2f7d3f05eb301a9..f8c69638592de7738bf2ac38f0ed505577df90c6 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuHypo.h
@@ -25,7 +25,6 @@
 #include "TrigInterfaces/HypoAlgo.h"
 
 #include "BeamSpotConditionsData/BeamSpotData.h"
-#include "Constants.h"
 
 class TrigEFBMuMuHypo: public HLT::HypoAlgo  {
   
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXFex.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXFex.cxx
index 26b31d7a149ed650cc3c8311380422a72b45ca60..afd2b59da5e88cc9ef43893cfdaab35975b33f41 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXFex.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXFex.cxx
@@ -320,10 +320,6 @@ HLT::ComboAlgo(name, pSvcLocator)
     declareProperty("BcD0VtxChi2Cut", m_bCD0VtxChi2Cut = 120.);           // default = 120.0
     declareProperty("MaxBcD0ToStore", m_maxBcD0ToStore = -1);
 
-    // FTK Flag
-    declareProperty("DoFTK",    m_FTK=false); // Are we using FTK??
-
-    
     // Monitoring variables
     //   General
     declareMonitoredStdContainer("Errors",     m_mon_Errors,     AutoClear);
@@ -510,7 +506,6 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltInitialize()
    
     ATH_MSG_DEBUG("Initialization completed successfully:" );
     ATH_MSG_DEBUG("AcceptAll          = "   << (m_acceptAll==true ? "True" : "False") );
-    ATH_MSG_DEBUG("DoFTK         = "        << (m_FTK==true ? "True" : "False") );
     ATH_MSG_DEBUG("MaxNcombinations            = " << m_maxNcombinations );
     ATH_MSG_DEBUG("Activated decays:" );
     ATH_MSG_DEBUG("    B+ -> mu mu K+ : " << (m_doB_KMuMuDecay==true ? "True" : "False") );
@@ -778,28 +773,15 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
     //Check that we got 2 input TEs
     int mu1_TE=-1;
     int mu2_TE=-1;
-    if (!m_FTK) {
-      if ( inputTE.size() != 2 ) {
-        ATH_MSG_DEBUG("Got different than 2 number of input TEs: " << inputTE.size() );
-          //m_mon_Errors.push_back(ERROR_Not_2_InputTEs);
-          //if ( timerSvc() ) m_TotTimer->stop();
-          //return HLT::BAD_JOB_SETUP;
-        mu1_TE=0;
-        mu2_TE=0;
-      }else{
-        mu1_TE=0;
-        mu2_TE=1;
-      }
-    } else {
-      if ( inputTE.size() != 3 ) {
-        ATH_MSG_ERROR("FTK mode expect 3 input TEs, got : " << inputTE.size() );
-        m_mon_Errors.push_back(ERROR_Not_2_InputTEs);
-        if ( timerSvc() ) m_TotTimer->stop();
-        return HLT::BAD_JOB_SETUP;
-      }
-      mu1_TE=1;
-      mu2_TE=2;
+    if ( inputTE.size() != 2 ) {
+      ATH_MSG_DEBUG("Got different than 2 number of input TEs: " << inputTE.size() );
+      mu1_TE=0;
+      mu2_TE=0;
+    }else{
+      mu1_TE=0;
+      mu2_TE=1;
     }
+    
 
 
     if(IdEvent!=m_lastEvent) {
@@ -824,7 +806,6 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
     //Retrieve ROIs
     const TrigRoiDescriptor *roiDescriptor1(0);
     const TrigRoiDescriptor *roiDescriptor2(0);
-    const TrigRoiDescriptor *roiDescriptorTrk(0); // for FTK chain
     
     // get them from the navigation
 
@@ -850,22 +831,10 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
        return HLT::NAV_ERROR;
      }
 
-     if (m_FTK) {
-      if ( getFeature(inputTE[0], roiDescriptorTrk) != HLT::OK ) {
-        ATH_MSG_ERROR("Navigation error while getting RoI descriptor Trk" );
-        m_mon_Errors.push_back(ERROR_No_RoIs);
-        if ( timerSvc() ) m_TotTimer->stop();
-        return HLT::NAV_ERROR;
-      }
-     }
 
     ATH_MSG_DEBUG("Using inputTEs: "<< inputTE[mu1_TE] <<  " and "  << inputTE[mu2_TE] << " with Ids " << inputTE[mu1_TE]->getId()<< " AND "<< inputTE[mu2_TE]->getId()
         << "; RoI IDs = "   << roiDescriptor1->roiId()<< " AND   " <<roiDescriptor2->roiId() << ": Eta1 =    "   << roiDescriptor1->eta() << " Eta2= " <<roiDescriptor2->eta()
         << ", Phi1 =    "   << roiDescriptor1->phi() << " Phi2= " <<roiDescriptor2->phi() );
-	if (m_FTK) {
-	  ATH_MSG_DEBUG("Using inputTE for tracks: "<< inputTE[0] << " " << inputTE[0]->getId()
-        << "; RoI IDs = "   << roiDescriptorTrk->roiId() << ": EtaTrk =    "   << roiDescriptorTrk->eta() << ", PhiTrk =    "   << roiDescriptorTrk->phi());
-	}
     
     // Fill RoIs monitoring containers
     m_mon_RoI_RoI1Eta.push_back(roiDescriptor1->eta());
@@ -879,8 +848,6 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
     m_mon_RoI_dPhiRoI.push_back( fabs(tmp_RoI_dPhiRoI) );
     
     // Retrieve muons
-    //std::vector<const Trk::Track*> muidIDtracks1;
-    //std::vector<const Trk::Track*> muidIDtracks2;
     //JW
     std::vector<ElementLink<xAOD::TrackParticleContainer> > muonTPELtracks1;
     std::vector<ElementLink<xAOD::TrackParticleContainer> > muonTPELtracks2;
@@ -903,7 +870,7 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
     }
     ATH_MSG_DEBUG("Found MuonContainer, Got MuonEF (1) Feature, size = " << muonContainerEF1.size());
     
-    for ( const auto muel : muonContainerEF1 ) {
+    for ( const auto& muel : muonContainerEF1 ) {
       if ( (*muel)->muonType() != xAOD::Muon::Combined && (*muel)->muonType() != xAOD::Muon::SegmentTagged) {
         ATH_MSG_DEBUG("Muon from roi1 is neither Combined or SegmentTagged - reject" );
         continue;
@@ -917,12 +884,6 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
           ATH_MSG_DEBUG("No innerdetector muon1 TrackParticle found" );
           continue;
       }
-        //const Trk::Track* indetTrack = idtp->track();
-        //if ( !indetTrack ) {
-        //  ATH_MSG_DEBUG("No id muon1 id Trk::Track found" );
-        //  continue;
-        //}
-        //addUnique(muidIDtracks1, indetTrack);
         addUnique(muonTPELtracks1,idtpEl);
         addUnique(muonTPELtracksMerged,idtpEl);
         
@@ -944,7 +905,7 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
     }
     ATH_MSG_DEBUG("Found MuonContainer, Got MuonEF (2) Feature, size = " << muonContainerEF2.size());
     
-    for ( const auto muel : muonContainerEF2 ) {
+    for ( const auto& muel : muonContainerEF2 ) {
       if ( (*muel)->muonType() != xAOD::Muon::Combined && (*muel)->muonType() != xAOD::Muon::SegmentTagged) {
         ATH_MSG_DEBUG("Muon from roi2 is neither Combined or SegmentTagged - reject" );
         continue;
@@ -958,12 +919,6 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
           ATH_MSG_DEBUG("No innerdetector muon2 TrackParticle found" );
           continue;
       }
-        //      const Trk::Track* indetTrack = idtp->track();
-        //      if ( !indetTrack ) {
-        //          ATH_MSG_DEBUG("No id muon2 id Trk::Track found" );
-        //          continue;
-        //      }
-        //addUnique(muidIDtracks2, indetTrack);
         addUnique(muonTPELtracks2,idtpEl);
         addUnique(muonTPELtracksMerged,idtpEl);
         ATH_MSG_DEBUG("Comb muon 1 pt/eta/phi " << idtp->pt() << " / " << idtp->eta() << " / " << idtp->phi());
@@ -973,7 +928,7 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
     // build a map of the tracks and corresponding muons
     std::map<const xAOD::TrackParticle*, ElementLink<xAOD::MuonContainer> > mapTrkToMuons;
     //for (auto& muCont: muonContainerEF1) {
-        for (const auto mu : muonContainerEF1) {
+        for (const auto& mu : muonContainerEF1) {
             auto idtp  = (*mu)->inDetTrackParticleLink();
             if (!idtp.isValid()) continue;
             if (!*idtp) continue;
@@ -982,7 +937,7 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
         } // muCont
     //} // muonContainerEF1
     //for (auto& muCont: muonContainerEF2) {
-        for (const auto mu : muonContainerEF2) {
+        for (const auto& mu : muonContainerEF2) {
             auto idtp  = (*mu)->inDetTrackParticleLink();
             if (!idtp.isValid()) continue;
             if (!*idtp) continue;
@@ -995,23 +950,17 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
         msg() << MSG::DEBUG << "muonContainerEF1.size()= " << muonContainerEF1.size()<< " muonContainerEF2.size()= " << muonContainerEF2.size() 
           << " uonTPELtracks1.size()= "  << muonTPELtracks1.size() << " muonTPELtracks2.size()= "  << muonTPELtracks2.size() << " muonTPELtracksMerged.size()= "  << muonTPELtracksMerged.size() <<endmsg;
         
-        for (auto muel: muonTPELtracks1) {
+        for (const auto& muel: muonTPELtracks1) {
             msg() << MSG::DEBUG << "muonTPELtracks1: " << *muel << " " << (*muel)->pt() << " , " << (*muel)->eta() << " , " << (*muel)->phi() << " , " << (*muel)->charge() << endmsg;
         }
-        for (auto muel: muonTPELtracks2) {
+        for (const auto& muel: muonTPELtracks2) {
             msg() << MSG::DEBUG << "muonTPELtracks2: " << *muel << " " << (*muel)->pt() << " , " << (*muel)->eta() << " , " << (*muel)->phi() << " , " << (*muel)->charge() << endmsg;
         }
-        for (auto muel: muonTPELtracksMerged) {
+        for (const auto& muel: muonTPELtracksMerged) {
             msg() << MSG::DEBUG << "muonTPELtracksMerged: " << *muel << " " << (*muel)->pt() << " , " << (*muel)->eta() << " , " << (*muel)->phi() << " , " << (*muel)->charge() << endmsg;
         }
     } // if debug
     
-    
-    //   TrigEFBphys* trigPartBMuMuX (NULL);
-    // FIXME - remove these 'new's
-    //m_trigBphysColl_b = new TrigEFBphysContainer();
-    //m_trigBphysColl_X = new TrigEFBphysContainer();
-    
     m_TrigBphysColl_b = new xAOD::TrigBphysContainer();
     xAOD::TrigBphysAuxContainer xAODTrigBphysAuxColl_b;
     m_TrigBphysColl_b->setStore(&xAODTrigBphysAuxColl_b);
@@ -1038,17 +987,10 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
     } else {
         
         // Loop over muons
-        //std::vector<ElementLink<xAOD::TrackParticleContainer> >::iterator pElItr=muonTPELtracks1.begin();
-        //std::vector<ElementLink<xAOD::TrackParticleContainer> >::iterator mElItr=muonTPELtracks2.begin();
-        std::vector<ElementLink<xAOD::TrackParticleContainer> >::iterator pElItr=muonTPELtracksMerged.begin();
-        std::vector<ElementLink<xAOD::TrackParticleContainer> >::iterator mElItr=muonTPELtracksMerged.begin();
-
-        //        for(pElItr=muonTPELtracks1.begin(); pElItr != muonTPELtracks1.end(); pElItr++) {
-        //            for(mElItr=muonTPELtracks2.begin(); mElItr != muonTPELtracks2.end(); mElItr++) {
         const Amg::Vector3D beamspot = m_bphysHelperTool->getBeamSpot(Gaudi::Hive::currentContext());
 
-        for(pElItr=muonTPELtracksMerged.begin(); pElItr != muonTPELtracksMerged.end(); ++pElItr) {
-            for(mElItr=pElItr+1; mElItr != muonTPELtracksMerged.end(); ++mElItr) {
+        for(auto pElItr=muonTPELtracksMerged.begin(); pElItr != muonTPELtracksMerged.end(); ++pElItr) {
+            for(auto mElItr=pElItr+1; mElItr != muonTPELtracksMerged.end(); ++mElItr) {
                 auto pTp = **pElItr;
                 auto mTp = **mElItr;
                 ATH_MSG_DEBUG("Try to build muon pair from mu1 " << *(*pElItr) << ", mu2 " << *(*mElItr) );
@@ -1193,7 +1135,7 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
                 std::map<const xAOD::TrackParticle*, ElementLink<xAOD::TrackParticleContainer> > mapTrackToEL;
                 
                 int idCounter(0);
-                for (auto trk: tracksRoiI1) {
+                for (const auto& trk: tracksRoiI1) {
                     // merged_tracks.push_back(trk);
                     addUnique(merged_tracks,*trk);
                     ElIndex tmp;
@@ -1204,7 +1146,7 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
                     ++idCounter;
                 }
                 idCounter = 0;
-                for (auto trk: tracksRoiI2) {
+                for (const auto& trk: tracksRoiI2) {
                     // merged_tracks.push_back(trk);
                     addUnique(merged_tracks,*trk);
                     ElIndex tmp;
@@ -1284,7 +1226,6 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
                 
                 for (int itrk1=0 ; trkIt1 != lastTrkIt; itrk1++, trkIt1++)
                 {
-                    //const Trk::Track* track1 = (*trkIt1)->track();
                     const xAOD::TrackParticle* track1 = (*trkIt1);
                     
 //                    ElementLink<xAOD::TrackParticleContainer> trackEL3( mapTrackToIndex[*trkIt1].roi == 1 ? tracksRoiI1[0].dataID() : tracksRoiI2[0].dataID(), mapTrackToIndex[*trkIt1].index);
@@ -1381,7 +1322,6 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
                         }
                         
 			if(m_doBd_KstarMuMuDecay || m_doBs_Phi1020MuMuDecay || m_doLb_LambdaMuMuDecay || m_doBc_DsMuMuDecay || m_doBc_DplusMuMuDecay || m_doBc_DstarMuMuDecay || m_doBc_D0MuMuDecay) {
-                                //const Trk::Track* track2 = (*trkIt2)->track();
                                 const xAOD::TrackParticle* track2 = (*trkIt2);
 
                             // Sergey S.
@@ -1747,7 +1687,6 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
 
                                         for (int itrk3=0 ; trkIt3 != lastTrkIt; itrk3++, trkIt3++)
                                         {
-                                            //const Trk::Track* track3 = (*trkIt3)->track();
                                             const xAOD::TrackParticle* track3 = *trkIt3;
 
                                             // looping over all tracks, so expect to same tracks, but should skip those combinations
@@ -1888,7 +1827,6 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
 
                                             for (int itrk3=0 ; trkIt3 != lastTrkIt; itrk3++, trkIt3++)
                                             {
-                                                //const Trk::Track* track3 = (*trkIt3)->track();
                                                 const xAOD::TrackParticle* track3 = *trkIt3;
 
                                                 // looping over all tracks, so expect to same tracks, but should skip those combinations
@@ -2040,7 +1978,6 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
 
                                             for (int itrk3=0 ; trkIt3 != lastTrkIt; itrk3++, trkIt3++)
                                             {
-                                                //const Trk::Track* track3 = (*trkIt3)->track();
                                                 const xAOD::TrackParticle* track3 = *trkIt3;
 
                                                 // looping over all tracks, so expect to same tracks, but should skip those combinations
@@ -2286,7 +2223,7 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
         ATH_MSG_WARNING( "Failed to getFeaturesLinks trigBphys_X Collection in outputTE" );
         } else {
             if(msgLvl() <= MSG::DEBUG){
-              for ( const auto eltp: ELvecTBPh) {
+              for ( const auto& eltp: ELvecTBPh) {
                 msg() << MSG::DEBUG << "  ===== TrigBphys Container ElementLinks : " 
                   << " index: "  << eltp.index()
                   << " sgkey: "  << eltp.dataID()
@@ -2304,7 +2241,7 @@ HLT::ErrorCode TrigEFBMuMuXFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigge
               ElementLink<xAOD::TrigBphysContainer> secEL;
 //               secEL.resetWithKeyAndIndex(KEY,(*BPobj)->secondaryDecayLink().index());
               // match transient secondary decay ELs with those from persistified container
-              for(auto persistentSecEL : ELvecTBPh ) {
+              for(const auto& persistentSecEL : ELvecTBPh ) {
                 if(*persistentSecEL == *(*BPobj)->secondaryDecayLink())
                   secEL = persistentSecEL;
               }
@@ -2422,7 +2359,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBplusMuMuKplus(const ElementLink<xAOD::Tr
     } // if m_doB_KMuMuVertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracks) {
+      for(const auto& tpel : vec_tracks) {
         result->addTrackParticleLink(tpel);
       }
     }
@@ -2521,7 +2458,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBcMuMuDs(const ElementLink<xAOD::TrackPar
     } // m_doDs_Vertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracksX) {
+      for(const auto& tpel : vec_tracksX) {
         fitVtx_X->addTrackParticleLink(tpel);
       }
     }
@@ -2644,7 +2581,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBcMuMuDs(const ElementLink<xAOD::TrackPar
               m_mon_BcMuMuDs_Chi2_Bc.push_back(chi2XMuMu);
               
               // manually attach the track links to fitVtx
-              for(auto tpel : vec_tracks) {
+              for(const auto& tpel : vec_tracks) {
                 fitVtx->addTrackParticleLink(tpel);
               }
               
@@ -2687,7 +2624,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBcMuMuDs(const ElementLink<xAOD::TrackPar
     } //m_doBc_DsMuMuVertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracks) {
+      for(const auto& tpel : vec_tracks) {
         fitVtx->addTrackParticleLink(tpel);
       }
     }
@@ -2786,7 +2723,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBcMuMuDplus(const ElementLink<xAOD::Track
     } // m_doDplus_Vertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracksX) {
+      for(const auto& tpel : vec_tracksX) {
         fitVtx_X->addTrackParticleLink(tpel);
       }
     }
@@ -2912,7 +2849,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBcMuMuDplus(const ElementLink<xAOD::Track
               m_mon_BcMuMuDplus_Chi2_Bc.push_back(chi2XMuMu);
               
               // manually attach the track links to fitVtx
-              for(auto tpel : vec_tracks) {
+              for(const auto& tpel : vec_tracks) {
                 fitVtx->addTrackParticleLink(tpel);
               }
               
@@ -2955,7 +2892,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBcMuMuDplus(const ElementLink<xAOD::Track
     } //m_doBc_DplusMuMuVertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracks) {
+      for(const auto& tpel : vec_tracks) {
         fitVtx->addTrackParticleLink(tpel);
       }
     }
@@ -2982,7 +2919,6 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBcMuMuDstar(const ElementLink<xAOD::Track
     xAOD::TrigBphys * fitVtx(nullptr);
     
     std::vector<double> massHypoD0 = {KPLUSMASS,PIMASS};
-    std::vector<double> massHypoX = {KPLUSMASS,PIMASS,PIMASS};
     std::vector<double> massHypo  = {MUMASS,MUMASS,KPLUSMASS,PIMASS,PIMASS};
     float massX;
     float massXMuMu;
@@ -3025,12 +2961,10 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBcMuMuDstar(const ElementLink<xAOD::Track
                        xAOD::TrigBphys::BCDSTMUMU, massXMuMu, xAOD::TrigBphys::EF);
 
     std::vector<ElementLink<xAOD::TrackParticleContainer> > vec_tracksD0;
-    std::vector<ElementLink<xAOD::TrackParticleContainer> > vec_tracksX;
     std::vector<ElementLink<xAOD::TrackParticleContainer> > vec_tracks;
     
     if ( ((*eltrack1)->charge())*((*eltrack3)->charge()) < 0 ) {
       vec_tracksD0 = {eltrack1,eltrack2};
-      vec_tracksX = {eltrack1,eltrack2,eltrack3};
       vec_tracks  = {elmu1,elmu2,eltrack1,eltrack2,eltrack3};
     
       m_mon_BcMuMuDstar_Pt_K.push_back ((*eltrack1)->pt()*0.001);
@@ -3041,7 +2975,6 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBcMuMuDstar(const ElementLink<xAOD::Track
       m_mon_BcMuMuDstar_Phi_pi.push_back((*eltrack2)->phi());
     } else {
       vec_tracksD0 = {eltrack2,eltrack1};
-      vec_tracksX = {eltrack2,eltrack1,eltrack3};
       vec_tracks  = {elmu1,elmu2,eltrack2,eltrack1,eltrack3};
     
       m_mon_BcMuMuDstar_Pt_K.push_back ((*eltrack2)->pt()*0.001);
@@ -3087,7 +3020,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBcMuMuDstar(const ElementLink<xAOD::Track
     } // m_doDplus_Vertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracksD0) {
+      for(const auto& tpel : vec_tracksD0) {
         fitVtx_X->addTrackParticleLink(tpel);
       }
     }
@@ -3227,7 +3160,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBcMuMuDstar(const ElementLink<xAOD::Track
               m_mon_BcMuMuDstar_Chi2_Bc.push_back(chi2XMuMu);
               
               // manually attach the track links to fitVtx
-              for(auto tpel : vec_tracks) {
+              for(const auto& tpel : vec_tracks) {
                 fitVtx->addTrackParticleLink(tpel);
               }
               
@@ -3268,7 +3201,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBcMuMuDstar(const ElementLink<xAOD::Track
     } //m_doBc_DstarMuMuVertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracks) {
+      for(const auto& tpel : vec_tracks) {
         fitVtx->addTrackParticleLink(tpel);
       }
     }
@@ -3385,7 +3318,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBcMuMuD0(const ElementLink<xAOD::TrackPar
     } // m_doDplus_Vertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracksX) {
+      for(const auto& tpel : vec_tracksX) {
         fitVtx_X->addTrackParticleLink(tpel);
       }
     }
@@ -3513,7 +3446,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBcMuMuD0(const ElementLink<xAOD::TrackPar
               m_mon_BcMuMuD0_Chi2_Bc.push_back(chi2XMuMu);
               
               // manually attach the track links to fitVtx
-              for(auto tpel : vec_tracks) {
+              for(const auto& tpel : vec_tracks) {
                 fitVtx->addTrackParticleLink(tpel);
               }
               
@@ -3554,7 +3487,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBcMuMuD0(const ElementLink<xAOD::TrackPar
     } //m_doBc_D0MuMuVertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracks) {
+      for(const auto& tpel : vec_tracks) {
         fitVtx->addTrackParticleLink(tpel);
       }
     }
@@ -3651,7 +3584,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkLbMuMuLambda(const ElementLink<xAOD::Trac
     } // m_doDplus_Vertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracksX) {
+      for(const auto& tpel : vec_tracksX) {
         fitVtx_X->addTrackParticleLink(tpel);
       }
     }
@@ -3796,7 +3729,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkLbMuMuLambda(const ElementLink<xAOD::Trac
               m_mon_LbMuMuLambda_FinMass_Lb.push_back(massXMuMu/1000.);
               
               // manually attach the track links to fitVtx
-              for(auto tpel : vec_tracks) {
+              for(const auto& tpel : vec_tracks) {
                 fitVtx->addTrackParticleLink(tpel);
               }
               
@@ -3839,7 +3772,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkLbMuMuLambda(const ElementLink<xAOD::Trac
     } //m_doLb_LambdaMuMuVertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracks) {
+      for(const auto& tpel : vec_tracks) {
         fitVtx->addTrackParticleLink(tpel);
       }
     }
@@ -4064,7 +3997,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBMuMu2X(const ElementLink<xAOD::TrackPart
     } // do2XVertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracksX) {
+      for(const auto& tpel : vec_tracksX) {
         fitVtx_X->addTrackParticleLink(tpel);
       }
     }
@@ -4090,7 +4023,7 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBMuMu2X(const ElementLink<xAOD::TrackPart
     } // doBMuMu2XVertexing
     else {
       // if vertexting is not done - just attach trackParticle links
-      for(auto tpel : vec_tracks) {
+      for(const auto& tpel : vec_tracks) {
         fitVtx->addTrackParticleLink(tpel);
       }
     }
@@ -4102,29 +4035,6 @@ xAOD::TrigBphys* TrigEFBMuMuXFex::checkBMuMu2X(const ElementLink<xAOD::TrackPart
 
 
 
-/*----------------------------------------------------------------------------*/
-void TrigEFBMuMuXFex::addUnique(std::vector<const Trk::Track*>& tracks, const Trk::Track* trkIn)
-{
-    //  std::cout<<" in addUnique : trkIn pT= "<<trkIn->perigeeParameters()->pT()<<std::endl;
-    std::vector<const Trk::Track*>::iterator tItr;
-    for( tItr = tracks.begin(); tItr != tracks.end(); tItr++)
-    {
-        double dPhi=fabs((*tItr)->perigeeParameters()->parameters()[Trk::phi] -
-                         trkIn->perigeeParameters()->parameters()[Trk::phi]);
-        if (dPhi > M_PI) dPhi = 2.*M_PI - dPhi;
-        
-        if( fabs(dPhi) < 0.02 &&
-           fabs((*tItr)->perigeeParameters()->eta() -
-                trkIn->perigeeParameters()->eta()) < 0.02 ) 
-        { //std::cout<<" TrigEFBMuMuFex addUnique: the SAME tracks! pT= "<<
-            //trkIn->perigeeParameters()->pT()<<" and "<<
-            //(*tItr)->perigeeParameters()->pT()<<std::endl;
-            return;
-        }
-    } 
-    tracks.push_back(trkIn);       
-}
-
 /*----------------------------------------------------------------------------*/
 void TrigEFBMuMuXFex::addUnique(std::vector<const xAOD::TrackParticle*>& tps, const xAOD::TrackParticle* tpIn)
 {
@@ -4192,149 +4102,94 @@ bool TrigEFBMuMuXFex::isUnique(const  xAOD::TrackParticle* id1, const  xAOD::Tra
 
 double TrigEFBMuMuXFex::XMass(const xAOD::TrackParticle* particle1, const xAOD::TrackParticle* particle2, int decay) { /// checking the mass
     
-    std::vector<double> massHypo;
-    massHypo.clear();
+    std::array<double, 2> massHypo;
     if(decay == di_to_muons){
-        massHypo.push_back(MUMASS);
-        massHypo.push_back(MUMASS);
-    }
-    if(decay == bD_to_Kstar){
-        massHypo.push_back(KPLUSMASS);
-        massHypo.push_back(PIMASS);
+        massHypo[0] = (MUMASS);
+        massHypo[1] = (MUMASS);
     }
-    if(decay == bS_to_Phi){
-        massHypo.push_back(KPLUSMASS);
-        massHypo.push_back(KPLUSMASS);
+    else if(decay == bD_to_Kstar){
+        massHypo[0] = (KPLUSMASS);
+        massHypo[1] = (PIMASS);
     }
-    if(decay == bC_to_PiPi){  
-        massHypo.push_back(PIMASS);
-        massHypo.push_back(PIMASS);    
+    else if(decay == bS_to_Phi){
+        massHypo[0] = (KPLUSMASS);
+        massHypo[1] = (KPLUSMASS);
     }
-    if(decay == lB_to_L){
-        massHypo.push_back(PROTONMASS);
-        massHypo.push_back(PIMASS);
+    else if(decay == bC_to_PiPi){  
+        massHypo[0] = (PIMASS);
+        massHypo[1] = (PIMASS);    
     }
-    std::vector<const xAOD::TrackParticle*> bTracks;
-    bTracks.clear();
-    bTracks.push_back(particle1);
-    bTracks.push_back(particle2);
+    else if(decay == lB_to_L){
+        massHypo[0] = (PROTONMASS);
+        massHypo[1] = (PIMASS);
+    }else{
+		throw std::runtime_error("unknown decay TrigEFBMuMuXFex::XMass");
+	}
+    std::array<const xAOD::TrackParticle*, 2> bTracks{particle1, particle2};
     return m_bphysHelperTool->invariantMass(bTracks, massHypo);
     
 }
 
 double TrigEFBMuMuXFex::X3Mass(const xAOD::TrackParticle* particle1, const xAOD::TrackParticle* particle2, const xAOD::TrackParticle* particle3 ) {
-    
-    std::vector<double> massHypo;
-    massHypo.clear();
-    massHypo.push_back(KPLUSMASS);
-    massHypo.push_back(KPLUSMASS);
-    massHypo.push_back(PIMASS);
-    std::vector<const xAOD::TrackParticle*> bTracks;
-    bTracks.clear();
-    bTracks.push_back(particle1);
-    bTracks.push_back(particle2);
-    bTracks.push_back(particle3);
+    static constexpr std::array<double, 3> massHypo{KPLUSMASS, KPLUSMASS, PIMASS};
+    const std::array<const xAOD::TrackParticle*, 3> bTracks{ particle1, particle2, particle3};
     return m_bphysHelperTool->invariantMass(bTracks, massHypo);
     
 }
 
 double TrigEFBMuMuXFex::XKPiPiMass(const xAOD::TrackParticle* particle1, const xAOD::TrackParticle* particle2, const xAOD::TrackParticle* particle3 ) {
     
-    std::vector<double> massHypo;
-    massHypo.clear();
-    massHypo.push_back(KPLUSMASS);
-    massHypo.push_back(PIMASS);
-    massHypo.push_back(PIMASS);
-    std::vector<const xAOD::TrackParticle*> bTracks;
-    bTracks.clear();
-    bTracks.push_back(particle1);
-    bTracks.push_back(particle2);
-    bTracks.push_back(particle3);
+    static constexpr std::array<double, 3> massHypo{KPLUSMASS, PIMASS, PIMASS};
+	const std::array<const xAOD::TrackParticle*, 3> bTracks{particle1,particle2,particle3};
     return m_bphysHelperTool->invariantMass(bTracks, massHypo);
     
 }
 
 double TrigEFBMuMuXFex::KMuMuMass( const xAOD::TrackParticle* mu1, const xAOD::TrackParticle* mu2, const xAOD::TrackParticle* kaon) {
-    std::vector<double> massHypo;
-    massHypo.clear();
-    massHypo.push_back(MUMASS);
-    massHypo.push_back(MUMASS);
-    massHypo.push_back(KPLUSMASS);  //K
-    std::vector<const xAOD::TrackParticle*> bTracks;
-    bTracks.clear();
-    bTracks.push_back(mu1);
-    bTracks.push_back(mu2);
-    bTracks.push_back(kaon);
+    static constexpr std::array<double, 3> massHypo{MUMASS, MUMASS, KPLUSMASS};  //K
+    const std::array<const xAOD::TrackParticle*, 3> bTracks{mu1, mu2, kaon};
     return m_bphysHelperTool->invariantMass(bTracks, massHypo);
 }
 
 double TrigEFBMuMuXFex::XMuMuMass(const xAOD::TrackParticle* mu1, const xAOD::TrackParticle* mu2, const xAOD::TrackParticle* particle1,
                                   const xAOD::TrackParticle* particle2, int decay){
-    std::vector<double> massHypo;
-    massHypo.clear();
-    massHypo.push_back(MUMASS);
-    massHypo.push_back(MUMASS);
+    std::array<double, 4> massHypo;
+    massHypo[0] = MUMASS;
+    massHypo[1] = MUMASS;
     if(decay == bD_to_Kstar){
-        massHypo.push_back(KPLUSMASS);
-        massHypo.push_back(PIMASS);
-    }
-    if(decay == bS_to_Phi){
-        massHypo.push_back(KPLUSMASS);
-        massHypo.push_back(KPLUSMASS);
+        massHypo[2] = KPLUSMASS;
+        massHypo[3] = PIMASS;
     }
-    if(decay == bC_to_PiPi){  
-        massHypo.push_back(PIMASS);
-        massHypo.push_back(PIMASS);    
+    else if(decay == bS_to_Phi){
+        massHypo[2] = KPLUSMASS;
+        massHypo[3] = KPLUSMASS;
     }
-    if(decay == lB_to_L){
-        massHypo.push_back(PROTONMASS);
-        massHypo.push_back(PIMASS);
+    else if(decay == bC_to_PiPi){  
+        massHypo[2] = PIMASS;
+        massHypo[3] = PIMASS;    
     }
-    std::vector<const xAOD::TrackParticle*> bTracks;
-    bTracks.clear();
-    bTracks.push_back(mu1);
-    bTracks.push_back(mu2);
-    bTracks.push_back(particle1);
-    bTracks.push_back(particle2);
+    else if(decay == lB_to_L){
+        massHypo[2] = PROTONMASS;
+        massHypo[3] = PIMASS;
+    }else{
+		throw std::runtime_error("unknown decay TrigEFBMuMuXFex::XMuMuMass");
+	}
+    const std::array<const xAOD::TrackParticle*, 4> bTracks{mu1,mu2,particle1,particle2};
     return m_bphysHelperTool->invariantMass(bTracks, massHypo);
 }
 
 double TrigEFBMuMuXFex::X3MuMuMass(const xAOD::TrackParticle* mu1, const xAOD::TrackParticle* mu2, const xAOD::TrackParticle* particle1,
                                    const xAOD::TrackParticle* particle2, const xAOD::TrackParticle* particle3 ) {
-    std::vector<double> massHypo;
-    massHypo.clear();
-    massHypo.push_back(MUMASS);
-    massHypo.push_back(MUMASS);
-    massHypo.push_back(KPLUSMASS);
-    massHypo.push_back(KPLUSMASS);
-    massHypo.push_back(PIMASS);
-    std::vector<const xAOD::TrackParticle*> bTracks;
-    bTracks.clear();
-    bTracks.push_back(mu1);
-    bTracks.push_back(mu2);
-    bTracks.push_back(particle1);
-    bTracks.push_back(particle2);
-    bTracks.push_back(particle3);
+    static constexpr std::array<double, 5> massHypo{MUMASS, MUMASS, KPLUSMASS, KPLUSMASS, PIMASS};
+    const std::array<const xAOD::TrackParticle*, 5> bTracks{mu1,mu2,particle1,particle2,particle3};
     return m_bphysHelperTool->invariantMass(bTracks, massHypo);
     
 }
 
 double TrigEFBMuMuXFex::XKPiPiMuMuMass(const xAOD::TrackParticle* mu1, const xAOD::TrackParticle* mu2, const xAOD::TrackParticle* particle1,
                                    const xAOD::TrackParticle* particle2, const xAOD::TrackParticle* particle3 ) {
-    std::vector<double> massHypo;
-    massHypo.clear();
-    massHypo.push_back(MUMASS);
-    massHypo.push_back(MUMASS);
-    massHypo.push_back(KPLUSMASS);
-    massHypo.push_back(PIMASS);
-    massHypo.push_back(PIMASS);
-    std::vector<const xAOD::TrackParticle*> bTracks;
-    bTracks.clear();
-    bTracks.push_back(mu1);
-    bTracks.push_back(mu2);
-    bTracks.push_back(particle1);
-    bTracks.push_back(particle2);
-    bTracks.push_back(particle3);
+    static constexpr std::array<double, 5> massHypo{MUMASS, MUMASS, KPLUSMASS, PIMASS, PIMASS};
+    const std::array<const xAOD::TrackParticle*, 5> bTracks{mu1,mu2,particle1,particle2,particle3};
     return m_bphysHelperTool->invariantMass(bTracks, massHypo);
     
 }
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXFex.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXFex.h
index 37fefad3c983b49926b00583d68c7567a911b55f..13a7e317b6aa86ae94484da287d92558a13a8e7c 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXFex.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXFex.h
@@ -202,9 +202,6 @@ class TrigEFBMuMuXFex: public HLT::ComboAlgo  {
     float m_bCD0VtxChi2Cut;
     int m_maxBcD0ToStore;
     
-    // FTK Flag
-    bool m_FTK;
-
     // Monitoring variables and containers
     //   General
     std::vector<int>   m_mon_Errors;
@@ -379,10 +376,6 @@ class TrigEFBMuMuXFex: public HLT::ComboAlgo  {
     // to set Accept-All mode: should be done with force-accept when possible
     bool m_acceptAll;
 
-
-    // TrigEFBphysContainer* m_trigBphysColl_b;
-    // TrigEFBphysContainer* m_trigBphysColl_X;
-
     xAOD::TrigBphysContainer * m_TrigBphysColl_b;
     xAOD::TrigBphysContainer * m_TrigBphysColl_X;
     
@@ -493,7 +486,6 @@ class TrigEFBMuMuXFex: public HLT::ComboAlgo  {
     unsigned int m_countPassedBcD0Lxy;
     int m_countBcD0ToStore;
     
-    void addUnique(std::vector<const Trk::Track*>&, const Trk::Track*);
     void addUnique(std::vector<const xAOD::TrackParticle*>&, const xAOD::TrackParticle*);
     void addUnique(std::vector<ElementLink<xAOD::TrackParticleContainer> >&, const ElementLink<xAOD::TrackParticleContainer>&);
 //   double invariantMass(const TrigMuonEF* , const TrigMuonEF* );
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXHypo.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXHypo.cxx
index 9bc75c8d0905cfe37ba4c414dd28459368e447a5..2799601e2a71ab49288561bdf06b5542e27a77c6 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXHypo.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXHypo.cxx
@@ -29,9 +29,9 @@
 
 // additions of xAOD objects
 #include "xAODEventInfo/EventInfo.h"
-
-//#include "TrigVKalFitter/TrigVKalFitter.h"
-//#include "TrigVKalFitter/VKalVrtAtlas.h"
+#include "xAODTrigBphys/TrigBphys.h"
+#include "xAODTrigBphys/TrigBphysContainer.h"
+#include "xAODTrigBphys/TrigBphysAuxContainer.h"
 
 class ISvcLocator;
 
@@ -216,7 +216,6 @@ HLT::ErrorCode TrigEFBMuMuXHypo::hltExecute(const HLT::TriggerElement* outputTE,
   
   
   // create vector for TrigEFBphys particles
-    //  const TrigEFBphysContainer* trigBphysColl = 0;
     const xAOD::TrigBphysContainer * xAODTrigBphysColl(0);
     
   // get vector of TrigEFBphys particles from outputTE
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXHypo.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXHypo.h
index d083329d9419ba779b9b6620ef58425191711af5..dbaf6e240db5a21a54caa257015bf67e88fe816f 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXHypo.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFBMuMuXHypo.h
@@ -26,14 +26,6 @@
 #include <string>
 // general athena stuff
 #include "TrigInterfaces/HypoAlgo.h"
-#include "TrigInDetEvent/TrigVertexCollection.h"
-
-#include "Constants.h"
-
-#include "xAODTrigBphys/TrigBphys.h"
-#include "xAODTrigBphys/TrigBphysContainer.h"
-#include "xAODTrigBphys/TrigBphysAuxContainer.h"
-
 
 class TrigEFBMuMuXHypo: public HLT::HypoAlgo  {
   
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuFex.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuFex.cxx
index 4cc889324b06e87bffc999a5db30467673dad2ac..9aaa4601d8cd83dae5ce3852d284b489f3799765 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuFex.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuFex.cxx
@@ -17,8 +17,7 @@
 
 #include "xAODTracking/TrackParticle.h"
 #include "xAODMuon/MuonContainer.h"
-#include "TrigTimeAlgs/TrigTimerSvc.h"
-
+#include "TrigTimeAlgs/TrigTimer.h"                  // for TrigTimer
 
 TrigEFMultiMuFex::TrigEFMultiMuFex(const std::string & name, ISvcLocator* pSvcLocator):
   HLT::ComboAlgo(name, pSvcLocator)
@@ -260,7 +259,7 @@ void TrigEFMultiMuFex::processTriMuon(HLT::TEConstVec& inputTE, xAOD::TrigBphysC
             // loop over the vector of muon containers
             msg() << MSG::DEBUG << "MuonContainer, Got MuonEF " << ic << " Feature, size = " << muelv.size() << endmsg;
             int i(0);
-            for ( const auto muel: muelv) {
+            for ( const auto& muel: muelv) {
                 msg() << MSG::DEBUG << "ELLink: " << i++
                     << " index: "  << muel.index()
                     << " sgkey: "  << muel.dataID()
@@ -290,7 +289,7 @@ void TrigEFMultiMuFex::processTriMuon(HLT::TEConstVec& inputTE, xAOD::TrigBphysC
     std::vector<const xAOD::Muon*> uniqueMuons;
     // add all the unique muons into a single container
     for ( const auto& muelv : vec_elv_muons) {
-        for ( const auto muel : muelv ) {
+        for ( const auto& muel : muelv ) {
             m_bphysHelperTool->addUnique( *muel, uniqueMuons, 0.005,0.005,10,xAOD::Muon::InnerDetectorTrackParticle);
         } // loop over muonEL in each roi
     } // loop over rois
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuFex.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuFex.h
index 220b51e18664a848890e4f03c52f4f76f713c6a0..c782afaccee0ce9c1eccec8059e590917b22cbdd 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuFex.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuFex.h
@@ -21,8 +21,6 @@
 
 // standard stuff
 #include <string>
-#include <map>
-#include <cmath> 
 
 #include "TrigInterfaces/ComboAlgo.h"
 #include "xAODMuon/Muon.h"
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuHypo.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuHypo.cxx
index 32866c609f2f62b6d28f4ad8e92df290d3c8ab59..39ec9f87ceee10d48b2b3695a2b55cccd45c1ab0 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuHypo.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuHypo.cxx
@@ -15,18 +15,13 @@
  **
  **************************************************************************/
 
-//#include "TrigMuonEvent/CombinedMuonFeature.h"
-
 #include "TrigEFMultiMuHypo.h"
 
-#include <math.h>
 #include "xAODTrigger/TrigPassBits.h"
 
 
 // additions of xAOD objects
 #include "xAODEventInfo/EventInfo.h"
-#include "xAODMuon/Muon.h"
-#include "xAODTracking/TrackParticle.h"
 
 #include "xAODTrigBphys/TrigBphys.h"
 #include "xAODTrigBphys/TrigBphysContainer.h"
@@ -141,12 +136,8 @@ HLT::ErrorCode TrigEFMultiMuHypo::hltExecute(const HLT::TriggerElement* outputTE
   ATH_MSG_DEBUG("AcceptAll is set to : " << (m_acceptAll ? "True, taking all events " : "False, applying selection" ));
 
   //  create vector for TrigEFBphys particles
-    //const TrigEFBphysContainer* trigBphysColl = 0;
     const xAOD::TrigBphysContainer* trigBphysColl = 0;
 
-//  const TrigEFBContainer* trigBphysColl = 0;
-//  const VxContainer* VertexColl;
-
   HLT::ErrorCode status = getFeature(outputTE, trigBphysColl, m_bphysCollectionKey );
 
   if ( status != HLT::OK ) {
@@ -176,7 +167,6 @@ HLT::ErrorCode TrigEFMultiMuHypo::hltExecute(const HLT::TriggerElement* outputTE
   std::unique_ptr<xAOD::TrigPassBits> xBits = xAOD::makeTrigPassBits<xAOD::TrigBphysContainer>(trigBphysColl);
 
   // now loop over Bphys particles to see if one passes cuts
-    //    for (TrigEFBphysContainer::const_iterator bphysIter = trigBphysColl->begin(); bphysIter !=  trigBphysColl->end(); ++bphysIter) {
     for (xAOD::TrigBphysContainer::const_iterator bphysIter = trigBphysColl->begin(); bphysIter !=  trigBphysColl->end(); ++bphysIter) {
         
         if ((*bphysIter)->particleType() == xAOD::TrigBphys::MULTIMU ) {
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuHypo.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuHypo.h
index 423b7cdc43640ac798cd531feb103b5baabdbff3..afa7bd675390b6a3d4a5bb6326527f21e3caf589 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuHypo.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFMultiMuHypo.h
@@ -24,8 +24,6 @@
 // general athena stuff
 #include "TrigInterfaces/HypoAlgo.h"
 
-#include "Constants.h"
-
 
 class TrigEFMultiMuHypo: public HLT::HypoAlgo  {
   
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassFex.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassFex.cxx
index b93443bbb91902d00bceb50ea11e12f4811938ce..10e6bd6c1351e6c89c3729fa0d2d7a5e89859da8 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassFex.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassFex.cxx
@@ -10,23 +10,19 @@
 // ********************************************************************
 
 #include "TrigEFTrkMassFex.h"
-#include "BtrigUtils.h"
 #include "TrigBphysHelperUtilsTool.h"
 
 #include "xAODTrigBphys/TrigBphysAuxContainer.h"
 // additions of xAOD objects
-#include "xAODEventInfo/EventInfo.h"
 #include "xAODMuon/MuonContainer.h"
 
-#include <algorithm>
 #include <math.h>
 
-#include "TrigTimeAlgs/TrigTimerSvc.h"
 #include "TrigSteeringEvent/TrigRoiDescriptor.h"
-
+#include "CLHEP/Units/SystemOfUnits.h"
 
 #include "CLHEP/GenericFunctions/CumulativeChiSquare.hh"
-
+#include "TrigTimeAlgs/TrigTimer.h"                  // for TrigTimer
 
 class ISvcLocator;
 
@@ -44,7 +40,6 @@ HLT::FexAlgo(name, pSvcLocator)
     // Read cuts
     declareProperty( "AcceptAll", m_acceptAll  = false );
     declareProperty( "OppositeCharge", m_oppositeCharge  = true );
-    declareProperty("m_matchL1", m_matchL1 = false);
     declareProperty("MuonPTthr", m_muonPtthr=4.);
     declareProperty("TrackPTthr", m_trackPtthr=1.4);
     declareProperty("dEtaTrackRoI", m_dEta_cut=0.1);
@@ -127,10 +122,6 @@ HLT::ErrorCode TrigEFTrkMassFex::hltInitialize()
         ATH_MSG_DEBUG("TrigBphysHelperUtilsTool found" );
     }
     
-    if (m_matchL1) {
-        ATH_MSG_DEBUG("matchL1 not yet re-implemented." );
-        return HLT::BAD_JOB_SETUP;
-    }
     
     ATH_MSG_INFO("AcceptAll            = "<< (m_acceptAll==true ? "True" : "False") );
     ATH_MSG_INFO("Apply opposite sign cut = " << (m_oppositeCharge==true ? "True" : "False") );
@@ -302,7 +293,7 @@ HLT::ErrorCode TrigEFTrkMassFex::hltExecute(const HLT::TriggerElement*  inputTE
     }
     if(msgLvl() <= MSG::DEBUG) { // print debug
         msg() << MSG::DEBUG << "Found MuonContainer, Got MuonEF size = " << elvmuon.size() << endmsg;
-        for ( const auto muel: elvmuon) {
+        for ( const auto& muel: elvmuon) {
             msg() << MSG::DEBUG << "ELLink: "
                 << " index: "  << muel.index()
                 << " sgkey: "  << muel.dataID()
@@ -311,7 +302,7 @@ HLT::ErrorCode TrigEFTrkMassFex::hltExecute(const HLT::TriggerElement*  inputTE
                 << " ptr: "    << (muel.isValid() ? *muel : nullptr)
                 << endmsg;
         }
-        for ( const auto muel: elvmuon) {
+        for ( const auto& muel: elvmuon) {
             if (!muel.isValid()) continue;
             msg() << MSG::DEBUG << "Muon:   "
                 << " pt: " <<  (*muel)->pt()
@@ -352,7 +343,7 @@ HLT::ErrorCode TrigEFTrkMassFex::hltExecute(const HLT::TriggerElement*  inputTE
 
     if(msgLvl() <= MSG::DEBUG) { // print debug
         msg() << MSG::DEBUG << "Found TrackParticleContainer, size: " << elvtps.size() << endmsg;
-        for ( const auto eltp: elvtps) {
+        for ( const auto& eltp: elvtps) {
             msg() << MSG::DEBUG << "ELLink: "
                 << " index: "  << eltp.index()
                 << " sgkey: "  << eltp.dataID()
@@ -393,7 +384,7 @@ HLT::ErrorCode TrigEFTrkMassFex::hltExecute(const HLT::TriggerElement*  inputTE
     //#FIXME - remember to implement the scenario of (tracks matched to roi + tracks)
     std::vector<ElementLink<xAOD::MuonContainer> > muons;
     std::vector<ElementLink<xAOD::TrackParticleContainer> > tracks;
-    for (auto muel: elvmuon) {
+    for (const auto& muel: elvmuon) {
         if (!muel.isValid()) continue;
         const xAOD::TrackParticle * mutrk = (*muel)->trackParticle(xAOD::Muon::InnerDetectorTrackParticle);
         if (!mutrk) continue;
@@ -436,7 +427,7 @@ HLT::ErrorCode TrigEFTrkMassFex::hltExecute(const HLT::TriggerElement*  inputTE
         
         muons.push_back(muel);
     } // optimize? addUnique?
-    for (auto trkel: elvtps)  {
+    for (const auto& trkel: elvtps)  {
         const xAOD::TrackParticle * trk = *trkel;
         if (!trk) continue;
         if (trk->definingParametersCovMatrixVec().size() == 0) {
@@ -528,7 +519,7 @@ void TrigEFTrkMassFex::buildMuTrkPairs(const TrigRoiDescriptor * roi,
         return;
     }
 
-    for (auto muel: muons) {
+    for (const auto& muel: muons) {
         if (!muel.isValid()) continue;
         const xAOD::Muon * muon = *muel;
         if (!muon) continue;
@@ -536,7 +527,7 @@ void TrigEFTrkMassFex::buildMuTrkPairs(const TrigRoiDescriptor * roi,
         const ElementLink<xAOD::TrackParticleContainer> & mutrkel = muon->trackParticleLink(xAOD::Muon::InnerDetectorTrackParticle);
         if (!mutrk) continue;
         
-        for (auto trkel: tracks) {
+        for (const auto& trkel: tracks) {
             if (!trkel.isValid()) continue;
             const xAOD::TrackParticle * trk = *trkel;
             if (!trk) continue;
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassFex.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassFex.h
index 4e74d78a8a0e1713ff29bad746a1d4cfd7c7847e..4deff4ef0b2181410f9f21ffa60711264e5a1ae1 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassFex.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassFex.h
@@ -58,7 +58,6 @@ class TrigEFTrkMassFex: public HLT::FexAlgo {
     // container inputs names
     std::string m_input_trackCollectionKey; //! list of tracks to search for second leg
 
-    float        m_matchL1;
     float        m_trackPtthr;
     float        m_muonPtthr;
     float        m_dEta_cut;
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassHypo.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassHypo.cxx
index 9e1cbed9a0bc64dea88c9fdd4ac816c5ec0bef08..b69f2ff3dc04b8fd6a24c42312d867f02a0dc793 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassHypo.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassHypo.cxx
@@ -23,8 +23,6 @@
 #include "TrigEFTrkMassHypo.h"
 
 
-#include <math.h>
-//#include "TrigSteeringEvent/TrigPassBits.h"
 #include "xAODTrigger/TrigPassBits.h"
 
 // additions of xAOD objects
@@ -118,7 +116,6 @@ HLT::ErrorCode TrigEFTrkMassHypo::hltExecute(const HLT::TriggerElement* outputTE
   // for now pass all events - JK changed to false 9/2/10
   pass=false;
 //  create vector for TrigEFBphys particles
-    //const TrigEFBphysContainer* trigBphysColl = 0;
     const xAOD::TrigBphysContainer * xAODTrigBphysColl(0);
     
   HLT::ErrorCode status = getFeature(outputTE, xAODTrigBphysColl, "EFTrackMass");
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassHypo.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassHypo.h
index e659b78e51922e8ed8849639cd512303c275508d..198ba8c12b83859af5b232ed21d34a142e3c6935 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassHypo.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigEFTrkMassHypo.h
@@ -7,7 +7,6 @@
 #define TRIGEFTRKMASSHYPO_H
 
 #include "TrigInterfaces/HypoAlgo.h"
-#include "Constants.h"
 
 class TriggerElement;
 
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuFex.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuFex.cxx
index 84c4d7aac4d65549b23e3b3946aa202cff217168..91e67cfed12d86ef3a00e439064a3b35edb1dbce 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuFex.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuFex.cxx
@@ -23,12 +23,12 @@
 
 #include "TrigInDetToolInterfaces/ITrigVertexingTool.h"
 #include "TrigInDetEvent/TrigL2Vertex.h"
-
+#include "TrigInDetEvent/TrigVertex.h"                    // for TrigVertex
+#include "xAODTrigBphys/TrigBphysAuxContainer.h"          // for TrigBphysAu...
+#include "xAODTrigBphys/TrigBphysContainer.h"             // for TrigBphysCo...
 #include "Constants.h"
-#include "BtrigUtils.h"
 
 // additions of xAOD objects
-#include "xAODEventInfo/EventInfo.h"
 #include "xAODTracking/TrackParticle.h"
 #include "xAODTracking/TrackParticleContainer.h"
 #include "xAODTrigMuon/L2StandAloneMuon.h"
@@ -132,20 +132,13 @@ m_massMuon(105.6583715)
     //  declareMonitoredStdContainer("InvMass_stand"          , m_mon_InvMass_stand           , AutoClear);
     //  declareMonitoredStdContainer("InvMass_stand_wideRange", m_mon_InvMass_stand_wideRange , AutoClear);
     
-    // Initialize the collections
-    //  m_trigBphysColl = NULL;
-    m_VertexColl    = NULL;
 }
 
 /*------------------------------*/
 TrigL2BMuMuFex::~TrigL2BMuMuFex()
 /*------------------------------*/
 {
-    // TODO: Delete the collections ?
-    //delete m_trigBphysColl;
-    //delete m_VertexColl;
 }
-
 /*-------------------------------------------*/
 HLT::ErrorCode TrigL2BMuMuFex::hltInitialize()
 /*-------------------------------------------*/
@@ -859,7 +852,7 @@ HLT::ErrorCode TrigL2BMuMuFex::acceptInputs(HLT::TEConstVec& inputTE, bool& pass
         } else {
             ATH_MSG_DEBUG("Comb muon container: " << muonContainerComb1.size() );
         }
-        for (auto el: muonContainerComb1) {
+        for (const auto& el: muonContainerComb1) {
             ATH_MSG_DEBUG("Comb muon container: " << el.dataID() << " " << el.index() );
         }
         if (HLT::OK != getFeaturesLinks<xAOD::L2CombinedMuonContainer,xAOD::L2CombinedMuonContainer>(inputTE[1],muonContainerComb2,m_combinedMuonKey)) {
@@ -867,7 +860,7 @@ HLT::ErrorCode TrigL2BMuMuFex::acceptInputs(HLT::TEConstVec& inputTE, bool& pass
         } else {
             ATH_MSG_DEBUG("Comb muon container: " << muonContainerComb2.size() );
         }
-        for (auto el: muonContainerComb2) {
+        for (const auto& el: muonContainerComb2) {
             ATH_MSG_DEBUG("Comb muon container: " << el.dataID() << " " << el.index() );
         }
         ElementLink<xAOD::IParticleContainer> ptl1EL = remap_container(muonXEL[0],muonContainerComb1);
@@ -996,11 +989,7 @@ HLT::ErrorCode TrigL2BMuMuFex::acceptInputs(HLT::TEConstVec& inputTE, bool& pass
             ATH_MSG_DEBUG("REGTEST: Chi2 vtx fit = " << p_mumuV->chi2() );
             ATH_MSG_DEBUG("SigmaX =  SigmaY =  SigmaZ = " << sqrt(p_mumuV->cov()[0]) << " " << sqrt(p_mumuV->cov()[2]) << " " << sqrt(p_mumuV->cov()[5]) );
             
-            m_VertexColl = new TrigVertexCollection();
-            m_VertexColl->push_back(p_mumuV);
-            
             // JK 28/4/08 changes for ElementLinks
-            ElementLink<TrigVertexCollection> BMuMuVertexEL(*m_VertexColl,0);
             // trigPartBmumu->pVertex(p_mumuV);
             // 14-05-08 trigPartBmumu->pVertex(BMuMuVertexEL);
             
@@ -1051,7 +1040,6 @@ HLT::ErrorCode TrigL2BMuMuFex::acceptInputs(HLT::TEConstVec& inputTE, bool& pass
     pass = true;
     if ( vtxpass ) {
         m_countPassedVtxFit++;
-        delete m_VertexColl;
     }
     if ( mumuIDpass ) m_countPassedmumuPairs++;
     m_countPassedRoIs++;
@@ -1059,7 +1047,6 @@ HLT::ErrorCode TrigL2BMuMuFex::acceptInputs(HLT::TEConstVec& inputTE, bool& pass
         m_countPassedEvents++;
         m_lastEventPassed = IdEvent;
     }
-    m_VertexColl = 0;
     
     if ( timerSvc() ) {
         m_BmmHypTot->stop();
@@ -1139,7 +1126,7 @@ ElementLink<xAOD::TrackParticleContainer> TrigL2BMuMuFex::remap_container(const
     if (!oldElink.isValid()) return oldElink;
     const auto tp  = *oldElink;
 
-    for (auto elink : newContainer) {
+    for (const auto& elink : newContainer) {
         if (!elink.isValid()) continue;
         const auto el  = *elink;
 
@@ -1176,7 +1163,7 @@ ElementLink<xAOD::IParticleContainer> TrigL2BMuMuFex::remap_container(const Elem
     if (!oldElink.isValid()) return iptlELold;
     const auto tp  = *oldElink;
     
-    for (auto elink : newContainer) {
+    for (const auto& elink : newContainer) {
         if (!elink.isValid()) continue;
         const auto el  = *elink;
         
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuFex.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuFex.h
index 82b5ec43b369dae8f550d1b2e2202609ed1beef9..d42c15955dffd4b7c97965d792255225cd337e88 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuFex.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuFex.h
@@ -17,8 +17,6 @@
 
 #include "TrigInterfaces/ComboAlgo.h"
 
-#include "TrigInDetEvent/TrigVertexCollection.h"
-#include "TrigInDetToolInterfaces/ITrigVertexFitter.h"
 #include "TrigInDetToolInterfaces/ITrigL2VertexFitter.h"
 
 //#include "TrigParticle/TrigL2BphysContainer.h"
@@ -29,10 +27,6 @@
 
 #include "TrigTimeAlgs/TrigTimerSvc.h"
 
-class TriggerElement;
-//class CombinedMuonFeature;
-
-class ITrigVertexFitter;
 class ITrigL2VertexFitter;
 class ITrigVertexingTool;
 
@@ -53,11 +47,6 @@ class TrigL2BMuMuFex: public HLT::ComboAlgo {
   private:
     ToolHandle <TrigBphysHelperUtilsTool> m_bphysHelperTool;
 
-    // Invariant mass helper calculators (TODO: move to InvMass.cxx tool-box)
-    //    double invariantMass(const CombinedMuonFeature* mu1, const CombinedMuonFeature* mu2);
-    //    double invariantMass(const CombinedMuonFeature* mu1, const MuonFeature* mu2);
-
-    //bool isUnique(const  TrigInDetTrack* id1, const  TrigInDetTrack* id2);
     bool isUnique(const  xAOD::TrackParticle* id1, const  xAOD::TrackParticle* id2) const;
     ElementLink<xAOD::TrackParticleContainer> remap_container(const ElementLink<xAOD::TrackParticleContainer> & oldElink,const ElementLinkVector<xAOD::TrackParticleContainer> &newContainer) const;
     //    ElementLink<xAOD::IParticleContainer> remap_container(const ElementLink<xAOD::IParticleContainer> & oldElink,const ElementLinkVector<xAOD::IParticleContainer> &newContainer) const;
@@ -105,8 +94,6 @@ class TrigL2BMuMuFex: public HLT::ComboAlgo {
     unsigned int m_countPassedVtxFit;
 
     // Output collections
-    //TrigL2BphysContainer* m_trigBphysColl;
-    TrigVertexCollection* m_VertexColl;
 
     std::vector<xAOD::TrigBphys*> m_resultHolder; /// Hold results between accept and execute
     
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuHypo.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuHypo.cxx
index d1c0281157e57ad6f6ec866f2dc19e43ca4a22d2..3e0924144c6d1f8b11454769783f95f3c5973444 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuHypo.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuHypo.cxx
@@ -20,9 +20,7 @@
 
 #include "TrigL2BMuMuHypo.h"
 
-#include <math.h>
 #include "xAODTrigger/TrigPassBits.h"
-#include "TrigNavigation/Navigation.h"
 
 #include "TrigBphysHelperUtilsTool.h"
 #include "xAODTrigBphys/TrigBphys.h"
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuHypo.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuHypo.h
index 4c5ba40fd230424c4f69cd9a2e8261511077fbc7..4f7d363085eaab034193e892e734e8e3e1e63907 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuHypo.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuHypo.h
@@ -24,13 +24,6 @@
 // general athena stuff
 #include "TrigInterfaces/HypoAlgo.h"
 
-//#include "TrigTimeAlgs/TrigTimerSvc.h"
-//#include "TrigInDetEvent/TrigVertexCollection.h"
-//#include "TrigParticle/TrigL2Bphys.h"
-//#include "TrigParticle/TrigL2BphysContainer.h"
-
-#include "Constants.h"
-
 class TrigBphysHelperUtilsTool;
 
 
@@ -72,9 +65,6 @@ class TrigL2BMuMuHypo: public HLT::HypoAlgo  {
   unsigned int m_countPassedBsMass;
   unsigned int m_countPassedChi2Cut;
 
-    //  TrigL2BphysContainer* m_trigBphysColl;
-    //  TrigVertexCollection* m_VertexColl;
-
   /* monitored variables */
   int m_mon_cutCounter;
   std::vector<float> m_mon_MuMumass;
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuXFex.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuXFex.cxx
index ad614f39898ab5397d7f854509d9e001726c2133..a08a88b5ce86746bd7af01be737f55e371f8b00e 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuXFex.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuXFex.cxx
@@ -34,7 +34,6 @@
 
 #include "TrigSteeringEvent/TrigRoiDescriptor.h"
 
-#include "TrigInDetEvent/TrigInDetTrackCollection.h"
 
 #include "TrigInDetToolInterfaces/ITrigL2VertexFitter.h" 
 #include "TrigInDetEvent/TrigL2Vertex.h"                         
@@ -42,7 +41,7 @@
 // additions of xAOD objects
 #include "xAODEventInfo/EventInfo.h"
 #include "TrigBphysHelperUtilsTool.h"
-
+#include "TrigInDetEvent/TrigVertex.h"
 
 #include <math.h>
 
@@ -401,7 +400,6 @@ TrigL2BMuMuXFex::TrigL2BMuMuXFex(const std::string & name, ISvcLocator* pSvcLoca
 ////////////////////////////// Declaration of output collections ///////////////////////////////////////////
   m_trigBphysColl_b = NULL;
   m_trigBphysColl_bxAOD = NULL;
-  m_VertexColl = NULL;
   // temporary
   m_trigBphysColl_kStarxAOD = NULL;
   m_trigBphysColl_phixAOD = NULL;
@@ -414,7 +412,6 @@ TrigL2BMuMuXFex::TrigL2BMuMuXFex(const std::string & name, ISvcLocator* pSvcLoca
 /*----------------------------------------*/
 TrigL2BMuMuXFex::~TrigL2BMuMuXFex()                                            
 { 
-  if(m_VertexColl!=NULL) delete m_VertexColl;
 //  if(m_trigBphysColl_kSplus) delete m_trigBphysColl_kSplus;
  
 }
@@ -541,14 +538,7 @@ HLT::ErrorCode TrigL2BMuMuXFex::hltInitialize()
   }
 ///////////////////////////// end of add timers ////////////////////////////////
   
-// /////////////////////////////// choose tracking algo ///////////////////////////
-//   std::string inDetAlgo = m_inDetAlgo;
-// 
-//   if(inDetAlgo=="IDSCAN")        m_inDetAlgoId = TrigInDetTrack::IDSCANID;
-//   else if(inDetAlgo=="SITRACK")  m_inDetAlgoId = TrigInDetTrack::SITRACKID;
-//   else                           m_inDetAlgoId = TrigInDetTrack::IDSCANID;
-// ///////////////////////////// end of choose tracking algo //////////////////////
-  
+ 
   return HLT::OK;
 
 } ///////// end of HLT - Errorcode - TrigL2BMuMuXFex - hltInitialize////////////
@@ -815,7 +805,7 @@ HLT::ErrorCode TrigL2BMuMuXFex::hltExecute(HLT::TEConstVec& inputTEs, HLT::Trigg
     
     if ( !pCombinedMuonFeature1->idTrack()) {
         ATH_MSG_DEBUG("Muon candidate1: no id track!");
-        auto idlink = pCombinedMuonFeature1->idTrackLink();
+        const auto& idlink = pCombinedMuonFeature1->idTrackLink();
         ATH_MSG_DEBUG("Muon elementlink has "<< idlink.dataID() << " " << idlink.index() << " " << idlink.isValid() );
         if(timerSvc()) {
             m_TotTimer->stop();
@@ -829,7 +819,7 @@ HLT::ErrorCode TrigL2BMuMuXFex::hltExecute(HLT::TEConstVec& inputTEs, HLT::Trigg
     
     if ( !pCombinedMuonFeature2->idTrack()) {
         ATH_MSG_DEBUG("Muon candidate2: no id track!");
-        auto idlink = pCombinedMuonFeature2->idTrackLink();
+        const auto& idlink = pCombinedMuonFeature2->idTrackLink();
         ATH_MSG_DEBUG("Muon elementlink has "<< idlink.dataID() << " " << idlink.index() << " " << idlink.isValid() );
         if(timerSvc()) {
             m_TotTimer->stop();
@@ -860,38 +850,7 @@ HLT::ErrorCode TrigL2BMuMuXFex::hltExecute(HLT::TEConstVec& inputTEs, HLT::Trigg
   /////////////////////////// loop over TE's////////////////////////////////////
   //////////////////////////////////////////////////////////////////////////////    
 
-    /*
-  std::vector<const TrigInDetTrackCollection*> vectorOfTrackCollections1;
-  std::vector<const TrigInDetTrackCollection*> vectorOfTrackCollections2;
-  //std::vector<const TrackCollection*> vectorOfTrackCollections1;
-  //std::vector<const TrackCollection*> vectorOfTrackCollections2;
-
-  std::vector<const HLT::TriggerElement*>::const_iterator iTE = inputTEs.begin();
-  ////////////////////////////// other particle candidates //////////////////////////////  
-  status = getFeatures(*iTE, vectorOfTrackCollections1);
-  //status = getFeatures(*iTE, vectorOfTrackCollections1,"TrigFastTrackFinder_TrigInDetTrack_Muon");
-  //status = getFeatures(*iTE, vectorOfTrackCollections1);
-    if (status!=HLT::OK) { ATH_MSG_ERROR("XX1: ");return HLT::NAV_ERROR;}
-    std::vector<const TrigInDetTrackCollection*> vectorOfTrackCollections1a;
-    std::vector<const TrackCollection*> vectorOfTrackCollections1b;
-    std::vector<const TrackCollection*> vectorOfTrackCollections1c;
-    status = getFeatures(*iTE, vectorOfTrackCollections1a,"TrigFastTrackFinder_TrigInDetTrack_Muon");
-    if (status!=HLT::OK) { ATH_MSG_ERROR("XX1a: ");return HLT::NAV_ERROR;}
-    status = getFeatures(*iTE, vectorOfTrackCollections1b);
-    if (status!=HLT::OK) { ATH_MSG_ERROR("XX1b: ");return HLT::NAV_ERROR;}
-    status = getFeatures(*iTE, vectorOfTrackCollections1c,"TrigFastTrackFinder_Muon");
-    if (status!=HLT::OK) { ATH_MSG_ERROR("XX1c: ");return HLT::NAV_ERROR;}
-    ATH_MSG_INFO(" found: "
-    << vectorOfTrackCollections1.size() << " "
-    << vectorOfTrackCollections1a.size() << " "
-    << vectorOfTrackCollections1b.size() << " "
-    << vectorOfTrackCollections1c.size() << " ");
-    
-    for (auto x: vectorOfTrackCollections1 ) { if (!x) continue; ATH_MSG_INFO(" 1 : " << x->size());}
-    for (auto x: vectorOfTrackCollections1a) { if (!x) continue; ATH_MSG_INFO(" 1a: " << x->size());}
-    for (auto x: vectorOfTrackCollections1b) { if (!x) continue; ATH_MSG_INFO(" 1b: " << x->size());}
-    for (auto x: vectorOfTrackCollections1c) { if (!x) continue; ATH_MSG_INFO(" 1c: " << x->size());}
-    */
+
     std::vector<const xAOD::TrackParticleContainer*> vectorOfTrackCollections1;
     std::vector<const xAOD::TrackParticleContainer*> vectorOfTrackCollections2;
     std::vector<const HLT::TriggerElement*>::const_iterator iTE = inputTEs.begin();
@@ -913,7 +872,6 @@ HLT::ErrorCode TrigL2BMuMuXFex::hltExecute(HLT::TEConstVec& inputTEs, HLT::Trigg
     }
     m_mon_Acceptance.push_back( ACCEPT_First_TrackColl );
     ++iTE; // next trigger element, no more or less than two, checked by acceptInputs!!
-    //status = getFeatures(*iTE, vectorOfTrackCollections2,"TrigFastTrackFinder_TrigInDetTrack_Muon");
     status = getFeatures(*iTE, vectorOfTrackCollections2);
     //status = getFeatures(*iTE, vectorOfTrackCollections2);
     //status = getFeatures( *iTE, vectorOfTrackCollections);
@@ -1075,24 +1033,15 @@ HLT::ErrorCode TrigL2BMuMuXFex::hltExecute(HLT::TEConstVec& inputTEs, HLT::Trigg
   ////////////////////////// end of muons part ///////////////////////////////
 
   //////////////////// merge of vectorOfTrackCollections /////////////////////
-//    std::vector<const TrigInDetTrackCollection*> vectorOfTrackCollections= merge_no_dupl(vectorOfTrackCollections1, vectorOfTrackCollections2);
     std::vector<const xAOD::TrackParticleContainer*> vectorOfTrackCollections= merge_no_dupl(vectorOfTrackCollections1, vectorOfTrackCollections2);
     ///////////////////////////////////////////////////////////////////////////////
     ////////////////////////// output trigger element /////////////////////////////  
     //  create vector for TrigL2Bphys particles
-    //    m_trigBphysColl_b = new TrigL2BphysContainer();
-    //    m_VertexColl = new TrigVertexCollection();
-    //    //temporary
-    //    m_trigBphysColl_kStar = new TrigL2BphysContainer();
-    //    m_trigBphysColl_phi = new TrigL2BphysContainer();
-    //    m_trigBphysColl_lambda = new TrigL2BphysContainer();
-    //    m_trigBphysColl_ds = new TrigL2BphysContainer();
-    //    //m_trigBphysColl_kSplus = new TrigL2BphysContainer();
+
     
     m_trigBphysColl_bxAOD = new xAOD::TrigBphysContainer();
     xAOD::TrigBphysAuxContainer trigBphysAuxColl_bxAOD;
     m_trigBphysColl_bxAOD->setStore(&trigBphysAuxColl_bxAOD);
-    m_VertexColl          = new TrigVertexCollection();
     //temporary
     m_trigBphysColl_kStarxAOD  = new xAOD::TrigBphysContainer();
     xAOD::TrigBphysAuxContainer trigBphysAuxColl_kStarxAOD;
@@ -1214,7 +1163,6 @@ HLT::ErrorCode TrigL2BMuMuXFex::hltExecute(HLT::TEConstVec& inputTEs, HLT::Trigg
           nTriedCombinations++;
         } //end of B->KMuMu decay
 
-        if(iTrack2 != lastiTrack2) {
           // Protection
           if(nTriedCombinations > m_maxNcombinations) {
             ATH_MSG_DEBUG("Too many track combinations: ");
@@ -1299,7 +1247,6 @@ HLT::ErrorCode TrigL2BMuMuXFex::hltExecute(HLT::TEConstVec& inputTEs, HLT::Trigg
                                  << *iTrack3 << " = " << (*iTrack3)->charge());
             }
           } // end of loop over iTrack3 (internal)                      
-        }
       }   // end of loop over iTrack2 (external)             
     } //////////////// end of loop over InDetTrackCollections //////////////////    
  
@@ -1349,8 +1296,6 @@ HLT::ErrorCode TrigL2BMuMuXFex::hltExecute(HLT::TEConstVec& inputTEs, HLT::Trigg
     delete m_trigBphysColl_dsxAOD;
   }
   m_trigBphysColl_bxAOD=NULL;
-  delete m_VertexColl;
-  m_VertexColl=NULL;
   // try add other collections to delete them!!
 //   delete m_trigBphysColl_lambda;
   m_trigBphysColl_lambdaxAOD = NULL;
@@ -1385,20 +1330,15 @@ void TrigL2BMuMuXFex::checkBMuMuK(const xAOD::L2CombinedMuon* mu1, const xAOD::L
         trigPartBmumuKplus->initialise(0., 0., 0., xAOD::TrigBphys::BKMUMU, kMuMumass,xAOD::TrigBphys::L2);
         ATH_MSG_DEBUG(" Create B+ Bphys particle with roIId - more RoIs => 0" << trigPartBmumuKplus->roiId() << " mass " << kMuMumass
             << " phi, eta - more RoIs => 0" << trigPartBmumuKplus->phi() << " " << trigPartBmumuKplus->eta() << " vertex type " << trigPartBmumuKplus->particleType());
-        ElementLinkVector<xAOD::TrackParticleContainer> trackVectorBmumuKplus;
-        ElementLink<xAOD::TrackParticleContainer> track1EL = mu1->idTrackLink();
-        ElementLink<xAOD::TrackParticleContainer> track2EL = mu2->idTrackLink();
+        const ElementLink<xAOD::TrackParticleContainer>& track1EL = mu1->idTrackLink();
+        const ElementLink<xAOD::TrackParticleContainer>& track2EL = mu2->idTrackLink();
         ElementLink<xAOD::TrackParticleContainer> track3EL(*trkCollection, iTrk3);
 
         ATH_MSG_VERBOSE("Just check track links... ");
         ATH_MSG_VERBOSE("Muon 1 pT " << (*track1EL)->pt() << " eta: " << (*track1EL)->eta() << " phi: " << (*track1EL)->phi());
         ATH_MSG_VERBOSE("Muon 2 pT " << (*track2EL)->pt() << " eta: " << (*track2EL)->eta() << " phi: " << (*track2EL)->phi());
         ATH_MSG_VERBOSE("Track 1 pT " << (*track3EL)->pt() << " eta: " << (*track3EL)->eta() << " phi: " << (*track3EL)->phi());
-        
-        trackVectorBmumuKplus.push_back(track1EL); // temp
-        trackVectorBmumuKplus.push_back(track2EL); // temp
-        trackVectorBmumuKplus.push_back(track3EL); // temp
-        
+
         trigPartBmumuKplus->addTrackParticleLink(track1EL);
         trigPartBmumuKplus->addTrackParticleLink(track2EL);
         trigPartBmumuKplus->addTrackParticleLink(track3EL);
@@ -1514,7 +1454,6 @@ void TrigL2BMuMuXFex::checkBMuMuK(const xAOD::L2CombinedMuon* mu1, const xAOD::L
                         <<", ndof = " <<baplusVtx->ndof());
                         
                         // perferct -> Bphys particle was stored in Collection
-                        m_VertexColl->push_back(mother_BplusVtx);
                         m_trigBphysColl_bxAOD->push_back(trigPartBmumuKplus);
                         ATH_MSG_DEBUG(" Added B vertex to vertex collection");
                         
@@ -1532,7 +1471,6 @@ void TrigL2BMuMuXFex::checkBMuMuK(const xAOD::L2CombinedMuon* mu1, const xAOD::L
                     }else{
                         ATH_MSG_DEBUG(" B rejected by mass or chi2 cuts after vertex fit!" << ", chi2= " << baplusVtx->chi2());  
                     
-                    vertex = false;
                     delete mother_BplusVtx;
                     delete trigPartBmumuKplus;
                     }
@@ -1594,18 +1532,14 @@ void TrigL2BMuMuXFex::checkBdMuMuKstar(const xAOD::L2CombinedMuon* mu1, const xA
         << " phi, eta - more RoIs => " << trigPartBmumuKstar->phi() << " " << trigPartBmumuKstar->eta() << " vertex type " << trigPartBmumuKstar->particleType());
         
         // Store links to the tracks forming bphys particle
-        ElementLinkVector<xAOD::TrackParticleContainer> trackVectorBmumuKstar;
+
         ElementLink<xAOD::TrackParticleContainer> track3EL(*trkCollection, iTrk3);
         ElementLink<xAOD::TrackParticleContainer> track4EL(*trkCollection, iTrk4);
-        //         ElementLink<TrigInDetTrackCollection> track3EL(*(*iTrackCollection), itrk);
-        //         ElementLink<TrigInDetTrackCollection> track4EL(*(*iTrackCollection), jtrk);
         
         ATH_MSG_VERBOSE("Just check track links... ");
         ATH_MSG_VERBOSE("Track 1 pT " << (*track3EL)->pt() << " eta: " << (*track3EL)->eta() << " phi: " << (*track3EL)->phi());
         ATH_MSG_VERBOSE("Track 2 pT " << (*track4EL)->pt() << " eta: " << (*track4EL)->eta() << " phi: " << (*track4EL)->phi());
-        trackVectorBmumuKstar.push_back(track3EL); // temp
-        trackVectorBmumuKstar.push_back(track4EL); // temp
-        
+
         trigPartBmumuKstar->addTrackParticleLink(track3EL);
         trigPartBmumuKstar->addTrackParticleLink(track4EL);
         // end of initial addon
@@ -1702,11 +1636,6 @@ void TrigL2BMuMuXFex::checkBdMuMuKstar(const xAOD::L2CombinedMuon* mu1, const xA
                         << ", chi2= " << kaStarVtx->chi2() <<", ndof = " <<kaStarVtx->ndof());
                         goodKstar = true;
                         
-                        // GREAT -> store daughter particle info
-                        m_VertexColl->push_back(mother_KstarVtx);
-                        ATH_MSG_DEBUG(" Added Kstar vertex to vertex collection");
-                        int index = m_VertexColl->size()-1;
-                        ElementLink<TrigVertexCollection> KstarVertexEL(*m_VertexColl,index);
                         
                         // monitoring
                         m_mon_BdMuMuKs_VtxMassBd_Ks.push_back((kaStarVtx->mass())*0.001);
@@ -1726,12 +1655,9 @@ void TrigL2BMuMuXFex::checkBdMuMuKstar(const xAOD::L2CombinedMuon* mu1, const xA
                         ATH_MSG_DEBUG(" B0 rejected by mass or chi2 cuts after vertex fit!" << ", chi2= " << kaStarVtx->chi2());
                         if(timerSvc()) m_VtxFitTimer->pause();
                         //continue; // for performance test not continue
-                        vertex = false;
                         delete mother_KstarVtx;
                     }
                 } // end of successful fit condition "mother"
-                //int index = m_VertexColl->size()-1;
-                //ElementLink<TrigVertexCollection> BplusVertexEL(*m_VertexColl,index);
                 delete kaStarVtx;
             } // end of successful fit condition initial vertex
             if(timerSvc()) m_VtxFitTimer->pause();
@@ -1837,7 +1763,6 @@ void TrigL2BMuMuXFex::checkBdMuMuKstar(const xAOD::L2CombinedMuon* mu1, const xA
                             << ", chi2= " << baDVtx->chi2() <<", ndof = " <<baDVtx->ndof());
                             
                             // PERFECT -> Bphys particle was stored in collection
-                            m_VertexColl->push_back(mother_BdVtx);
                             m_trigBphysColl_bxAOD->push_back(trigPartBmumuBd);
                             ATH_MSG_DEBUG(" Added Bd vertex to vertex collection");
                             
@@ -1865,8 +1790,6 @@ void TrigL2BMuMuXFex::checkBdMuMuKstar(const xAOD::L2CombinedMuon* mu1, const xA
                         }
                     } // end of successful fit condition "mother"
                     if (vertex){
-                        int index = m_VertexColl->size()-1;
-                        ElementLink<TrigVertexCollection> BdVertexEL(*m_VertexColl,index);
                     } else {
                         delete mother_BdVtx;
                     }
@@ -1881,9 +1804,9 @@ void TrigL2BMuMuXFex::checkBdMuMuKstar(const xAOD::L2CombinedMuon* mu1, const xA
             if ((xMuMuMass > m_lowerBd_KstarMuMuMassCutVtxOff && xMuMuMass < m_upperBd_KstarMuMuMassCutVtxOff)) {
                 
                 // Store links to the tracks forming bphys particle
-                ElementLinkVector<xAOD::TrackParticleContainer> trackVectorBmumuBd;
-                ElementLink<xAOD::TrackParticleContainer> track1ELBd = mu1->idTrackLink();
-                ElementLink<xAOD::TrackParticleContainer> track2ELBd = mu2->idTrackLink();
+
+                const ElementLink<xAOD::TrackParticleContainer>& track1ELBd = mu1->idTrackLink();
+                const ElementLink<xAOD::TrackParticleContainer>& track2ELBd = mu2->idTrackLink();
                 ElementLink<xAOD::TrackParticleContainer> track3ELBd(*trkCollection, iTrk3);
                 ElementLink<xAOD::TrackParticleContainer> track4ELBd(*trkCollection, iTrk4);
                 
@@ -1893,15 +1816,8 @@ void TrigL2BMuMuXFex::checkBdMuMuKstar(const xAOD::L2CombinedMuon* mu1, const xA
                 ATH_MSG_VERBOSE("Track 1 pT " << (*track3ELBd)->pt() << " eta: " << (*track3ELBd)->eta() << " phi: " << (*track3ELBd)->phi());
                 ATH_MSG_VERBOSE("Track 2 pT " << (*track4ELBd)->pt() << " eta: " << (*track4ELBd)->eta() << " phi: " << (*track4ELBd)->phi());
 
-                trackVectorBmumuBd.push_back(track1ELBd); // temp
-                trackVectorBmumuBd.push_back(track2ELBd); // temp
-                trackVectorBmumuBd.push_back(track3ELBd); // temp
-                trackVectorBmumuBd.push_back(track4ELBd); // temp
-                
-                
-                //                 if(m_doKstar_KaonPionVertexFit){
                 ElementLink<xAOD::TrigBphysContainer> trigPartBdEL(*m_trigBphysColl_kStarxAOD,KstarIndex);
-                //TrigL2Bphys* trigPartBmumuBd = new TrigL2Bphys(0.0, 0.0, 0.0, TrigL2Bphys::BDKSTMUMU, xMuMuMass, trigPartBdEL);
+
                 xAOD::TrigBphys * trigPartBmumuBd = new xAOD::TrigBphys();
                 trigPartBmumuBd->makePrivateStore();
                 trigPartBmumuBd->initialise(0.0, 0.0, 0.0, xAOD::TrigBphys::BDKSTMUMU, xMuMuMass,trigPartBdEL, xAOD::TrigBphys::L2);
@@ -1911,15 +1827,7 @@ void TrigL2BMuMuXFex::checkBdMuMuKstar(const xAOD::L2CombinedMuon* mu1, const xA
                 trigPartBmumuBd->addTrackParticleLink(track3ELBd);
                 trigPartBmumuBd->addTrackParticleLink(track4ELBd);
                 m_trigBphysColl_bxAOD->push_back(trigPartBmumuBd);
-                //                 }else{
-                //                     ElementLink<TrigL2BphysContainer> trigPartBdEL(*m_trigBphysColl_kStar,KstarIndex);
-                //                     TrigL2Bphys* trigPartBmumuBd = new TrigL2Bphys(0., 0., 0., TrigL2Bphys::BDKSTMUMU, xMuMuMass, trigPartBdEL);
-                //                     trigPartBmumuBd->addTrack(track1ELBd);
-                //                     trigPartBmumuBd->addTrack(track2ELBd);
-                //                     trigPartBmumuBd->addTrack(track3ELBd);
-                //                     trigPartBmumuBd->addTrack(track4ELBd);
-                //                     m_trigBphysColl_b->push_back(trigPartBmumuBd);
-                //                 }
+
                 
                 ATH_MSG_DEBUG(" Kstar's Pion and Kaon Candidates accepted with K* mass: " << xMass << "MeV" << " and with Bd mass : " << xMuMuMass << "MeV"
                     << " kaon particle with pt: "<< trk3->pt() << " pion charged particle with pt: "<< trk4->pt());
@@ -1967,7 +1875,7 @@ void TrigL2BMuMuXFex::checkBsMuMuPhi(const xAOD::L2CombinedMuon* mu1, const xAOD
         << " phi, eta - more RoIs => " << trigPartBmumuPhi->phi() << " " << trigPartBmumuPhi->eta() << " vertex type " << trigPartBmumuPhi->particleType());
 
         // Store links to the tracks forming bphys particle
-        ElementLinkVector<xAOD::TrackParticleContainer> trackVectorBmumuPhi;
+
         ElementLink<xAOD::TrackParticleContainer> track3EL(*trkCollection, iTrk3);
         ElementLink<xAOD::TrackParticleContainer> track4EL(*trkCollection, iTrk4);
         
@@ -1975,9 +1883,6 @@ void TrigL2BMuMuXFex::checkBsMuMuPhi(const xAOD::L2CombinedMuon* mu1, const xAOD
         ATH_MSG_VERBOSE("Track 1 pT " << (*track3EL)->pt() << " eta: " << (*track3EL)->eta() << " phi: " << (*track3EL)->phi());
         ATH_MSG_VERBOSE("Track 2 pT " << (*track4EL)->pt() << " eta: " << (*track4EL)->eta() << " phi: " << (*track4EL)->phi());
 
-        trackVectorBmumuPhi.push_back(track3EL); // temp
-        trackVectorBmumuPhi.push_back(track4EL); // temp
-        
         trigPartBmumuPhi->addTrackParticleLink(track3EL);
         trigPartBmumuPhi->addTrackParticleLink(track4EL);
         // end of initial addon
@@ -2090,10 +1995,7 @@ void TrigL2BMuMuXFex::checkBsMuMuPhi(const xAOD::L2CombinedMuon* mu1, const xAOD
                         
                         goodPhi = true;
                         // GREAT -> store daughter particle info
-                        m_VertexColl->push_back(mother_PhiVtx);
                         ATH_MSG_DEBUG(" Added Phi vertex to vertex collection");
-                        int index = m_VertexColl->size()-1;
-                        ElementLink<TrigVertexCollection> PhiVertexEL(*m_VertexColl,index);
                         
                         // monitoring
                         m_mon_BsMuMuPhi_VtxMassBs_Phi.push_back((phia1020Vtx->mass())*0.001);
@@ -2119,12 +2021,9 @@ void TrigL2BMuMuXFex::checkBsMuMuPhi(const xAOD::L2CombinedMuon* mu1, const xAOD
                         ATH_MSG_DEBUG(" Phi rejected by mass or chi2 cuts after vertex fit!" << ", chi2= " << phia1020Vtx->chi2());
                         if(timerSvc()) m_VtxFitTimer->pause();
                         //continue; // for performance test not continue
-                        vertex = false;
                         delete mother_PhiVtx;
                     }
                 } // end of successful fit condition "mother"
-                //int index = m_VertexColl->size()-1;
-                //ElementLink<TrigVertexCollection> BplusVertexEL(*m_VertexColl,index);
                 delete phia1020Vtx;
             } // end of successful fit condition initial vertex
             if(timerSvc()) m_VtxFitTimer->pause();
@@ -2233,7 +2132,6 @@ void TrigL2BMuMuXFex::checkBsMuMuPhi(const xAOD::L2CombinedMuon* mu1, const xAOD
                                 << ", chi2= " << baSVtx->chi2()
                                 <<", ndof = " <<baSVtx->ndof());
                             // PERFECT -> Bphys particle was stored in collection
-                            m_VertexColl->push_back(mother_BsVtx);
                             m_trigBphysColl_bxAOD->push_back(trigPartBmumuBs);
                             ATH_MSG_DEBUG(" Added Bs vertex to vertex collection");
                             // monitoring of successfuly stored particles
@@ -2266,8 +2164,6 @@ void TrigL2BMuMuXFex::checkBsMuMuPhi(const xAOD::L2CombinedMuon* mu1, const xAOD
                         }
                     } // end of successful fit condition "mother"
                     if(vertex) {
-                        int index = m_VertexColl->size()-1;
-                        ElementLink<TrigVertexCollection> BsVertexEL(*m_VertexColl,index);
                     } else {
                         delete mother_BsVtx;
                     }
@@ -2282,9 +2178,8 @@ void TrigL2BMuMuXFex::checkBsMuMuPhi(const xAOD::L2CombinedMuon* mu1, const xAOD
             if ((xMuMuMass > m_lowerBs_Phi1020MuMuMassCutVtxOff && xMuMuMass < m_upperBs_Phi1020MuMuMassCutVtxOff)) {
                 
                 // Store links to the tracks forming bphys particle
-                ElementLinkVector<xAOD::TrackParticleContainer> trackVectorBmumuBs;
-                ElementLink<xAOD::TrackParticleContainer> track1ELBs = mu1->idTrackLink();
-                ElementLink<xAOD::TrackParticleContainer> track2ELBs = mu2->idTrackLink();
+                const ElementLink<xAOD::TrackParticleContainer>& track1ELBs = mu1->idTrackLink();
+                const ElementLink<xAOD::TrackParticleContainer>& track2ELBs = mu2->idTrackLink();
                 ElementLink<xAOD::TrackParticleContainer> track3ELBs(*trkCollection, iTrk3);
                 ElementLink<xAOD::TrackParticleContainer> track4ELBs(*trkCollection, iTrk4);
                 
@@ -2294,15 +2189,8 @@ void TrigL2BMuMuXFex::checkBsMuMuPhi(const xAOD::L2CombinedMuon* mu1, const xAOD
                 ATH_MSG_VERBOSE("Track 1 pT " << (*track3ELBs)->pt() << " eta: " << (*track3ELBs)->eta() << " phi: " << (*track3ELBs)->phi());
                 ATH_MSG_VERBOSE("Track 2 pT " << (*track4ELBs)->pt() << " eta: " << (*track4ELBs)->eta() << " phi: " << (*track4ELBs)->phi());
 
-                trackVectorBmumuBs.push_back(track1ELBs); // temp
-                trackVectorBmumuBs.push_back(track2ELBs); // temp
-                trackVectorBmumuBs.push_back(track3ELBs); // temp
-                trackVectorBmumuBs.push_back(track4ELBs); // temp
-                
-                
-                //         if(m_doPhi1020_KaonKaonVertexFit){
-                //                ElementLink<TrigL2BphysContainer> trigPartBsEL(*m_trigBphysColl_phi,PhiIndex);
-                //TrigL2Bphys* trigPartBmumuBs = new TrigL2Bphys(0.0, 0.0, 0.0, TrigL2Bphys::BSPHIMUMU, xMuMuMass, trigPartBsEL);
+
+
                 ElementLink<xAOD::TrigBphysContainer> trigPartBsEL(*m_trigBphysColl_phixAOD,PhiIndex);
                 xAOD::TrigBphys *trigPartBmumuBs = new xAOD::TrigBphys();
                 trigPartBmumuBs->makePrivateStore();
@@ -2313,18 +2201,7 @@ void TrigL2BMuMuXFex::checkBsMuMuPhi(const xAOD::L2CombinedMuon* mu1, const xAOD
                 trigPartBmumuBs->addTrackParticleLink(track3ELBs); 
                 trigPartBmumuBs->addTrackParticleLink(track4ELBs); 
                 m_trigBphysColl_bxAOD->push_back(trigPartBmumuBs);
-                //         }else{
-                // //           m_trigBphysColl_phi->push_back(trigPartBmumuPhi);
-                // //           int PhiIndex = m_trigBphysColl_phi->size() - 1;
-                // //           ElementLink<TrigL2BphysContainer> trigPartBsEL(*m_trigBphysColl_phi,PhiIndex);
-                //           
-                //           TrigL2Bphys* trigPartBmumuBs = new TrigL2Bphys(0., 0., 0., TrigL2Bphys::BSPHIMUMU, xMuMuMass/*, trigPartBsEL*/);
-                //           trigPartBmumuBs->addTrackParticleLink(track1ELBs); 
-                //             trigPartBmumuBs->addTrackParticleLink(track2ELBs); 
-                //             trigPartBmumuBs->addTrackParticleLink(track3ELBs); 
-                //             trigPartBmumuBs->addTrackParticleLink(track4ELBs); 
-                //           m_trigBphysColl_b->push_back(trigPartBmumuBs);
-                //         }
+
                 m_mon_BsMuMuPhi_n++;
                 if(trk3->pt() * trk3->charge() > 0) {
                     ATH_MSG_DEBUG(" Phi's Kplus and Kminus Candidates accepted with Phi mass: " << xMass << "MeV"  
@@ -2387,7 +2264,7 @@ void TrigL2BMuMuXFex::checkLbMuMuLambda(const xAOD::L2CombinedMuon* mu1, const x
             << " phi, eta - more RoIs => " << trigPartBmumuL->phi() << " " << trigPartBmumuL->eta() << " vertex type " << trigPartBmumuL->particleType());
         
         // Store links to the tracks forming bphys particle
-        ElementLinkVector<xAOD::TrackParticleContainer> trackVectorBmumuL;
+
         ElementLink<xAOD::TrackParticleContainer> track3EL(*trkCollection, iTrk3);
         ElementLink<xAOD::TrackParticleContainer> track4EL(*trkCollection, iTrk4);
         
@@ -2395,9 +2272,6 @@ void TrigL2BMuMuXFex::checkLbMuMuLambda(const xAOD::L2CombinedMuon* mu1, const x
         ATH_MSG_VERBOSE("Track 1 pT " << (*track3EL)->pt() << " eta: " << (*track3EL)->eta() << " phi: " << (*track3EL)->phi());
         ATH_MSG_VERBOSE("Track 2 pT " << (*track4EL)->pt() << " eta: " << (*track4EL)->eta() << " phi: " << (*track4EL)->phi());
         
-        trackVectorBmumuL.push_back(track3EL); // temp
-        trackVectorBmumuL.push_back(track4EL); // temp
-        
         trigPartBmumuL->addTrackParticleLink(track3EL);
         trigPartBmumuL->addTrackParticleLink(track4EL);
         // end of initial addon
@@ -2496,10 +2370,6 @@ void TrigL2BMuMuXFex::checkLbMuMuLambda(const xAOD::L2CombinedMuon* mu1, const x
                             <<", ndof = " <<lambdaaVtx->ndof());
                         goodL = true;
                         // GREAT -> store daughter particle info
-                        m_VertexColl->push_back(mother_LVtx);
-                        ATH_MSG_DEBUG(" Added L vertex to vertex collection");
-                        int index = m_VertexColl->size()-1;
-                        ElementLink<TrigVertexCollection> LVertexEL(*m_VertexColl,index);
                         
                         // monitoring
                         m_mon_LbMuMuL_VtxMassLb_L.push_back((lambdaaVtx->mass())*0.001);
@@ -2523,8 +2393,6 @@ void TrigL2BMuMuXFex::checkLbMuMuLambda(const xAOD::L2CombinedMuon* mu1, const x
                         delete mother_LVtx;
                     }
                 } // end of successful fit condition "mother"
-                //int index = m_VertexColl->size()-1;
-                //ElementLink<TrigVertexCollection> BplusVertexEL(*m_VertexColl,index);
                 delete lambdaaVtx;
             } // end of successful fit condition initial vertex
             if(timerSvc()) m_VtxFitTimer->pause();
@@ -2635,7 +2503,6 @@ void TrigL2BMuMuXFex::checkLbMuMuLambda(const xAOD::L2CombinedMuon* mu1, const x
                                 <<", ndof = " <<laBVtx->ndof());
                             
                             // PERFECT -> Bphys particle was stored in collection
-                            m_VertexColl->push_back(mother_LbVtx);
                             m_trigBphysColl_bxAOD->push_back(trigPartBmumuLb);
                             ATH_MSG_DEBUG(" Added Lb vertex to vertex collection");
                             
@@ -2663,8 +2530,6 @@ void TrigL2BMuMuXFex::checkLbMuMuLambda(const xAOD::L2CombinedMuon* mu1, const x
                         }
                     } // end of successful fit condition "mother"
                     if(vertex) {
-                        int index = m_VertexColl->size()-1;
-                        ElementLink<TrigVertexCollection> LbVertexEL(*m_VertexColl,index);
                     } else {
                         delete mother_LbVtx;
                     }
@@ -2680,9 +2545,8 @@ void TrigL2BMuMuXFex::checkLbMuMuLambda(const xAOD::L2CombinedMuon* mu1, const x
             if ((xMuMuMass > m_lowerLb_LambdaMuMuMassCutVtxOff && xMuMuMass < m_upperLb_LambdaMuMuMassCutVtxOff)) {
                 
                 // Store links to the tracks forming bphys particle
-                ElementLinkVector<xAOD::TrackParticleContainer> trackVectorBmumuLb;
-                ElementLink<xAOD::TrackParticleContainer> track1ELLb = mu1->idTrackLink();
-                ElementLink<xAOD::TrackParticleContainer> track2ELLb = mu2->idTrackLink();
+                const ElementLink<xAOD::TrackParticleContainer>& track1ELLb = mu1->idTrackLink();
+                const ElementLink<xAOD::TrackParticleContainer>& track2ELLb = mu2->idTrackLink();
                 ElementLink<xAOD::TrackParticleContainer> track3ELLb(*trkCollection, iTrk3);
                 ElementLink<xAOD::TrackParticleContainer> track4ELLb(*trkCollection, iTrk4);
                 
@@ -2691,16 +2555,8 @@ void TrigL2BMuMuXFex::checkLbMuMuLambda(const xAOD::L2CombinedMuon* mu1, const x
                 ATH_MSG_VERBOSE("Muon 2 pT " << (*track2ELLb)->pt() << " eta: " << (*track2ELLb)->eta() << " phi: " << (*track2ELLb)->phi());
                 ATH_MSG_VERBOSE("Track 1 pT " << (*track3ELLb)->pt() << " eta: " << (*track3ELLb)->eta() << " phi: " << (*track3ELLb)->phi());
                 ATH_MSG_VERBOSE("Track 2 pT " << (*track4ELLb)->pt() << " eta: " << (*track4ELLb)->eta() << " phi: " << (*track4ELLb)->phi());
-                
-                trackVectorBmumuLb.push_back(track1ELLb); // temp
-                trackVectorBmumuLb.push_back(track2ELLb); // temp
-                trackVectorBmumuLb.push_back(track3ELLb); // temp
-                trackVectorBmumuLb.push_back(track4ELLb); // temp
-                
-                
-                //         if(m_doLambda_ProtonPionVertexFit){
+
                 ElementLink<xAOD::TrigBphysContainer> trigPartLbEL(*m_trigBphysColl_lambdaxAOD,LIndex);
-                //TrigL2Bphys* trigPartBmumuLb = new TrigL2Bphys(0.0, 0.0, 0.0, TrigL2Bphys::LBLMUMU, xMuMuMass, trigPartLbEL);
                 xAOD::TrigBphys* trigPartBmumuLb = new xAOD::TrigBphys();
                 trigPartBmumuLb->makePrivateStore();
                 trigPartBmumuLb->initialise(0.0, 0.0, 0.0, xAOD::TrigBphys::LBLMUMU, xMuMuMass, trigPartLbEL,xAOD::TrigBphys::L2);
@@ -2710,18 +2566,6 @@ void TrigL2BMuMuXFex::checkLbMuMuLambda(const xAOD::L2CombinedMuon* mu1, const x
                 trigPartBmumuLb->addTrackParticleLink(track3ELLb);
                 trigPartBmumuLb->addTrackParticleLink(track4ELLb);
                 m_trigBphysColl_bxAOD->push_back(trigPartBmumuLb);
-                //         }else{
-                // //           m_trigBphysColl_lambda->push_back(trigPartBmumuL);
-                // //           int LIndex = m_trigBphysColl_lambda->size() - 1;
-                // //           ElementLink<xAOD::TrigBphysContainer> trigPartLbEL(*m_trigBphysColl_lambda,LIndex);
-                //           
-                //           TrigL2Bphys* trigPartBmumuLb = new TrigL2Bphys(0., 0., 0., TrigL2Bphys::LBLMUMU, xMuMuMass/*, trigPartLbEL*/);
-                //           trigPartBmumuLb->addTrack(track1ELLb); 
-                //           trigPartBmumuLb->addTrack(track2ELLb); 
-                //           trigPartBmumuLb->addTrack(track3ELLb); 
-                //           trigPartBmumuLb->addTrack(track4ELLb); 
-                //           m_trigBphysColl_b->push_back(trigPartBmumuLb);
-                //         }
                 
                 ATH_MSG_DEBUG(" Lambda's Proton and Pion Candidates accepted with L mass: " << xMass << "MeV"  
                     << " and with LambdaB mass : " << xMuMuMass << "MeV" << " proton particle with pt: "<< trk3->pt() << " pion particle with pt: "<< trk4->pt());
@@ -2773,7 +2617,7 @@ void TrigL2BMuMuXFex::checkBcMuMuDs(const xAOD::L2CombinedMuon* mu1, const xAOD:
             << " phi, eta - more RoIs => " << trigPartBmumuDs->phi() << " " << trigPartBmumuDs->eta() << " vertex type " << trigPartBmumuDs->particleType());
         
         // Store links to the tracks forming bphys particle
-        ElementLinkVector<xAOD::TrackParticleContainer> trackVectorBmumuDs;
+
         ElementLink<xAOD::TrackParticleContainer> track3EL(*trkCollection, iTrk3); //kaon
         ElementLink<xAOD::TrackParticleContainer> track4EL(*trkCollection, iTrk4); //kaon
         ElementLink<xAOD::TrackParticleContainer> track5EL(*trkCollection, iTrk5); //pion
@@ -2783,9 +2627,6 @@ void TrigL2BMuMuXFex::checkBcMuMuDs(const xAOD::L2CombinedMuon* mu1, const xAOD:
         ATH_MSG_VERBOSE("Track 2 pT " << (*track4EL)->pt() << " eta: " << (*track4EL)->eta() << " phi: " << (*track4EL)->phi());
         ATH_MSG_VERBOSE("Track 3 pT " << (*track5EL)->pt() << " eta: " << (*track5EL)->eta() << " phi: " << (*track5EL)->phi());
 
-        trackVectorBmumuDs.push_back(track3EL); // temp
-        trackVectorBmumuDs.push_back(track4EL); // temp
-        trackVectorBmumuDs.push_back(track5EL); // temp
         
         trigPartBmumuDs->addTrackParticleLink(track3EL);
         trigPartBmumuDs->addTrackParticleLink(track4EL);
@@ -2898,10 +2739,7 @@ void TrigL2BMuMuXFex::checkBcMuMuDs(const xAOD::L2CombinedMuon* mu1, const xAOD:
                         
                         goodDs = true;
                         // GREAT -> store daughter particle info
-                        m_VertexColl->push_back(mother_DsVtx);
                         ATH_MSG_DEBUG(" Added Ds vertex to vertex collection");
-                        int index = m_VertexColl->size()-1;
-                        ElementLink<TrigVertexCollection> DsVertexEL(*m_VertexColl,index);
                         
                         // monitoring
                         m_mon_BcMuMuDs_VtxMassBc_Ds.push_back((DsVtx->mass())*0.001);
@@ -2939,8 +2777,6 @@ void TrigL2BMuMuXFex::checkBcMuMuDs(const xAOD::L2CombinedMuon* mu1, const xAOD:
                         delete mother_DsVtx;
                     }
                 } // end of successful fit condition "mother"
-                //int index = m_VertexColl->size()-1;
-                //ElementLink<TrigVertexCollection> BplusVertexEL(*m_VertexColl,index);
                 delete DsVtx;
             } // end of successful fit condition initial vertex
             if(timerSvc()) m_VtxFitTimer->pause();
@@ -2995,8 +2831,7 @@ void TrigL2BMuMuXFex::checkBcMuMuDs(const xAOD::L2CombinedMuon* mu1, const xAOD:
                     //continue;
                     vertex = false;
                 }
-                //ElementLink<TrigL2BphysContainer> trigPartBcEL(*m_trigBphysColl_ds,DsIndex);
-                //TrigL2Bphys* trigPartBmumuBc = new TrigL2Bphys(0.0, 0.0, 0.0, TrigL2Bphys::BCDSMUMU, xMuMuMass, trigPartBcEL);
+
                 ElementLink<xAOD::TrigBphysContainer> trigPartBcEL(*m_trigBphysColl_dsxAOD,DsIndex);
                 xAOD::TrigBphys* trigPartBmumuBc = new xAOD::TrigBphys();
                 trigPartBmumuBc->makePrivateStore();
@@ -3057,7 +2892,6 @@ void TrigL2BMuMuXFex::checkBcMuMuDs(const xAOD::L2CombinedMuon* mu1, const xAOD:
                                 <<", ndof = " <<BcVtx->ndof());
                             
                             // PERFECT -> Bphys particle was stored in collection
-                            m_VertexColl->push_back(mother_BcVtx);
                             m_trigBphysColl_bxAOD->push_back(trigPartBmumuBc);
                             ATH_MSG_DEBUG(" Added Bc vertex to vertex collection");
                             // monitoring of successfuly stored particles
@@ -3095,8 +2929,6 @@ void TrigL2BMuMuXFex::checkBcMuMuDs(const xAOD::L2CombinedMuon* mu1, const xAOD:
                         }
                     } // end of successful fit condition "mother"
                     if(vertex) {
-                        int index = m_VertexColl->size()-1;
-                        ElementLink<TrigVertexCollection> BsVertexEL(*m_VertexColl,index);
                     } else {
                         delete mother_BcVtx;
                     }
@@ -3111,9 +2943,9 @@ void TrigL2BMuMuXFex::checkBcMuMuDs(const xAOD::L2CombinedMuon* mu1, const xAOD:
             if ((xMuMuMass > m_lowerBc_DsMuMuMassCutVtxOff && xMuMuMass < m_upperBc_DsMuMuMassCutVtxOff)) {
                 
                 // Store links to the tracks forming bphys particle
-                ElementLinkVector<xAOD::TrackParticleContainer> trackVectorBmumuBc;
-                ElementLink<xAOD::TrackParticleContainer> track1ELBc = mu1->idTrackLink();
-                ElementLink<xAOD::TrackParticleContainer> track2ELBc = mu2->idTrackLink();
+
+                const ElementLink<xAOD::TrackParticleContainer>& track1ELBc = mu1->idTrackLink();
+                const ElementLink<xAOD::TrackParticleContainer>& track2ELBc = mu2->idTrackLink();
                 ElementLink<xAOD::TrackParticleContainer> track3ELBc(*trkCollection, iTrk3);
                 ElementLink<xAOD::TrackParticleContainer> track4ELBc(*trkCollection, iTrk4);
                 ElementLink<xAOD::TrackParticleContainer> track5ELBc(*trkCollection, iTrk5);
@@ -3124,17 +2956,7 @@ void TrigL2BMuMuXFex::checkBcMuMuDs(const xAOD::L2CombinedMuon* mu1, const xAOD:
                 ATH_MSG_VERBOSE("Track 1 pT " << (*track3ELBc)->pt() << " eta: " << (*track3ELBc)->eta() << " phi: " << (*track3ELBc)->phi());
                 ATH_MSG_VERBOSE("Track 2 pT " << (*track4ELBc)->pt() << " eta: " << (*track4ELBc)->eta() << " phi: " << (*track4ELBc)->phi());
                 ATH_MSG_VERBOSE("Track 3 pT " << (*track5ELBc)->pt() << " eta: " << (*track5ELBc)->eta() << " phi: " << (*track5ELBc)->phi());
-                
-                trackVectorBmumuBc.push_back(track1ELBc); // temp
-                trackVectorBmumuBc.push_back(track2ELBc); // temp
-                trackVectorBmumuBc.push_back(track3ELBc); // temp
-                trackVectorBmumuBc.push_back(track4ELBc); // temp
-                trackVectorBmumuBc.push_back(track5ELBc); // temp
-                
-                
-                //         if(m_doPhi1020_KaonKaonVertexFit){
-                //ElementLink<TrigL2BphysContainer> trigPartBcEL(*m_trigBphysColl_ds,DsIndex);
-                //TrigL2Bphys* trigPartBmumuBc = new TrigL2Bphys(0.0, 0.0, 0.0, TrigL2Bphys::BCDSMUMU, xMuMuMass, trigPartBcEL);
+
                 ElementLink<xAOD::TrigBphysContainer> trigPartBcEL(*m_trigBphysColl_dsxAOD,DsIndex);
                 xAOD::TrigBphys* trigPartBmumuBc = new xAOD::TrigBphys();
                 trigPartBmumuBc->makePrivateStore();
@@ -3146,18 +2968,7 @@ void TrigL2BMuMuXFex::checkBcMuMuDs(const xAOD::L2CombinedMuon* mu1, const xAOD:
                 trigPartBmumuBc->addTrackParticleLink(track4ELBc);
                 trigPartBmumuBc->addTrackParticleLink(track5ELBc);
                 m_trigBphysColl_bxAOD->push_back(trigPartBmumuBc);
-                //         }else{
-                // //           m_trigBphysColl_phi->push_back(trigPartBmumuPhi);
-                // //           int PhiIndex = m_trigBphysColl_phi->size() - 1;
-                // //           ElementLink<TrigL2BphysContainer> trigPartBsEL(*m_trigBphysColl_phi,PhiIndex);
-                //           
-                //           TrigL2Bphys* trigPartBmumuBs = new TrigL2Bphys(0., 0., 0., TrigL2Bphys::BSPHIMUMU, xMuMuMass/*, trigPartBsEL*/);
-                //           trigPartBmumuBs->addTrack(track1ELBs); 
-                //             trigPartBmumuBs->addTrack(track2ELBs); 
-                //             trigPartBmumuBs->addTrack(track3ELBs); 
-                //             trigPartBmumuBs->addTrack(track4ELBs); 
-                //           m_trigBphysColl_b->push_back(trigPartBmumuBs);
-                //         }
+
                 m_mon_BcMuMuDs_n++;
                 if(trk3->pt()*trk3->charge() > 0) {
                     ATH_MSG_DEBUG(" Ds's Kplus, Kminus and pion Candidates accepted with Ds mass: " << xMass << "MeV"  
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuXFex.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuXFex.h
index d21a9b46fc994707e7f3d17be2ab48d1de9b4e16..ecd33b40a907cb04eb09a77fe5f9f571b55006e7 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuXFex.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2BMuMuXFex.h
@@ -26,16 +26,10 @@
 #include "BtrigUtils.h"
 
 
-#include "TrigInDetEvent/TrigInDetTrackFitPar.h"
-#include "TrigInDetEvent/TrigInDetTrackCollection.h"
-//#include "TrigMuonEvent/TrigCombDiMuonContainer.h"
-
 #include "TrigInDetToolInterfaces/ITrigVertexingTool.h"
 
 #include "TrigInDetToolInterfaces/ITrigL2VertexFitter.h"                         
 
-#include "TrigInDetEvent/TrigVertexCollection.h"
-
 #include "xAODTrigBphys/TrigBphysContainer.h"
 #include "xAODTrigBphys/TrigBphysAuxContainer.h"
 #include "xAODTrigBphys/TrigBphys.h"
@@ -43,8 +37,6 @@
 #include "xAODTrigMuon/L2CombinedMuon.h"
 #include "xAODTrigMuon/L2CombinedMuonContainer.h"
 
-typedef std::vector<const TrigInDetTrack*> TTrackPair;
-
 class TrigBphysHelperUtilsTool;
 
 /// addon, not needed 
@@ -67,20 +59,6 @@ class TrigL2BMuMuXFex: public HLT::ComboAlgo
   private:
     ToolHandle <TrigBphysHelperUtilsTool> m_bphysHelperTool;
 
-//    double KMuMuMass(const TrigInDetTrack* mu1, const TrigInDetTrack* mu2, const TrigInDetTrack* kaon);
-//    double XMass(const TrigInDetTrack* particle1, const TrigInDetTrack* particle2, int decay);                
-//    double XMuMuMass(const TrigInDetTrack* mu1, const TrigInDetTrack* mu2, 
-//                     const TrigInDetTrack* particle1, const TrigInDetTrack* particle2, int decay);
-//    double X3Mass(const TrigInDetTrack* particle1, const TrigInDetTrack* particle2, const TrigInDetTrack* particle3);                
-//    double X3MuMuMass(const TrigInDetTrack* mu1, const TrigInDetTrack* mu2, 
-//                     const TrigInDetTrack* particle1, const TrigInDetTrack* particle2, const TrigInDetTrack* particle3);
-//    
-    //    void checkBMuMuK(const CombinedMuonFeature* mu1, const CombinedMuonFeature* mu2, const TrigInDetTrack* trk3, const TrigInDetTrackCollection* trkCollection, int iTrk3);
-    //    void checkBdMuMuKstar(const CombinedMuonFeature* mu1, const CombinedMuonFeature* mu2, const TrigInDetTrack* trk3, const TrigInDetTrack* trk4, const TrigInDetTrackCollection* trkCollection, int iTrk3, int iTrk4);
-    //    void checkBsMuMuPhi(const CombinedMuonFeature* mu1, const CombinedMuonFeature* mu2, const TrigInDetTrack* trk3, const TrigInDetTrack* trk4, const TrigInDetTrackCollection* trkCollection, int iTrk3, int iTrk4);
-    //    void checkLbMuMuLambda(const CombinedMuonFeature* mu1, const CombinedMuonFeature* mu2, const TrigInDetTrack* trk3, const TrigInDetTrack* trk4, const TrigInDetTrackCollection* trkCollection, int iTrk3, int iTrk4);
-    //    void checkBcMuMuDs(const CombinedMuonFeature* mu1, const CombinedMuonFeature* mu2, const TrigInDetTrack* trk3, const TrigInDetTrack* trk4, const TrigInDetTrack* trk5, const TrigInDetTrackCollection* trkCollection, int iTrk3, int iTrk4, double xPhiMass, int iTrk5);
- 
     
     void checkBMuMuK(const xAOD::L2CombinedMuon* mu1, const xAOD::L2CombinedMuon* mu2, const xAOD::TrackParticle* trk3,
                      const xAOD::TrackParticleContainer* trkCollection, int iTrk3);
@@ -233,13 +211,6 @@ class TrigL2BMuMuXFex: public HLT::ComboAlgo
     TrigL2BphysContainer* m_trigBphysColl_b;
     xAOD::TrigBphysContainer* m_trigBphysColl_bxAOD; // revert back to non-aod naming once complete
     
-    TrigVertexCollection* m_VertexColl;
-    // temporary
-//    TrigL2BphysContainer* m_trigBphysColl_kStar;   
-//    TrigL2BphysContainer* m_trigBphysColl_phi;   
-//    TrigL2BphysContainer* m_trigBphysColl_lambda;   
-//    TrigL2BphysContainer* m_trigBphysColl_ds;
-
     xAOD::TrigBphysContainer* m_trigBphysColl_kStarxAOD;
     xAOD::TrigBphysContainer* m_trigBphysColl_phixAOD;
     xAOD::TrigBphysContainer* m_trigBphysColl_lambdaxAOD;
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2MultiMuFex.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2MultiMuFex.cxx
index 12f80ddaa6a9b3fb1cf4d7d3ad38168b4063bfc0..8d53edd535d778fd15b507937101fc984a8aed99 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2MultiMuFex.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2MultiMuFex.cxx
@@ -14,10 +14,6 @@
 
 #include "TrigL2MultiMuFex.h"
 
-#include "TrigInDetEvent/TrigInDetTrackCollection.h"
-#include "TrigInDetEvent/TrigInDetTrackFitPar.h"
-
-
 #include "CLHEP/GenericFunctions/CumulativeChiSquare.hh"
 
 #include "TrigInDetToolInterfaces/ITrigVertexingTool.h"
@@ -107,16 +103,12 @@ TrigL2MultiMuFex::TrigL2MultiMuFex(const std::string & name, ISvcLocator* pSvcLo
 
   // Initialize the collections
   m_trigBphysColl = NULL;
-  //m_VertexColl    = NULL;
 }
 
 /*------------------------------*/
 TrigL2MultiMuFex::~TrigL2MultiMuFex()
 /*------------------------------*/
 {
-  // TODO: Delete the collections ?
-  //delete m_trigBphysColl;
-  //delete m_VertexColl;
 }
 
 /*-------------------------------------------*/
@@ -235,19 +227,7 @@ HLT::ErrorCode TrigL2MultiMuFex::acceptInputs(HLT::TEConstVec& inputTE, bool& pa
   // Processing timers
   if ( timerSvc() ) m_BmmHypTot->start();
 
-    // Retrieve event info
-    //    int IdRun   = 0;
-    //    int IdEvent = 0;
-    //    // event info
-    //    uint32_t runNumber(0), evtNumber(0), lbBlock(0);
-    //    if (m_bphysHelperTool->getRunEvtLb( runNumber, evtNumber, lbBlock).isFailure()) {
-    //        ATH_MSG_ERROR("Error retriving EventInfo" );
-    //    }
-    //    IdRun = runNumber;
-    //    IdEvent = evtNumber;
-
-
-    
+  
   // Check consistency of the number of input Trigger Elements
   if (m_checkNinputTE && inputTE.size() != m_NInputMuon ) {
     ATH_MSG_ERROR("Got wrong number of input TEs, expect " << m_NInputMuon << " got " << inputTE.size() );
@@ -272,7 +252,6 @@ HLT::ErrorCode TrigL2MultiMuFex::hltExecute(HLT::TEConstVec& inputTE, HLT::Trigg
 {
     ATH_MSG_DEBUG(" In hltExecute " );
 
-    //  m_trigBphysColl = new TrigL2BphysContainer();
     m_trigBphysColl = new xAOD::TrigBphysContainer;
     xAOD::TrigBphysAuxContainer xAODTrigBphysAuxColl;
     m_trigBphysColl->setStore(&xAODTrigBphysAuxColl);
@@ -317,10 +296,6 @@ void TrigL2MultiMuFex::processTriMuon(HLT::TEConstVec& inputTE)
       const HLT::TriggerElement* te2 = inputTE[1];
       const HLT::TriggerElement* te3 = inputTE[2];
 
-    //      const CombinedMuonFeature *muon1;
-    //      const CombinedMuonFeature *muon2;
-    //      const CombinedMuonFeature *muon3;
-
     
     //if(getFeature(te1,muon1)!= HLT::OK) {
     if(getFeaturesLinks<xAOD::L2CombinedMuonContainer,xAOD::L2CombinedMuonContainer>(te1,l2combinedMuonEL[0]) != HLT::OK
@@ -445,19 +420,6 @@ void TrigL2MultiMuFex::processTriMuon(HLT::TEConstVec& inputTE)
       m_mon_MutrkPhi.push_back( (*ELidtrack2)->phi0() );
       m_mon_MutrkPhi.push_back( (*ELidtrack3)->phi0() );
 
-    // simple lambda to help print out information, without tedious typing
-    /*
-    auto dumpinfo = [this] (const xAOD::L2CombinedMuon* muon) {
-        this->msg() << "pt=" << muon->pt()*muon->charge() << " trkAddr=" << muon->idTrack() << " Trk:Track=" << muon->idTrack()->track()
-    };
-    if (msgLvl() <= MSG::DEBUG ) {
-        ATH_MSG_DEBUG("1st CombinedMuonFeature " << dumpinfo(muon1) );
-        ATH_MSG_DEBUG("2st CombinedMuonFeature " << dumpinfo(muon2) );
-        ATH_MSG_DEBUG("3st CombinedMuonFeature " << dumpinfo(muon3) );
-    } // if debug
-    */
- 
-
     if (m_NMassMuon ==2) {   // check mass of opposite sign muon pairs
         
         m_passInvMass=false;
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2MultiMuFex.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2MultiMuFex.h
index 52128dc642a23e8a686cdaebe73c8f529db437bb..8fe510b81e0dbd196fb69b02f3145af3bb9b21d6 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2MultiMuFex.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2MultiMuFex.h
@@ -17,12 +17,9 @@
 
 #include "TrigInterfaces/ComboAlgo.h"
 
-#include "TrigInDetEvent/TrigVertexCollection.h"
 #include "TrigInDetToolInterfaces/ITrigVertexFitter.h"
 #include "TrigInDetToolInterfaces/ITrigL2VertexFitter.h"
 
-//#include "TrigParticle/TrigL2BphysContainer.h"
-
 #include "TrigTimeAlgs/TrigTimerSvc.h"
 
 #include "Constants.h"
@@ -109,7 +106,6 @@ class TrigL2MultiMuFex: public HLT::ComboAlgo {
 
     // Output collections
     xAOD::TrigBphysContainer* m_trigBphysColl;
-    //TrigVertexCollection* m_VertexColl;
 
     // Monitored variables
     std::vector<int>   m_mon_Errors;
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2MultiMuHypo.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2MultiMuHypo.h
index 91fcf53621f22bb39ee20d15020d4c6e2c3abde5..7edefeee3cfbbc44688d73a5a27e3ff121c9a35c 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2MultiMuHypo.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2MultiMuHypo.h
@@ -23,12 +23,6 @@
 #include <string>
 #include "TrigInterfaces/HypoAlgo.h"
 
-////#include "TrigTimeAlgs/TrigTimerSvc.h"
-//#include "TrigInDetEvent/TrigVertexCollection.h"
-//#include "TrigParticle/TrigL2Bphys.h"
-//#include "TrigParticle/TrigL2BphysContainer.h"
-//
-
 class TrigBphysHelperUtilsTool;
 
 
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2TrkMassFex.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2TrkMassFex.cxx
deleted file mode 100644
index d88335918518db2285b863e767ec09565d8df3b3..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2TrkMassFex.cxx
+++ /dev/null
@@ -1,943 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-// *******************************************************************
-//
-// NAME:     TrigL2TrkMassFex.cxx
-// PACKAGE:  Trigger/TrigHypothesis/TrigBphysHypo
-// AUTHOR:   Julie Kirk
-//
-// *******************************************************************
-
-#include <math.h>
-
-#include "TrigL2TrkMassFex.h"
-
-
-#include "TrigSteeringEvent/TrigRoiDescriptor.h"
-
-#include "CLHEP/GenericFunctions/CumulativeChiSquare.hh"
-
-#include "TrigInDetToolInterfaces/ITrigVertexingTool.h"
-#include "TrigInDetEvent/TrigL2Vertex.h"
-
-#include "Constants.h"
-#include "BtrigUtils.h"
-
-// additions of xAOD objects
-#include "TrigBphysHelperUtilsTool.h"
-#include "xAODTracking/TrackParticle.h"
-#include "xAODTracking/TrackParticleContainer.h"
-#include "xAODTrigMuon/L2StandAloneMuon.h"
-#include "xAODTrigMuon/L2StandAloneMuonContainer.h"
-#include "xAODTrigMuon/L2CombinedMuon.h"
-#include "xAODTrigMuon/L2CombinedMuonContainer.h"
-
-using namespace std;
-
-/*------------------------------------------------------------------------------------*/
-TrigL2TrkMassFex::TrigL2TrkMassFex(const std::string & name, ISvcLocator* pSvcLocator):
-  HLT::FexAlgo(name, pSvcLocator),
-  m_bphysHelperTool("TrigBphysHelperUtilsTool"),
-  m_vertFitter("TrigVertexFitter",this),
-  m_L2vertFitter("TrigL2VertexFitter",this),
-  m_vertexingTool("TrigVertexingTool",this),
-  m_TotTimer(0),
-  m_VtxFitTimer(0)
-/*------------------------------------------------------------------------------------*/
-{
-    
-  // Read properties - boolean switches
-  declareProperty("AcceptAll"     , m_acceptAll      = false);
-  declareProperty("OppositeCharge", m_oppositeCharge = true );
-  declareProperty("doVertexFit"   , m_doVertexFit    = true );
-
-    // Input list of tracks for second leg
-    declareProperty("TrackCollection",m_input_trackCollectionKey="InDetTrigTrackingxAODCnv_Bphysics_FTF");
-    
-  // Read properties - cuts
-  declareProperty("MatchL1"     , m_matchL1    = false );
-  declareProperty("MuonPTthr"   , m_muonPtthr    = 4000 );
-  declareProperty("TrackPTthr"   , m_trackPtthr    = 1400 );
-  declareProperty("dEtaTrackRoI" , m_dEta_cut      = 0.1);
-  declareProperty("dPhiTrackRoI" , m_dPhi_cut      = 0.1);
-  declareProperty("DaughterMass" , m_daughterMass  = 0. );
-  declareProperty("Mass_low_cut" , m_mass_low_cut  = 0. );
-  declareProperty("Mass_high_cut", m_mass_high_cut = 0. );
-
-  // Read properties - vertexing tools
-  declareProperty("TrigVertexFitter"  , m_vertFitter);
-  declareProperty("TrigL2VertexFitter", m_L2vertFitter);
-  declareProperty("TrigVertexingTool" , m_vertexingTool, "TrigVertexingTool");
-
-  // Variables for monitoring histograms
-  declareMonitoredStdContainer("Errors"                     , m_mon_Errors                        , AutoClear);
-  declareMonitoredStdContainer("Acceptance"                 , m_mon_Acceptance                    , AutoClear);
-  declareMonitoredStdContainer("ROIEta"                     , m_mon_ROIEta                        , AutoClear);
-  declareMonitoredStdContainer("ROIPhi"                     , m_mon_ROIPhi                        , AutoClear);
-  declareMonitoredVariable(    "nTracks"                    , m_mon_nTracks );
-  declareMonitoredStdContainer("TrkPt"                      , m_mon_TrkPt                         , AutoClear);
-  declareMonitoredStdContainer("TrkPt_wideRange"            , m_mon_TrkPt_wideRange               , AutoClear);
-  declareMonitoredStdContainer("TrkEta"                     , m_mon_TrkEta                        , AutoClear);
-  declareMonitoredStdContainer("TrkPhi"                     , m_mon_TrkPhi                        , AutoClear);
-  declareMonitoredStdContainer("TrkROIdEta"                 , m_mon_TrkROIdEta                    , AutoClear);
-  declareMonitoredStdContainer("TrkROIdPhi"                 , m_mon_TrkROIdPhi                    , AutoClear);
-  declareMonitoredStdContainer("TrkROIdR"                   , m_mon_TrkROIdR                      , AutoClear);
-  declareMonitoredStdContainer("InvMassNoTrkPtCut"          , m_mon_InvMassNoTrkPtCut             , AutoClear);
-  declareMonitoredStdContainer("InvMassNoTrkPtCut_wideRange", m_mon_InvMassNoTrkPtCut_wideRange   , AutoClear);
-  declareMonitoredStdContainer("InvMass"                    , m_mon_InvMass                       , AutoClear);
-  declareMonitoredStdContainer("InvMass_wideRange"          , m_mon_InvMass_wideRange             , AutoClear);
-  declareMonitoredStdContainer("Trk1Pt"                     , m_mon_Trk1Pt                        , AutoClear);
-  declareMonitoredStdContainer("Trk2Pt"                     , m_mon_Trk2Pt                        , AutoClear);
-  declareMonitoredStdContainer("Trk1Eta"                    , m_mon_Trk1Eta                       , AutoClear);
-  declareMonitoredStdContainer("Trk2Eta"                    , m_mon_Trk2Eta                       , AutoClear);
-  declareMonitoredStdContainer("Trk1Phi"                    , m_mon_Trk1Phi                       , AutoClear);
-  declareMonitoredStdContainer("Trk2Phi"                    , m_mon_Trk2Phi                       , AutoClear);
-  declareMonitoredStdContainer("Trk1Trk2dEta"               , m_mon_Trk1Trk2dEta                  , AutoClear);
-  declareMonitoredStdContainer("Trk1Trk2dPhi"               , m_mon_Trk1Trk2dPhi                  , AutoClear);
-  declareMonitoredStdContainer("Trk1Trk2dR"                 , m_mon_Trk1Trk2dR                    , AutoClear);
-  declareMonitoredStdContainer("SumPtTrk12"                 , m_mon_SumPtTrk12                    , AutoClear);
-  declareMonitoredStdContainer("FitMass"                    , m_mon_FitMass                       , AutoClear);
-  declareMonitoredStdContainer("FitMass_wideRange"          , m_mon_FitMass                       , AutoClear);
-  declareMonitoredStdContainer("InvMass_okFit"              , m_mon_InvMass_okFit                 , AutoClear);
-  declareMonitoredStdContainer("Chi2toNDoF"                 , m_mon_Chi2toNDoF                    , AutoClear);
-  declareMonitoredStdContainer("Chi2toNDoFProb"             , m_mon_Chi2toNDoFProb                , AutoClear);
-  declareMonitoredStdContainer("FitTotalPt"                 , m_mon_FitTotalPt                    , AutoClear);
-  declareMonitoredStdContainer("SumPtTrk12_okFit"           , m_mon_SumPtTrk12_okFit              , AutoClear);
-  declareMonitoredStdContainer("FitVtxR"                    , m_mon_FitVtxR                       , AutoClear);
-  declareMonitoredStdContainer("FitVtxZ"                    , m_mon_FitVtxZ                       , AutoClear);
-  declareMonitoredVariable(    "nBphys"                     , m_mon_nBphys );
-  declareMonitoredVariable(    "TotalRunTime"               , m_mon_TotalRunTime );
-  declareMonitoredVariable(    "VertexingTime"              , m_mon_VertexingTime );
-
-  // Zero the counters
-  m_lastEvent           = 999;
-  m_lastEventPassed     = 999;
-  m_countTotalEvents    = 0;
-  m_countTotalRoI       = 0;
-  m_countPassedEvents   = 0;
-  m_countPassedRoIs     = 0;
-  m_countPassedRoIMatch = 0;
-  m_countPassedMass     = 0;
-
-  // Initialize the collections
-  m_trigBphysColl = NULL;
-  m_VertexColl    = NULL;
-}
-
-/*----------------------------------*/
-TrigL2TrkMassFex::~TrigL2TrkMassFex()
-/*----------------------------------*/
-{
-  // Delete the collections
-  delete m_trigBphysColl;
-  delete m_VertexColl;
-}
-
-/*---------------------------------------------*/
-HLT::ErrorCode TrigL2TrkMassFex::hltInitialize()
-/*---------------------------------------------*/
-{
-
-  // Print out properties, cuts
-  ATH_MSG_INFO("AcceptAll               = " << (m_acceptAll==true ? "True" : "False") );
-  ATH_MSG_INFO("Apply opposite sign cut = " << (m_oppositeCharge==true ? "True" : "False") );
-  ATH_MSG_INFO("Muon pT cut        : " << m_muonPtthr << " GeV" );
-  ATH_MSG_INFO("Track pT cut        : " << m_trackPtthr << " GeV" );
-  ATH_MSG_INFO("Track-RoI match cuts: dEta < " << m_dEta_cut << " dPhi < " << m_dPhi_cut );
-  ATH_MSG_INFO("Mass cuts           : " << m_mass_low_cut << " to " << m_mass_high_cut << " GeV" );
-  ATH_MSG_INFO("Daughter mass       : " << m_daughterMass << " GeV" );
-
-  ATH_MSG_INFO("Initialization completed successfully");
-
-  // Retrieve the vertexing tools
-  StatusCode sc = m_vertFitter.retrieve();
-  if ( sc.isFailure() ) {
-    ATH_MSG_FATAL("Unable to locate TrigVertexFitter tool" );
-    return HLT::BAD_JOB_SETUP;
-  } else {
-    ATH_MSG_INFO("TrigVertexFitter retrieved" );
-  }
-
-  sc = m_L2vertFitter.retrieve();
-  if ( sc.isFailure() ) {
-    ATH_MSG_FATAL("Unable to locate TrigL2VertexFitter tool" );
-    return HLT::BAD_JOB_SETUP;
-  }
-  else {
-    ATH_MSG_INFO("TrigL2VertexFitter retrieved" );
-  }
-
-  sc = m_vertexingTool.retrieve();
-  if ( sc.isFailure() ) {
-    ATH_MSG_FATAL("Unable to locate TrigVertexingTool tool" );
-    return HLT::BAD_JOB_SETUP;
-  } else {
-    ATH_MSG_INFO("TrigVertexingTool retrieved" );
-  }
-    if (m_bphysHelperTool.retrieve().isFailure()) {
-        ATH_MSG_ERROR("Can't find TrigBphysHelperUtilsTool" );
-        return HLT::BAD_JOB_SETUP;
-    } else {
-        ATH_MSG_DEBUG("TrigBphysHelperUtilsTool found" );
-    }
-
-  // Add the timers
-  if ( timerSvc() ) {
-    m_TotTimer    = addTimer("L2TrkMassTot");
-    m_VtxFitTimer = addTimer("L2TrkMassVFit");
-  }
-
-  return HLT::OK;
-}
-
-
-/*-------------------------------------------*/
-HLT::ErrorCode TrigL2TrkMassFex::hltFinalize()
-/*-------------------------------------------*/
-{
-
-  ATH_MSG_INFO("in finalize()" );
-  ATH_MSG_INFO("Run on events/RoIs " << m_countTotalEvents << "/" << m_countTotalRoI );
-  ATH_MSG_INFO("Passed events/RoIs " << m_countPassedEvents << "/" << m_countPassedRoIs );
-  ATH_MSG_INFO("Passed RoI match " << m_countPassedRoIMatch );
-  ATH_MSG_INFO("Passed mass cuts " << m_countPassedMass );
-
-  return HLT::OK;
-}
-
-// Define the bins for error-monitoring histogram  (//#define ERROR_Empty_TrackColl        3)
-#define ERROR_No_EventInfo           0
-#define ERROR_No_RoI                 1
-#define ERROR_No_TrackColl           2
-#define ERROR_No_CombMuon            3
-#define ERROR_More_TrackColl         4
-#define ERROR_AddTrack_Fails         5
-#define ERROR_Unique_AddTrack_Fails  6
-#define ERROR_CalcInvMass_Fails      7
-#define ERROR_CalcMother_Fails       8
-#define ERROR_CalcMassPull_Fails     9
-#define ERROR_BphysColl_Fails        10
-
-// Define the bins for acceptance-monitoring histogram
-#define ACCEPT_Input                 0
-#define ACCEPT_AcceptAll             1
-#define ACCEPT_Got_RoI               2
-#define ACCEPT_Got_TrackColl         3
-#define ACCEPT_Full_TrackColl        4
-#define ACCEPT_Single_TrackColl      5
-#define ACCEPT_Full_IDTracks         6
-#define ACCEPT_Mu1_Chi2_Cut          7
-#define ACCEPT_Mu1_pT_Cut            8
-#define ACCEPT_Mu1_Chi2Pt_Cuts       9
-#define ACCEPT_Mu1_dEta_Cut         10
-#define ACCEPT_Mu1_dPhi_Cut         11
-#define ACCEPT_Mu1_dR_Cut           12
-#define ACCEPT_Mu2_Chi2_Cut         13
-#define ACCEPT_Mu2_pT_Cut           14
-#define ACCEPT_Mu2_Chi2Pt_Cuts      15
-#define ACCEPT_Opp_Charge           16
-#define ACCEPT_InvMass_Cut          17
-#define ACCEPT_AddTrack_Test        18
-#define ACCEPT_Vertexing            19
-#define ACCEPT_CalcInvMass          20
-#define ACCEPT_CalcMother           21
-#define ACCEPT_Vertex_not_NULL      22
-// Separator                        23
-#define ACCEPT_BphysColl_not_Empty  24
-// Separator                        25
-#define ACCEPT_Each_Mu1_Chi2_Cut    26
-#define ACCEPT_Each_Mu1_pT_Cut      27
-#define ACCEPT_Each_Mu1_Chi2Pt_Cuts 28
-#define ACCEPT_Each_Mu1_dEta_Cut    29
-#define ACCEPT_Each_Mu1_dPhi_Cut    30
-#define ACCEPT_Each_Mu1_dR_Cut      31
-// Separator                        32
-#define ACCEPT_Each_Mu2_Chi2_Cut    33
-#define ACCEPT_Each_Mu2_pT_Cut      34
-#define ACCEPT_Each_Mu2_Chi2Pt_Cuts 35
-#define ACCEPT_Each_Opp_Charge      36
-#define ACCEPT_Each_InvMass_Cut     37
-#define ACCEPT_Each_AddTrack_Test   38
-#define ACCEPT_Each_Vertexing       39
-#define ACCEPT_Each_CalcInvMass     40
-#define ACCEPT_Each_CalcMother      41
-#define ACCEPT_Each_Vertex_not_NULL 42
-
-// /*-----------------------------------------------------------------------------------------*/
-// HLT::ErrorCode TrigL2TrkMassFex::acceptInput(const HLT::TriggerElement* inputTE, bool& pass)
-// /*-----------------------------------------------------------------------------------------*/
-// {
-// }
-
-/*---------------------------------------------------------------------------------------------------*/
-HLT::ErrorCode TrigL2TrkMassFex::hltExecute(const HLT::TriggerElement*, HLT::TriggerElement* outputTE)
-/*---------------------------------------------------------------------------------------------------*/
-{
-
-  // Global flags
-  bool result         = false;
-  bool PassedRoIMatch = false;
-  bool PassedMass     = false;
-
-  // Processing timers
-  if ( timerSvc() ) m_TotTimer->start();
-
-  // Initialize the monitoring variables
-  m_mon_nBphys        = 0;
-  m_mon_TotalRunTime  = 0;
-  m_mon_VertexingTime = 0;
-
-  ATH_MSG_DEBUG(" In B tag and probe FEX acceptInput" );
-  m_mon_Acceptance.push_back( ACCEPT_Input );
-
-    // Retrieve event info
-    int IdRun   = 0;
-    int IdEvent = 0;
-    // event info
-    uint32_t runNumber(0), evtNumber(0), lbBlock(0);
-    if (m_bphysHelperTool->getRunEvtLb( runNumber, evtNumber, lbBlock).isFailure()) {
-        ATH_MSG_ERROR("Error retriving EventInfo" );
-    }
-    IdRun = runNumber;
-    IdEvent = evtNumber;
-
-  // Accept-All mode: temporary patch; should be done with force-accept
-  if (m_acceptAll) {
-    ATH_MSG_DEBUG("AcceptAll property is set: taking all events" );
-    // pass = true;
-    m_mon_Acceptance.push_back( ACCEPT_AcceptAll );
-  }
-  else {
-    ATH_MSG_DEBUG("AcceptAll property not set: applying selection" );
-    // pass = false;
-  }
-
-  // Get RoI descriptor
-  const TrigRoiDescriptor* roiDescriptor = 0;
-  if (getFeature(outputTE, roiDescriptor, "initialRoI") != HLT::OK) roiDescriptor = 0;
-
-  if ( !roiDescriptor ) {
-    ATH_MSG_WARNING("No RoI for this Trigger Element! " );
-    if ( timerSvc() ) {
-      m_TotTimer->stop();
-      m_mon_TotalRunTime = m_TotTimer->elapsed();
-    }
-    m_mon_Errors.push_back( ERROR_No_RoI );
-    return HLT::NAV_ERROR;
-  }
-  m_mon_Acceptance.push_back( ACCEPT_Got_RoI );
-
-  // Print RoI debugging information
-    ATH_MSG_DEBUG("Using TE(" << outputTE << ")->getId(): " << outputTE->getId() << "; RoI ID = " << roiDescriptor->roiId()
-          << ": Eta = "    << roiDescriptor->eta() << ", Phi = "    << roiDescriptor->phi() );
-
-  // RoI monitoring
-  m_mon_ROIEta.push_back( roiDescriptor->eta() );
-  m_mon_ROIPhi.push_back( roiDescriptor->phi() );
-
-  // Create vector for TrigL2Bphys particles
-    //  delete m_trigBphysColl;
-    //  delete m_VertexColl;
-    m_trigBphysColl = new xAOD::TrigBphysContainer();
-    xAOD::TrigBphysAuxContainer trigBphysAuxColl;
-    m_trigBphysColl->setStore(&trigBphysAuxColl);
-    m_VertexColl    = new TrigVertexCollection();
-
-
-  ///////////////// Get vector of tracks /////////////////
-
-  std::vector<const xAOD::TrackParticleContainer*> vectorOfTrackCollections;
-
-  HLT::ErrorCode status = getFeatures(outputTE, vectorOfTrackCollections,m_input_trackCollectionKey);
-
-  // Were the track-collections read out ?
-  if ( status != HLT::OK ) {
-    ATH_MSG_DEBUG(" Failed to get InDetTrackCollections, exiting " );
-    if ( timerSvc() ) {
-      m_TotTimer->stop();
-      m_mon_TotalRunTime = m_TotTimer->elapsed();
-    }
-    m_mon_Errors.push_back( ERROR_No_TrackColl );
-    return HLT::OK;
-  }
-  m_mon_Acceptance.push_back( ACCEPT_Got_TrackColl );
-
-  // Is there at least one collection ?
-  if (vectorOfTrackCollections.size() == 0) {
-    if ( timerSvc() ) {
-      m_TotTimer->stop();
-      m_mon_TotalRunTime = m_TotTimer->elapsed();
-    }
-//    m_mon_Errors.push_back( ERROR_Empty_TrackColl );
-    return HLT::OK;
-  }
-  m_mon_Acceptance.push_back( ACCEPT_Full_TrackColl );
-
-  // Is there only one collection ?
-  if (vectorOfTrackCollections.size() != 1) {
-    ATH_MSG_DEBUG(" Got " << vectorOfTrackCollections.size() << " InDetTrackCollections, expected one unless this is FullScan" );
-    if ( timerSvc() ) {
-      m_TotTimer->stop();
-      m_mon_TotalRunTime = m_TotTimer->elapsed();
-    }
-    //    m_mon_Errors.push_back( ERROR_More_TrackColl );
-    //return HLT::OK;
-  }
-
-  m_mon_Acceptance.push_back( ACCEPT_Single_TrackColl );
-
-  std::vector<const xAOD::TrackParticleContainer*>::iterator pTrackColl    = vectorOfTrackCollections.begin();
-  std::vector<const xAOD::TrackParticleContainer*>::iterator lastTrackColl = vectorOfTrackCollections.end();
-
-  // JK If more than 1 track collection then this is FullScan instance. Find collection with most tarcks
-  if (vectorOfTrackCollections.size() > 1) {
-    std::vector<const xAOD::TrackParticleContainer*>::iterator findMaxTrackColl    = vectorOfTrackCollections.begin();
-    unsigned int Ntracks=0;
-    for (;findMaxTrackColl != lastTrackColl; ++ findMaxTrackColl) {
-      ATH_MSG_DEBUG("  InDetTrackCollections size, " << (*findMaxTrackColl)->size() );
-      if ((*findMaxTrackColl)->size() > Ntracks) {
-          ATH_MSG_DEBUG(" Largest collection so far, assume it is FullScan " );
-          Ntracks= (*findMaxTrackColl)->size();
-          pTrackColl= findMaxTrackColl;
-      }
-    }
-  }
-
-  ////////////////////////////////////////////////////////
-
-  // Check if we are still in the same event
-  if ( IdEvent != (int) m_lastEvent ) {
-    m_countTotalEvents++;
-    m_lastEvent = IdEvent;
-  }
-  m_countTotalRoI++;
-
-  // Get the number of tracks
-  ATH_MSG_DEBUG(" Got InDetTrackCollections with " << (*pTrackColl)->size() << " tracks" );
-
-  // Number of tracks monitoring
-  if ( (*pTrackColl)->size() > 0 ) m_mon_Acceptance.push_back( ACCEPT_Full_IDTracks );
-  m_mon_nTracks = (*pTrackColl)->size();
-
-  // Boolean flags indicating what stages were already reached (for monitoring purposes)
-  std::vector<bool> flag_stages( 43, false );
-
-  // Prepare the vertexing timer
-  if ( timerSvc() ) {
-    m_VtxFitTimer->start();
-    m_VtxFitTimer->pause(); // resume it only for the vertexing periods
-  }
-
-
-  ///////////////// Get muons /////////////////
-    //  const CombinedMuonFeature *muon;
-    const xAOD::L2CombinedMuon *muon(nullptr);
-    //ElementLink<xAOD::L2CombinedMuonContainer> muonEL;
-    typedef  ElementLinkVector<xAOD::L2CombinedMuonContainer>  ELVMuons;
-    ELVMuons muonEL;
-
-  if (!m_matchL1) {
-      //HLT::ErrorCode status = getFeature(outputTE, muon);
-      //HLT::ErrorCode status = getFeatureLink<xAOD::L2CombinedMuonContainer,xAOD::L2CombinedMuonContainer>(outputTE,muonEL);
-      HLT::ErrorCode status = getFeaturesLinks<xAOD::L2CombinedMuonContainer,xAOD::L2CombinedMuonContainer>(outputTE,muonEL);
-
-   if ( status != HLT::OK || !muonEL.size()) {
-     ATH_MSG_DEBUG(" Failed to get CombinedMuonFeature, exiting " );
-     m_mon_Errors.push_back( ERROR_No_CombMuon );
-       return HLT::OK;
-   }
-      if (muonEL.size() > 1) {
-          ATH_MSG_WARNING("Unexpected number of containers for comb feature: " );
-      }
-      if (!muonEL[0].isValid()) {
-          ATH_MSG_WARNING("Invalid comb muon: " );
-          m_mon_Errors.push_back( ERROR_No_CombMuon );
-          return HLT::OK;
-      }
-
-      muon = *(muonEL.at(0));
-      
-   ATH_MSG_DEBUG(" Got CombinedMuonFeature addr=" << muon << " pt=" << muon->charge() *muon->charge() 
-           << " trkAddr=" << muon->idTrack() << " trackParamAddr=" << muon->idTrack()->track());
-  }
-
-
-
-  //////////// Loop over track collections ///////////////
-
-  for ( ; pTrackColl != lastTrackColl;  pTrackColl++ ) {
-
-    // Monitor the tracks that failed to be added into the vertexing procedure
-    std::vector<bool> addTrackFails ( (*pTrackColl)->size(), false );
-
-    // loop over tracks and look for match to RoI
-    xAOD::TrackParticleContainer::const_iterator track1     = (*pTrackColl)->begin();
-    xAOD::TrackParticleContainer::const_iterator lastTrack1 = (*pTrackColl)->end();
-
-    ///////////// Find RoI matching track ////////////////
-
-    for (int itrk = 0; track1 != lastTrack1; ++itrk, track1++) {
-        ATH_MSG_DEBUG("track1 : " << itrk << " pT = "   << (*track1)->pt()
-              << " phi = "  << (*track1)->phi() << " eta = "  << (*track1)->eta() << " chi2 = " << (*track1)->chiSquared() );
-
-      // Tracks monitoring
-      m_mon_TrkPt_wideRange.push_back( fabs((*track1)->pt()) / CLHEP::GeV );
-      m_mon_TrkPt .push_back( fabs((*track1)->pt()) / CLHEP::GeV );
-      m_mon_TrkEta.push_back( (*track1)->eta() );
-      m_mon_TrkPhi.push_back( (*track1)->phi() );
-
-      // Get the pT and chi2 of the tracks
-      float trackPt   = fabs( (*track1)->pt() );
-      float trackChi2 = (*track1)->chiSquared();
-
-      // Check pT and chi2 (monitoring only)
-      if ( trackChi2 <= 1e7 ) {
-        if ( !flag_stages[ ACCEPT_Mu1_Chi2_Cut ] ) {
-          m_mon_Acceptance.push_back( ACCEPT_Mu1_Chi2_Cut );
-          flag_stages[ ACCEPT_Mu1_Chi2_Cut ] = true;
-        }
-        m_mon_Acceptance.push_back( ACCEPT_Each_Mu1_Chi2_Cut );
-      }
-
-      //JK 4/5/11 changed this to use muonPtthr i.e. different pT cuts for muon and tarck
-      if ( trackPt >= m_muonPtthr ) {
-        if ( !flag_stages[ ACCEPT_Mu1_pT_Cut ] ){
-          m_mon_Acceptance.push_back( ACCEPT_Mu1_pT_Cut );
-          flag_stages[ ACCEPT_Mu1_pT_Cut ] = true;
-        }
-        m_mon_Acceptance.push_back( ACCEPT_Each_Mu1_pT_Cut );
-      }
-
-      // Check pT and chi2
-      if ( trackPt < m_muonPtthr || trackChi2 > 1e7 ) continue;
-
-      // Check pT+chi2 (monitoring only)
-      if ( !flag_stages[ ACCEPT_Mu1_Chi2Pt_Cuts ] ) {
-        m_mon_Acceptance.push_back( ACCEPT_Mu1_Chi2Pt_Cuts );
-        flag_stages[ ACCEPT_Mu1_Chi2Pt_Cuts ] = true;
-      }
-      m_mon_Acceptance.push_back( ACCEPT_Each_Mu1_Chi2Pt_Cuts );
-
-      // Match to RoI
-      // JK 25/7/11 Add option to match to l2 muon
-      double deta;
-      double dphi;
-      if (m_matchL1) {
-        deta = (*track1)->eta()  - roiDescriptor->eta();
-        dphi = (*track1)->phi() - roiDescriptor->phi();
-      } else {
-        deta = (*track1)->eta()  - muon->idTrack()->eta();
-        dphi = (*track1)->phi() - muon->idTrack()->phi();
-      }
-      double absdphi = fabs(dphi);
-      if ( 2.* M_PI - absdphi < absdphi ) {
-        if ( dphi > 0 ) {
-          dphi = dphi - 2.* M_PI;
-        } else {
-          dphi = 2* M_PI - absdphi;
-        }
-      }
-
-      // Monitoring of the RoI matching
-      m_mon_TrkROIdEta.push_back( fabs(deta) );
-      m_mon_TrkROIdPhi.push_back( fabs(dphi) );
-      m_mon_TrkROIdR  .push_back( sqrt(dphi*dphi+deta*deta) );
-
-      // Check the deta and dphi cuts (monitoring only)
-      if ( fabs(deta) < m_dEta_cut ) {
-        if ( !flag_stages[ ACCEPT_Mu1_dEta_Cut ] ) {
-          m_mon_Acceptance.push_back( ACCEPT_Mu1_dEta_Cut );
-          flag_stages[ ACCEPT_Mu1_dEta_Cut ] = true;
-        }
-        m_mon_Acceptance.push_back( ACCEPT_Each_Mu1_dEta_Cut );
-      }
-      if ( fabs(dphi) < m_dPhi_cut ) {
-        if ( !flag_stages[ ACCEPT_Mu1_dPhi_Cut ] ) {
-          m_mon_Acceptance.push_back( ACCEPT_Mu1_dPhi_Cut );
-          flag_stages[ ACCEPT_Mu1_dPhi_Cut ] = true;
-        }
-        m_mon_Acceptance.push_back( ACCEPT_Each_Mu1_dPhi_Cut );
-      }
-
-      // Check the deta and dphi cuts for RoI matching of the track
-      if ( fabs(deta) < m_dEta_cut && fabs(dphi) < m_dPhi_cut ) {
-
-        // Check deta+dphi cuts (monitoring only)
-        if ( !flag_stages[ ACCEPT_Mu1_dR_Cut ] ) {
-          m_mon_Acceptance.push_back( ACCEPT_Mu1_dR_Cut );
-          flag_stages[ ACCEPT_Mu1_dR_Cut ] = true;
-        }
-        m_mon_Acceptance.push_back( ACCEPT_Each_Mu1_dR_Cut );
-
-        PassedRoIMatch = true;
-
-        // Match to RoI found
-        ATH_MSG_DEBUG("Track matched RoI, now search other tracks for good mass " );
-
-        xAOD::TrackParticleContainer::const_iterator track2     = (*pTrackColl)->begin();
-        xAOD::TrackParticleContainer::const_iterator lastTrack2 = (*pTrackColl)->end();
-
-        ///////////// Find the second muon ///////////////
-
-        for ( int jtrk = 0; track2 != lastTrack2; ++jtrk, track2++ ) {
-
-          // Skip identical track
-          if ( itrk == jtrk ) continue;
-
-          ATH_MSG_DEBUG("track2 : " << jtrk << " pT = "   << (*track2)->pt() << " phi = "  << (*track2)->phi()
-                  << " eta = "  << (*track2)->eta() << " chi2 = " << (*track2)->chiSquared() );
-
-          // Get the pT and chi2 of the tracks
-          float track2Pt   = fabs( (*track2)->pt() );
-          float track2Chi2 = (*track2)->chiSquared();
-
-          // Check pT and chi2 (monitoring only)
-          if ( track2Chi2 <= 1e7 ) {
-            if ( !flag_stages[ ACCEPT_Mu2_Chi2_Cut ] ) {
-              m_mon_Acceptance.push_back( ACCEPT_Mu2_Chi2_Cut );
-              flag_stages[ ACCEPT_Mu2_Chi2_Cut ] = true;
-            }
-            m_mon_Acceptance.push_back( ACCEPT_Each_Mu2_Chi2_Cut );
-          }
-          if ( track2Pt >= m_trackPtthr ) {
-            if ( !flag_stages[ ACCEPT_Mu2_pT_Cut ] ) {
-              m_mon_Acceptance.push_back( ACCEPT_Mu2_pT_Cut );
-              flag_stages[ ACCEPT_Mu2_pT_Cut ] = true;
-            }
-            m_mon_Acceptance.push_back( ACCEPT_Each_Mu2_pT_Cut );
-          }
-
-          // Prepare the di-muon pair
-            //          std::vector<const TrigInDetTrackFitPar*> inputtrks;
-            std::vector<const xAOD::TrackParticle*> inputtrks;
-          std::vector<double> massHypo ;
-          inputtrks.push_back( (*track1) );
-          inputtrks.push_back( (*track2) );
-          massHypo.push_back( m_daughterMass );
-          massHypo.push_back( m_daughterMass );
-
-          // Calculate the invariant mass (hardcoded pT cut 2 GeV for monitoring purposes)
-          double Mass = 0;
-          if ( track2Chi2 <= 1e7 ) {
-            if ( track2Pt > 2000. ) {
-                // Mass = InvMass(inputtrks, massHypo);
-                Mass = m_bphysHelperTool->invariantMass(inputtrks,massHypo);
-              m_mon_InvMassNoTrkPtCut.push_back( Mass / CLHEP::GeV );
-              m_mon_InvMassNoTrkPtCut_wideRange.push_back( Mass / CLHEP::GeV );
-            } else if ( track2Pt >= m_trackPtthr ) {
-                //Mass = InvMass(inputtrks, massHypo);
-                Mass = m_bphysHelperTool->invariantMass(inputtrks,massHypo);
-            }
-          }
-
-          // Check pT and chi2
-          if ( track2Pt < m_trackPtthr || track2Chi2 > 1e7 ) continue;
-
-          // Check pT+chi2 (monitoring only)
-          if ( !flag_stages[ ACCEPT_Mu2_Chi2Pt_Cuts ] ) {
-            m_mon_Acceptance.push_back( ACCEPT_Mu2_Chi2Pt_Cuts );
-            flag_stages[ ACCEPT_Mu2_Chi2Pt_Cuts ] = true;
-          }
-          m_mon_Acceptance.push_back( ACCEPT_Each_Mu2_Chi2Pt_Cuts );
-
-          ///////// Check the di-muon properties /////////
-
-          // Check opposite charge
-          if ( m_oppositeCharge ) {
-            if (( (*track1)->charge() > 0. && (*track2)->charge() > 0. ) ||
-                ( (*track1)->charge() < 0. && (*track2)->charge() < 0. )) continue;
-            ATH_MSG_VERBOSE("Tracks " << itrk << " and " << jtrk << " are opposite sign, make mass cuts " );
-          } else {
-            ATH_MSG_VERBOSE("opposite sign cuts not applied, make mass cuts " );
-          }
-
-          // Check opposite charge (monitoring only)
-          if ( !flag_stages[ ACCEPT_Opp_Charge ] ) {
-            m_mon_Acceptance.push_back( ACCEPT_Opp_Charge );
-            flag_stages[ ACCEPT_Opp_Charge ] = true;
-          }
-          m_mon_Acceptance.push_back( ACCEPT_Each_Opp_Charge );
-
-          // Check the invariant mass cut
-          ATH_MSG_DEBUG(" mass =  " << Mass );
-          m_mon_InvMass.push_back( Mass / CLHEP::GeV );
-          m_mon_InvMass_wideRange.push_back( Mass / CLHEP::GeV );
-          if (Mass < m_mass_low_cut || Mass > m_mass_high_cut) continue;
-
-          // Check the invariant mass cut (monitoring only)
-          if ( !flag_stages[ ACCEPT_InvMass_Cut ] ) {
-            m_mon_Acceptance.push_back( ACCEPT_InvMass_Cut );
-            flag_stages[ ACCEPT_InvMass_Cut ] = true;
-          }
-          m_mon_Acceptance.push_back( ACCEPT_Each_InvMass_Cut );
-
-          PassedMass = true;
-
-          // Monitoring of the di-muon track pairs
-          m_mon_Trk1Pt .push_back( fabs((*track1)->pt()) / CLHEP::GeV );
-          m_mon_Trk2Pt .push_back( fabs((*track2)->pt()) / CLHEP::GeV );
-          m_mon_Trk1Eta.push_back( (*track1)->eta() );
-          m_mon_Trk2Eta.push_back( (*track2)->eta() );
-          m_mon_Trk1Phi.push_back( (*track1)->phi() );
-          m_mon_Trk2Phi.push_back( (*track2)->phi() );
-          m_mon_SumPtTrk12.push_back ( (fabs((*track1)->pt()) + fabs((*track2)->pt())) / CLHEP::GeV );
-
-          // Monitoring of the opening between the two tracks
-          double dTrkEta = (*track1)->eta()  - (*track2)->eta();
-          double dTrkPhi = (*track1)->phi() - (*track2)->phi();
-          double absdTrkPhi = fabs( dTrkPhi );
-          if ( 2.* M_PI - absdTrkPhi < absdTrkPhi ) {
-            if ( dTrkPhi > 0 ) {
-              dTrkPhi = dTrkPhi - 2.* M_PI;
-            } else {
-              dTrkPhi = 2* M_PI - absdTrkPhi;
-            }
-          }
-          m_mon_Trk1Trk2dEta.push_back( fabs(dTrkEta) );
-          m_mon_Trk1Trk2dPhi.push_back( fabs(dTrkPhi) );
-          m_mon_Trk1Trk2dR  .push_back( sqrt(dTrkPhi*dTrkPhi+dTrkEta*dTrkEta) );
-
-          // Found pair with good mass , now make L2Bphys object
-            //          TrigL2Bphys* trigL2Bphys = new TrigL2Bphys((*pTrackColl)->RoI_ID(),
-            //                                                     roiDescriptor->eta(),
-            //                                                     roiDescriptor->phi(),
-            //                                                     TrigL2Bphys::JPSIMUMU,
-            //                                                     Mass);
-            xAOD::TrigBphys* trigL2Bphys = new xAOD::TrigBphys();
-            m_trigBphysColl->push_back(trigL2Bphys);
-            trigL2Bphys->initialise(0,//(*pTrackColl)->RoI_ID(), #FIXME JW
-                                    roiDescriptor->eta(),
-                                    roiDescriptor->phi(),
-                                    xAOD::TrigBphys::JPSIMUMU,
-                                    Mass,
-                                    xAOD::TrigBphys::L2);
-
-            ATH_MSG_DEBUG("Create Bphys particle with roIId " << trigL2Bphys->roiId() << " mass " << Mass
-                  << " phi, eta " << trigL2Bphys->phi() << " " << trigL2Bphys->eta() << " vertex type " << trigL2Bphys->particleType() );
-
-          // Store links to the two tracks forming the di-muon
-            ElementLink<xAOD::TrackParticleContainer> track1EL(*(*pTrackColl),itrk);
-          ElementLink<xAOD::TrackParticleContainer> track2EL(*(*pTrackColl),jtrk);
-          trigL2Bphys->addTrackParticleLink(track1EL);
-          trigL2Bphys->addTrackParticleLink(track2EL);
-
-          // Set result here if mass cut is passed. Currently no vertex requirement. Need to determine what is needed.
-          result = true;
-
-          ///////////// Now do vertexing /////////////////
-
-          if ( m_doVertexFit ) {
-
-            // Vertexing time processing
-            if ( timerSvc() ) m_VtxFitTimer->resume();
-
-            // Create the vertexer
-            TrigL2Vertex* pL2V     = new TrigL2Vertex();
-            TrigVertex*   p_vertex = NULL;
-
-            // Add tracks to the vertexer
-            bool addTracks = true;
-            StatusCode sc = m_vertexingTool->addTrack( (*track1)->track(), pL2V, Trk::muon );
-            if ( sc.isFailure() ) {
-              ATH_MSG_DEBUG("Failed to add track 1 to vertexingTool pT, chi2 " << (*track1)->pt() << " " << (*track1)->chiSquared() );
-              addTracks = false;
-              // Monitoring only
-              m_mon_Errors.push_back( ERROR_AddTrack_Fails );
-              if ( !addTrackFails[itrk] ) {
-                addTrackFails[itrk] = true;
-                m_mon_Errors.push_back( ERROR_Unique_AddTrack_Fails );
-              }
-            }
-            sc = m_vertexingTool->addTrack( (*track2)->track(), pL2V, Trk::muon );
-            if ( sc.isFailure() ) {
-              ATH_MSG_DEBUG("Failed to add track 2 to vertexingTool pT, chi2 " << (*track2)->pt() << " " << (*track2)->chiSquared() );
-              addTracks = false;
-              // Monitoring only
-              m_mon_Errors.push_back( ERROR_AddTrack_Fails );
-              if ( !addTrackFails[jtrk] ) {
-                addTrackFails[jtrk] = true;
-                m_mon_Errors.push_back( ERROR_Unique_AddTrack_Fails );
-              }
-            }
-
-            //bool vtx_created = false;
-
-            if ( addTracks ) {
-
-              // Passed Add-tracks test (monitoring only)
-              if ( !flag_stages[ ACCEPT_AddTrack_Test ] ) {
-                m_mon_Acceptance.push_back( ACCEPT_AddTrack_Test );
-                flag_stages[ ACCEPT_AddTrack_Test ] = true;
-              }
-              m_mon_Acceptance.push_back( ACCEPT_Each_AddTrack_Test );
-
-              // DO THE VERTEX-FIT
-              sc = m_L2vertFitter->fit(pL2V);
-
-              // Check the result
-              if ( sc.isFailure() ) {
-                ATH_MSG_DEBUG("TrigL2VertexFitter failed" );
-              } else {
-                // Passed vertexing (monitoring only)
-                if ( !flag_stages[ ACCEPT_Vertexing ] ) {
-                  m_mon_Acceptance.push_back( ACCEPT_Vertexing );
-                  flag_stages[ ACCEPT_Vertexing ] = true;
-                }
-                m_mon_Acceptance.push_back( ACCEPT_Each_Vertexing );
-                // Calculate invariant mass
-                sc = m_vertexingTool->calculateInvariantMass(pL2V);
-                if ( sc.isSuccess() ) {
-                  // Calc. Inv. Mass succeeded (monitoring only)
-                  if ( !flag_stages[ ACCEPT_CalcInvMass ] ) {
-                    m_mon_Acceptance.push_back( ACCEPT_CalcInvMass );
-                    flag_stages[ ACCEPT_CalcInvMass ] = true;
-                  }
-                  m_mon_Acceptance.push_back( ACCEPT_Each_CalcInvMass );
-                  // Create mother particle
-                  sc = m_vertexingTool->createMotherParticle(pL2V);
-                  if ( sc.isSuccess() ) {
-                    // Creating mother particle succeeded (monitoring only)
-                    if ( !flag_stages[ ACCEPT_CalcMother ] ) {
-                      m_mon_Acceptance.push_back( ACCEPT_CalcMother );
-                      flag_stages[ ACCEPT_CalcMother ] = true;
-                    }
-                    m_mon_Acceptance.push_back( ACCEPT_Each_CalcMother );
-                    //vtx_created = true;
-                    ATH_MSG_VERBOSE("Mother particle created: pT " << pL2V->getMotherTrack()->pT() );
-                  } else {
-                    m_mon_Errors.push_back( ERROR_CalcMother_Fails );
-                  }
-                  p_vertex = m_vertexingTool->createTrigVertex(pL2V);
-                } else {
-                  m_mon_Errors.push_back( ERROR_CalcInvMass_Fails );
-                }
-              }
-            } // end of if (addTracks)
-            delete pL2V;
-
-            // Test whether the vertex-fit was successful
-            if ( p_vertex == NULL ) {
-                ATH_MSG_DEBUG(" vertex fit failed for tracks  " << itrk << " and " << jtrk );
-            } else {
-
-              // Monitoring of p_vertex != NULL
-              if ( !flag_stages[ ACCEPT_Vertex_not_NULL ] ) {
-                m_mon_Acceptance.push_back( ACCEPT_Vertex_not_NULL );
-                flag_stages[ ACCEPT_Vertex_not_NULL ] = true;
-              }
-              m_mon_Acceptance.push_back( ACCEPT_Each_Vertex_not_NULL );
-
-              // Some debugging information
-              ATH_MSG_VERBOSE( "vertex fit successful: x= y= z=" << p_vertex->x() << " " << p_vertex->y() << " " << p_vertex->z() );
-              ATH_MSG_DEBUG("vertex fit mass = " << p_vertex->mass() << " chi2 " << p_vertex->chi2() << " ndof " << p_vertex->ndof() );
-              if (p_vertex->massVariance() != 0) {
-                ATH_MSG_VERBOSE("Mass pull = " << (p_vertex->mass()-JPSIMASS)/p_vertex->massVariance() );
-              } else {
-                ATH_MSG_VERBOSE("Phi mass variance is zero, can't calculate the pull" );
-                m_mon_Errors.push_back( ERROR_CalcMassPull_Fails );
-              }
-
-              double chi2prob = 1.0 - Genfun::CumulativeChiSquare(p_vertex->ndof())(p_vertex->chi2());
-
-              ATH_MSG_VERBOSE( "Chi2 probability of the fit = " << chi2prob );
-              ATH_MSG_VERBOSE("SigmaX =  SigmaY =  SigmaZ = " << sqrt(p_vertex->cov()[0]) << " " << sqrt(p_vertex->cov()[2]) << " " << sqrt(p_vertex->cov()[5]) );
-
-              // Add vertex results to L2Bphys
-              trigL2Bphys->setFitmass( p_vertex->mass() );
-              trigL2Bphys->setFitchi2( p_vertex->chi2() );
-              trigL2Bphys->setFitndof( p_vertex->ndof() );
-              trigL2Bphys->setFitx( p_vertex->x() );
-              trigL2Bphys->setFity( p_vertex->y() );
-              trigL2Bphys->setFitz( p_vertex->z() );
-
-              m_VertexColl->push_back(p_vertex);
-              ATH_MSG_VERBOSE("added vertex to vertex collection" );
-
-              // Monitoring of the fit results
-              m_mon_FitMass_wideRange.push_back( p_vertex->mass() / CLHEP::GeV );
-              m_mon_FitMass          .push_back( p_vertex->mass() / CLHEP::GeV );
-              m_mon_InvMass_okFit    .push_back( Mass / CLHEP::GeV );
-              m_mon_Chi2toNDoF       .push_back( p_vertex->chi2() / p_vertex->ndof() );
-              m_mon_Chi2toNDoFProb   .push_back( chi2prob );
-              if ( p_vertex->getMotherTrack() != NULL ) {
-                m_mon_FitTotalPt.push_back( p_vertex->getMotherTrack()->pT() / CLHEP::GeV );
-                m_mon_SumPtTrk12_okFit.push_back( (fabs((*track1)->pt()) + fabs((*track2)->pt())) / CLHEP::GeV );
-              }
-              m_mon_FitVtxR.push_back( sqrt(p_vertex->x()*p_vertex->x() + p_vertex->y()*p_vertex->y()) / CLHEP::mm );
-              m_mon_FitVtxZ.push_back( p_vertex->z() / CLHEP::mm );
-
-            } // end if vertex fit successful
-
-            // Pause the vertexing time monitoring
-            if ( timerSvc() ) m_VtxFitTimer->pause();
-
-          } // end if do vertex fit
-
-          // Store L2Bphys to the output collection
-          ATH_MSG_DEBUG("Store L2Bphys and move onto next track" );
-          // moved to next to creation point m_trigBphysColl->push_back(trigL2Bphys);
-
-        } // end loop over track 2, looking for track pair with good mass
-      } // if pass cut on deta, dphi match to RoI
-    } // end loop over track1 looking for RoI match
-  } // end loop over track collections
-
-  // Check the size of the bphys-objects collection
-  if ( m_trigBphysColl->size() > 0 ) m_mon_Acceptance.push_back( ACCEPT_BphysColl_not_Empty );
-  m_mon_nBphys = m_trigBphysColl->size();
-
-  // Update various counters
-  if ( PassedRoIMatch ) m_countPassedRoIMatch++;
-  if ( PassedMass     ) m_countPassedMass++;
-  if ( result ) {
-    m_countPassedRoIs++;
-    if (IdEvent!= (int) m_lastEventPassed) {
-      m_countPassedEvents++;
-      m_lastEventPassed=IdEvent;
-    }
-  }
-
-  // Some debugging information
-  ATH_MSG_DEBUG(" vertex collection size : " << m_VertexColl->size() << " m_VertexColl " << m_VertexColl );
-  ATH_MSG_DEBUG("Bphys collection size : " << m_trigBphysColl->size() << " m_trigBphysColl " << m_trigBphysColl );
-
-  // Reach this point successfully
-  ATH_MSG_DEBUG("Run: " << IdRun << " Event: " << IdEvent << "  result is " << result );
-
-  // if (!m_acceptAll) pass = result;
-
-  // Stop the processing timers
-  if ( timerSvc() ) {
-    m_TotTimer   ->stop();
-    m_VtxFitTimer->resume();
-    m_VtxFitTimer->stop();
-    // Fill the monitoring variables
-    m_mon_TotalRunTime  = m_TotTimer   ->elapsed();
-    m_mon_VertexingTime = m_VtxFitTimer->elapsed();
-  }
-
-  ATH_MSG_DEBUG("m_VertexColl " << m_VertexColl << "    m_trigBphysColl " << m_trigBphysColl );
-
-  delete m_VertexColl;
-  m_VertexColl = 0;
-
-  // Attach the resulting bphys-objects to the output trigger element
-  if ( /*( m_trigBphysColl != 0 ) &&*/ ( m_trigBphysColl->size() > 0 ) ) {
-    ATH_MSG_DEBUG("REGTEST: Store Bphys Collection size: " << m_trigBphysColl->size() );
-    HLT::ErrorCode sc = attachFeature(outputTE, m_trigBphysColl, "L2TrackMass" );
-    if ( sc != HLT::OK ) {
-      ATH_MSG_WARNING("Failed to store trigBphys Collection" );
-      m_mon_Errors.push_back( ERROR_BphysColl_Fails );
-      return sc;
-    }
-  } else {
-    ATH_MSG_DEBUG("REGTEST: no bphys collection to store " );
-    delete m_trigBphysColl;
-  }
-  m_trigBphysColl = nullptr;
-
-  return HLT::OK;
-}
-
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2TrkMassFex.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2TrkMassFex.h
deleted file mode 100644
index 5af2c10de9660865c5c9746fd3a00a976a5c1ef3..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2TrkMassFex.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-// *******************************************************************
-//
-// NAME:     TrigL2TrkMassFex.h
-// PACKAGE:  Trigger/TrigHypothesis/TrigBphysHypo
-// AUTHOR:   Julie Kirk
-//
-// *******************************************************************
-
-#ifndef TRIG_TrigL2TrkMassFex_H
-#define TRIG_TrigL2TrkMassFex_H
-
-#include <string>
-
-#include "TrigInterfaces/FexAlgo.h"
-
-#include "TrigInDetEvent/TrigVertexCollection.h"
-#include "TrigInDetToolInterfaces/ITrigVertexFitter.h"
-#include "TrigInDetToolInterfaces/ITrigL2VertexFitter.h"
-
-#include "xAODTrigBphys/TrigBphysContainer.h"
-#include "xAODTrigBphys/TrigBphysAuxContainer.h"
-#include "xAODTrigBphys/TrigBphys.h"
-
-#include "TrigTimeAlgs/TrigTimerSvc.h"
-
-class TriggerElement;
-
-class ITrigVertexFitter;
-class ITrigL2VertexFitter;
-class ITrigVertexingTool;
-
-class TrigBphysHelperUtilsTool;
-
-
-class TrigL2TrkMassFex: public HLT::FexAlgo {
-
-  public:
-
-    TrigL2TrkMassFex(const std::string & name, ISvcLocator* pSvcLocator);
-    ~TrigL2TrkMassFex();
-
-    HLT::ErrorCode hltInitialize();
-    HLT::ErrorCode hltFinalize();
-    HLT::ErrorCode hltExecute(const HLT::TriggerElement* inputTE, HLT::TriggerElement* outputTE);
-    // HLT::ErrorCode acceptInput(const HLT::TriggerElement* inputTE, bool& pass );
-
-  private:
-    ToolHandle <TrigBphysHelperUtilsTool> m_bphysHelperTool;
-
-    // container inputs names
-    std::string m_input_trackCollectionKey; //! list of tracks to search for second leg
-    
-    // Configurable properties - cuts
-    float m_matchL1;
-    float m_trackPtthr;
-    float m_muonPtthr;
-    float m_dEta_cut;
-    float m_dPhi_cut;
-    float m_daughterMass;
-    float m_mass_low_cut;
-    float m_mass_high_cut;
-
-    // Configurable properties - boolean switches
-    bool  m_doVertexFit;
-    bool  m_acceptAll;
-    bool  m_oppositeCharge;
-
-    // Configurable properties - vertexing tools
-    ToolHandle<ITrigVertexFitter>   m_vertFitter;
-    ToolHandle<ITrigL2VertexFitter> m_L2vertFitter;
-    ToolHandle<ITrigVertexingTool>  m_vertexingTool;
-
-    // Timers
-    TrigTimer* m_TotTimer;
-    TrigTimer* m_VtxFitTimer;
-
-    // Counters
-    unsigned int m_lastEvent;
-    unsigned int m_lastEventPassed;
-    unsigned int m_countTotalEvents;
-    unsigned int m_countTotalRoI;
-    unsigned int m_countPassedEvents;
-    unsigned int m_countPassedRoIs;
-    unsigned int m_countPassedRoIMatch;
-    unsigned int m_countPassedMass;
-
-    // Output collections
-    xAOD::TrigBphysContainer* m_trigBphysColl;
-    TrigVertexCollection* m_VertexColl;
-
-    // Monitored variables
-    std::vector<int>   m_mon_Errors;
-    std::vector<int>   m_mon_Acceptance;
-    std::vector<float> m_mon_ROIEta;
-    std::vector<float> m_mon_ROIPhi;
-    int                m_mon_nTracks;
-    std::vector<float> m_mon_TrkPt;
-    std::vector<float> m_mon_TrkPt_wideRange;
-    std::vector<float> m_mon_TrkEta;
-    std::vector<float> m_mon_TrkPhi;
-    std::vector<float> m_mon_TrkROIdEta;
-    std::vector<float> m_mon_TrkROIdPhi;
-    std::vector<float> m_mon_TrkROIdR;
-    std::vector<float> m_mon_InvMassNoTrkPtCut;
-    std::vector<float> m_mon_InvMassNoTrkPtCut_wideRange;
-    std::vector<float> m_mon_InvMass;
-    std::vector<float> m_mon_InvMass_wideRange;
-    std::vector<float> m_mon_Trk1Pt;
-    std::vector<float> m_mon_Trk2Pt;
-    std::vector<float> m_mon_Trk1Eta;
-    std::vector<float> m_mon_Trk2Eta;
-    std::vector<float> m_mon_Trk1Phi;
-    std::vector<float> m_mon_Trk2Phi;
-    std::vector<float> m_mon_Trk1Trk2dEta;
-    std::vector<float> m_mon_Trk1Trk2dPhi;
-    std::vector<float> m_mon_Trk1Trk2dR;
-    std::vector<float> m_mon_SumPtTrk12;
-    std::vector<float> m_mon_FitMass;
-    std::vector<float> m_mon_FitMass_wideRange;
-    std::vector<float> m_mon_InvMass_okFit;
-    std::vector<float> m_mon_Chi2toNDoF;
-    std::vector<float> m_mon_Chi2toNDoFProb;
-    std::vector<float> m_mon_FitTotalPt;
-    std::vector<float> m_mon_SumPtTrk12_okFit;
-    std::vector<float> m_mon_FitVtxR;
-    std::vector<float> m_mon_FitVtxZ;
-    int                m_mon_nBphys;
-    float              m_mon_TotalRunTime;
-    float              m_mon_VertexingTime;
-
-};
-
-#endif
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2TrkMassHypo.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2TrkMassHypo.cxx
deleted file mode 100644
index 36bf04da1f22e3e978503898b7933474af031d4e..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2TrkMassHypo.cxx
+++ /dev/null
@@ -1,176 +0,0 @@
-// -*- C++ -*-
-
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/**************************************************************************
- **
- **   File: Trigger/TrigHypothesis/TrigBPhysHypo/TrigL2TrkMassHypo.cxx
- **
- **   Description: L2 hypothesis algorithms for tag and probe (tracks with mass cut)
- **                Create TrigL2Bphys
- **
- **   Author: J.Kirk
- **
- **   Created:   14.10.2007
- **   Modified:
- **
- **************************************************************************/
-
-#include "TrigL2TrkMassHypo.h"
-#include <math.h>
-#include "xAODTrigger/TrigPassBits.h"
-#include "TrigNavigation/Navigation.h"
-
-// additions of xAOD objects
-#include "TrigBphysHelperUtilsTool.h"
-#include "xAODTrigBphys/TrigBphysContainer.h"
-#include "CLHEP/Units/SystemOfUnits.h"
-
-class ISvcLocator;
-
-TrigL2TrkMassHypo::TrigL2TrkMassHypo(const std::string & name, ISvcLocator* pSvcLocator):
-  HLT::HypoAlgo(name, pSvcLocator)
-,m_bphysHelperTool("TrigBphysHelperUtilsTool")
-,m_lastEvent(-1)
-,m_lastEventPassed(-1)
-,m_countTotalEvents(0)
-,m_countTotalRoI(0)
-,m_countPassedEvents(0)
-,m_countPassedRoIs(0)
-{
-
-  // Read cuts
-  declareProperty("AcceptAll",    m_acceptAll=true);
-
-  declareMonitoredVariable(    "CutCounter",  m_mon_cutCounter);
-  declareMonitoredVariable(    "NBphys",      m_mon_NBphys);
-  declareMonitoredStdContainer("Mass",        m_mon_Mass,        AutoClear);
-  //declareMonitoredStdContainer("FitMass",     m_mon_FitMass,     AutoClear);
-  //declareMonitoredStdContainer("Chi2",        m_mon_Chi2,        AutoClear);
-  //declareMonitoredStdContainer("Chi2Prob",    m_mon_Chi2Prob,    AutoClear);
-
-}
-
-TrigL2TrkMassHypo::~TrigL2TrkMassHypo()
-{ }
-
-HLT::ErrorCode TrigL2TrkMassHypo::hltInitialize()
-{
-  ATH_MSG_DEBUG("AcceptAll            = " << (m_acceptAll==true ? "True" : "False") );
-
-  m_lastEvent = -1;
-  m_lastEventPassed = -1;
-  m_countTotalEvents =0;
-  m_countTotalRoI =0;
-  m_countPassedEvents =0;
-  m_countPassedRoIs =0;
-    
-    if (m_bphysHelperTool.retrieve().isFailure()) {
-        ATH_MSG_ERROR("Can't find TrigBphysHelperUtilsTool" );
-        return HLT::BAD_JOB_SETUP;
-    } else {
-        if (msgLvl() <= MSG::DEBUG) ATH_MSG_DEBUG("TrigBphysHelperUtilsTool found" );
-    }
-
-  return HLT::OK;
-}
-
-HLT::ErrorCode TrigL2TrkMassHypo::hltFinalize()
-{
-  ATH_MSG_INFO("in finalize()" );
-  ATH_MSG_INFO("|----------------------- SUMMARY FROM TrigL2TrkMassHypo -------------|" );
-  ATH_MSG_INFO("Run on events/2xRoIs " << m_countTotalEvents << "/" << m_countTotalRoI );
-  ATH_MSG_INFO("Passed events/2xRoIs " << m_countPassedEvents << "/" << m_countPassedRoIs );
-
-  return HLT::OK;
-}
-
-//-------------------------------------------------------------------------------------
-HLT::ErrorCode TrigL2TrkMassHypo::hltExecute(const HLT::TriggerElement* outputTE, bool& pass)
-{
-
-  bool result = false;
-  m_mon_cutCounter = -1;
-
-    // Retrieve event info
-    //    int IdRun   = 0;
-    int IdEvent = 0;
-    // event info
-    uint32_t runNumber(0), evtNumber(0), lbBlock(0);
-    if (m_bphysHelperTool->getRunEvtLb( runNumber, evtNumber, lbBlock).isFailure()) {
-        ATH_MSG_ERROR("Error retriving EventInfo" );
-    }
-    //    IdRun = runNumber;
-    IdEvent = evtNumber;
-
-    if (IdEvent != m_lastEvent) {
-    m_countTotalEvents++;
-    m_lastEvent=IdEvent;
-  }
-  m_countTotalRoI++;
-
-
-  // Accept-All mode: temporary patch; should be done with force-accept
-  if (m_acceptAll) {
-    pass = true;
-    //return HLT::OK;
-  }
-  ATH_MSG_DEBUG("AcceptAll is set to : " << (m_acceptAll ? "True, taking all events " : "False, applying selection" ));
-
-//  create vector for TrigL2Bphys particles
-    const xAOD::TrigBphysContainer* trigBphysColl = 0;
-
-  HLT::ErrorCode status = getFeature(outputTE, trigBphysColl, "L2TrackMass");
-
-  if ( status != HLT::OK ) {
-    ATH_MSG_WARNING("Failed to get TrigBphysics collection" );
-    return HLT::OK;
-  }
-
-  ATH_MSG_DEBUG(" Retrieved Bphys collection  trigBphysColl = " << trigBphysColl );
-  // if no Bphys particles were found, just leave TrigBphysColl and leave
-  if ( trigBphysColl == 0 ) {
-    ATH_MSG_DEBUG("No Bphys particles to analyse, leaving!" );
-
-    m_mon_NBphys=0;
-    return HLT::OK;
-  }
-  m_mon_cutCounter = 0;  // this is to separate bad input TE and true behaviour of the first cut
-
-  m_mon_NBphys=trigBphysColl->size();
-
-  ATH_MSG_DEBUG("Got TrigBphys collection with " << trigBphysColl->size() << " TrigBphys particles " );
-
-  //TrigPassBits *bits = HLT::makeTrigPassBits(trigBphysColl);
-  std::unique_ptr<xAOD::TrigPassBits> xBits = xAOD::makeTrigPassBits<xAOD::TrigBphysContainer>(trigBphysColl);
-
-  // now loop over Bphys particles to see if one passes hypo cuts- not ready, just monitoring
-  xAOD::TrigBphysContainer::const_iterator bphysIter = trigBphysColl->begin();
-  for ( ; bphysIter != trigBphysColl->end(); ++bphysIter) {
-    m_mon_Mass.push_back(((*bphysIter)->mass()) / CLHEP::GeV);   // conversion to GeV
-    //HLT::markPassing(bits, *bphysIter, trigBphysColl);
-    xBits->markPassing((*bphysIter),trigBphysColl,true);
-  }
-
-  result=true;
-
-  if (result) {
-    m_countPassedRoIs++;
-    if (IdEvent!= m_lastEventPassed) {
-      m_countPassedEvents++;
-      m_lastEventPassed=IdEvent;
-    }
-    pass=true;
-  }
-
-  // store result
-  //if ( attachBits(outputTE, bits) != HLT::OK ) {
-  //  ATH_MSG_ERROR("Problem attaching TrigPassBits! " );
-  //}
-  if(attachFeature(outputTE, xBits.release(),"passbits") != HLT::OK)
-      ATH_MSG_ERROR("Could not store TrigPassBits! ");
-
-  return HLT::OK;
-}
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2TrkMassHypo.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2TrkMassHypo.h
deleted file mode 100644
index bde77bb7ed012cdb836830fd4a3e04450e6e8fbc..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigL2TrkMassHypo.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-
-#ifndef TRIGL2TRKMASSHYPO_H
-#define TRIGL2TRKMASSHYPO_H
-
-#include "TrigInterfaces/HypoAlgo.h"
-#include "Constants.h"
-
-class TriggerElement;
-class TrigBphysHelperUtilsTool;
-
-class TrigL2TrkMassHypo: public HLT::HypoAlgo
-{
-
-public:
-    TrigL2TrkMassHypo(const std::string& name, ISvcLocator* pSvcLocator);
-    ~TrigL2TrkMassHypo();
-
-    HLT::ErrorCode hltInitialize();
-    HLT::ErrorCode hltFinalize();
-    HLT::ErrorCode hltExecute(const HLT::TriggerElement* outputTE, bool& pass);
-	
-    bool execHLTAlgorithm(TriggerElement* );
-
-private:
-    ToolHandle <TrigBphysHelperUtilsTool> m_bphysHelperTool;
-
-    BooleanProperty m_acceptAll;
-    int m_lastEvent;
-    int m_lastEventPassed;
-    unsigned int m_countTotalEvents;
-    unsigned int m_countTotalRoI;
-    unsigned int m_countPassedEvents;
-    unsigned int m_countPassedRoIs;
-    void handle(const Incident &); 
-
-    /* monitored variables */
-    int m_mon_cutCounter;
-    int m_mon_NBphys;
-    std::vector<float> m_mon_Mass;
-    //std::vector<float> m_mon_FitMass;
-    //std::vector<float> m_mon_Chi2;
-    //std::vector<float> m_mon_Chi2Prob;
-
-};
-
-#endif 
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypo.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypo.cxx
index 271aedb7a98cc0838fd4793631f4a3d229ef9547..87237ada82ea6805d35f63e241cca1a3d6ece6d1 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypo.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypo.cxx
@@ -352,7 +352,7 @@ StatusCode TrigMultiTrkComboHypo::executeEF(const EventContext& context) const {
 
     for (const xAOD::Muon* muon : *muonsHandle) {
       if (!muon->trackParticle(xAOD::Muon::TrackParticleType::CombinedTrackParticle)) continue;
-      const ElementLink<xAOD::TrackParticleContainer> trackEL = muon->inDetTrackParticleLink();
+      const ElementLink<xAOD::TrackParticleContainer>& trackEL = muon->inDetTrackParticleLink();
       CHECK( trackEL.isValid() );
       tracksFromView.emplace_back(trackEL);
     }
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkFex.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkFex.cxx
index 9c58b38e8c85897dbba635a7825a3f6ae9ff3f70..8e62f011bfa067ff1e89c62c4f144f743b172ea1 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkFex.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkFex.cxx
@@ -489,7 +489,7 @@ HLT::ErrorCode TrigMultiTrkFex::hltExecute(std::vector<std::vector<HLT::TriggerE
       if( m_nTrkQ >= 0 ){
 	int charge = 0;
 	//for(const auto& trk : thisIterationTracks)
- 	for(ElementLink<xAOD::TrackParticleContainer> trk : thisIterationTracks) 
+ 	for(const ElementLink<xAOD::TrackParticleContainer>& trk : thisIterationTracks) 
 	  charge += ( (*trk)->charge() > 0 ) ? 1 : -1 ;
 	if( abs(charge) != m_nTrkQ ){
 	  ATH_MSG_DEBUG(" |Charge| = "<< abs(charge) << " required "<<m_nTrkQ << " thus fail" );
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkFex.h b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkFex.h
index 41aa829e87e425a08c55fa1d49c0c270c37c7199..c8ab104cdc03db073ee327ff347aea4135071a41 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkFex.h
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkFex.h
@@ -19,12 +19,9 @@
 
 // standard stuff
 #include <string>
-#include <map>
-#include <cmath> 
 #include <algorithm>
 
 #include "TrigInterfaces/AllTEAlgo.h"
-#include "xAODTrigBphys/TrigBphysContainer.h"
 
 class TrigBphysHelperUtilsTool;
 class TrigTimer;
@@ -67,9 +64,6 @@ class TrigMultiTrkFex: public HLT::AllTEAlgo  {
 		   float mindR) ;
 
 
-  //void processTriMuon(HLT::TEConstVec& inputTE, xAOD::TrigBphysContainer & outputContainer);
-  // void buildDiMu (const std::vector<const xAOD::Muon*> &muons, xAOD::TrigBphysContainer & outputContainer);
-  //void buildTriMu(const std::vector<const xAOD::Muon*> &muons, xAOD::TrigBphysContainer & outputContainer);
     
     ToolHandle <TrigBphysHelperUtilsTool> m_bphysHelperTool;
     
diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/components/TrigBphysHypo_entries.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/components/TrigBphysHypo_entries.cxx
index 7f303c13b493eee4cee2c1d8e596f2e969ac0dbc..547a29ede789c37fe153162490da1221eac3edaa 100644
--- a/Trigger/TrigHypothesis/TrigBphysHypo/src/components/TrigBphysHypo_entries.cxx
+++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/components/TrigBphysHypo_entries.cxx
@@ -16,8 +16,6 @@
 //#include "TrigBphysHypo/TrigL2DsPhiPiFex.h"
 //#include "../TrigL2DiMuXHypo.h"
 //#include "../TrigL2DiMuXFex.h"
-#include "../TrigL2TrkMassFex.h"
-#include "../TrigL2TrkMassHypo.h"
 #include "../TrigEFTrkMassHypo.h"
 #include "../TrigMultiTrkFex.h"
 #include "../TrigBphysMuonCounter.h"
@@ -53,8 +51,7 @@ DECLARE_COMPONENT( TrigEFMultiMuHypo )
 //DECLARE_COMPONENT( TrigL2DiMuHypo )
 //DECLARE_COMPONENT( TrigL2DsPhiPiHypo )
 //DECLARE_COMPONENT( TrigL2DsPhiPiFex )
-DECLARE_COMPONENT( TrigL2TrkMassFex )
-DECLARE_COMPONENT( TrigL2TrkMassHypo )
+
 DECLARE_COMPONENT( TrigEFTrkMassHypo )
 //DECLARE_COMPONENT( TrigL2LooseMuonHypo )
 
diff --git a/Trigger/TrigHypothesis/TrigMissingETHypo/src/TrigEFMissingETHypo.h b/Trigger/TrigHypothesis/TrigMissingETHypo/src/TrigEFMissingETHypo.h
old mode 100644
new mode 100755
diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorBaseAlgorithm.cxx b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorBaseAlgorithm.cxx
index 49532041f20309e8a14a3dbfc6bbd6926eed5055..cab1102c02198512b57d98171d2d6664c245275b 100644
--- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorBaseAlgorithm.cxx
+++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorBaseAlgorithm.cxx
@@ -167,13 +167,21 @@ asg::AcceptData TrigEgammaMonitorBaseAlgorithm::setAccept( const TrigCompositeUt
         if(info.trigType == "electron"){
             ATH_MSG_DEBUG("Check for active features: TrigElectron, ElectronContainer, TrackParticleContainer");
             passedL2    = match()->ancestorPassed<xAOD::TrigElectronContainer>(dec, trigger, "HLT_FastElectrons");
-            passedEF    = match()->ancestorPassed<xAOD::ElectronContainer>(dec, trigger, "HLT_egamma_Electrons");
+            if (info.trigEtcut){
+              passedEF=true;
+            }else{
+              passedEF    = match()->ancestorPassed<xAOD::ElectronContainer>(dec, trigger, "HLT_egamma_Electrons");
+            }
             passedEFTrk = true; //match()->ancestorPassed<xAOD::TrackParticleContainer>(dec);
         }
         else if(info.trigType == "photon"){
             ATH_MSG_DEBUG("Check for active features: TrigPhoton, PhotonContainer");
             passedL2 = match()->ancestorPassed<xAOD::TrigPhotonContainer>(dec, trigger, "HLT_FastPhotons");
-            passedEF = match()->ancestorPassed<xAOD::PhotonContainer>(dec, trigger, "HLT_egamma_Photons");
+            if (info.trigEtcut){
+              passedEF=true;
+            }else{
+              passedEF = match()->ancestorPassed<xAOD::PhotonContainer>(dec, trigger, "HLT_egamma_Photons");
+            }
             passedEFTrk=true;// Assume true for photons
         }
     }
diff --git a/Trigger/TrigMonitoring/TrigIDtrkMonitoring/python/TrigIDPhysValMonitoringConfig.py b/Trigger/TrigMonitoring/TrigIDtrkMonitoring/python/TrigIDPhysValMonitoringConfig.py
index 998080e7548778716a8bd56cd7e43a73eb4dea6e..04390e1abae5ed835057120458a5782a5585ffc4 100644
--- a/Trigger/TrigMonitoring/TrigIDtrkMonitoring/python/TrigIDPhysValMonitoringConfig.py
+++ b/Trigger/TrigMonitoring/TrigIDtrkMonitoring/python/TrigIDPhysValMonitoringConfig.py
@@ -119,9 +119,9 @@ def TrigIDPhysValMonitoringTool( legacy_monitoring=False ):
     if mt_chains:
       chainnames = [
         "HLT_mu.*idperf.*:key=HLT_IDTrack_Muon_FTF:roi=HLT_Roi_L2SAMuon",
-        "HLT_mu.*idperf.*:key=HLT_IDTrack_Muon_FTF:roi=HLT_Roi_L2SAMuonForEF",
-        "HLT_mu.*idperf.*:key=HLT_IDTrack_Muon_IDTrig:roi=HLT_Roi_L2SAMuon",
-        "HLT_mu.*idperf.*:key=HLT_IDTrack_Muon_IDTrig:roi=HLT_Roi_L2SAMuonForEF"
+        "HLT_mu.*idperf.*:key=HLT_IDTrack_Muon_IDTrig:roi=HLT_Roi_L2SAMuonForEF",
+        "HLT_mu.*i.*:key=HLT_IDTrack_MuonIso_FTF:roi=HLT_Roi_MuonIso",
+        "HLT_mu.*i.*:key=HLT_IDTrack_MuonIso_IDTrig:roi=HLT_Roi_MuonIso"
       ]
     else:
       chainnames = [
@@ -157,9 +157,8 @@ def TrigIDPhysValMonitoringTool( legacy_monitoring=False ):
     if mt_chains:
       chainnames = [
         "HLT_tau.*idperf.*tracktwo.*:key=HLT_IDTrack_TauCore_FTF:roi=HLT_Roi_TauCore",
-        "HLT_tau.*idperf.*tracktwo.*:key=HLT_IDTrack_TauIso_FTF:roi=HLT_Roi_TauIso",
-        "HLT_tau.*idperf.*tracktwo.*:key=HLT_IDTrack_Tau_IDTrig",
-        "HLT_tau.*idperf.*tracktwo.*:key=HLT_IDTrack_Tau_FTF"
+        "HLT_tau.*idperf.*tracktwo.*:key=HLT_IDTrack_TauIso_FTF:roi=HLT_Roi_TauIso_TauID",
+        "HLT_tau.*idperf.*tracktwo.*:key=HLT_IDTrack_Tau_IDTrig:roi=HLT_Roi_TauIso_TauID"
       ]
     else:
       chainnames = [
diff --git a/Trigger/TrigMonitoring/TrigIDtrkMonitoring/python/TrigIDtrkMonitoringConfig.py b/Trigger/TrigMonitoring/TrigIDtrkMonitoring/python/TrigIDtrkMonitoringConfig.py
index d431c4aa426518290ce2603501468edc5bdd8084..2eb38e57392e5a89866c69dfa0c9f6ad948c531c 100644
--- a/Trigger/TrigMonitoring/TrigIDtrkMonitoring/python/TrigIDtrkMonitoringConfig.py
+++ b/Trigger/TrigMonitoring/TrigIDtrkMonitoring/python/TrigIDtrkMonitoringConfig.py
@@ -178,9 +178,9 @@ def TrigIDtrkMonitoringTool( legacy_monitoring=False ):
                         tidamuon.ntupleChainNames += [
                                 "Offline",
                                 "HLT_mu.*idperf.*:key=HLT_IDTrack_Muon_FTF:roi=HLT_Roi_L2SAMuon",
-                                "HLT_mu.*idperf.*:key=HLT_IDTrack_Muon_FTF:roi=HLT_Roi_L2SAMuonForEF",
-                                "HLT_mu.*idperf.*:key=HLT_IDTrack_Muon_IDTrig:roi=HLT_Roi_L2SAMuon",
-                                "HLT_mu.*idperf.*:key=HLT_IDTrack_Muon_IDTrig:roi=HLT_Roi_L2SAMuonForEF"
+                                "HLT_mu.*idperf.*:key=HLT_IDTrack_Muon_IDTrig:roi=HLT_Roi_L2SAMuonForEF",
+                                "HLT_mu.*i.*:key=HLT_IDTrack_MuonIso_FTF:roi=HLT_Roi_MuonIso",
+                                "HLT_mu.*i.*:key=HLT_IDTrack_MuonIso_IDTrig:roi=HLT_Roi_MuonIso"
                         ]
                 else:
                         tidamuon.ntupleChainNames += [
@@ -256,10 +256,9 @@ def TrigIDtrkMonitoringTool( legacy_monitoring=False ):
                         tidatau.ntupleChainNames += [
                                 "Offline",
                                 "HLT_tau.*idperf.*:key=HLT_IDTrack_TauCore_FTF:roi=HLT_Roi_TauCore",
-                                "HLT_tau.*idperf.*:key=HLT_IDTrack_TauIso_FTF:roi=HLT_Roi_TauIso",
-                                "HLT_tau.*idperf.*:key=HLT_IDTrack_Tau_FTF:roi=HLT_TAURoI",
-                                "HLT_tau.*idperf.*:key=HLT_IDTrack_Tau_IDTrig:roi=HLT_TAURoI"
-                        ]
+                                "HLT_tau.*idperf.*:key=HLT_IDTrack_TauIso_FTF:roi=HLT_Roi_TauIso_TauID",
+                                "HLT_tau.*idperf.*:key=HLT_IDTrack_Tau_IDTrig:roi=HLT_TauIso_TauID"
+                         ]
                 else:
                         tidatau.ntupleChainNames += [
                                 "Offline",
diff --git a/Trigger/TrigSteer/DecisionHandling/src/ITestHypoTool.cxx b/Trigger/TrigSteer/DecisionHandling/src/ITestHypoTool.cxx
index 45961109ccef4f12d8eac26b2c4b4201ee9ee7bd..5cce8c623a225fe4c27dca365c36e6d3cd056e39 100644
--- a/Trigger/TrigSteer/DecisionHandling/src/ITestHypoTool.cxx
+++ b/Trigger/TrigSteer/DecisionHandling/src/ITestHypoTool.cxx
@@ -4,7 +4,6 @@
 // Framework includes
 
 
-// TrigUpgradeTest includes
 #include "./ITestHypoTool.h"
 
 namespace HLTTest {
diff --git a/Trigger/TrigSteer/DecisionHandling/src/TestHypoAlg.cxx b/Trigger/TrigSteer/DecisionHandling/src/TestHypoAlg.cxx
index 59728a21beeea065a9d05b4c7ab290e415f0185b..e33ed7f576c3837e2c4bfa52ccf1002cf236c298 100644
--- a/Trigger/TrigSteer/DecisionHandling/src/TestHypoAlg.cxx
+++ b/Trigger/TrigSteer/DecisionHandling/src/TestHypoAlg.cxx
@@ -2,7 +2,6 @@
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
 
-// TrigUpgradeTest includes
 #include "TestHypoAlg.h"
 
 namespace HLTTest {
diff --git a/Trigger/TrigSteer/DecisionHandling/src/TestHypoTool.cxx b/Trigger/TrigSteer/DecisionHandling/src/TestHypoTool.cxx
index 736aea835f2fb3b6659ea3106f92f07757b28007..e8306a9a7b2597f1716b8192abc4b62344b00cd2 100644
--- a/Trigger/TrigSteer/DecisionHandling/src/TestHypoTool.cxx
+++ b/Trigger/TrigSteer/DecisionHandling/src/TestHypoTool.cxx
@@ -1,7 +1,6 @@
 /*
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
-// TrigUpgradeTest includes
 #include "TestHypoTool.h"
 #include "TrigCompositeUtils/HLTIdentifier.h"
 
diff --git a/Trigger/TrigSteer/DecisionHandling/src/TestInputMaker.cxx b/Trigger/TrigSteer/DecisionHandling/src/TestInputMaker.cxx
index a8725de093eea637076a94660926a6b192121361..d50e2a4ab93962f0e729e2631e2b4559de1ba651 100644
--- a/Trigger/TrigSteer/DecisionHandling/src/TestInputMaker.cxx
+++ b/Trigger/TrigSteer/DecisionHandling/src/TestInputMaker.cxx
@@ -2,7 +2,6 @@
   Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
-// TrigUpgradeTest includes
 #include "TestInputMaker.h"
 #include <xAODTrigger/TrigCompositeAuxContainer.h>
 #include <TrigSteeringEvent/TrigRoiDescriptorCollection.h>
diff --git a/Trigger/TrigSteer/DecisionHandling/src/TestRecoAlg.cxx b/Trigger/TrigSteer/DecisionHandling/src/TestRecoAlg.cxx
index b9cd0a9016896a41ad2f3eb116e628eb4fb9bc2f..d29cceb2c5bb59db50631943aae7ba3e8a32d91a 100644
--- a/Trigger/TrigSteer/DecisionHandling/src/TestRecoAlg.cxx
+++ b/Trigger/TrigSteer/DecisionHandling/src/TestRecoAlg.cxx
@@ -2,7 +2,6 @@
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
 
-// TrigUpgradeTest includes
 #include <iostream>
 #include <fstream>
 #include <xAODTrigger/TrigCompositeAuxContainer.h>
diff --git a/Trigger/TrigValidation/TrigInDetValidation/CMakeLists.txt b/Trigger/TrigValidation/TrigInDetValidation/CMakeLists.txt
index 2475d0234283fc6519a9db9f4ef7d08076c65b22..feeaa28058a5bc44b3d5583a3e55d93a0e98f659 100644
--- a/Trigger/TrigValidation/TrigInDetValidation/CMakeLists.txt
+++ b/Trigger/TrigValidation/TrigInDetValidation/CMakeLists.txt
@@ -10,7 +10,7 @@ find_package( requests )
 
 # Install files from the package:
 atlas_install_python_modules( python/*.py )
-atlas_install_joboptions( share/TrigInDetValidation_*.py )
+atlas_install_joboptions( share/TrigInDetValidation_*.py share/Cosmic.py )
 atlas_install_runtime( test/TrigInDetValidation_TestConfiguration.xml share/TrigInDetValidation_*.py TIDAbuild )
 
 atlas_install_scripts( scripts/TIDA*.py test/test*.py POST_BUILD_CMD ${ATLAS_FLAKE8} --extend-ignore=ATL902 )
diff --git a/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py b/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py
index 8f1b961516c58b4a09399505cf62f599773e71ae..00de0cd421a72bcbbb0c426541a337d554e3433a 100644
--- a/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py
+++ b/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py
@@ -160,12 +160,12 @@ class TrigInDetCompStep(RefComparisonStep):
             if (self.test=='ttbar'):
                 self.output_dir = self.output_dir+'-bjet'
         elif (self.flag == 'L2tau'):
-            self.chains = 'HLT_tau25_idperf_tracktwo_L1TAU12IM:HLT_IDTrack_TauCore_FTF'
+            self.chains = 'HLT_tau25_idperf_tracktwo_L1TAU12IM:HLT_IDTrack_TauCore_FTF:HLT_Roi_TauCore'
             self.output_dir = 'HLTL2-plots'
             if (self.test=='ttbar'):
                 self.output_dir = self.output_dir+'-tau'
         elif (self.flag == 'EFtau'):
-            self.chains = 'HLT_tau25_idperf_tracktwo_L1TAU12IM:HLT_IDTrack_TauCore_FTF HLT_tau25_idperf_tracktwo_L1TAU12IM:HLT_IDTrack_Tau_IDTrig'
+            self.chains = 'HLT_tau25_idperf_tracktwo_L1TAU12IM:HLT_IDTrack_TauCore_FTF:HLT_Roi_TauCore HLT_tau25_idperf_tracktwo_L1TAU12IM:HLT_IDTrack_Tau_IDTrig:HLT_TAURoI'
             self.output_dir = 'HLTEF-plots'
             if (self.test=='ttbar'):
                 self.output_dir = self.output_dir+'-tau'
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/Cosmic.py b/Trigger/TrigValidation/TrigInDetValidation/share/Cosmic.py
similarity index 99%
rename from Trigger/TrigValidation/TrigUpgradeTest/share/Cosmic.py
rename to Trigger/TrigValidation/TrigInDetValidation/share/Cosmic.py
index c1a6d765a0236b9d79c32bb11f9a783be0109fa5..5e3fcb4ad2f50a22bdbdc78973072b77fbc0deee 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/share/Cosmic.py
+++ b/Trigger/TrigValidation/TrigInDetValidation/share/Cosmic.py
@@ -3,6 +3,7 @@
 #
 doWriteRDOTrigger = False
 doWriteBS = False
+doEmptyMenu = True
 include("TriggerJobOpts/runHLT_standalone.py")
 
 from AthenaCommon.AlgSequence import AlgSequence
diff --git a/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_AODtoTrkNtuple.py b/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_AODtoTrkNtuple.py
index 6bdeccf6197c0dba79b08e17b7d4a522bf19317f..8a5f171b9615841401da3f46d734420fbffff495 100644
--- a/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_AODtoTrkNtuple.py
+++ b/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_AODtoTrkNtuple.py
@@ -166,7 +166,9 @@ if ( True ) :
     "HLT_tau.*_idperf.*:HLT_IDTrack_TauCore_FTF:roi=HLT_Roi_TauCore",
     "HLT_tau.*_idperf.*:HLT_IDTrack_TauIso_FTF:roi=HLT_Roi_TauIso",
     "HLT_tau.*_idperf.*:HLT_IDTrack_Tau_IDTrig",
-    "HLT_tau.*_idperf.*:HLT_IDTrack_Tau_FTF"
+    "HLT_tau.*_idperf.*:HLT_IDTrack_Tau_FTF",
+    "HLT_tau.*_idperf.*:HLT_IDTrack_Tau_IDTrig:roi=HLT_TAURoI",
+    "HLT_tau.*_idperf.*:HLT_IDTrack_Tau_FTF:roi=HLT_TAURoI"
 
     ]
   
diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80.py
index 3e245532abfa3e47ad528452aba55054b9c4375d..52c412a27cbd00bdf31f0c434e1c2beae5645afd 100755
--- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80.py
+++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80.py
@@ -119,6 +119,11 @@ comp8.flag='EFele'
 comp8.test='ttbar'
 test.check_steps.append(comp8)
 
+comp9=TrigInDetCompStep('Comp_L2FS')
+comp9.flag='L2FS'
+comp9.test='ttbar'
+test.check_steps.append(comp9)
+
 # CPU cost steps
 cpucost=TrigInDetCpuCostStep('CpuCostStep1')
 test.check_steps.append(cpucost)
diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_mt.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_mt.py
index c405eab7dc6d28c479b4fd2d2b5d7d8bc71f8ddc..6b7587ffe18d4d36397c79e4baa76e99428cdba4 100755
--- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_mt.py
+++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_mt.py
@@ -119,6 +119,11 @@ comp8.flag='EFele'
 comp8.test='ttbar'
 test.check_steps.append(comp8)
 
+comp9=TrigInDetCompStep('Comp_L2FS')
+comp9.flag='L2FS'
+comp9.test='ttbar'
+test.check_steps.append(comp9)
+
 # CPU cost steps
 cpucost=TrigInDetCpuCostStep('CpuCostStep1')
 test.check_steps.append(cpucost)
diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_mt2.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_mt2.py
index 284d2f4d37406dba3d485a6dfb2c2ac25b6c772d..582cb2cc0c5c14960ab097eb02ebdb3a8f75fb3f 100755
--- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_mt2.py
+++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_mt2.py
@@ -119,6 +119,11 @@ comp8.flag='EFele'
 comp8.test='ttbar'
 test.check_steps.append(comp8)
 
+comp9=TrigInDetCompStep('Comp_L2FS')
+comp9.flag='L2FS'
+comp9.test='ttbar'
+test.check_steps.append(comp9)
+
 # CPU cost steps
 cpucost=TrigInDetCpuCostStep('CpuCostStep1')
 test.check_steps.append(cpucost)
diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_cosmics_cf_build.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_cosmics_cf_build.py
new file mode 100755
index 0000000000000000000000000000000000000000..e24071366a3d3e6785d2503ee1613143ef4c4563
--- /dev/null
+++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_cosmics_cf_build.py
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+# art-description: athenaMT trigger test using Cosmic.py job options
+# art-type: build
+# art-include: master/Athena
+# Skipping art-output which has no effect for build tests.
+# If you create a grid version, check art-output in existing grid tests.
+
+from TrigValTools.TrigValSteering import Test, ExecStep, CheckSteps
+
+ex = ExecStep.ExecStep()
+ex.type = 'athena'
+ex.job_options = 'TrigInDetValidation/Cosmic.py'
+ex.input = 'data_cos'
+ex.threads = 1
+ex.max_events = 10
+
+test = Test.Test()
+test.art_type = 'build'
+test.exec_steps = [ex]
+test.check_steps = CheckSteps.default_check_steps(test)
+
+import sys
+sys.exit(test.run())
diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_EmptyMenu_build.py b/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_EmptyMenu_build.py
index 9395ca795e52da007a0b404ca4df6136a94669d7..c553234bd8d4e708caf90fb4bc3500dec4e23845 100755
--- a/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_EmptyMenu_build.py
+++ b/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_EmptyMenu_build.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-# art-description: Same as empty_menu test from TrigUpgradeTest, but with athenaHLT
+# art-description: Test running L1 result decoding, but no HLT chains
 # art-type: build                                                                  
 # art-include: master/Athena                                                       
 
diff --git a/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_EmptyMenu_forkAndMT_build.py b/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_EmptyMenu_forkAndMT_build.py
index c4b661afc69c9d80d1b7cce696662c50d3647f8f..54435c88ea79b6503edeee9b4491df57765b9072 100755
--- a/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_EmptyMenu_forkAndMT_build.py
+++ b/Trigger/TrigValidation/TrigP1Test/test/test_trigP1_EmptyMenu_forkAndMT_build.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-# art-description: EmptyMenu test with forks=2, threads=2, concurrent_events=2
+# art-description: Test running L1 result decoding, but no HLT chains, with forks=2, threads=2, concurrent_events=2
 # art-type: build                                                                  
 # art-include: master/Athena                                                       
 
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/ATLAS_CHECK_THREAD_SAFETY b/Trigger/TrigValidation/TrigUpgradeTest/ATLAS_CHECK_THREAD_SAFETY
deleted file mode 100644
index 3ad59ab20068ab36930920ead3202d53ceb8c383..0000000000000000000000000000000000000000
--- a/Trigger/TrigValidation/TrigUpgradeTest/ATLAS_CHECK_THREAD_SAFETY
+++ /dev/null
@@ -1 +0,0 @@
-Trigger/TrigValidation/TrigUpgradeTest
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt b/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt
deleted file mode 100644
index 6f5c2df2e6eca38278bcefbf4dd21200e34cb581..0000000000000000000000000000000000000000
--- a/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-
-# Declare the package name:
-atlas_subdir( TrigUpgradeTest )
-
-# Install files from the package:
-atlas_install_joboptions( share/*.py )
-atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} )
-atlas_install_scripts( test/exec*.sh test/test*.sh )
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/__init__.py b/Trigger/TrigValidation/TrigUpgradeTest/python/__init__.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/disabled_test_trigUpgr_emu_newjo_build.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/disabled_test_trigUpgr_emu_newjo_build.sh
deleted file mode 100755
index 00fa7884e5b4b060943024533dc3dae3e6e8f61d..0000000000000000000000000000000000000000
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/disabled_test_trigUpgr_emu_newjo_build.sh
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/bash
-# art-description: athenaMT trigger test running the new-style job options EmuNewJOTest.py
-# art-type: build
-# art-include: master/Athena
-# Skipping art-output which has no effect for build tests.
-# If you create a grid version, check art-output in existing grid tests.
-
-export JOBOPTION="EmuNewJOTest.pkl"
-export FROMPICKLE=1
-export REGTESTEXP="TrigSignatureMo.*INFO HLT_.*"
-
-# Find the regtest reference installed with the release
-export REGTESTREF=`find_data.py TrigUpgradeTest/emu_newjo.ref`
-
-get_files -remove -jo TrigUpgradeTest/EmuNewJOTest.py
-
-echo $(date "+%FT%H:%M %Z")"     Generate pickle file ${JOBOPTION}"
-python EmuNewJOTest.py &> athena.pickle.log # generate pickle
-status=$?
-
-if [ ${status} -ne 0 ]; then
-    echo "ERROR in configuration generation stage, stopping"
-    echo "art-result: 1 Configuration"
-    export ATH_RETURN=1
-    export JOB_LOG="athena.pickle.log"
-else
-    echo
-    echo "JOs reading stage finished, launching Athena from pickle file"
-    echo "art-result: 0 Configuration"
-    echo 
-    source exec_TrigUpgradeTest_art_athenaMT.sh
-
-    # Merge log files for post-processing
-    JOB_LOG_MERGED="athena.merged.log"
-    echo "### athena.pickle.log ###" > ${JOB_LOG_MERGED}
-    cat athena.pickle.log >> ${JOB_LOG_MERGED}
-    echo "### ${JOB_LOG} ###"
-    cat ${JOB_LOG} >> ${JOB_LOG_MERGED}
-    export JOB_LOG=${JOB_LOG_MERGED}
-fi
-
-source exec_TrigUpgradeTest_art_post.sh
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/exec_TrigUpgradeTest_art_athenaMT.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/exec_TrigUpgradeTest_art_athenaMT.sh
deleted file mode 100755
index 77ec8f579678695a26d76092ba0a24feff92fe56..0000000000000000000000000000000000000000
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/exec_TrigUpgradeTest_art_athenaMT.sh
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-#
-# Trigger ART test execution script based on TriggerTest/test/exec_athena_art_trigger_validation.sh
-#
-
-### DEFAULTS
-
-if [ -z "${NAME}" ]; then
-  testname=$(basename $0)
-  testname=${testname#test_}
-  testname=${testname%.sh}
-  export NAME=${testname}
-fi
-echo $(date "+%FT%H:%M %Z")"     Execute Athena test ${NAME}"
-
-if [ -z ${EVENTS} ]; then
-  export EVENTS="1000"
-fi
-
-if [ -z ${SKIPEVENTS} ]; then
-  export SKIPEVENTS="0"
-fi
-
-if [ -z ${JOBOPTION} ]; then
-  export JOBOPTION="TriggerJobOpts/runHLT_standalone.py"
-fi
-
-if [ -z ${JOB_LOG} ]; then
-  export JOB_LOG="athena.log"
-fi
-
-if [ -z ${INPUT} ]; then
-  export INPUT="run2data"
-fi
-
-if [ -z ${THREADS} ]; then
-  export THREADS="1"
-fi
-
-if [ -z ${SLOTS} ]; then
-  export SLOTS="1"
-fi
-
-# Run with PerfMon by default
-if [ -z ${DOPERFMON} ] || [ ${DOPERFMON} -ne 0 ]; then
-  export PERFMONFLAG="--perfmon"
-else
-  export PERFMONFLAG=""
-fi
-
-if [ -z ${STDCMATH} ] || [ ${STDCMATH} -eq 0 ]; then
-  if [ -f ${ATLASMKLLIBDIR_PRELOAD}/libimf.so ]; then
-    export MATHLIBOPT="--imf"
-  else
-    echo "!!! WARNING !!! Intel math library is not available, using standard cmath library instead. This may lead to differences in test results."
-    export MATHLIBOPT="--stdcmath"
-  fi
-else
-  export MATHLIBOPT="--stdcmath"
-fi
-
-###
-
-if [[ $INPUT == "run2data" ]]; then
-  export DS="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data18_13TeV.00360026.physics_EnhancedBias.merge.RAW._lb0151._SFO-1._0001.1"
-elif [[ $INPUT == "run2mc_ttbar" ]]; then
-  # ttbar RDO_FTK produced in 21.3
-  export DS="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TriggerTest/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.digit.RDO_FTK.e4993_s3214_r11234_d1505/RDO_FTK.17071950._000065.pool.root.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TriggerTest/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.digit.RDO_FTK.e4993_s3214_r11234_d1505/RDO_FTK.17071950._000235.pool.root.1"
-elif [[ $INPUT == "ttbar" ]]; then
-  # ttbar RDO produced with serial athena job in master r2019-03-20
-  export DS="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TriggerTest/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.merge.RDO.e4993_s3214_r11315/RDO.17533168._000001.pool.root.1,/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TriggerTest/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.merge.RDO.e4993_s3214_r11315/RDO.17533168._000002.pool.root.1"
-elif [[ $INPUT == "run2data_cosmic" ]]; then
-  export DS="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data16_cos.00306147.physics_Main.daq.RAW._lb0494._SFO-4._0001.data"
-elif [[ $INPUT == "none" ]]; then
-  export DS=""
-elif [[ -f $INPUT ]]; then
-  export DS=${INPUT}
-else
-  echo "ERROR: input not defined, cannot run"
-  echo "art-result: 1"
-  exit 1
-fi
-
-######################################
-
-# Generate empty PoolFileCatalog.xml - this prevents incorrect handling of crashes on the grid
-ART_AVAILABLE=`which art.py >/dev/null 2>&1; echo $?`
-if [[ $ART_AVAILABLE == "0" ]]; then
-  echo "Executing art.py createpoolfile"
-  art.py createpoolfile
-fi
-
-######################################
-
-if [[ ${FROMPICKLE} == "1" ]]; then
-  echo "Running athena from pickle file ${JOBOPTION} with the command:"
-  (set -x
-  athena.py \
-  ${MATHLIBOPT} \
-  ${PERFMONFLAG} \
-  ${ATHENAOPTS} \
-  ${JOBOPTION} >${JOB_LOG} 2>&1
-  ) 2>&1
-else
-  echo "Running athena command:"
-  (set -x
-  athena.py \
-  ${MATHLIBOPT} \
-  ${PERFMONFLAG} \
-  ${ATHENAOPTS} \
-  --threads ${THREADS} \
-  --concurrent-events ${SLOTS} \
-  --filesInput "${DS}" \
-  --evtMax ${EVENTS} \
-  --skipEvents ${SKIPEVENTS} \
-  -c "${EXTRA}" \
-  ${JOBOPTION} >${JOB_LOG} 2>&1
-  ) 2>&1
-fi
-
-######################################
-
-export ATH_RETURN=$?
-echo "art-result: ${ATH_RETURN} ${JOB_LOG%.*}"
-echo  $(date "+%FT%H:%M %Z")"     Done executing Athena test ${NAME} with result ${ATH_RETURN}"
-
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/exec_TrigUpgradeTest_art_post.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/exec_TrigUpgradeTest_art_post.sh
deleted file mode 100755
index 0709e9ff2bd8941ff3deb0cf7d7287098de89f25..0000000000000000000000000000000000000000
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/exec_TrigUpgradeTest_art_post.sh
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-#
-# Trigger ART test script with post-exec checks based on TriggerTest/test/exec_art_triggertest_post.sh
-#
-
-echo  $(date "+%FT%H:%M %Z")"     Execute TrigUpgradeTest post processing for test ${NAME}"
-
-### Find the branch name
-if [ -n "${AtlasBuildBranch}" ]; then
-  export BRANCH=${AtlasBuildBranch} # available after asetup
-elif [ -n "${gitlabTargetBranch}" ]; then
-  export BRANCH=${gitlabTargetBranch} # available in CI
-else
-  echo "WARNING Cannot determine the branch name, both variables AtlasBuildBranch and gitlabTargetBranch are empty"
-fi
-
-### DEFAULTS
-
-if [ -z ${ATH_RETURN} ]; then
-  echo "WARNING The env variable ATH_RETURN is not set, assuming 0"
-  export ATH_RETURN=0
-fi
-
-if [ -z ${JOB_LOG} ]; then
-  export JOB_LOG="athena.log"
-fi
-
-if [ -z ${TEST} ]; then
-  export TEST="TrigUpgradeTest"
-fi
-
-if [ -z ${ESDTOCHECK} ]; then
-  export ESDTOCHECK="ESD.pool.root"
-fi
-
-if [ -z ${AODTOCHECK} ]; then
-  export AODTOCHECK="AOD.pool.root"
-fi
-
-if [ -z ${REF_FOLDER} ]; then
-  # Try eos first
-  export REF_FOLDER="/eos/atlas/atlascerngroupdisk/data-art/grid-input/${TEST}/ref/${BRANCH}/test_${NAME}"
-  # If not available, try cvmfs
-  if [ -d ${REF_FOLDER} ]; then
-    echo "Using reference directory from eos: ${REF_FOLDER}"
-  else
-    export REF_FOLDER="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/${TEST}/ref/${BRANCH}/test_${NAME}"
-    if [ -d ${REF_FOLDER} ]; then
-      echo "Reference from eos unavailable, using one from cvmfs: ${REF_FOLDER}"
-    else
-      echo "Reference directory for test ${NAME} not available from eos or cvmfs"
-    fi
-  fi
-fi
-
-# Disable RegTest by default and enable only if regex or ref file are defined
-export DOREGTEST=0
-if [ -n "${REGTESTEXP}" ] || [ -n "${REGTESTREF}" ]; then
-  export DOREGTEST=1
-fi
-
-# Note REGTESTEXP is a GNU grep regexp, not perl regexp
-if [ -z "${REGTESTEXP}" ]; then
-  export REGTESTEXP="REGTEST"
-fi
-
-# Option to override the regtest reference location
-if [ -z "${REGTESTREF}" ]; then
-  export REGTESTREF=${REF_FOLDER}/athena.regtest
-fi
-
-### CHECKLOG
-
-# if athena failed and we are running in CI, print the full log to stdout
-if [ "${ATH_RETURN}" -ne "0" ] && [ -n "${gitlabTargetBranch}" ]; then
-  echo "Printing the full ${JOB_LOG}"
-  cat ${JOB_LOG}
-fi
-
-echo $(date "+%FT%H:%M %Z")"     Running checklog for errors"
-timeout 5m check_log.py --config checklogTriggerTest.conf --errors --showexcludestats ${JOB_LOG} 2>&1 | tee checklog.log
-echo "art-result: ${PIPESTATUS[0]} CheckLog"
-
-echo $(date "+%FT%H:%M %Z")"     Running checklog for warnings"
-timeout 5m check_log.py --config checklogTriggerTest.conf --warnings --showexcludestats ${JOB_LOG} >warnings.log 2>&1
-
-### PERFMON
-
-if [ -f ntuple.pmon.gz ]; then
-  echo $(date "+%FT%H:%M %Z")"     Running perfmon"
-  timeout 5m perfmon.py -f 0.90 ntuple.pmon.gz >perfmon.log 2>&1
-fi
-
-### HISTOGRAM COUNT
-
-if [ -f expert-monitoring.root ]; then
-  echo $(date "+%FT%H:%M %Z")"     Running histSizes"
-  timeout 5m histSizes.py -t expert-monitoring.root >histSizes.log 2>&1
-fi
-
-### MAKE LOG TAIL FILE
-
-export JOB_LOG_TAIL=${JOB_LOG%%.*}.tail.${JOB_LOG#*.}
-tail -10000  ${JOB_LOG} > ${JOB_LOG_TAIL}
-
-### REGTEST
-
-if [ ${DOREGTEST} -ne 0 ]; then
-  REGTESTREF_BASENAME=$(basename -- "${REGTESTREF}")
-  if [ -z "${REGTESTEXP_EXCLUDE}" ]; then
-    grep -E "${REGTESTEXP}" ${JOB_LOG} > "${REGTESTREF_BASENAME}"
-  else
-    grep -E "${REGTESTEXP}" ${JOB_LOG} | grep -v -E "${REGTESTEXP_EXCLUDE}" > "${REGTESTREF_BASENAME}"
-  fi
-
-  if [ -f ${REGTESTREF} ]; then
-    echo $(date "+%FT%H:%M %Z")"     Running regtest using reference file ${REGTESTREF}"
-    timeout 5m regtest.pl --inputfile ${REGTESTREF_BASENAME} --reffile ${REGTESTREF} --linematch ".*" 2>&1 | tee regtest.log
-    echo "art-result: ${PIPESTATUS[0]} RegTest"
-  else
-    echo $(date "+%FT%H:%M %Z")"     The reference file does not exist: ${REGTESTREF}"
-    echo "art-result: 999 RegTest"
-  fi
-
-  mv ${REGTESTREF_BASENAME} ${REGTESTREF_BASENAME}.new
-fi
-
-### ROOTCOMP
-
-if [ -f ${REF_FOLDER}/expert-monitoring.root ]; then
-  echo $(date "+%FT%H:%M %Z")"     Running rootcomp"
-  timeout 10m rootcomp.py --skip="TIME_" ${REF_FOLDER}/expert-monitoring.root expert-monitoring.root >rootcompout.log 2>&1
-  echo "art-result: ${PIPESTATUS[0]} RootComp"
-elif [ -f expert-monitoring.root ]; then
-  echo $(date "+%FT%H:%M %Z")"     No reference expert-monitoring.root found in ${REF_FOLDER}"
-  echo "art-result: 999 RootComp"
-else
-  echo $(date "+%FT%H:%M %Z")"     No expert-monitoring.root file and no reference are found - skipping RootComp"
-fi
-
-### CHAINDUMP
-# SKIP_CHAIN_DUMP=1 skips this step
-
-# Using temporary workaround to dump HLTChain.txt
-if [ -f expert-monitoring.root ] && [ $[SKIP_CHAIN_DUMP] != 1 ]; then
-  echo "Running chainDump"
-  timeout 5m chainDump.py -f expert-monitoring.root --json >ChainDump.log 2>&1
-fi
-
-### CHECKFILE
-
-if [ -f ${ESDTOCHECK} ]; then
-  echo $(date "+%FT%H:%M %Z")"     Running CheckFile on ESD"
-  timeout 10m checkFile.py ${ESDTOCHECK} >${ESDTOCHECK}.checkFile 2>&1
-  echo "art-result: ${PIPESTATUS[0]} CheckFileESD"
-else
-  echo $(date "+%FT%H:%M %Z")"     No ESD file to check"
-fi
-
-if [ -f ${AODTOCHECK} ]; then
-  echo $(date "+%FT%H:%M %Z")"     Running CheckFile on AOD"
-  timeout 10m checkFile.py ${AODTOCHECK} >${AODTOCHECK}.checkFile 2>&1
-  echo "art-result: ${PIPESTATUS[0]} CheckFileAOD"
-  echo $(date "+%FT%H:%M %Z")"     Running CheckxAOD AOD"
-  timeout 10m checkxAOD.py ${AODTOCHECK} >${AODTOCHECK}.checkxAOD 2>&1
-  echo "art-result: ${PIPESTATUS[0]} CheckXAOD"
-  echo $(date "+%FT%H:%M %Z")"     Running checkFileTrigSize_RTT.py AOD"
-  export TRIGSIZE_LOG=${JOB_LOG%%.*}.TrigEDMSize.${JOB_LOG#*.}
-  timeout 10m checkFileTrigSize_RTT.py ${AODTOCHECK} > ${TRIGSIZE_LOG} 2>&1
-  echo "art-result: ${PIPESTATUS[0]} checkFileTrigSize_RTT.py"
-else
-  echo $(date "+%FT%H:%M %Z")"     No AOD file to check"
-fi
-
-### GENERATE JSON WITH POST-PROCESSING INFORMATION
-
-echo $(date "+%FT%H:%M %Z")"     Running trig-test-json.py"
-timeout 5m trig-test-json.py
-cat extra-results.json && echo
-
-### SUMMARY
-
-echo  $(date "+%FT%H:%M %Z")"     Files in directory:"
-ls -lh
-
-echo  $(date "+%FT%H:%M %Z")"     Finished TrigUpgradeTest post processing for test ${NAME}"
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_trigUpgr_cosmics_cf_build.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_trigUpgr_cosmics_cf_build.sh
deleted file mode 100755
index 6d7798da97546ce702400d8c8cae863a45645206..0000000000000000000000000000000000000000
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_trigUpgr_cosmics_cf_build.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash
-# art-description: athenaMT trigger test using IDCalo job options
-# art-type: build
-# art-include: master/Athena
-# Skipping art-output which has no effect for build tests.
-# If you create a grid version, check art-output in existing grid tests.
-
-export EVENTS=10
-export THREADS=1
-export SLOTS=1
-export JOBOPTION="TrigUpgradeTest/Cosmic.py"
-
-#export EXTRA="isOnline=True;doEmptyMenu=True;doWriteBS=False;doWriteRDOTrigger=True;forceEnableAllChains=True"
-#export EXTRA="isOnline=True;doEmptyMenu=True;doWriteBS=False"
-export EXTRA="doEmptyMenu=True;doWriteBS=False;doWriteRDOTrigger=True;"
-export INPUT="run2data_cosmic"
-#export ATHENAOPTS=" -l DEBUG "
-
-
-
-# Skip dumping chain counts because this test doesn't produce the histogram including them
-export SKIP_CHAIN_DUMP=1
-
-source exec_TrigUpgradeTest_art_athenaMT.sh
-source exec_TrigUpgradeTest_art_post.sh
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_trigUpgr_mu_cf_build.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_trigUpgr_mu_cf_build.sh
deleted file mode 100755
index d94e28694b3897ed9875f18d52ed3d33af17a4f0..0000000000000000000000000000000000000000
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_trigUpgr_mu_cf_build.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash
-# art-description: athenaMT trigger test using mu.withViews.py job options
-# art-type: build
-# art-include: master/Athena
-# Skipping art-output which has no effect for build tests.
-# If you create a grid version, check art-output in existing grid tests.
-
-export EVENTS=20
-export THREADS=1
-export SLOTS=1
-export JOBOPTION="TrigUpgradeTest/full_menu_cf.py"
-export EXTRA="doEmptyMenu=True;doMuonSlice=True"
-
-# Skip dumping chain counts because this test doesn't produce the histogram including them
-export SKIP_CHAIN_DUMP=1
-
-source exec_TrigUpgradeTest_art_athenaMT.sh
-source exec_TrigUpgradeTest_art_post.sh
diff --git a/Trigger/TrigValidation/TrigValTools/bin/runTrigART.py b/Trigger/TrigValidation/TrigValTools/bin/runTrigART.py
index 8a9359dcd4691821688451f5a607f4fc0f645a15..69b6d38dfc0ddacc169cb07ce6924a675eef4cad 100755
--- a/Trigger/TrigValidation/TrigValTools/bin/runTrigART.py
+++ b/Trigger/TrigValidation/TrigValTools/bin/runTrigART.py
@@ -17,8 +17,7 @@ from TrigValTools.TrigARTUtils import package_prefix, find_scripts, remember_cwd
 def minimal_pattern(package):
     dict = {'TriggerTest':      '(test_trig_data_v1Dev_build|test_trig_data_newJO_build)',
             'TrigP1Test':       'test_trigP1_v1Dev_build',
-            'TrigAnalysisTest': 'test_trigAna_RDOtoRDOTrig_mt1_build',
-            'TrigUpgradeTest':  None}
+            'TrigAnalysisTest': 'test_trigAna_RDOtoRDOTrig_mt1_build'}
     if package == 'ALL':
         return '({})'.format('|'.join([v for v in dict.values() if v]))
     elif package in dict and dict[package] is not None:
@@ -29,7 +28,7 @@ def minimal_pattern(package):
 
 
 def get_parser():
-    packages = ['TriggerTest', 'TrigAnalysisTest', 'TrigP1Test', 'TrigUpgradeTest', 'ALL']
+    packages = ['TriggerTest', 'TrigAnalysisTest', 'TrigP1Test', 'ALL']
     parser = argparse.ArgumentParser(usage='%(prog)s [options] [PackageName]')
     parser.add_argument('package',
                         metavar='PackageName',
diff --git a/Trigger/TrigValidation/TrigValTools/python/TrigValSteering/Common.py b/Trigger/TrigValidation/TrigValTools/python/TrigValSteering/Common.py
index 22d0a003f8254318108fb44e64b20cbd853e3aae..7eb89084f28f8930a684e7e4fe55fe600559cb78 100644
--- a/Trigger/TrigValidation/TrigValTools/python/TrigValSteering/Common.py
+++ b/Trigger/TrigValidation/TrigValTools/python/TrigValSteering/Common.py
@@ -20,7 +20,6 @@ trigvalsteering_logging_level = logging.INFO
 package_prefix_dict = {'TriggerTest':         'trig_',
                        'TrigP1Test':          'trigP1_',
                        'TrigAnalysisTest':    'trigAna_',
-                       'TrigUpgradeTest':     'trigUpgr_',
                        'TrigInDetValidation': 'trigID_'}
 
 # Log file with all art-result statements
diff --git a/Trigger/TrigValidation/TrigValTools/python/TrigValSteering/ExecStep.py b/Trigger/TrigValidation/TrigValTools/python/TrigValSteering/ExecStep.py
index b0edece9041c32f4a4dd4e7c322b9070f1bb5e73..1ef912ba5aa0934776350419a40af6576201221f 100644
--- a/Trigger/TrigValidation/TrigValTools/python/TrigValSteering/ExecStep.py
+++ b/Trigger/TrigValidation/TrigValTools/python/TrigValSteering/ExecStep.py
@@ -161,10 +161,7 @@ class ExecStep(Step):
                 athenaopts += ' --perfmon'
 
         # Default threads/concurrent_events/forks
-        if test.package_name == 'TrigUpgradeTest':
-            if self.threads is None:
-                self.threads = 1
-        elif test.package_name == 'TrigP1Test' and self.type == 'athenaHLT':
+        if test.package_name == 'TrigP1Test' and self.type == 'athenaHLT':
             if self.threads is None:
                 self.threads = 1
             if self.concurrent_events is None:
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_trig_data_newJO_build.py b/Trigger/TrigValidation/TriggerTest/test/test_trig_data_newJO_build.py
index 2a84539455c6a0a93f605d9da65f190d131783a8..4610b7726757ee33114a52e7f01402d434f05f80 100755
--- a/Trigger/TrigValidation/TriggerTest/test/test_trig_data_newJO_build.py
+++ b/Trigger/TrigValidation/TriggerTest/test/test_trig_data_newJO_build.py
@@ -14,7 +14,7 @@ copy_jo = ExecStep.ExecStep('CopyJO')
 copy_jo.type = 'other'
 copy_jo.input = ''
 copy_jo.executable = 'get_files'
-copy_jo.args = '-remove -jo TrigUpgradeTest/newJOtest.py'
+copy_jo.args = '-remove -jo TriggerJobOpts/runHLT_standalone_newJO.py'
 copy_jo.prmon = False
 copy_jo.auto_report_result = False  # Do not set art-result for this step
 copy_jo.output_stream = Step.Step.OutputStream.STDOUT_ONLY  # Do not create a log file for this step
@@ -24,14 +24,14 @@ pickle = ExecStep.ExecStep('GeneratePickle')
 pickle.type = 'other'
 pickle.input = ''
 pickle.executable = 'python'
-pickle.args = 'newJOtest.py'
+pickle.args = 'runHLT_standalone_newJO.py'
 pickle.prmon = False
 
 # The main job running athena from pickle
 run_athena = ExecStep.ExecStep('newJO')
 run_athena.type = 'athena'
 run_athena.use_pickle = True
-run_athena.job_options = 'newJOtest.pkl'
+run_athena.job_options = 'runHLT_standalone_newJO.py'
 run_athena.input = ''
 
 # The full test configuration
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/TriggerHistSvcConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerHistSvcConfig.py
similarity index 91%
rename from Trigger/TrigValidation/TrigUpgradeTest/python/TriggerHistSvcConfig.py
rename to Trigger/TriggerCommon/TriggerJobOpts/python/TriggerHistSvcConfig.py
index aa0acf5095b7c141f8d7ed4ed805a1015a964772..9cd5673247172a797d16e9e729fdfc0d355fc4a3 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/python/TriggerHistSvcConfig.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerHistSvcConfig.py
@@ -1,5 +1,5 @@
 #
-#  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+#  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 #
 
 def TriggerHistSvcConfig(flags):
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/newJOtest.py b/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone_newJO.py
similarity index 84%
rename from Trigger/TrigValidation/TrigUpgradeTest/share/newJOtest.py
rename to Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone_newJO.py
index dfaba5c82cb7eaf4ada409655befa753e26c2c81..64883d9abd46e74b9f61807d2543e4dd94776d8c 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/share/newJOtest.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone_newJO.py
@@ -1,14 +1,10 @@
 #
-#  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+#  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 #
 
-from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentAccumulator import CompFactory
 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
 from AthenaConfiguration.AllConfigFlags import ConfigFlags as flags
-from AthenaCommon.CFElements import parOR, seqOR, seqAND, stepSeq, findAlgorithm, findOwningSequence
-from AthenaCommon.AlgSequence import dumpMasterSequence
-from AthenaCommon.AppMgr import theApp
 
 from AthenaCommon.Configurable import Configurable
 Configurable.configurableRun3Behavior=1
@@ -35,8 +31,8 @@ flags.Trigger.CostMonitoring.doCostMonitoring = True
 import importlib
 setupMenuPath = "TriggerMenuMT.HLTMenuConfig.Menu."+flags.Trigger.triggerMenuSetup+"_newJO"
 setupMenuModule = importlib.import_module( setupMenuPath )
-assert setupMenuModule != None, "Could not import module {}".format(setupMenuPath)
-assert setupMenuModule.setupMenu != None, "Could not import setupMenu from {}".format(setupMenuPath)
+assert setupMenuModule is not None, "Could not import module {}".format(setupMenuPath)
+assert setupMenuModule.setupMenu is not None, "Could not import setupMenu from {}".format(setupMenuPath)
 flags.needFlagsCategory('Trigger')
 setupMenuModule.setupMenu(flags)
 flags.Exec.MaxEvents=50
@@ -52,7 +48,7 @@ flags.InDet.usePixelDCS=False
 
 flags.lock()
 
-from AthenaCommon.Constants import INFO,DEBUG,WARNING
+from AthenaCommon.Constants import DEBUG,WARNING
 acc = MainServicesCfg( flags )
 acc.getService('AvalancheSchedulerSvc').VerboseSubSlots = True
 
@@ -65,7 +61,7 @@ from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg
 acc.merge(ByteStreamReadCfg( flags ))
 
 
-from TrigUpgradeTest.TriggerHistSvcConfig import TriggerHistSvcConfig
+from TriggerJobOpts.TriggerHistSvcConfig import TriggerHistSvcConfig
 acc.merge(TriggerHistSvcConfig( flags ))
 
 from TriggerMenuMT.HLTMenuConfig.Menu.GenerateMenuMT_newJO import generateMenu as generateHLTMenu
@@ -97,7 +93,7 @@ acc.foreach_component("*/L1Decoder").OutputLevel = DEBUG
 acc.foreach_component("*FastEMCaloAlgo*").OutputLevel = DEBUG
 acc.foreach_component("VDVFastEgammaCalo").OutputLevel =DEBUG
 
-fname = "newJOtest.pkl"
+fname = "runHLT_standalone_newJO.pkl"
 print( "Storing config in the file {}".format( fname ) )
 with open(fname, "wb") as p:
     acc.store( p )
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt b/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt
index dfbbd4dfb02bbf642437afd551bf8c258b93e345..6f49fdccfbba7f4d8bc07270177010bc636089ae 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt
+++ b/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt
@@ -140,7 +140,8 @@ atlas_add_test( generateMenuMT
 file( MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unitTestRun_full_menu_cf )
 atlas_add_test( full_menu_cf
 		        SCRIPT scripts/test_full_menu_cf.sh
-                PROPERTIES WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unitTestRun_full_menu_cf )
+                PROPERTIES WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unitTestRun_full_menu_cf 
+                PROPERTIES TIMEOUT 500)
 
 
 #----------------------------------
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py
index 63cc987b224264e367606745b7a2c59d34fdfa79..accecd09b2630cc7a273478bec61baa466df9193 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py
@@ -21,6 +21,8 @@ from ..Base.Thresholds import TopoThreshold
 from ..Base.CTPCondition import ThrCondition, InternalTrigger  # noqa: F401
 from .TriggerTypeDef import TT
 
+from future.utils import with_metaclass
+
 
 
 class ItemDef:
@@ -44,7 +46,7 @@ class ItemDef:
         isHIV5 = 'HI_v5' in menuName
         isPhaseII = '_PhaseII' in menuName
 
-        class d(metaclass=meta_d): pass
+        class d(with_metaclass(meta_d)): pass
 
         # ... and make them accessible by their name
         for thr in tc.getDefinedThresholds():